单片机中断系统

Posted archery

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机中断系统相关的知识,希望对你有一定的参考价值。

 89C52/51 的中断系统有 5个中断源,2 个优先级,可实现二级中断嵌套

技术图片

   [ TCON 、IE为寄存器]    [五个中断源优先级 从上往下降低]

【1】中断

1、外部中断0(中断源符号  INT0):INT0 连接 单片机P3^2 管脚, P3^2管脚可由 IT0 选择其为 低电平有效 还是下降沿有效。当CPU检测到 P3^2管脚上出现有效的中断信号时,中断标志IE0 (TCON.1)置1,向CPU申请中断。

2、外部中断1(中断源符号  INT1 )  : INT1 连接 单片机P3^3 管脚, P3^3管脚可由 IT1 选择其为 低电平有效 还是下降沿有效。当CPU检测到 P3^3管脚上出现有效的中断信号时,中断标志IE01(TCON.3)置1,向CPU申请中断。

3、定时器0中断(中断源符号  T0   )    : 当T0发生溢出时,片内定时器 TF0 置位,变成1,并向CPU申请中断

4、定时器1中断(中断源符号  T1   )   :当T1发生溢出时,片内定时器 TF1 置位,变成1,并向CPU申请中断

5、串行口中断(中断源符号TI / RI ): RI(SCON.0)、TI(SCON.1) 为中断请求标志(RI 串口连接 单片机P3^0 管脚, TI 串口连接 单片机P3^1 管脚)。当串行口接收完一帧串行数据时,RI置位 1 ;当串行口发送完一帧串行数据时,TI置位 1 ;向CPU请求中断

【2】中断允许控制

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

技术图片

 1、 EX0(IE.0) :  外部中断 0 允许位

2、 ET0 (IE.1) :  定时器 T0 中断允许位

3、 EX1(IE.2) :  外部中断 1 允许位

4、 ET1 (IE.3) :  定时器 T0 中断允许位

5、 ES(IE.4) :  串行口中断允许位

6、 EA(IE.7) :  CPU中断允许(总允许位)位

【3】中断请求标志

(1) TCON的中断标志

技术图片

 1、IT0(TCON .0)  :外部中断0触发方式控制位 [IT0 =0 时,为电平触发方式(低电平);IT0 =1 时,为边沿触发方式,即下降沿有效  ]

2、IE0 (TCON .1):  外部中断 0 中断请求标志位

3、IT1(TCON .2):  外部中断 1 触发方式控制位 [ IT0 =0 时,为电平触发方式(低电平);IT0 =1 时,为边沿触发方式,即下降沿有效  ]

4、IE1 (TCON .3):  外部中断 1中断请求标志位

5、TF0(TCON .5):  定时器 T0 溢出中断请求标志位

6、TF1(TCON .7):  定时器 T1 溢出

技术图片

 【4】 中断源

 技术图片

【5】中断优先级的三条原则

1、CPU同时接收到几个中断时,首先响应优先级别最高的中断请求

2、正在进行的中断过程不能被新的同级或低优先级的中断请求所中断

3、正在进行的低优先级中断服务,能被高优先级中断请求所中断

【6】中断响应条件( 3个条件同时满足时,CPU才有可能响应中断)

1、中断源有中断请求

2、此中断源的中断允许位为1

3、CPU开中断( 即EA=1 )

【7】 使用中断的思路

1、使用哪个中断?  选择相应的中断号

2、所希望的 触发条件?(如 使用外部中断 0,选择下降沿方式还是低电平方式)

3、希望在中断后干什么?

【8】以外部中断0 为例: (主程序需要有以下代码)

E=1 ;//打开总中断开关

EX0=1;//开外部中断0

IT0= 0 / 1 ;  //设置外部中断的触发方式

【9】中断服务函数

函数名↓            中断号↓

void int 0() interrupt 0

{

  do anything you want

}

 

以上是关于单片机中断系统的主要内容,如果未能解决你的问题,请参考以下文章

单片机中断系统

单片机的中断系统

单片机中的中断是怎么实现的?

单片机C语言如何满足条件就立即退出中断函数

将单片机的外部中断1、定时器中断0打开,要求定时器0的中断优先级高于外部中断1,外部中断1采用边沿?

4.2 51单片机-中断