1.中断源: 中断源是指在计算机系统中向CPU发出中断请求的来源,可以人为设定,也可将突发性随机事件设置为中断源。
TF0(P3.4):定时/计数器功溢出中断请求标志。当定时/计数器功产生溢出时,中断请求标志位TF0置位(由硬件自动执行),并向CPU申请中断。
TF1(P3.5):定时/计数器T1溢出中断请求标志。当定时/计数器T1产生溢出时,中断请求标志位TF1置位(由硬件自动执行),并向CPU申请中断。
R1/T1:串行中断请求标志。当串行接口接收或发送完一帧串行数据时,中断请求标志位R1或T1置位(由硬件自动执行),并向CPU申请中断。
以上中断源请求中断时,相应的标志分别由TCON和SCON中的相应位来锁存。通常中断源有I/O设备、硬件故障、实时时钟和人为设置的中断源。
2.中断请求标志:
MCS-51单片机的中断系统有以下四个特殊功能寄存器。
①定时器控制寄存器(TCON)(用6位)。
②串行口控制寄存器(SCON)(用2位)。
③中断允许寄存器IE。
④中断优先级寄存器IP。
(1)定时器/计数器控制寄存器(TCON):TCON字节地址为88H,位地址为88H~8FH。它用于保存定时器/计数器的溢出中断标志和外部中断标志。与中断有关的位如下。
TF1和TF0是定时器/计数器T1和T0的溢出中断请求标志位,其从初值开始加1操作,计满溢出后该相应位置1,请求中断,CPU响应后由硬件自动清0。
IE0和IE1:外部中断请求标志。当CPU采样到外部中断请求时,该位由硬件置“1”。
在CPU响应中断并执行中断服务程序时由硬件自动清0。
IT0和IT1:选择外部中断源触发方式控制位。
IT0为0时,外部中断0程控为电平触发方式。若外部中断请求为低电平,则使IEO置1;若为高电平,则使IE0清0,即低电平有效。
IT0为1时,外部中断0程控为边沿触发方式。若采样到外部中断请求出现下降沿,则使IE0置1,直到CPU响应中断,才由硬件使IE0清0,即下降沿有效。
IT1的含义与IT0类同。
(2)串行口控制寄存器(SCON)SCON字节地址为98H,位地址为98H~9FH,与中断有关的只有低两位,如下所示。
T1:串行口发送中断请求标志。CPU将一个数据写入发送缓冲器(SBUF)时就启动发送,发送完一帧数据后硬件置位TI,CPU响应中断时必须由软件对TI清0。
R1:串行口接收中断请求标志。串行口允许接收数据时,每收完一帧数据硬件置位RI,CPU响应中断时必须用软件对其清0。
单片机系统复位后,TCON和SCON各位清0。
3.中断控制:
MCS-51单片机系统中,由中断源发出中断请求,但CPU是否响应,如何响应,都由中断允许控制寄存器和中断优先级控制寄存器来决定。
(1)中断允许控制寄存器IE:中断允许控制寄存器IE的字节地址为0A8H,位地址为0AFH~0AFH。IE对中断的开放和关闭实现两级控制,有一个总的开关中断控制位EA(IE.7),5个中断源作为另一级中断控制,5个中断源由IE低5位的各对应控制位的状态进行中断允许控制。与中断有关的控制位如下所示。
EA:中断允许总控制位。EA=0时,关闭所有中断;EA=1时,CPU开始中断。
ES:串行口中断允许控制位。ES=0,禁止串行口中断;ES=1,允许串行口中断。
ET0:定时器/计数器T0的溢出中断允许位。ET=0,禁止T0中断;ET=1,允许T0中断。
ET1:与ET0类同。
EXO:外部中断0中断允许位。EX0=0,禁止外部中断0中断;EX0=1,允许外部中断0中断。
EX1:与EX0类同。
(2)中断优先级控制寄存器 IP:MCS-51单片机系统的中断源有两个优先级,每个中断源均可由中断优先级寄存器IP来设置优先级别。IP的字节地址为0B8H,位地址为0B8H~0BFH。与中断有关的控制位如下所示。
PS:串行口中断优先级控制位。PS=0,低优先级;PS=1,高优先级。
PT/PT0:定时器/计数器T1/T0中断优先级控制位。为0是低优先级;为1是高优先级。
PX1/PX0:外部中断1/外部中断0中断优先级控制位。为0是低优先级;为1是高优先级。
若有几个中断源申请中断,则CPU先响应优先级高的。当同时接收到几个同一优先级中断请求,响应哪个中断源取决于内部硬件查询顺序。同级中断源优先级排列顺序如表1-9所示。当CPU处理某一中断服务程序时,第二个比它优先级高的中断源可以使前一中断服务程序中断;若第二个中断源与第一个中断源优先级相同,则当第一个中断服务程序执行完后才执行第二个中断服务程序。
当单片机系统复位后,IE中各位均被清0,所有中断源都禁止;IP中各位均被清0,5个中断源均为低优先级。