㈠ 51定时器初值怎么算
首先,51单片机是加一计数,到65536溢出,所以定时时间(经过的脉冲个数,如果一个脉冲是1us,刚好延时50ms是50000个脉冲)是65536减初值
,初值又分高8位和低8
位,高8位的1代表256,因此高8位的数值所代表的数是256的整数倍,低位最大不超过255,所以一定是除以256之后的余数,用公式是这样:
初值=65536-定时脉冲个数=th0*256+tl0
反过来看你就很明白了
㈡ 51单片机的定时器初值到底是TH0 = (65536-x) /256;还是TH0 = (65535-x) /256;
51单片机的定时器初值确定时,我们通常使用65536减去定时脉冲个数来计算。这是因为16位计数器的最大可写入数值为65535。假设定时周期为1微秒,且频率为12MHz,即一个脉冲到来即溢出,此时应写入65535,即65536-1。
因此,(65536-x)/256是正确的计算方法。考虑到定时时间不可能为零,(65536-x)/256的结果不会是256,小于256的数都可以装入。同样地,对于TL0来说,也不会是256,因为256的倍数除以256后余数为0。
实际上,不管是65535还是65536,对TH0写入的结果是一样的。但对于TL0(或整个计数器来说),理论上存在一个脉冲的差别。假设定时周期为1微秒,写入65535时,定时器一打开,脉冲立即到来,可能不到1微秒。而写入65534,则需两个脉冲才会溢出,时间肯定大于1微秒。
这种方法用于实现这么小的定时,显然是不准确的。还有中断响应时间、主程序响应时间等都需要考虑。对于长时间定时,这个误差是可以忽略的。要想减小误差,可以提高晶振或系统时钟的频率。当定时脉冲个数较多时,就不必纠结这一个脉冲的误差了,同时中断响应时间和中断程序处理的时间也减小了,大多数情况下是可以忽略的。
㈢ 单片机中 定时器/计数器 的计数初值是怎么计算得出的(计数和定时计算方式是否不同)--初学单片机
计数初值的计算:
定时或计数方式下计数初值如何确定:定时器选择不同的工作方式,不同的操作模式其计数值均不相同。若设最大计数值为M,各操作模式下的M值为:
模式0:M=2^13=8192
模式1:M=2^16=65536
模式2:M=2^8=256
模式3:M=256,定时器T0分成2个独立的8位计数器,所以THO、TLO的M均为256。
因为MCS-51的两个定时器均为加1计数器,当初值到最大值(00H或0000H)时产生溢出,将TF位置1,可发出溢出中断,因此计数器初值X的计算式为:X=M-计数值。
式中的M由操作模式确定,不同的操作模式计数器的长不相同,故M值也不相同。而式中的计数值与定时器的工作方式有关。
1、计数工作方式时
计数工作方式时,计数脉冲由外部引入,是对外部冲进行计数,因此计数值根据要求确定。其计数初值:X=M-计数值。
2、定时工作方式时
定时工作方式时,计数脉冲由内部供给,对机器周期进行计数,计数脉冲频率fcont=fosc*1/12、计数周期T=1/fcont=12/fosc定时工作方式的计数初值X等于:
X=M-计数值=M-t/T=M-(fosc*t)/12
式中:fosc为振荡器的振荡频率,t为要求定_的时间。
(3)单片机定时器计数初值的计算公式扩展阅读:
定时器工作方式的设定:
定时器有两种工作方式:定时和计数。由TMOD的D6位和D2位决定,其中D6位决定T1的工作方式,D2位决定T0的工作方式。值为0时工作在定时方式,值为1时工作在计数方式。并且有四种操作模式:
1、模式0:13位计数器,TLi只用低5位。
2、模式1:16位计数器。
3、模式2:8位自动重装计数器,THi的值在计数中不变, TLi 溢出时,THi中的值自动装入TLi中。
4、模式3:T0分成2个独立的8位计数器,T1停止计数。