先整理记录外部中断和定时器中断(っ・Д・)っ。



相关的特殊功能寄存器
定时器控制寄存器TCON
| 位 | 符号 | 说明 |
|---|---|---|
| 0 | IT0 | 外部中断0触发方式选择位。置0,则为低电平触发;置1,则为负跳变触发。 |
| 1 | IE0 | 外部中断0请求标志位。 |
| 2 | IT1 | 外部中断1触发方式选择位。置0,则为低电平触发;置1,则为负跳变触发。 |
| 3 | IE1 | 外部中断1请求标志位。 |
| 4 | TR0 | 定时器0运行控制位。软件置1来启动定时器;软件清零来停止定时器。 |
| 5 | TF0 | 定时器0中断标志位。 |
| 6 | TR1 | 定时器1运行控制位。软件置1来启动定时器;软件清零来停止定时器。 |
| 7 | TF1 | 定时器1中断标志位。 |
中断允许寄存器IE
| 位 | 符号 | 说明 |
|---|---|---|
| 0 | EX0 | 外部中断0允许位。 |
| 1 | ET0 | 定时器中断0允许位。 |
| 2 | EX1 | 外部中断1允许位。 |
| 3 | ET1 | 定时器中断1允许位。 |
| 4 | ES | 串口中断允许位。 |
| 5 | / | / |
| 6 | / | / |
| 7 | EA | 中断总允许位。 |
定时器模式寄存器TMOD
TMOD的位分配
注:标有T1的符号表示控制定时器T1的位,标有T0的符号表示控制定时器T0的位。
| 位 | 符号 | 复位值 |
|---|---|---|
| 7 | GATE(T1) | 0 |
| 6 | C/T(T1) | 0 |
| 5 | M1(T1) | 0 |
| 4 | M0(T1) | 0 |
| 3 | GATE(T0) | 0 |
| 2 | C/T(T0) | 0 |
| 1 | M1(T0) | 0 |
| 0 | M0(T0) | 0 |
TMOD的位描述
| 符号 | 描述 |
|---|---|
| GATE | 门控位。当GATE=0时,只要TCON中的TR0或TR1为1,就能启动相应的定时器/计数器;当GATE=1时,只要TCON中的TR0或TR1为1,且外部中断引脚INT0或INT1为高电平时,才能启动相应的定时器/计数器。 |
| C/T | 定时器/计数器模式选择位。C/T=0为定时器模式;C/T=1为计数器模式。 |
TMOD的M1、M0和工作模式
| M1 | M0 | 工作模式 | 描述 |
|---|---|---|---|
| 0 | 0 | 0 | 兼容8048单片机的13位定时器。 |
| 0 | 1 | 1 | THn和TLn组成一个16位的定时器。 |
| 1 | 0 | 2 | 8位自动重装载模式,定时器溢出后把THn重装载到TLn。 |
| 1 | 1 | 3 | 禁用定时器T1,定时器T0变成两个8位定时器。 |
外部中断
STC89C52有两个外部中断源——外部中断0和外部中断1,分别由引脚INT0(P3.2)和INT1(P3.3)的低电平或负跳变触发。

用法
要使用外部中断,需要对IE和TCON这两个特殊功能寄存器进行初始化操作:
1. 开启中断总允许位EA |
举个栗子
#include<reg51.h> |
运行结果:初次按下独立按键K5,LEDD8亮;再次按下独立按键K5,LEDD8灭。
定时器中断
当定时器的计数值溢出时,就能够触发定时器中断。
用法
要使用定时器中断,需要对TCON、IE和TMOD这三个特殊功能寄存器进行初始化操作:
1. 开启中断总允许位EA |
举个栗子
#include<reg51.h> |
运行结果:开发板上编号为D8的LED以先点亮1秒后熄灭1秒的规律来循环亮灭。
附注
| 中断源 | 中断号 |
|---|---|
| 外部中断0 | 0 |
| 定时器中断0 | 1 |
| 外部中断1 | 2 |
| 定时器中断1 | 3 |
| 串口中断 | 4 |