8051中断结构
在本节中,我们将了解Intel 8051微控制器的中断结构。
中断基本上是暂时挂起主程序、将控制权传递给外部源并执行其任务的事件。然后,它将控制权传递回主程序中断处。
8051有五个中断。这些中断是INT0,INT1,TO,T1,TI/RI。所有中断都可以使用IE(中断允许)寄存器启用或禁用。
这些中断的中断地址如下所示:
中断 | 地址 |
---|---|
INT0 | 0003H |
INT1 | 000BH |
T0 | 0013H |
T1 | 001BH |
TI/RI | 0023H |
中断允许(IE)寄存器
此寄存器可用于以编程方式启用或禁用中断。此寄存器是特殊功能寄存器(SFR)。地址为A8H。此字节是按位寻址的。因此,用户可以对其进行编程。此寄存器中的位具有不同的含义。寄存器结构如下所示:
位地址 | AF | AE | AD | AC | AB | AA | A9 | A8 |
---|---|---|---|---|---|---|---|---|
位详细信息 | EA | X | X | ES | ET1 | EX1 | ET0 | EX0 |
现在,让我们看看位详细信息以及值低(0)和高(1)时的不同操作。
位详细信息 | 高值(1) | 低值(0) |
---|---|---|
EA | 最低有效5位可以决定这五个中断的启用或禁用。 | 禁用所有五个中断。它只是忽略其余五个位。 |
ES | 启用串口中断 | 禁用串口中断 |
ET1 | 启用定时器1中断 | 禁用定时器1中断 |
EX1 | 启用外部中断1 (INT1) | 禁用外部中断1 (INT1) |
ET0 | 启用定时器0中断 | 禁用定时器0中断 |
EX0 | 启用外部中断0 (INT0) | 禁用外部中断0 (INT0) |
中断优先级(IP)寄存器
所有这五个中断都可以处于一到两个中断级别。优先级为1级和0级。1级表示较高优先级,0级表示较低优先级。此IP寄存器可用于存储每个中断的优先级。这也是一个按位寻址的SFR。其地址为B8H。
位地址 | BF | BE | BD | BC | BB | BA | B9 | B8 |
---|---|---|---|---|---|---|---|---|
位详细信息 | X | X | X | PS | PT1 | PX1 | PT0 | PX0 |
现在,让我们看看位详细信息以及值低(0)和高(1)时的不同操作。
位详细信息 | 高值(1) | 低值(0) |
---|---|---|
PS | 设置串口中断的1级优先级 | 设置串口中断的0级优先级 |
PT1 | 设置定时器1中断的1级优先级 | 设置定时器1中断的0级优先级 |
PX1 | 设置外部中断1 (INT1) 的1级优先级 | 设置外部中断1 (INT1) 的0级优先级 |
PT0 | 设置定时器0中断的1级优先级 | 设置定时器0中断的0级优先级 |
PX0 | 设置外部中断0 (INT0) 的1级优先级 | 设置外部中断0 (INT0) 的0级优先级 |
当所有五个中断都处于相同的优先级级别,并且如果所有中断都被启用,则中断顺序将为INT0,T0,INT1,T1,TI/RI。
某些特定的优先级寄存器值可用于维护中断的优先级。假设优先级寄存器的值为xxx00101,则表示顺序为INT0,INT1,TI/RI,T1,T0。但并非所有顺序都是可行的。INT0,INT1,TI/RI,T1,T0是无效的。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
外部中断
8051的外部中断是INT0和INT1。这些中断可以编程为边沿触发或电平触发。TCON寄存器可用于将外部中断编程为边沿触发或电平触发。TCON是定时器控制寄存器。TCON是另一个按位寻址的SFR。这里的地址是88H。
位地址 | 8F | 8E | 8D | 8C | 8B | 8A | 89 | 88 |
---|---|---|---|---|---|---|---|---|
位详细信息 | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
现在,让我们看看位详细信息以及值低(0)和高(1)时的不同操作。
位详细信息 | 高值(1) | 低值(0) |
---|---|---|
IT0 | 将(INT0)设置为负边沿触发输入。 | 将(INT0)设置为低电平触发输入。 |
IT1 | 将(INT1)设置为负边沿触发输入。 | 将(INT1)设置为低电平触发输入。 |
IE0 | 当INT0被激活为电平触发时,这将为1。 | 当INT0被激活为边沿触发时,这将为0。 |
IE1 | 当INT1被激活为电平触发时,这将为1。 | 当INT1被激活为边沿触发时,这将为0。 |
TR0 | 将定时器0设置为运行模式 | 将定时器0设置为停止模式。 |
TR1 | 将定时器1设置为运行模式 | 将定时器1设置为停止模式。 |
TF0 | 定时器T0溢出时为高。 | 重置定时器T0后,这也将变为0状态 |
TF1 | 定时器T1溢出时为高。 | 重置定时器T1后,这也将变为0状态。 |
IT0和IT1代表中断类型。这些位用于决定INT0和INT1是电平触发还是边沿触发。
IE0和IE1位用于指示外部中断的状态。这些位可以由微控制器本身设置或重置。
前四位是关于定时器的状态信息。当TR0和TR1为1时,表示定时器的运行模式。这些位提供对定时器运行的软件控制。定时器也可以由硬件控制。硬件模式的优先级高于软件模式。
TF0和TF1分别用于指示定时器T0和T1的溢出。发生溢出时,这些标志设置为1。当中断由某个中断服务子程序(ISS)处理时,这些标志将为0。
串口中断
串口既可以用作发送模式,也可以用作接收模式。发送的中断状态由TI提供,接收的中断状态由RI提供。它们是SCON(串行控制)的两位。这也是一个按位寻址的SFR。地址为98H
位地址 | 9F | 9E | 9D | 9C | 9B | 9A | 99 | 98 |
---|---|---|---|---|---|---|---|---|
位详细信息 | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
这些位的意义如下:
位详细信息 | 描述 |
---|---|
SM0 | 这是串口模式0移位寄存器 |
SM1 | 这是串口模式1(8位UAR+可变) |
SM2 | 在模式2或3中启用多处理器通信 |
REN | 由软件设置或重置以启用或禁用接收 |
TB8 | 它指示在模式2或3中将要发送的第9位。它可以由软件设置或重置 |
RB8 | 在模式2或3中,第9位在模式1中接收。 |
TI | 发送中断标志。它可以由硬件设置。 |
RI | 接收中断标志。它可以由硬件设置,但必须由软件复位。 |
8051的中断控制系统如下所示: