THI是计数器0的高八位,TL0是计数器0的低八位,TH0*256+TL0就是把高八位向左移八位加上低八位组成一个16的数值,也就是计数值,再把它赋给fre
time是定义的16位变量,TH0和TL0都是8位的寄存器,所以你想要把TH0和TL0放在一个变量里就需要把TH0放入高8位里,就需要乘256,因为256转换成二进制就是100000000,正好是把TH0放到了高8位里,然后再加TL0就是TH0+TL0了。
将高字节和低字节合成一个整数
time是定义的16位变量,TH0和TL0都是8位的寄存器,所以你想要把TH0和TL0放在一个变量里就需要把TH0放入高8位里,就需要乘256,因为256转换成二进制就是100000000,正好是把TH0放到了高8位里,然后再加TL0就是TH0+TL0了。 00分享举报您可能感兴趣的内容广告 土巴兔-中式简约风格效果图大全_2023设计图片 土巴兔-中...
因为TH0*256+TL0=64536,且TL0和TL0都小于256,则两边同除256,可得TH0 = 64536/256;两边同对256求模,可得TL0 = 64536%256;
TH0里的H是高字节的意思,这个定时器应该是由两个字节构成,TH0和TL0,每次定时器触发会向TL0计数一次,TL0计到0xFF后向TH0进位,也就是说定时器每触发256次,TH0自加1
timer_us = TH0*256+TL0是读取当前定时器的数值,测距离修正是对读到得time_us的值进行修正,具体什么功能要看你是怎么测的
如果一个脉冲是1us,刚好延时50ms是50000个脉冲)是65536减初值 ,初值又分高8位和低8 位,高8位的1代表256,因此高8位的数值所代表的数是256的整数倍,低位最大不超过255,所以一定是除以256之后的余数,用公式是这样:初值=65536-定时脉冲个数=th0*256+tl0 反过来看你就很明白了 ...
unsigned char T0count; //定义一个单字节的无符号变量 unsigned long x; //定义一个长整型无符号变量 x=T0count*65536+TH0*256+TL0;/ TL0是T0的低八位寄存器 TH0是T0的高八位寄存器 根据定义的判断,计数事件(或者定时事件)的记录范围超过了16位的记录范围,所以扩展了T0count来记录TO...
带温度补偿超声波程序time=TH0*256+TL0; //这是最后计算到的时间,但应该再乘以12/11.092//时间应该是time*12/11.0592 TH0=0; //定时器0的初始值位0 TL0=0;a=(331.5+0.607*temp); //声速与温度的函数关系:声速=331