基本概念
中断:在执行程序过程中,外部设备向CPU发出中断请求信号,要求暂时中断当前程序的执行转而执行相应的处理程序,待处理程序执行完,再继续执行原来被中断的程序
中断源:一些特定的时间,也称中断信号
中断请求:中断源要求服务所提出的请求
断点:主程序被打断的地方
中断服务程序:处理特定事件的一段程序
中断响应:CPU转去执行中断服务程序的过程
单片机的中断系统结构
中断源 | INT0(上划线) | T0 | INT0(上划线) | T1 | RX/TX |
中断标志(TCON,SCON) | IT0 TE0 | TF0 | IT1 IE1 | TF1 | RI/TI |
中断允许(IE) | EX0 | ET0 | EX1 | ET1 | ES |
EA | |||||
优先级(IP) | PX0 | PT0 | PX1 | PT1 | PS |
1、中断源
INT0非 | 外部中断0 | P3.2引脚输入,TT0决定是低电平(0)有效或下降沿(1)有效 |
INT1非 | 外部中断1 | P3.3引脚输入,TT1决定是低电平(0)有效或下降沿(1)有效 |
TF0 | T0溢出中断 | 当T0产生溢出时,T0溢出中断标志位TF0置位(由硬件自动执行),请求中断处理 |
TF1 | T1溢出中断请 | 当T1产生溢出时,T1溢出中断标志位TF1置位(由硬件自动执行),请求中断处理 |
RI或TI | 串行口中断请求 | 当接收或发送完一个串行帧时,内部串行口中断请求标志位RI或TI置位(由硬件自动执行),请求中断 |
2、中断标志(TCON,SCON)
TF1 | T1溢出中断标志 | |
TF0 | T0溢出中断标志 | |
IE1 | INT1中断标志 | |
IT1 | INT1中断触发方式控制位 | |
IE0 | INT0中断标志位 | |
IT0 | INT0中断触发方式控制位 | |
T1 | 串行发送中断标志 | |
RI | 串行接收中断标志 |
3、中断允许(IE)
IE寄存器格式
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
EA | X | X | ES | ET1 | EX1 | ET0 | EX0 |
等于1为允许,等于0为禁止
4、中断优先级(IP)
IP寄存器格式
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
X | X | X | PS | PT1 | PX1 | PT0 | PX0 |
优先级控制位说明
中断优先级控制位 | 说明 | |
PS | 串行口中断优先控制位 | 1为高优先级0为低优先级 |
PT1 | 定时器T1中断优先控制位 | 1为高优先级0为低优先级 |
PX1 | 外部中断1中断优先控制位 | 1为高优先级0为低优先级 |
PT0 | T0中断优先控制位 | 1为高优先级0为低优先级 |
PX0 | 外部中断0中断优先控制位 | 1为高优先级0为低优先级 |
若两个高优先级或低优先级冲突,或者未设置优先级,则按照自然优先级的顺序执行
中断处理过程
1、中断响应条件
CPU响应中断的条件是:①有中断源发出中断请求;②中断总允许位EA置1:③申请中断的中断源允许位置1
CPU响应中断的阻断情况有:①CPU正在响应同级或更高优先级的中断;②当前指令未执行完;③正在执行中断返回或访问寄存器IE和IP
2、中断响应过程
中断响应过程就是自动调用并执行中断函数的过程
C51编译器支持在C源程序中直接以函数形式编写中断服务程序。断响应微视中断函数的定义形式
如下:
void 函数名() interrupt n
其中n为中断类型号
设置方式:1、设置TMOD寄存器
2、计算并载入初值
3、设置IE寄存,中断允许
4、启动/停止
5、自动调用中断服务程序
例题:定时器T0工作在方式1,实现控制8个LED灯每隔50ms闪烁一次,假设晶振频率为2MHz
#include<reg51.h>
void time50ms() interrupt 1 //定时器T0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//不能自动重载初值,需手动设置
P2 = ~P2;
}
void main()
{
TMOD=0x01;设置工作方式
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//设置初值
P2 = 0x00;
EA = 1;//中断允许
ET0 = 1;//中断允许
TR0 = 1;//启动定时器0
while(1);
}
撤除中断请求标志(TCON):
在CPU接收中断请求后,上述位要恢复为0,即中断请求撤除,以免重复中断操作
定时器T0 T1 | 中断标志硬件自动清除 | ||
外部中断0 外部中断1 | 下降沿触发 | 中断标志硬件自动清除 | |
低电平触发 | 硬件电路和软件编程 | ||
串行口中断 | 软件编程清除标志TI RI |