单片机中 定时器/计数器 的计数初值是怎么计算得出的?(计数和定时计算方式是否不同?)--初学单片机
计数初值的计算:
定时或计数方式下计数初值如何确定:定时器选择不同的工作方式,不同的操作模式其计数值均不相同。若设最大计数值为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为要求定吋的时间。
扩展资料:
定时器工作方式的设定:
定时器有两种工作方式:定时和计数。由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停止计数。
定时器的初值的计算如下:
在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数。若选择12M晶振,则定时器的计数频率为1MHZ。假设定时时间为T,机器周期为T1,即12/晶振频率。X为定时器初值。则 X=2^n-T/T1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8
我看的书上THO=(65536-1000)/256.和TLO=(65536-1000)%/256
这里的“/”和"%"代表什么, 还有256又是什么
首先没有THO和TLO,应该叫做TH0和TL0.
TH0=(65536-1000)/256.
TL0=(65536-1000)%/256(这里应该没有"/")
这里的“/”代表除法,运算结果是被除数除以除数得到的商的整数。
"%"表示“求于运算”,运算结果是被除数除以除数后的余数。
256刚好是2的八次方。
/256表示被除数除以256后取整,得到的是被除数写成16位二进制数的高八位。
%256表示被除数除以256后取余数,得到的是被除数写成16位二进制数的低八位。
TH0=(65536-1000)/256;将先求括号内的差,然后取这个差的高八位(通过除以2的八次方得到,除以一次2相当于右移一位)
TL0=(65536-1000)%256;将先求括号内的差,然后取这个差的低八位,即低字节放入TL0