第六章 定时计数器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章定时/计数器及应用
第一节定时/计数器
1.定时/计数器工作原理
在实际应用中,常用定时器实现定时检测、定时控制。计数器主要用于事件的计数。许多物理量的测量经过外部电路设计都可将其转换为定时或计数功能。
51单片机内部集成了两个16位可编程的定时/计数器T0和T1(为描述方便,后面将以下标x来代表T0和T1的相关参数),他们具有定时和计数两种工作方式。定时/计数器T x由特殊功能寄存器TH x、TL x及相关控制寄存器构成。
定时器/计数器本质上就是16位加法计数器,由TH x、TL x存各自的计数值。计数工作方式下,加法计数器对芯片引脚T0(P3.4)、T1(P3.5)上输入的脉冲计数;定时工作方式下,加法计数器对内部机器周期脉冲进行计数,定时时间为:计数值×机器周期。
计数初值由用户编程设定,设置的初值不同,计数值或定时时间就不同。因为加法计数器计数满后将回零溢出并申请中断,且在二进制数的补码表示形式中,-1的形式为全1,加1后也将回0溢出,所以计数初值可以用负数的补码来表示。
2.控制寄存器
定时器/计数器两种工作方式是由用户对定时器工作方式控制寄存器TMOD编程设定的,定时器/计数器的启动、停止及溢出等情况是由定时器控制寄存器控制的。
工作方式控制寄存器TMOD
其中,低4位控制T0,高4位控制T1,各位的作用为:
M1M0:工作模式选择位。定时器的工作模式由M1M0设定。
M1M0工作模式功能
0 0 模式0 13位定时器/计数器
0 1 模式1 16位定时器/计数器
1 0 模式
2 自动重装初值的8位定时器/计数器
1 1 模式3 T0分为两个8位定时器/计数器;T1停止
(1)C/T :工作方式选择位
C/T = 1工作在计数方式,计数脉冲来自于外部脉冲输入端(P3.4,P3.5引脚);
C/T = 0工作在定时方式,计数脉冲来自于内部机器周期。
(2)GATE:门控位
GA TE = 0 时,定时器由TCON中的TR x(x =0,1)位进行控制,置1定时器/计数器启动,该位清0定时器/计数器停止;
GA TE = 1时,外部中断引脚( INT0 或
INT1 )上的高电平与TR x 共同控制。(如:TR x 置1且相应外部中断引脚为高电平,定时器/计数器启动)。
定时器控制寄存器TCON
0TF 0:定时/计数器0中断请求标志
TR 1:定时/计数器1运行控制位
TF 1:定时/计数器1中断请求标志
3.定时器/计数器的工作模式
工作模式的选择由TMOD 中的M 1M 0的值来决定,定时器/计数器T 0有4种工作模式(模式0、1、2、3),T1有3种工作模式(模式0、1、2),前3种工作模式,T 0和T 1除了所使用的寄存器、控制位和标志位不同外,其他的操作完全相同。
(1)工作模式0
当M 1M 0为00时,定时器/计数器工作于模式0。模式0为13位计数模式,最大计数值为213(8192),TH x 提供高8位,TL x 提供低5位。程序初始化时,向TH x 和TL x 装入计数初值,启动计数后,开始加1计数,TL x 的低5位溢出后,向TH x 的最低位进位,TH x 溢出后将置位TCON 中的TF x
,以申请中断。由于此时TH x 、TL x 均回0,若需要继续计数,用户应在程序中再次装入计数初值。
由于模式0的进位特点,在装入计数初值时,13位二进制的高8位装入TH x 中,低5位装入TL x 中(TL x 的高3位无效,可补0)。
例:T0的计数初值为1000,TH 0、TL 0中的代码应该是什么?
分析:由于补码的特点与定时/计数器回0溢出以申请中断的原理相同,故计数初值用-1000的补码(即1111,1100,0001,1000)来表示;由于模式0的特点,TH 0中装入E0H ,TL 0中装入18H 。
(2)工作模式1
当M 1M 0为01时,定时器/计数器工作于模式1。模式1为16位计数模式,最大计数值为216(65536),TH x 提供高8位,TL x 提供低8位。其他情况和模式0相似。
(3)工作模式2
当M 1M 0为10时,定时/计数器工作于模式2。模式2为自动重装初值的8位计数器,TL x 作为工作计数器,TH x 作为初值寄存器。程序初始化过程中,TH x 、TL x 装入相同的计数初值,启动计数器后,TL x 开始计数,TL x 溢出时,硬件置位TF x ,向CPU 发出中断请求,同时TH x 中的计数初值自动送入TL x 中,TL x 从初值开始从新计数,直到计数器被停止。
由于该方式省去了软件重装计数初值,所以该方式适合用于定时或计数较精确的情况。
(4)工作模式3
当M1M0为11时,定时/计数器工作于模式3。模式3仅适用于T0,此方式下,TH0和TL0成为两个独立的8位计数器。TL0可以当作定时/计数器使用,占用T0在TMOD和TCON中的控制位和标志位;TH0只能用作定时器,占用T1的TR1和TF1。此时T1仍可用于模式0,1,2,但不能使用中断方式。
在单片机串行通信中,一般将T1作为串行口波特率发生器,工作在模式2,此时将T0设置为模式3,可以额外增加一个8位的定时器。
4.对计数器输入信号的要求
定时/计数器作计数器使用时,外部脉冲由T0(P3.4)或T1(P3.5)输入,在每个机器周期的S5P2期间采样一次该引脚电平,若前一次检测为“1”,后一次检测为“0”,则加法计数器加一。新的计数值将在此后一个机器周期的S3P1期间装入TH x和TL x中,所以所采样的外部脉冲的“0”和“1”的持续时间都不能少于一个机器周期。由于需要两个机器周期才能识别高电平到低电平的跳变,所以外部计数脉冲的周期应大于2倍机器周期。如使用12MHZ 时钟,机器周期为1us,外部计数频率不能超过500KHZ。对外部脉冲的占空比无特殊要求。