目录

STC51-中断允许寄存器-IE-

STC51 中断允许寄存器 IE

在 51 单片机(如 STC51 系列)中,中断允许寄存器 IE 起着关键作用,它用于控制各个中断源的中断允许或禁止状态。下面将详细介绍中断允许寄存器 IE

1 寄存器概述

中断允许寄存器 IE 是一个可位寻址的特殊功能寄存器,其字节地址为 0xA8。通过对 IE 寄存器的不同位进行操作,可以分别控制全局中断以及各个具体中断源的开启和关闭。

2 寄存器位定义及功能

IE 寄存器共有 8 位,各位的具体定义和功能如下:

位序号位符号功能描述
D7EA全局中断允许位。当 EA = 1 时,CPU 开放中断,即允许响应各个使能的中断源发出的中断请求;当 EA = 0 时,CPU
禁止所有中断,无论其他中断允许位的状态如何,所有中断源的中断请求都不会被响应。
D6-保留位,在标准 51 单片机中该位无实际用途,用户程序一般不应对其进行操作。
D5ET2定时器 / 计数器 2 中断允许位(仅在 52 子系列单片机中有此位)。当 ET2 = 1 时,允许定时器 / 计数器 2
产生的中断请求;当 ET2 = 0 时,禁止定时器 / 计数器 2 的中断。
D4ES串行口中断允许位。当 ES = 1 时,允许串行口(UART)产生的接收或发送中断请求;当 ES = 0 时,禁止串行口的中断。
D3ET1定时器 / 计数器 1 中断允许位。当 ET1 = 1 时,允许定时器 / 计数器 1 溢出时产生的中断请求;当 ET1 = 0
时,禁止定时器 / 计数器 1 的中断。
D2EX1外部中断 1 允许位。当 EX1 = 1 时,允许外部中断 1(INT1 引脚)产生的中断请求;当 EX1 = 0
时,禁止外部中断 1 的中断。
D1ET0定时器 / 计数器 0 中断允许位。当 ET0 = 1 时,允许定时器 / 计数器 0 溢出时产生的中断请求;当 ET0 = 0
时,禁止定时器 / 计数器 0 的中断。
D0EX0外部中断 0 允许位。当 EX0 = 1 时,允许外部中断 0(INT0 引脚)产生的中断请求;当 EX0 = 0
时,禁止外部中断 0 的中断。

3 编程示例

以下是一个简单的示例代码,展示了如何使用 IE 寄存器来使能定时器 0 中断和外部中断 0: #include // 定时器 0 中断服务函数 void timer0_isr() interrupt 1 { // 定时器 0 中断处理代码 // 例如,翻转 P1.0 引脚的电平 P1 ^= 0x01; } // 外部中断 0 中断服务函数 void ext0_isr() interrupt 0 { // 外部中断 0 中断处理代码 // 例如,点亮 P1.1 引脚连接的 LED P1 |= 0x02; } void main() { // 配置定时器 0 为模式 1(16 位定时器) TMOD |= 0x01; // 设置定时器 0 初值,定时约 1ms TH0 = 0xFC; TL0 = 0x18; // 启动定时器 0 TR0 = 1; // 设置外部中断 0 为边沿触发方式 IT0 = 1; // 使能定时器 0 中断 ET0 = 1; // 使能外部中断 0 EX0 = 1; // 全局中断使能 EA = 1; while (1) { // 主循环代码 } }

4 注意事项

  • 全局中断控制EA 位是中断控制的总开关,只有当 EA = 1 时,其他中断允许位的设置才会生效。如果 EA = 0,则所有中断源的中断请求都将被屏蔽。
  • 位操作的灵活性 :由于 IE 寄存器可位寻址,在编程时可以直接对单个位进行操作,如 ET0 = 1;EX1 = 0;,这样可以提高代码的可读性和可维护性。
  • 不同单片机型号差异 :对于一些增强型 51 单片机或不同的子系列,可能会有额外的中断源和对应的中断允许位,使用时需要参考相应的芯片手册。