标题: 学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翻转,这次是用中断触发的方式,下降沿触发。
对了,留个思考题 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 |