定时/计数器 第二部分
定时/计数器 T0/T1
定时/计数器是一种可编程部件,必须通过软件进行正确配置,确定其工作方式后,才能启动它。所以在定时/计数器开始工作之前,CPU 必须将一些命令(“控制字”)写入定时/计数器的特殊功能寄存器。写入控制字的过程称作“定时/计数器初始化”。
控制与管理 T0,T1 工作的特殊功能寄存器为:TMOD 和 TCON。
工作方式寄存器 TMOD | |||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
高半字节 | 低半字节 | ||||||
GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |
配置定时器 T1 | 配置定时器 T0 |
TMOD 不能进行位寻址,只能使用字节传送指令设置定时器的工作方式,复位后,TMOD 所有位均被置 0,定时器停止工作。
符号 | 功能 | 开关值 | |
GATE | Tx 的门控位 | 0 | 只需内部开启:TRx = 1,Tx 就开始工作 |
1 | 除了要内部开启:TRx = 1 外,还需外部中断 INTx 引入高电平,才能启动 Tx。 | ||
C/T | Tx 的功能选择位 | 0 | Timer: 以定时器方式工作 |
1 | Counter: 以计数方式工作 | ||
M1 | Tx 的方式选择位 | 0/1 | M1 和 M0 的组合定义可以设置 Tx 的工作方式,见第三部分。 |
M0 | Tx 的方式选择位 | 0/1 |
由于不能进行位寻址,所以只能对 TMOD 寄存器进行整体赋值,比如:
TMOD | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 备注 |
GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |
T0 以 16 位计数器进行定时工作; T1 以自动重装 8 位计数器进行计数工作;
|
|
BIT | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | |
BIN | 0110 0001B | ||||||||
HEX | 0x61 | ||||||||
DEC | 97 |
控制寄存器 TCON | |||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
8FH | 8EH | 8DH | 8CH | 8BH | 8AH | 89H | 88H |
高半字节 | 低半字节 | ||||||
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
TCON.7 | TCON.6 | TCON.5 | TCON.4 | TCON.3 | TCON.2 | TCON.1 | TCON.0 |
TCON 可进行位寻址操作,当系统复位时,所有位均被置 0。
符号 | 功能 |
TF1 | T1 溢出标志,并申请中断,进入中断函数后,该位被硬件置 0 |
TR1 | T1 运行控制,TR1 = 1 时启动,TR1 = 0 时停止 |
TF0 | T0 溢出标志,并申请中断,进入中断函数后,该位被硬件置 0 |
TR0 | T0 运行控制,TR0 = 1 时启动,TR0 = 0 时停止 |
IE1 | 外部中断 INT1 让请求标志 |
IT1 | INT1 触发方式选择位 |
IE0 | 外部中断 INT0 让请求标志 |
IT0 | INT0 触发方式选择位 |
定时/计数器 T2
工作方式寄存器 T2MOD | |||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
/ | / | / | / | / | / | T2OE | DCEN |
符号 | 功能 |
T2OE | 输出允许,T2OE = 1 时,允许输出,T2OE = 0 时,禁止输出 |
DCEN | 加 1 / 减 1 计数允许 |
当 T2 工作于自动重新装入方式时,如果 DCEN = 1,则 T2 可以进行加/减 1 计数; 当 T2EX = 1 时,T2 进行加 1 计数,当 T2EX = 0 时,T2 进行减 1 计数; 复位后, DCEN = 0,则 T2 进行加 1 计数。 |
控制方式寄存器 T2CON | |||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
TF2 | EXF2 | RCLK | TCLK | EXEN2 | TR2 | C/T2 | CP/RL2 |
符号 | 功能 |
TF2 | 溢出中断标志 |
EXF2 | 外部中断标志 |
RCLK | 串行口接收时钟选择标志 |
TCLK | 串行口发送时钟选择标志 |
EXEN2 | 外部触发允许控制位 |
TR2 | 计数控制位 |
C/T2 | 定时器或计数器功能选择位 |
CP/RL2 | 捕捉或常数重装入方式选择位 |
T2 溢出时被硬件置 1,必须手动置 0,但是当 RCLK = 1 或 TCLK = 1 时,即使溢出也不会将 TF2 重置。
当 T2 工作在捕捉和常数自动重装入方式下,若 EXEN2 = 1,则当 T2EX(P1.1)发生负跳变时,将使 EXF2 置位;如果此时允许 T2 中断,EXF2 = 1 会使 CPU 响应中断,需要软件置 0;当 DCEN = 1 时,EXF2 不会置位。
当 RCLK = 1,T2 以波特率发生器方式工作,此时 T2 的溢出脉冲作为串行口方式 1 和方式 3 的接收脉冲;
当 RCLK = 0,T1 的溢出脉冲作为接收时钟脉冲。
当 TCLK = 1,T2 以波特率发生器方式工作,此时 T2 的溢出脉冲作为串行口方式 1 和方式 3 的发送时钟脉冲;
当 TCLK = 0, T1 的溢出脉冲作为发送时钟脉冲。
当 T2 工作于捕捉方式及常数自动重装入方式下,且 EXEN2 = 1 时,如果 T2EX 引脚(P1.1/PIN2)有一个负跳变信号,则会引发捕捉或常数重装入动作,同时使 EXF2 置 1;若 EXEN2 = 0,T2EX 的电平变化对 T2 没影响。
当 C/T2 = 0, T2 为内部定时器,C/T2 = 1, T2 为外部事件计数器,由 T2 引脚(P1.0/PIN1)的下降沿触发。
当 CP/RL2 = 1,T2 工作于捕捉方式(EXEN2 = 1),T2EX 引脚的负跳变引发捕捉动作;
当 CP/RL2 = 0,T2 工作于常数自动重装入方式(EXEN2 = 1),T2EX 引脚的负足迹引发常数重装入动作。
《定时/计数器 第二部分》 由 CRAFTOUR.COM 采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际 许可协议进行许可。