知识链接
一、外部中断
8051系列单片机提供了5个中断源,其中两个外部中断(INT0、INT1),两个定时/计数器中断(T0、T1)和一个串行口中断。
INT0和INT1输入的两个外部中断源,其触发方式的控制由寄存器TCON的低4位状态确定,TCON的低4位格式见表5-2-1。
表5-2-1 TCON格式

●IE1/IE0:外部中断请求标志。当外部信号产生中断时,由硬件置位(IE1/IE0=1);当CPU响应中断时,由硬件清除(IE1/IE0=0)。
●IT1/IT0:外部中断0、1的触发方式选择位,由软件设置。
当IT1/IT0=1时,下降沿触发方式。INT0/INT1引脚上高到低的负跳变可以引起中断;
当IT1/IT0=0时,电平触发方式。INT0/INT1引脚上低电平可引起中断。
二、中断控制
在8051单片机的中断系统中,对中断的控制除了TCON和SCON以外,还有两个特殊功能寄存器IE和IP,专门用于中断控制,分别来设定各个中断源的打开或关闭以及中断源的优先级。
1.中断允许控制寄存器IE
在8051单片机中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。它分别控制CPU对所有中断源的总开放或禁止以及对每个中断源的开放或禁止。中断允许控制寄存器IE的格式见表5-2-2。
表5-2-2 中断允许控制寄存器IE的格式

●EA:中断总开关位。EA=1时,CPU开中断;EA=0时,CPU关中断;
●ES、ET1、EX1、ET0、EX0:分别为串口、T1、外部中断1、T0、外部中断0的中断开关控制位。置1时允许该项中断;清0时禁止该项中断。
2.中断优先级控制寄存器IP
8051单片机的5个中断源可以被设为两个不同的级别,CPU先响应中断级别高的中断源。中断优先级通过中断优先寄存器IP中相应位的状态来设定。中断优先级控制寄存器IP的格式见表5-2-3。
表5-2-3 中断优先级控制寄存器IP的格式
(https://www.daowen.com)
PS、PT1、PX1、PT0、PX0分别为串口、T1、外部中断1、T0、外部中断0的中断优先级控制位,各项置1时为高级中断,清0时为低级中断。
三、并行多分支switch…case语句
在实际应用中,常常会遇到多分支选择问题,可以采用if嵌套实现,只是分支较多时,嵌套的if语句层数多,程序冗长且可读性降低。C语言提供了switch语句直接处理多分支选择。switch语句的一般形式如下:
switch(表达式)
{
case 常量表达式1:语句1;break;
case 常量表达式2:语句2;break;
……
case 常量表达式n:语句n;break;
default:语句 n+1;break;
}
switch…case语句执行过程如图5-2-2所示。
switch…case语句的说明如下:
●switch后面括号内的“表达式”,可以是任务类型。
●当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句;若所有case中的常量表达式的值都不能与表达式的值相等时,就执行default后面的语句。
●每一个case的常量表达式的值必须不相同,否则就会出现互相矛盾的现象。
●各个case和default的出现次序不影响执行结果。
●执行完一个case后面的语句后,若没有break语句,程序并不会自动跳出switch语句,而是继续执行后面的语句。

图5-2-2 switch…case语句执行过程