概述
共同点与区别
- 共同点:对脉冲进行计数
- 区别:如果计数脉冲来自系统时钟,则为定时;如果计数脉冲来自外部引脚,则为计数。
定时器/计数器的工作模式
- 定时器/计数器T0有4种工作模式
- 模式0(16位自动重新加载模式)
- 模式1(16位不可重加载模式)
- 模式2(8位自动重加载模式)
- 模式3(不可屏蔽中断的16位自动重加载模式)
- 定时器/计数器T1有3种工作模式
- 模式0(16位自动重新加载模式)
- 模式1(16位不可重加载模式)
- 模式2(8位自动重加载模式)
- 定时器/计数器T2有1种工作模式
- 模式0(16位自动重新加载模式)
- 定时器/计数器T3有1种工作模式
- 模式0(16位自动重新加载模式)
- 定时器/计数器T4有1种工作模式
- 模式0(16位自动重新加载模式)
定时器/计数器寄存器组
定时器/计数器T0和T1控制寄存器TCON
- 作用:用于控制定时器/计数器T0和T1,同时锁存T0和T1溢出中断源和外部请求中断源等
- 寄存器地址:sfr 0x88
- 复位值:0000 0000B
定时器/计数器T0和T1工作模式寄存器TMOD
- 作用:用于工作模式的选择
- 寄存器地址:sfr 0x89
- 复位值:0000 0000B
TH1和TL1
- 作用:用于保存定时器/计数器T1的计数初值
- 寄存器地址:sfr 0x8D和0x8B
- 复位值:均为0000 0000B
TH0和TL0
- 作用:用于保存定时器/计数器T0的计数初值
- 寄存器地址:sfr 0x8C和0x8A
- 复位值:均为0000 0000B
辅助寄存器AUXR
- 作用:用于控制定时器的分频
- 寄存器地址:sfr 0x8E
- 复位值:0000 0001B
TH2和TL2
- 作用:用于保存定时器/计数器T2的计数初值
- 寄存器地址:sfr 0xD6和0xD7
- 复位值:均为0000 0000B
T0~T2时钟输出寄存器和外部中断允许INT_CLKO(AUXR2)寄存器
- 作用:用于控制是否允许定时器中断
- 寄存器地址:sfr 0x8F
- 复位值:x000 x000B
定时器计数器T3和T4控制寄存器T4T3M
- 作用:用于控制T3和T4的工作模式
- 寄存器地址:sfr 0xD1
- 复位值:0000 0000B
TH4和TL4
- 作用:用于保存定时器/计数器T4的计数初值
- 寄存器地址:sfr 0xD2和0xD3
- 复位值:均为0000 0000B
TH3和TL3
- 作用:用于保存定时器/计数器T3的计数初值
- 寄存器地址:sfr 0xD4和0xD5
- 复位值:均为0000 0000B
定时器中断控制寄存器
注: 参见前面中断章节
工作模式原理及实现
定时器/计数器T0工作模式
模式0(16位自动重加载模式)
原理图:
实验程序:
1 | /* |
源代码附件下载:
- 推荐下载链接:
链接:https://pan.baidu.com/s/19AtKbtt90JK8-qMzAtK4fQ
提取码:dket - 备用下载链接:
链接:https://www.aye.ink/files/018.zip