正文

【014】外中断0响应实例 [51]2006-06-29 22:15:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wentao/16193.html

分享到:

实验参考: 《单片机轻松入门》(周坚)
实验板:   FB51A。(查看)
方法: 通过按键模拟外部中断的产生信号,用P0.0口接的LED作为中断响应。
实验现象:键按下时,P0.0口的LED亮灭交替。


电路如下:

在程序中,将中断0设置为下降沿触发:


       org   0000h
       ajmp  start
       org   0003h     ; 外部中断地址入口
       ljmp  int_0     ; 转到真正的处理程序
       org   30h
start: mov  sp, #5fh   ; 初始化堆栈
       mov  p0, #0ffh  ; 灯全灭
       mov  p3, #0ffh  ; P3口置高电平
       setb IT0        ; 下降沿触发
       setb EA         ; 开总中断
       setb EX0        ; 开外中断0
       ljmp $          ; 原地踏步等待中断

int_0:                 ; 中断服务程序
       cpl  P0.0       ; 取反
       reti
end


其中原地踏步等待中断处在实际应用中可以是单片机的工作部分,当中断触发后,停下这部分工作进行中断处理,处理完后再继续原来的工作,这正是中断的功能。

编译下载到板子上验证,得到预计结果: 键按下时,P0.0口的LED亮灭交替(由于此板上键并非按上图的接法设计,故在实测时用导线连接P3.2口和地模拟上述键按下)。用Proteus仿真结果如下:

对中断而言,下降沿触发和低电平触发两种方式是有所区别的(IT0=0是低电平触发,IT0=1是下降沿触发)。做一下这个实验会发现有如下两个现象:

<1> 将"setb IT0"改为"clr IT0",即改用低电平触发,按住按钮后LED一定是亮的;而用下降沿触发,按下按钮后LED可能是亮的,也可能是灭的。
<2> 用低电平触发,如果一直按着按钮不放,会发现LED的亮度会有所下降。

这两个现象说明了这样一个问题,低电平触发是可重复的。即如果外中断引脚上一直保持低电平,那么在产生一次中断返回之后,马上就会产生第二次中断,接着是第三次……如此一直到低电平消失为止;而下降沿触发没有这个问题,一次中断产生后,即使外部中断引脚上仍保持抵电平,也不会引起重复中断。实际应用中如采用低电平触发方式,外部电路要采用可以及时撤去该引脚上低电平的设计方式

阅读(4347) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册