Loading

单片机中断系统

 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

}

 

posted @ 2020-04-30 20:42  ARCHERy  阅读(1142)  评论(0编辑  收藏  举报