|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
买了一块 STC8A8K64S4A12 开发板,测试外部中断,感觉是不是芯片有些问题?4 a3 `6 m- `! t: w" ?" U" K3 r( C
如图,图片左边是串口输出信息,按理来说 输出应该是 0 和 1 交替输出, C5 v) O; \ Y A1 P8 a
连续输出 1 或者 0 都是不对的,但是实际测试就是有连续输出1,有时候连续输出0,为什么会这样呢?4 a9 L! {7 Y7 J% Q
/ W4 Z {2 z4 Z我是用一个按键测试外部中断1,引脚默认是高电平,
+ M! U: ^( T) l4 n+ Q) y2 C按键按下,把引脚拉低,应该触发下降沿,应该输出 0;" X) U! q2 C2 v3 Y M
松开按键,引脚恢复高电平,应该触发上升沿,应该输出 1;
! q M! C/ f7 b( ?. P! E; F- X0 N4 v& J- q/ F. Q% I4 m% Y
代码如下:
. ^ m! K. S j' t7 B, t
7 ?) T2 k- I( ovoid INT1_Init(void)' p$ Y" k5 g7 F3 f1 U) T7 t) d
{
% `1 d) \/ p6 i; k) q& `. { IE1 = 0; //将INT1中断请求标志位清"0"# h& P1 W: |; K1 E9 u( ?3 D, Y% k
EX1 = 1; //使能INT1中断允许位
& g" [+ S: j3 t6 O IT1 = 0; //选择INT1为上升沿或下降沿触发方式
- ]8 Q; I6 A* ~: o}
% q% Y/ m6 e e( m' f9 a+ n4 [5 Z3 m2 Q% k7 H6 w2 z
/**************************************
( n H1 z8 [- F6 L; I功能描述:外部中断服务程序0 ?( O# S/ J( @: r1 m2 F
入口参数:无* V6 P) u5 {& A/ r8 X* \
返回值:无
y/ g4 B( W- N8 D! u5 i***************************************/
4 {: k; d( f2 P1 O5 y' p5 Vvoid INT1_int (void) interrupt 2
- @- \% h% E3 o5 C# i3 R z{3 ]1 O) ]* ^, X; r6 o
if (1 == KEY) // 上升沿
1 ], Q: ]1 F# ^$ ?/ c$ ? {3 o' z- d3 z4 Z
RED_LED = 1;6 p/ ]$ G! B; u, a. |' K7 j6 `
Uart1_Send_String("1");
3 D9 l7 J {: J B: W. d: n }
7 p# |) x. L9 d( r5 Y! H else // 下降沿8 C- \5 o4 y" Y2 w+ V) v
{. }1 X$ K& `2 n$ S" J$ q8 Q. ~# t
RED_LED = 0;
- H/ X( ]- `& q1 W8 ? Uart1_Send_String("0");
7 b6 v: `2 q$ ~2 U! W }
5 {9 ?5 a$ b& R% Y}* |1 n1 n( u) |; Y9 w h$ c, y2 b
. I" E5 N" U/ p# P) s5 p% s5 t- l. m Z& ^6 W8 p% i
再补充一些信息:在我实际应用中,板子有把低压变成高压,接了负载才容易会出现这种奇怪的现象,
% Y1 ?# z j1 {5 G' F8 ~不接负载就基本没什么问题,我在想是不是电路板中有大电流,或者芯片中的电流过大造成芯片不正常了, S$ Z7 [( Q, a# g, X
) J/ V: W. P( f ?2 \2 H5 Y
这个问题我已经在软件层面做了处理,保证业务逻辑正常。! w& E3 x! r* p% ]
现在只是好奇为什么硬件会出现这种情况,看看有没有哪位大侠知道原因+ S) h$ I" x! }2 M# r# s+ D
: X: g* e) L: _8 A/ V/ y" @* P& K |
|