单片机的定时器C语言编程中:TH0与TL0为什么是TH0=(65536-50000)/256;TL0=(65536-50000)%256 ?
5个回答
展开全部
标准答案:定时器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 。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机的定时器是32位,TH0和TL0分别是0号定时器的高八位和低八位。
由于单片机是八位的,不能一次对32位赋值,要分两次赋值。
TH0=(65536-50000)/256是取32位数的高八位,赋值给TH0
TL0=(65536-50000)%256 是取32位数的低八位,赋值给TL0
256是八位二进制数的最大数。
由于单片机是八位的,不能一次对32位赋值,要分两次赋值。
TH0=(65536-50000)/256是取32位数的高八位,赋值给TH0
TL0=(65536-50000)%256 是取32位数的低八位,赋值给TL0
256是八位二进制数的最大数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是将定时的时间分别存在高八位的th0和低八位的tl0,2的八次方就是256了,除以256是得到高八位,和256求余就是得到低八位,举个例子,42和10求余得到的是2,42除以10则得到4,这分别就将42的十分和个位求出来了……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为一个字节最大只能表示256个数, 现在是要把TH0 TL0看成一个整型, 最大范围为65536
所以要把高字节放在高位TH0, 把低字节放在TL0中
所以要把高字节放在高位TH0, 把低字节放在TL0中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询