EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
继续说按键的事。昨天说的是扫描检测,今个说一下中断检测。先插播一个小故事~~      当年我和凯凯学 单片机的时候,我用扫描检测的方法做的项目,他用中断检测的方法做的项目。当我俩坐一起交流按键检测的方式时,他火了,直接跳起来跟我吼:你不用中断怎么检测?       当时我就意识到他可能陷入了只能用中断的误区,然后就乐呵呵的说:用扫描啊~       他继续吼,我继续乐,我俩就这样陷入了死循环。终于都累了,然后把程序和原理给他看,了解~       在STC89C52单片机上,具有外部中断功能的引脚有两个:P3.2 –INT0 和 P3.3-INT1。上电默认的情况下,他们是普通IO引脚;当配置好相关寄存器之后,他们就变成了具有中断检测功能的引脚。       外部中断相关的寄存器有两个:TCON 和 IE。图示如下: & q1 E) u3 `1 H. K* c9 u! G 
特殊功能寄存器IE + j5 G; r& L9 I9 S4 B( d+ ? 
      IT0和IE0对应P3.2引脚的中断功能配置,IT1 和 IE1对应P3.3 引脚的中断功能配置。       当IT0 = 0 的时候,该中断的触发方式为低电平触发。      当IT0 = 1 的时候,该中断的触发方式为下降沿触发。       当中断被触发时,IE0 被自动置一,当CPU相应中断,处理中断程序时,IE0 自动清零。  
* V* _- x- U0 u  X3 F7 A6 O  ^      IT1 和 IE1 同理,不做解释。  
5 L: S# H4 m6 n* p  x      EA是什么?它是这个单片机中断功能的总开关!只有当它等于1的时候,各个中断的请求才可以被允许,不然的话都是被屏蔽的。       ES是串口中断允许位。       ET1是定时/计数器1溢出中断允许位。       ET0是定时/计数器0溢出中断允许位。       EX1是外部中断1允许位。       EX0是外部中断0允许位。 % x1 @. W" `: Z" ^" z 
      就是说,当我们想用外部中断0的时候,必须总中断(EA)和外部中断(EX0)同时打开才能用,缺一不可!       这些寄存器的资料那里来的? 上官网找器件手册,这是最权威的文档。找的过程中,既锻炼了查找资料的能力,又锻炼了阅读资料的能力,这在以后的工作中是必备的。  
5 r/ p4 @0 n6 c! |# g! M      好了,上程序。依旧是按键控制LED翻转,这次是用中断触发的方式,下降沿触发。  对了,留个思考题 interrupt 后面的0 和using 后面的1分别是什么意思? # Q+ e4 b: z/ e5 g0 l 
 
! J2 w% ^- e  d; o) ~# Q, q $ R/ @, u) s. f. u 
 |