1.什么是中断
先举一个一个例子说明,当你正在处理A事情的时候,这时候发生了紧急的B事情需要去处理。此时,你必须先暂停处理A事情转去处理紧急B事情,当B事情处理完成后,在回来处理A事情,这个就是中断。
中断就是当一件事情正在被处理时,另一件紧急事情需要处理,于是暂停现在正在进行的事情转去执行紧急事情,当紧急事情执行完成后,再继续处理原来未处理完的事情。
2.中断相关概念
(1)中断源:可以引起中断的事情称为中断源。51单片机有5个中断源,分2个优先级,这5个中断源按自然优先级从高到低依次是:外部中断0(INT0)、定时/计数器0(TF0)、外部中断1(INT1)、定时/计数器1(TF1)、串口中断(RI/TI)。
中断源名称 | 中断优先级 | 中断类型号m |
外部INT0中断 | 1 | 0 |
定时/计数T0中断 | 2 | 1 |
外部INT1中断 | 3 | 2 |
定时/计数T1中断 | 4 | 3 |
串行中断 | 5 | 4 |
(2)中断的优先级:不同事件的重要程度不同,重要的事件可以打断相对不重要的事件的处理。用户可以根据自己的需求对不同的事件即不同的中断源设定重要级别,称为中断的优先级。
(3)中断服务程序与中断向量:为了处理中断而编写的程序称为中断服务程序,对应中断服务程序的入口地址称为中断向量。每一个中断源都对应着一个固定的入口地址即中断向量,他们依次是:
中断号 | 入口地址 | 中断源 |
0 | 0003H | INT0 |
1 | 000BH | Timer 0 |
2 | 0013H | INT1 |
3 | 001BH | Timer 1 |
4 | 0023H | S1 |
(4)中断请求、中断响应、中断服务即中断返回:中断源对主程序或中断服务程序提出中断要求称为中断请求;主程序或中断服务程序接受中断请求,进入中断服务程序的过程称为中断响应;执行中断服务程序的过程称为中断服务;中断服务程序执行完毕后回到主程序或次级别中断服务程序的过程称为中断返回。中断处理的整个过程包含了中断请求、中断响应、中断服务及中断返回四个步骤。
(5)中断系统:实现中断处理功能的软件、硬件系统称为中断系统。
(6)中断嵌套:如果在执行一个中断时被另一个更重要的事件打断,暂停该中断处理过程转去处理这个更重要的事件,处理完毕后再继续处理本中断的过程称为中断的嵌套。中断嵌套有两条基本规则:
1°低优先级的中断服务可被高优先级中断,反之不能。
2°任何一种中断(不管是高级还是低级)一旦得到响应,不会被它的同级中断源的请求所中断。
3.中断相关的寄存器
中断相关的寄存器有4个,每个寄存器都是可以进行位寻址。
(1)控制寄存器—IE寄存器和IP寄存器
1° IE寄存器(中断允许寄存器)
单片机CPU对中断源的开放或屏蔽,每一个中断源是否被允许中断,是由内部的中断允许寄存器IE(IE是特殊功能寄存器,它的字节地址为8AH)控制的,其格式如下:
2° IP寄存器(中断优先级控制寄存器)
STC51系列单片机的片内各优先级控制寄存器格式如下:
(2)中断请求标志寄存器—TCON寄存器和SCON寄存器
1°TCON寄存器(定时器/计数器控制寄存器)
TCON为定时器/计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出中断源和外部请求中断源等,TCON格式如下:
2° SCON寄存器(串行口1控制寄存器)
4.中断函数的定义格式
void 中断函数名() interrupt m using n
{
局部变量定义;
中断函数体;
}
中断函数书写时注意事项:
(1)中断函数没有返回值,所有函数不能调用中断函数;
(2)定义中断函数时必须用关键字interrupt说明中断源类型号m。
(3)中断函数用关键字using说明使用哪组通用寄存器,n省略时,表示第0组寄存器,其取值范围是0~3。