标题: 学51单片机-按键的中断检测 [打印本页]

作者: jiajiamei    时间: 2015-3-20 23:06
标题: 学51单片机-按键的中断检测
      
      接着昨天,继续说按键的事。昨天说的是扫描检测,今个说一下中断检测。先插播一个小故事~~
      当年我和凯凯学单片机的时候,我用扫描检测的方法做的项目,他用中断检测的方法做的项目。当我俩坐一起交流按键检测的方式时,他火了,直接跳起来跟我吼:你不用中断怎么检测?
      当时我就意识到他可能陷入了只能用中断的误区,然后就乐呵呵的说:用扫描啊~
      他继续吼,我继续乐,我俩就这样陷入了死循环。终于都累了,然后把程序和原理给他看,了解~
      在STC89C52单片机上,具有外部中断功能的引脚有两个:P3.2 –INT0 和 P3.3-INT1。上电默认的情况下,他们是普通IO引脚;当配置好相关寄存器之后,他们就变成了具有中断检测功能的引脚。
      外部中断相关的寄存器有两个:TCON 和 IE。图示如下:
特殊功能寄存器IE
      IT0和IE0对应P3.2引脚的中断功能配置,IT1 和 IE1对应P3.3 引脚的中断功能配置。
      当IT0 = 0 的时候,该中断的触发方式为低电平触发。      当IT0 = 1 的时候,该中断的触发方式为下降沿触发。
      当中断被触发时,IE0 被自动置一,当CPU相应中断,处理中断程序时,IE0 自动清零。
      IT1 和 IE1 同理,不做解释。
      EA是什么?它是这个单片机中断功能的总开关!只有当它等于1的时候,各个中断的请求才可以被允许,不然的话都是被屏蔽的。
      ES是串口中断允许位。
      ET1是定时/计数器1溢出中断允许位。
      ET0是定时/计数器0溢出中断允许位。
      EX1是外部中断1允许位。
      EX0是外部中断0允许位。
      就是说,当我们想用外部中断0的时候,必须总中断(EA)和外部中断(EX0)同时打开才能用,缺一不可!
      这些寄存器的资料那里来的? 上官网找器件手册,这是最权威的文档。找的过程中,既锻炼了查找资料的能力,又锻炼了阅读资料的能力,这在以后的工作中是必备的。
      好了,上程序。依旧是按键控制LED翻转,这次是用中断触发的方式,下降沿触发。
      程序下载链接: KEY_INT.zip (26.86 KB, 下载次数: 152)
      对了,留个思考题 interrupt 后面的0 和using 后面的1分别是什么意思?


   




作者: 香草加冰    时间: 2016-2-12 20:57
楼主可否解释一下,按键的中断信号是怎么送到EX0的
作者: mti06032    时间: 2016-5-2 18:42
下载下来看看,我需要这个
作者: a8421    时间: 2016-6-30 18:03
..来看看,,
作者: lljjxxww    时间: 2016-11-26 17:04
下载下来学习学习
作者: 580010    时间: 2017-6-26 22:19
学习一下
作者: hmgqljz111    时间: 2017-9-6 14:42
外部中断0,按键直接的P3.2口,按下的时候下降沿触发。
作者: 第21天以后    时间: 2017-10-26 08:40
这是非常好的   特别好
作者: 第21天以后    时间: 2017-10-26 08:41
interrupt 0  是外部中断0,优先级最高
作者: QS2018    时间: 2018-7-6 16:30
很给力,学习下
作者: vectorxu    时间: 2020-5-9 19:00
下载学习,谢谢楼主




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1