51单片机中断

80C51 单片机的中断源及其默认优先级(从高到低):

优先级 中断源 中断号
1️⃣ 外部中断 0 (INT0) IE0,编号 0
2️⃣ 定时器 0 (T0) TF0,编号 1
3️⃣ 外部中断 1 (INT1) IE1,编号 2
4️⃣ 定时器 1 (T1) TF1,编号 3
5️⃣ 串口中断 (TX/RX) RI/TI,编号 4

80C51 单片机共有 ​5 个中断源,默认优先级由硬件固定(中断向量地址从低到高),具体如下:

优先级 中断源 中断向量地址 触发条件 典型应用
最高 外部中断 0​ (INT0) 0003H P3.2 引脚低电平/下降沿 紧急按键、传感器信号
定时器 0 中断​ (TF0) 000BH 定时器/计数器 0 溢出 定时任务、PWM 生成
外部中断 1​ (INT1) 0013H P3.3 引脚低电平/下降沿 外部设备触发信号
定时器 1 中断​ (TF1) 001BH 定时器/计数器 1 溢出 串口波特率生成、计时
最低 串口中断​ (RI/TI) 0023H 串口数据接收完成(RI)或发送完成(TI) 串行通信(UART)

IE 寄存器格式(从高位到低位)

复制代码
位编号:  EA  -  -  ES  ET1 EX1 ET0 EX0
位名称:  7   6  5  4   3   2   1   0
位名 作用 设置为1表示...
EA 总中断允许位 允许中断系统工作
(保留) 位6和5保留,通常设为0 -
ES 串口中断允许(Serial) 允许串口发送/接收中断
ET1 定时器1中断允许 允许 Timer1 中断
EX1 外部中断1 允许(P3.3) 允许 INT1 触发中断
ET0 定时器0中断允许 允许 Timer0 中断
EX0 外部中断0 允许(P3.2) 允许 INT0 触发中断

IE 寄存器是 80C51 单片机中用于控制中断允许的 8 位寄存器(地址 A8H,支持位寻址)。其功能是全局或单独使能/禁止中断源,具体格式如下:

D7 D6 D5 D4 D3 D2 D1 D0
名称 EA --- --- --- ES ET1 EX1 ET0
功能 总中断允许 保留 保留 保留 串口中断允许 定时器1中断允许 外部中断1允许 定时器0中断允许

详细说明:​

  1. EA(总中断允许位,D7)​

    • EA=1:开启总中断(所有中断需在总中断开启后单独使能才能响应)。
    • EA=0:禁止所有中断(全局关闭)。
  2. ES(串口中断允许位,D4)​

    • ES=1:允许串口中断(RI/TI 触发)。
    • ES=0:禁止串口中断。
  3. ET1(定时器1中断允许位,D3)​

    • ET1=1:允许定时器/计数器1溢出中断(TF1=1 时触发)。
    • ET1=0:禁止定时器1中断。
  4. EX1(外部中断1允许位,D2)​

    • EX1=1:允许外部中断1(INT1/P3.3 引脚触发)。
    • EX1=0:禁止外部中断1。
  5. ET0(定时器0中断允许位,D1)​

    • ET0=1:允许定时器/计数器0溢出中断(TF0=1 时触发)。
    • ET0=0:禁止定时器0中断。
  6. EX0(外部中断0允许位,D0)​

    • EX0=1:允许外部中断0(INT0/P3.2 引脚触发)。
    • EX0=0:禁止外部中断0。
  7. 保留位(D6-D5-D4)​

    • 默认置0,无实际功能,通常不操作。

TCON 寄存器结构

TCON(地址:88H)​​ 是8051单片机中控制定时器/计数器及外部中断的核心寄存器,支持位寻址。以下是其核心功能解析:


TCON寄存器位定义

名称 功能描述
TF1​ (B7) 定时器1溢出标志 定时器1溢出时由硬件置1,​CPU响应中断后自动清零​(或通过软件手动清零)。
TR1​ (B6) 定时器1运行控制 由软件置1/0控制定时器1启停: - ​GATE=0 ​:TR1=1启动;TR1=0停止。 - ​GATE=1​:需TR1=1且INT1引脚高电平才启动。
TF0​ (B5) 定时器0溢出标志 功能同TF1,对应定时器0。
TR0​ (B4) 定时器0运行控制 功能同TR1,对应定时器0。
IE1​ (B3) 外部中断1标志 边沿触发(IT1=1)​ ​:中断响应后硬件自动清零; ​电平触发(IT1=0)​​:需软件清零。
IT1​ (B2) 外部中断1触发方式 - IT1=1:下降沿触发; - IT1=0:低电平触发。
IE0​ (B1) 外部中断0标志 功能同IE1,对应外部中断0(INT0)。
IT0​ (B0) 外部中断0触发方式 - IT0=1:下降沿触发; - IT0=0:低电平触发。

关键功能说明
  1. 定时器溢出标志(TF1/TF0)​

    • 定时器计数溢出时硬件自动置1,中断响应后自动清零,也可通过软件查询并清零(如 TF1 = 0;)。
  2. 定时器运行控制(TR1/TR0)​

    • GATE位(在TMOD寄存器中)的作用
      • GATE=0时,TR1/TR0直接控制定时器启停。
      • GATE=1时,需同时满足TR1/TR0=1且对应外部中断引脚(INT1/INT0)为高电平才启动定时器。
  3. 外部中断触发方式(IT1/IT0)​

    • 边沿触发(ITx=1)​:下降沿触发中断,中断标志(IEx)由硬件自动清零。
    • 电平触发(ITx=0)​:低电平触发中断,中断标志需软件清零,且中断服务结束前必须清除外部引脚的低电平,否则会重复触发。

IP(中断优先级寄存器):

位名 作用
PX0 外部中断0 优先级(1=高)
PT0 定时器0 优先级
PX1 外部中断1 优先级
PT1 定时器1 优先级
PS 串口优先级

SCON 寄存器

SCON 寄存器是一个 8 位的寄存器,通常位于 8051 的地址 0x98 。它的每一位都具有不同的功能,以下是 SCON 寄存器的位结构:

SCON寄存器位定义

名称 功能描述
SM0​ (B7) 串口工作模式选择 与SM1共同决定串口工作模式: - ​SM0=0, SM1=0 ​:模式0(同步移位寄存器) - ​SM0=0, SM1=1 ​:模式1(8位UART,波特率可变) - ​SM0=1, SM1=0 ​:模式2(9位UART,波特率固定) - ​SM0=1, SM1=1​:模式3(9位UART,波特率可变)
SM1​ (B6) 串口工作模式选择 同上,与SM0配合使用。
SM2​ (B5) 多机通信控制 - ​模式0 ​:SM2必须置0。 - ​模式1 ​:SM2=1时,只有接收停止位有效才会触发中断。 - ​模式2/3​:SM2=1时,接收的第9位(RB8)为1才触发中断。
REN​ (B4) 接收允许控制 - ​REN=1 ​:允许串口接收数据。 - ​REN=0​:禁止接收。
TB8​ (B3) 发送数据第9位 在模式2/3中,存放发送数据的第9位(可作校验位或地址/数据标识)。
RB8​ (B2) 接收数据第9位 在模式2/3中,存放接收数据的第9位;模式1中存放停止位。
TI​ (B1) 发送中断标志 - ​硬件置1 ​:当一帧数据发送完成时,TI=1。 - ​软件清零 ​:需手动清零 TI = 0;
RI​ (B0) 接收中断标志 - ​硬件置1 ​:当一帧数据接收完成时,RI=1。 - ​软件清零 ​:需手动清零 RI = 0;
名称 描述
7 SM0 串行通信工作模式位 0
6 SM1 串行通信工作模式位 1
5 SM2 使能多机通信模式
4 REN 接收使能位
3 TB8 发送第8位数据,主要用于多机通信时发送第8位数据
2 RB8 接收第8位数据,主要用于多机通信时接收第8位数据
1 TI 发送中断标志位,表示数据已发送完成
0 RI 接收中断标志位,表示接收数据已准备好
SCON 寄存器位的功能说明:
  1. SM0 和 SM1(位 7 和 6)

    • 这两位用于选择串行通信的工作方式。串行口有四种工作模式(模式 0、模式 1、模式 2 和模式 3),由 SM0SM1 组合决定。

      • 工作方式 0:标准异步方式,通常用于 UART 通信。

      • 工作方式 1:可变波特率异步通信。

      • 工作方式 2:同步串行通信。

      • 工作方式 3:支持多机通信。

  2. SM2(位 5)

    • SM2 用于启用多机通信模式。若设置为 1,表示该通信模式允许多台设备在同一总线上进行串行通信。
  3. REN(位 4)

    • REN 是接收使能位。设置为 1 时,允许接收数据;设置为 0 时,禁用接收数据。
  4. TB8(位 3)

    • TB8 是发送第 8 位数据的标志。在多机通信模式下,它表示发送的第 8 位数据。
  5. RB8(位 2)

    • RB8 是接收第 8 位数据的标志。在多机通信模式下,它表示接收的数据的第 8 位。
  6. TI(位 1)

    • TI 是发送中断标志位,当数据发送完成后,硬件会自动设置该标志位为 1。软件需要清除该标志位来确认发送操作完成。
  7. RI(位 0)

    • RI 是接收中断标志位,当接收到一帧数据时,硬件会自动设置该标志位为 1。软件需要清除该标志位来确认接收操作完成。
相关推荐
The Mr.Nobody2 小时前
STM32MPU开发之旅:从零开始构建嵌入式Linux镜像
linux·stm32·嵌入式硬件
阿川!3 小时前
嵌入式软件--stm32 DAY 3
stm32·单片机·嵌入式硬件
#金毛4 小时前
STM32的定时器输出PWM时,死区时间(DTR)如何计算
stm32·单片机·嵌入式硬件
无脑学c++4 小时前
STM32串口重定向:MDK与GCC重定向需重写的不同函数
stm32·单片机·物联网
Invinciblenuonuo5 小时前
STM32八股【6】-----CortexM3的双堆栈(MSP、PSP)设计
stm32·单片机·嵌入式硬件
2401_888859715 小时前
STM32 TIM编码器接口
stm32·单片机·嵌入式硬件
学习噢学个屁7 小时前
基于51单片机的超声波液位测量与控制系统
c语言·单片机·嵌入式硬件·51单片机
电鱼智能的电小鱼7 小时前
EFISH-SBC-RK3588无人机地面基准站项目
linux·网络·嵌入式硬件·机器人·无人机·边缘计算
电鱼智能的电小鱼7 小时前
基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案
linux·网络·嵌入式硬件·数码相机·无人机·边缘计算