×
单片机 > 单片机程序设计 > 详情

嵌入式学习笔记9——51单片机之中断外部中断

发布时间:2020-08-25 发布时间:
|
1.  中断的原理:

   CPU暂时中断当前的工作(这叫中断响应),转去处理事件B(这叫中断服务)。

2.  89C51的中断系统有5个中断源(按优先级高低排序为:外部中断0、计时器中断0、外部中断1、计时器中断1、串口中断),2个优先级,可实现二级中断嵌套(中断处理过程又有优先级更高的中断发生)。高级单片机中可能有更多的中断源和更多的优先级等。


 


 

3.  89C51单片机的中断优先级有三个原则:

  (1)CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。 (2)正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。  (3)正在进行的低优先级中断服务,能被高优先级中断请求所中断。(为实现后两个原则,系统设有两个不能寻址的优先级触发器。其中一个置1,表示正在响应高优先级的中断,将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,将阻断后来所有低优先级中断请求。)

 

4.  CPU对中断系统所有中断以及某个中断源的开发和屏蔽是由中断允许寄存器IE控制的。


 

 

5.  中断响应条件:

   (1)中断源有中断请求;(2)此中断源的中断允许位为1;(3)CPU开中断(即EA=1)。

6.  程序员使用中断需要做什么?

    (1)使用哪个中断(外部中断,计时器中断,串口中断等),便确定了响应的中断号;(2)希望触发中断的条件是什么,比如下降沿触发还是低电平触发;(3)中断之后要干什么(中断服务程序要尽量简短)。

      举例:a.设置IE中响应的值——EA置1(允许CPU中断)、打开要使用的中断;b.设置TCON中相应中断的触发方式(如下图所示TCON寄存器);c.写中断服务程序(void 函数名() interrupt 中断号 using  0~3中的任意值 {    函数体    },其中0~3中的值表示选择片内四组寄存器中的一组来保存中断前的现场,通常建议初学者不写“using 0~3中的任意值”,因为你不清楚内部寄存器的使用情况,不写的情况下,Keil会自动帮你指定的。)


 

7.  外部中断:

IT0(TCON.0)决定外部中断0是低电平有效还是下降沿有效(从高电平变到低电平)。同样地,IT1(TCON.2)对应外部中断1。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多