您的位置:首页 > 其它

(九)c52学习之旅-定时器

2016-09-15 20:32 106 查看
定时器可以解决软件延时的不精确性和系统效率的降低。

一、定时/计数器的工作原理

加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。

设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t 。

设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2 us。

二、与定时器有关的寄存器

1.工作方式寄存器TMOD



高4位设置T1,低4位设置T0

(1)GATE门控位。

GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;

GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。

(2)C/T定时/计数模式选择位。

=0为定时模式; =1为计数模式。

(3)M1M0:工作方式设置位。

定时/计数器有四种工作方式,由M1M0进行设置



2.控制寄存器TCON

TCON的低4位用于控制外部中断。TCON的高4位用于控制定时/计数器的启动和中断申请。



(1)TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。

(2)TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。

(3)TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。

(4)TR0(TCON.4):T0运行控制位,其功能与TR1类同。

3.IE中断允许控制



(1)EA总中断开关

(2)ET1定时器/计数器1开关

(3)ET0定时器/计数器0开关

4.TH*,TL*

TH0,TL0/TH1,TL01:用来赋值初值。

三、定时/计数器的工作方式

(1)方式0



方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

计数个数与计数初值的关系为:X=2^13 - N。

(2)方式1



方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器 。

计数个数与计数初值的关系为:X=2^16 - N。

(3)方式2



方式2为自动重装初值的8位计数方式。

计数个数与计数初值的关系为:X=2^8 - N。

工作方式2特别适合于用作较精确的脉冲信号发生器。

(4)方式3



方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。

工作方式3将T0分成为两个独立的8位计数器TL0和TH0

四、定时器/计数器初始化

定时器0的初始化过程

1、定时器模式设定。对TMOD赋值,以确定T0和T1的工作方式。

2、定时器初值设定。计算初值,并将其写入TH0、TL0。

3、设置中断系统。允许全局中断和定时器0中断。

4、启动定时器。使TR0置位,启动定时器0。

* 五、定时器0初值计算*

人工计算(为方便计算,本讲晶振改用12MHz)

计数值=定时时间/(振荡周期*12)

初值=65536-计数值

定时时间= (振荡周期12) (65536-初值)

最大定时时间= (振荡周期*12) *65536=65.536ms
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息