相关寄存器 TMOD–工作方式控制寄存器
用于选择定时器/计数器的工作模式和工作方式,字节地址为89H,不能位寻址
TMOD各位功能如下: GATE:门控位
GATE = 0,则仅由控制位TRx(x = 0/1)来控制定时器/计数器运行
GATE = 1,则只有TR0 = 1和外部中断0引脚为高电平,才启动定时器T0,只有TR0 = 0,外部中断0引脚为低电平,才关闭定时器T0,这种工作状态可以用来测量外部中断0引脚出现的正脉冲的宽度
M1,M0,工作方式选择位
C/T,计数器模式和定时器模式选择位
为0,为定时器工作模式,对单片机的时钟震荡12分频后的脉冲进行计数
为1,为计数器工作模式,计数器对外部引脚T0,或T1,上的外部脉冲(负跳变)进行计数
TCON
只介绍和定时器/计数器相关的高四位
TCON有关位功能: TF1(0)计数溢出标志位
当计数器计数溢出时,该位置1,**使用查询方式时,**此位作为状态位,供CPU查询,**但应注意查询有效后,应使用软件及时将改为清0,使用中断方式时,**此为作为中断请求标志位,进入中断服务程序后由硬件自动清0
TR1(0)计数运行控制位
0为禁止,1为允许
计数/定时方法 定时器工作在方式1:16位
T0,T1由特殊功能寄存器TH0(1),TL0(1)构成
写程序时,将初值放入高八位TH0,低八位TL0
例:
12M晶振,每秒可产生1M个机器周期,
1个机器周期1us,延时50ms,就需要50000个机器周期,
定时器工作在方式1,为16位,最大值为65536,超出2^16(65536),则溢出
所以需要设定初值,x = 65536-50000 = 15536.
15536转换为16进制为FC18,则TH0 = 0xFCH,TL0 = 0x18H
TH0 = x / 256
TL0 = x % 256
计数溢出之后,TH0和TL0都将变为0,为保证下一轮定时的准确性,需要及时重新装载计数初值,同时要将溢出标志位TF0清0,由程序实现
定时器工作在方式2:8位
初始化时,TH0和TL0,初值相同,由程序赋予,计算方法,类比16位计算方法
计数溢出后,TH0中的数值自动装入TL0中开始计数,但是溢出标志位仍然需要程序清0,
这种工作方式可以更精确的实现定时时间,适合于串行口波特率发生器
51单片机学习笔记(一)—中断
51单片机学习笔记(三)—串口