定时器/计数器应用提高 ----1

来源:互联网 发布:数据分析统计工具 编辑:程序博客网 时间:2024/05/17 22:42

先来认识几个概念:

1.时钟周期。也是震荡周期,是外接时钟频率的倒数,CPU仅完成一个最基本的动作。

2.状态周期:是时钟周期的2倍。

3.机器周期:单片机的基本操作周期,在一个操作周期内,单片机完成一项基本操作。   是12个时钟周期

4.指令周期:它是指CPU执行一条指令所需要的时间,一般一个指令周期含有1-4个机器周期。

 

1.方式0应用

     具体的设置方式就步解释了,这里详细解释下如何设置时间

     由于定时器方式为0是13位计数器,最多能装载的数为2^13=8192个,当TL0和TH0的初始值为0时候,最多经过8192个机器周期该计数器就会溢出一次,向CPU申请中断。

          结论:当用定时器的方式为0,设机器周期为Tcy,定时器产生一次中断的时间为t,那么需要计数的个数为N=t/tcy,装入THX和TLX中的数分别为:

                     THX=(8192-N)/32,    TLX=(8192-N)%32

     例子:   TX-1C实验板上时钟频率为11.0592MHZ,那么时钟周期为12*(1/11059200)=1.0851us,

                    若t=5ms,那么N=5000/1.0851=4067

 

2.方式2应用

    注意:在定时器的方式0和方式1中,当计数器溢出后,计数器会变0,因此要重新装入初值

     这个方法有2个不好点:1.影响定时器精度2.必须反复设置处置

    所以用2可以很好的解决这个问题

          但是注意:1.只有8位计数器,当定时较长时间会带来麻烦,所以当用精确频率较高的发生器的时候,选用方式2

                           2.一定要是12的整数

    总结,计算方法如下:

          THX=256-N     TLX=256-N

         以计时1s为例,那么计数256,需要耗时1.0851*250=271.275us

          下面再计算1S时1000000/271.275=3686

3.方式3

    方式3值适用于定时器/计数器T0,当设定定时器T1处于方式3时,定时器T1不计数,

    方式3将To分成2个独立的8位计数器TL0和TH0。

   其中TL0为正常8为计数器,计数溢出后置位TF0,并向CPU申请中断,之后再重装初值。

    TH0将会占有定时器T1的中断请求标志TF1和定时器TR1

 

 

 

 

 

 

            

0 0