51单片机外部中断问题?
时间:10-02
整理:3721RD
点击:
设计数码管间隔1s从00~f变化,设置了INT0外部中断0;中断时二极管亮。但将P3.2端口与地相连时为什么数码管还是间隔的闪烁,时间好像延长了10倍,二极管是亮的
完全看不懂你说什么意思!
你写的外部中断应该是低电平触发吧,当遇到低电平时,中断标志位置1,进入中断。因为是低电平触发,而且IO口始终为低电平,所以会不停的进入中断。 单片机执行每条指令的时候,都会检查中断标志位,如果中断标志位置1 ,则会再次进入中断。所以说在下次进入中断之前,会有一点时间去执行进入中断之前的位置的语句,也就是你的数码管显示程序。 比如说现在执行到delay(1000);这个语句,突然进入中断,退出中断的时候,会再次进入delay(1000);但是时间较短,不能完全执行完这个语句,比如只执行了1/1000,有进入了中断,就这样反反复复,要进入1000次中断才能执行完delay(1000);语句,所以人的肉眼观察到的数码管缓慢增加。而不是想象中的数码管停止计数。 对于单片机执行语句过程中查询中断标志位的知识,你可以上网上搜搜 这样说是否明白
我觉得这样说的有些道理,可是我也有些疑惑,,“ 比如说现在执行到delay(1000);这个语句,突然进入中断,退出中断的时候,会再次进入delay(1000);”。那要是一直保持P3^2=0;那就是一直在执行中断了,就不会退出中断了,那怎么会再次进入delay(1000)呢?那怎么会缓慢闪烁哩。?很费解,求指点
反正少用延时比较好。