关于C51外部电平中断的简单问题

乘风   2009-12-14 21:58 楼主
#include
main()
{   EA=1;
EX0=1;
IT0=0;
while(1)
P1=0xff;
}
void exter0() interrupt 0
{
P1=0;
}
就这个简单的外部中断,INT0我直接用开关接地了。为什么显示LED是闪亮的,而不是常亮的呢?

我是这样觉得的,如果不对,麻烦帮我改正一下,希望不要光讲看书,我看了书了,可是还是不怎么明白,希望能指点一下。

因为外部中断一直都在,所以应该一直执行中断,应该不会进入到主函数,可灯是闪亮的,说明程序执行了P1=0xff.

希望能指点一下我哪里错了。谢谢

回复评论 (4)

应该来说是不停的执行P1=0xff,因为是在一个while(1)的死循环里面,当有中断来时会执行中断服务程序,也就是P1=0,执行完成后执行继续回到P1=0xff位置执行。然后再继续执行P1=0,这样反复的进行,所以你看到是闪亮不是常亮。
点赞  2009-12-14 22:18
51有个特性.....在中断返回后,至少要执行一条指令,才会再响应另一个中断....
点赞  2009-12-14 22:35
不过这频率应该是很高的,你该看不到闪才对.....该是亮度下降的状况.......
点赞  2009-12-14 22:36
Great_Bug讲的就是我所想的,一楼讲的我知道。我原先以为中断执行完后又继续执行中断。二楼讲的我明白了。谢谢
点赞  2009-12-14 22:48
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复