单片机的定时器C语言编程中:TH0与TL0为什么是TH0=(65536-50000)/256;TL0=(65536-50000)%256 ?

这个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“的编程方式,然后这时候就可以去让单片机自己去计算结果。

3、最后一步就是将定时的时间分别存在高八位的th0和低八位的tl0,2的八次方就是256了,然后要除以256是得到高八位,这时候就可以和256求余就是得到低八位即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-10
标准答案:定时器0设置于模式1时,计数寄存器为16位模式,由高8位TH0和低8位TL0两个8位寄存器组成,当设定计算值为65536-50000=15536(D)时,转换为十六进制就是3CB0(H),此时,TH0=3C,TL0=B0分别装入即可,为了免除这些计算步骤,很多编程者采用“TH0=(65536-50000)/256;TL0=(65536-50000)%256“的编程方式,去让单片机自己去计算结果,那么为什么要介入256呢?其实并不难理解,做一下10——16进制的换算就知道了,256(D)=0100(H),这里01就是高8位的数据,00就是低8位的数据,通俗点说,15536(D)里有多少个256,就相当于高8位有多少数值,就是除的关系了,商存入高8位寄存器后余下的数存入低8位即可,取商计算就是TH0=(65536-50000)/256;而取余计算就是TL0=(65536-50000)%256 。本回答被提问者采纳
第2个回答  2012-09-01
单片机的定时器是32位,TH0和TL0分别是0号定时器的高八位和低八位。

由于单片机是八位的,不能一次对32位赋值,要分两次赋值。

TH0=(65536-50000)/256是取32位数的高八位,赋值给TH0
TL0=(65536-50000)%256 是取32位数的低八位,赋值给TL0

256是八位二进制数的最大数。
第3个回答  2012-09-01
这是将定时的时间分别存在高八位的th0和低八位的tl0,2的八次方就是256了,除以256是得到高八位,和256求余就是得到低八位,举个例子,42和10求余得到的是2,42除以10则得到4,这分别就将42的十分和个位求出来了……
第4个回答  2012-09-01
因为一个字节最大只能表示256个数, 现在是要把TH0 TL0看成一个整型, 最大范围为65536
所以要把高字节放在高位TH0, 把低字节放在TL0中