为啥51单片机TH0=(65535–x)/256?

如题所述

因为51单片机的计数器是+1计数器,每个单位时间计数值增加1,当计数值发生溢出时产生中断,溢出时间为65536-x
计数器是16位的,当TH0是计数器的高8位,所以要除以256然后取整
温馨提示:内容为网友见解,仅供参考
第1个回答  2023-03-12
首先你要知道定时器是递增的,并且在溢出时产生事件。其次你要知道在16位定时/计数模式下,THx储存高8位、TLx储存低8位。
因此溢出所需的初值是用65536减去你预期的计数,然后取出其高8位赋给THx。

为啥51单片机TH0=(65535–x)\/256?
因为51单片机的计数器是+1计数器,每个单位时间计数值增加1,当计数值发生溢出时产生中断,溢出时间为65536-x 计数器是16位的,当TH0是计数器的高8位,所以要除以256然后取整

51单片机定时器时间赋值TH0=65535-((65535-a)\/256);TL0=65535-((65535...
看代码应该是定时器0模式1,TH0与TL0是定时器0工作在模式1的时候赋初值的寄存器,在这段代码中,a=6553。表示定时器定时时间周期为6553us=6.553ms。整个程序的话应该是每隔6.553ms跳变一次

单片机TH0=(65536-50000)\/256;是什么意思
而(65536-50000)%256的结果是B0H,即一个字的低字节。单片机TH0=(65536-50000)256;就是将定时器0(TH0)高位字节付值3CH。

Tho=(65536-45872)\/256这句话在单片机定时器里面用到的,是什么意思_百 ...
51单片机的定时器是16位的,分高8位和低8 位,最大65535,其中高8位(Tho)的数代表256的倍数,所以计算时要对256取模 低8位(TL0)代表不足256的部分,因此要对256取余数 由于该定时器是加法计数的,到65536产生溢出,因此 定时器初值=65536-定时的脉冲个数 假设晶振频率12MHZ,一个计时脉冲就...

单片机TH0=(65536-50000)\/256;是什么意思
接着,我们将这个数值除以256,因为单片机可能使用16位的寄存器来表示定时器0(TH0)的值,其中高位字节存储在结果的高位,即整数部分。(65536-50000)\/256的商是3CH,这代表了TH0的高位字节部分。余数则表示低位字节,(65536-50000)%256的结果是B0H,即TH0的低字节。因此,整个表达式TH0=(65536-50000)...

...为什么,求高手。TH0=(65536-X)\/256,TL0=(65536-X)%256
TL0=(65536-a)%256在编译之后,因为a是变量,所以会有一段两字节的减法运算代码,而且TH0=(65536-a)\/256和TL0=(65536-a)%256还可能会计算两次。所以在执行的时候,时间差异会比较大。如果把a定义成一个宏,那就可以得到和前一种方式一样的结果,而且修改也很方便,缺点就是不能在程序执行过程中改变a的值 尚云...

单片机TH0=(65536-50000)\/256;是什么意思
首先,我们来计算括号内的数值:(65536-50000)等于15536。这个数值在16进制中对应的值是3CB0H。接下来,我们对这个结果进行进一步处理,除以256,得到商3CH,这是定时器0(TH0)的高位字节值。余数(65536-50000)%256等于B0H,这部分就是TH0的低字节。因此,整个表达式TH0=(65536-50000)256;实际上是...

TH0=(65536-10000)\/256; TL0=(65536-10000)%256; 是单片机C语言的...
定时器工作原理:从TH和TL里的值开始向上计数直到溢出触发中断,在晶振12M,12T单片机的情况下,时钟周期为1MHz,执行一次加计数用1us,这样,从0记到两个寄存器的最大值65535就要用去65.536ms,这就是51单片机最大计数范围。此时,为了计出10ms的时间,那么就要更改TH和TL的值,使定时器不从0开始计...

单片机的定时器C语言编程中:TH0与TL0为什么是TH0=(65536-50000)\/256...
1、首先第一步要定时器0设置于模式1时,然后由高8位TH0和低8位TL0两个8位寄存器组成,注意的是当设定计算值为65536-50000=15536(D)时,转换为十六进制就是3CB0(H),此时,TH0=3C,TL0=B0分别装入就可以了。2、接这就是采用“TH0=(65536-50000)\/256;TL0=(65536-50000)%256“的编程方式,...

单片机中给定时器赋做值时 TH0=(65536-30000)\/256 TL0=(65536-30000...
TH0是定时器高位,TL0是定时器低位。\/是取整,%是取余。(65536-30000)%256 刚好就是TL0的计数初值,当计数到30000%256时候,也就是到了256了,这样TH0增加1. TL0下一次再从(65536-30000)%256开始计数。所以TH0要除256取整数,TL0除256取余数。

相似回答
大家正在搜