目标:中断系统的理解
1.中断简介
中断:cpu在正常执行程序的过程中,计算机内部或外部发生了另一件事请求cpu迅速去处理,cpu暂停停止当前程序的运行,而转去处理所发生的事件,处理完就返回原来暂停的地方,继续执行原来的任务
随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:
①分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;
②实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;
③可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。
2.中断系统结构
- ①INT0(P3.2),当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。可由IT0(TCON.0)选择其为低电平有效(置0)还是下降沿有效(置1)。
- ②INT1(P3.3),当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。可由IT1(TCON.2)选择其为低电平有效(置0)还是下降沿有效(置1)。
- ③T0(P3.4),它的中断请求标志是TF0--(TCON.5 ),T0发生溢出时,置位TF0为1,并向CPU申请中断。
- ④T1(P3.5),它的中断请求标志位是TF1--(TCON.7),T1发生溢出时,置位TF1为1,并向CPU申请中断。
- ⑤RI(SCON.0)或TI(SCON.1),串行口中断请求标志。
当串行口接收完送完一帧串行数据置位RI,向CPU申请中断。
当串行口发送完一帧串行数据时置位TI,向CPU申请中断。
3.中断寄存器
(一)定时器控制寄存器TCON
- IT0:外部中断0触发方式控制位。当IT0=0时,为电平触发方式。当IT0=1时,为边沿触发方式(下降沿有效)。
- IE0:外部中断0中断请求标志位。
- IT1:外部中断1触发方式控制位。
- IE1:外部中断1中断请求标志位。
- TF0:定时/计数器T0溢出中断请求标志位。
- TF1:定时/计数器T1溢出中断请求标志位。
- TR0: T0运行控制位。TR0置1时,T0开始工作;TR0置0时,T0停止
工作。- TR1:T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止
工作。
(2)中断允许寄存器IE
- EX0:外部中断0允许位;
- ET0:定时/计数器T0中断允许位;
- EX1:外部中断0允许位;
- ET1:定时/计数器T1中断允许位;
- ES: 串行口中断允许位;
- EA :CPU中断允许(总允许)位。(总开关)
IE相当于一个开关的角色
(3)中断优先级寄存器IP
- PT2:定时器/计数器2中断优先级控制位(仅8052);1:高优先级,
0:低优先级- PS:串行口优先级控制位;1:高优先级,0:低优先级
- PT0/PT1:定时器/计数器0/1中断优先级控制位;1:高优先级,0:
低优先级- PX0/PX1:外部中断管0/1中断优先级控制位;1:高优先级,0:低优
先级
4.中断优先级
我们会遇到多个中断同时请求的情况,这时候就需要看自然优先级了
中断执行原则:
①CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
②正在进行的中断过程不能被新的同级或低优先级的中断请求所中
断。
③正在进行的低优先级中断服务,能被高优先级中断请求所中断。
5.中断的使用
(1)中断响应条件
①中断源要有中断请求
②中断源的中断允许位为1
③打开总中断(即EA=1)
例如:外部中断0(INT0)产生中断
#include "reg52.h"
void main()
{
EA=1;//打开总中断开关
EX0=1;//开外部中断0
IT0=0;//设置外部中断的触发方式
while(1)
{
}
}
//中断服务函数
void int0() interrupt 0 //0是中断号,具体看是什么中段
{
...do anything that you want