#include
main()
{ EA=1;
EX0=1;
IT0=0;
while(1)
P1=0xff;
}
void exter0() interrupt 0
{
P1=0;
}
就这个简单的外部中断,INT0我直接用开关接地了。为什么显示LED是闪亮的,而不是常亮的呢?
我是这样觉得的,如果不对,麻烦帮我改正一下,希望不要光讲看书,我看了书了,可是还是不怎么明白,希望能指点一下。
因为外部中断一直都在,所以应该一直执行中断,应该不会进入到主函数,可灯是闪亮的,说明程序执行了P1=0xff.
希望能指点一下我哪里错了。谢谢
应该来说是不停的执行P1=0xff,因为是在一个while(1)的死循环里面,当有中断来时会执行中断服务程序,也就是P1=0,执行完成后执行继续回到P1=0xff位置执行。然后再继续执行P1=0,这样反复的进行,所以你看到是闪亮不是常亮。
51有个特性.....在中断返回后,至少要执行一条指令,才会再响应另一个中断....
不过这频率应该是很高的,你该看不到闪才对.....该是亮度下降的状况.......
Great_Bug讲的就是我所想的,一楼讲的我知道。我原先以为中断执行完后又继续执行中断。二楼讲的我明白了。谢谢