10.1.3 中断允许标志及其C51访问
对于51系列单片机的5个中断请求,分别对应一个中断允许或禁止标志位,均由中断允许控制寄存器IE控制。用户可以在程序中使用中断允许标志位来允许或者禁止相应的中断请求。
中断允许控制寄存器IE的位定义格式,如图10.3所示。其字节地址为A8H,可以位寻址。其中D7位为总控制位,D0~D4分别控制各个中断请求,D5和D6位未定义。下面分别介绍各位的定义。
图 10.3 控制寄存器IE的格式
❑EA(D7,位地址AFH):中断禁止或允许总控制位。当置EA=0时,8051单片机将禁止所有中断请求;当置EA=1时,8051单片机允许各个中断,此时还需要由其他各个标志位单独确定中断的允许或禁止。
❑ES(D4,位地址ACH):串行中断禁止或允许控制位。当置ES=0时,禁止串行口中断;当置ES=1时,允许串行口中断。
❑ET1(D3,位地址ABH):定时器/计数器T1禁止或允许标志位。当置ET1=0时,将禁止定时器/计数器T1中断;当置ET1=1时,将允许定时器/计数器T1中断。
❑EX1(D2,位地址AAH):外部中断1禁止或允许标志位。当置EX1=0时,将禁止外部中断1;当置EX1=1时,将允许外部中断1。
❑ET0(D1,位地址A9H):定时器/计数器T0禁止或允许标志位。当置ET0=0时,将禁止定时器/计数器T0中断;当置ET0=1时,将允许定时器/计数器T0中断。
❑EX0(D0,位地址A8H):外部中断0禁止或允许标志位。当置EX0=0时,将禁止外部中断0;当置EX0=1时,将允许外部中断0。
在KeilµVision3集成开发环境中,头文件reg51.h中包含了对特殊功能寄存器IE及其各位的声明,示例如下。
sfr IE=0xA8;//定义IE
sbit EA=0xAF;//中断允许或禁止总控制位
sbit ES=0xAC;//串行中断允许或禁止控制位
sbit ET1=0xAB;//定时器/计数器T1允许或禁止标志位
sbit EX1=0xAA;//外部中断1允许或禁止标志位
sbit ET0=0xA9;//定时器/计数器T0允许或禁止标志位
sbit EX0=0xA8;//外部中断0允许或禁止标志位
因此,在程序中加入该头文件后,便可以在C51程序中直接对这些位进行操作,例如:
ET0=1//允许定时器/计数器T0中断
EA=1//打开总中断
该语句首先直接为ET0赋值1,允许定时器/计数器T0中断。接着,直接为EA赋值1,用于打开总中断,从而实现中断的开启。