### C的中断系统及定时习题解答知识点梳理
#### 一、80C51的中断系统概述
**1.1 中断源介绍**
- **80C51微控制器**具备**五个中断源**:
- 外部中断0(/INT0)
- 外部中断1(/INT1)
- 定时器/计数器0溢出中断(T0)
- 定时器/计数器1溢出中断(T1)
- 串行口中断(RI和TI)
**1.2 中断标志位产生与复位机制**
- **外部中断标志**:
- 电平方式触发的外部中断标志与引脚信号一致。
- 边沿方式触发的外部中断响应中断后由硬件自动复位。
- **定时器/计数器中断标志**(T0和T1):
- CPU响应中断时,由硬件自动复位。
- **串行口中断标志**(RI和TI):
- 由硬件置位。
- 必须由软件复位。
**1.3 中断入口地址**
- 各中断源对应的中断入口地址如下:
- 外部中断0(/INT0):0003H
- 定时器/计数器0溢出中断(T0):000BH
- 外部中断1(/INT1):0013H
- 定时器/计数器1溢出中断(T1):001BH
- 串行口中断(RI和TI):0023H
#### 二、多外部中断源的优先级设置与处理
**2.1 问题背景**
- 某系统具有**三个外部中断源**(1、2、3),当某个中断源变为低电平时要求CPU进行处理。
- 优先级顺序由高到低为3、2、1。
- 中断处理程序的入口地址分别为2000H、2100H、2200H。
**2.2 中断服务程序编写**
- 主程序及中断服务程序示例代码:
```assembly
ORG 0000H
LJMP MAIN
ORG 00013H
LJMP ZDFZ
ORG 0040H
MAIN:
SETB EA
SETB EX1
SJMP $
ZDFZ:
PUSH PSW
PUSH ACC
JBP1.0, DV3
JBP1.1, DV2
JBP1.2, DV1
INRET:
POP ACC
POP PSW
RETI
ORG 2000H
DV3:
; 中断处理代码
JMP INRET
ORG 2100H
DV2:
; 中断处理代码
JMP INRET
ORG 2200H
DV1:
; 中断处理代码
JMP INRET
```
**2.3 解析**
- **电路接线图**或**非门DV3DV2DV1DV3DV2DV1P1.0P1.1P1.2/INT180C510RG0200H**
- 中断服务程序通过检查P1.0、P1.1、P1.2的状态来判断是哪个中断源触发了中断,并跳转到相应的处理程序入口。
#### 三、定时/计数器的运行控制
**3.1 完全由TR1、TR0控制**
- 当定时/计数器的运行控制完全由TR1、TR0确定时,TMOD中的GATE应设置为**0**。
**3.2 完全由高、低电平控制**
- 当定时/计数器的运行控制完全由高、低电平控制时,TMOD中的GATE应设置为**1**。
#### 四、P1.1引脚输出1000Hz方波程序设计
**4.1 方案设计**
- 使用定时器T0实现输出1000Hz方波。
**4.2 控制字TMOD配置**
- T0工作在定时方式1,控制字TMOD配置为**01H**。
**4.3 计数初值计算**
- 晶振频率为12MHz,机器周期Tcy为1μs。
- 输出频率为1000Hz,周期为1ms。
- 计算得到计数初值X为**FE0CH**。
**4.4 实现程序**
```assembly
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP DVT0
ORG 0030H
MAIN:
MOV TMOD, #01H
MOV TH0, #0FEH
MOV TL0, #0CH
SETB ET0
SETB EA
SETB TR0
SJMP $
DVT0:
CPL P1.1
MOV TH0, #0FEH
MOV TL0, #0CH
SETB TR0
RETI
END
```
#### 五、利用定时/计数器T0控制8个指示灯闪动
**5.1 方案设计**
- 使用定时器T0实现每50ms的定时,使8个指示灯依次闪动一次。
**5.2 控制字TMOD配置**
- T0工作在定时方式1,控制字TMOD配置为**01H**。
**5.3 计数初值计算**
- 晶振频率为12MHz,机器周期Tcy为1μs。
- 输出频率为20次/秒,周期为50ms。
- 计算得到计数初值X为**D8F0H**。
**5.4 实现程序**
```assembly
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
CLR ET0
MOV A, #01H
LP0:
MOV P1, A
CALL D1SEC
RLA
AJMP LP0
D1SEC:
MOV R7, #50
MOV TMOD, #01H
DL:
MOV TH0, #0D8H
MOV TL0, #0F0H
SETB TR0
JNB TF0, $
CLR TR0
CLR TF0
DJNZ R7, DL
RET
```
以上是对C的中断系统及定时习题解答的知识点梳理,包括80C51的中断系统概述、多外部中断源的优先级设置与处理、定时/计数器的运行控制以及具体的应用实例分析。