### C单片机中断系统知识点解析
#### 一、80C51单片机中断系统概述
**80C51单片机**是一种广泛应用于各种电子设备中的微控制器,其强大的中断处理能力是其核心特性之一。该单片机拥有**5个中断源**和**2个中断优先级**,能够实现**两级嵌套中断处理**,这为其实现高效灵活的任务调度提供了基础。
#### 二、中断源及相关的专用寄存器
1. **80C51单片机的中断源**
- **外部中断0 (INT0)**:位于P3.2引脚上。
- **外部中断1 (INT1)**:位于P3.3引脚上。
- **定时器0 (T0)中断**:通过溢出标志TF0触发。
- **定时器1 (T1)中断**:通过溢出标志TF1触发。
- **串行口发送/接收中断**:通过SCON寄存器中的RI和TI标志触发。
2. **定时器控制寄存器TCON**
- TCON寄存器用于控制定时器/计数器T0和T1的工作状态以及外部中断0和外部中断1的触发方式。
- **TF0**和**TF1**分别表示定时器T0和T1的溢出标志位,当定时器溢出时硬件会自动将其置位。
- **TR0**和**TR1**分别表示定时器T0和T1的启动/停止控制位,用于开启或关闭定时器。
- **IT0**和**IT1**分别表示外部中断0和外部中断1的触发方式选择位,0表示电平触发,1表示边沿触发。
3. **串行口控制寄存器SCON**
- SCON寄存器用于控制串行通信的工作方式和状态。
- **RI**(Receive Interrupt)表示串行口接收中断标志位,当接收到一帧数据后硬件会自动将其置位。
- **TI**(Transmit Interrupt)表示串行口发送中断标志位,当发送完一帧数据后硬件会自动将其置位。
- RI和TI的中断服务程序入口地址均为**0023H**,在中断服务程序中必须手动清除这两个标志位。
4. **外部中断触发方式的说明**
- 在**电平触发方式**下,外部中断请求信号必须保持一段时间,直到CPU响应中断。在中断返回前,请求信号必须撤除。
- 在**边沿触发方式**下,外部中断请求信号的上升沿或下降沿可以触发中断。这种方式下,请求信号不必维持长时间,硬件会在检测到有效边沿后自动清除中断标志位。
#### 三、单片机对中断请求的控制
1. **中断使能控制**
- 通过**中断允许寄存器IE**来进行控制。
- **EA**(Enable All)位控制所有中断是否允许。
- 每个中断源都有自己的使能控制位,例如ET0控制T0的中断使能,ES控制串行口中断等。
2. **中断优先级控制**
- 80C51单片机支持**两个中断优先级**:高优先级和低优先级。
- 通过**IP寄存器**来设置各个中断源的优先级等级。
- 当多个中断同时发生时,单片机会优先处理优先级更高的中断请求。
#### 四、应用举例
以下是一个简单的外部中断触发方式的应用实例:
```assembly
MAIN: SETB P3.0 ; 设置P3.0为高电平
CLR IT0 ; 设置INT0为电平触发
SETB EX0 ; 开放INT0中断
SETB EA ; 开放全局中断
HERE: AJMP HERE ; 无限循环等待中断
; 外部中断0中断服务程序
WBINT: CLRP3.0 ; 清除P3.0,取消中断请求
MOV A, #0FFH ; 将A赋值为全1
MOV P1, A ; 将A的值输出到P1端口
MOVA, P1 ; 将P1端口的值读入A
SWAP A ; 交换A的高4位和低4位
MOV P1, A ; 再次将A的值输出到P1端口
SETB P3.0 ; 设置P3.0为高电平
RETI ; 返回中断
```
此段代码演示了如何设置外部中断0为电平触发模式,并且在中断发生时执行一系列操作。通过设置寄存器和编写相应的中断服务程序,可以实现对外部事件的有效响应。
80C51单片机的中断系统功能强大,能够满足不同应用场景的需求。通过合理配置寄存器和编写有效的中断服务程序,可以大大提高系统的响应速度和处理效率。