单片机程序TL0=60536%256什么意思?

如题所述

这是定时器T0写初始值,要计算出计时常数,X=60536,变成16进制数是X=EC78H,可写程序为
TH0=0xEC;//高8位
TL0=0x78; //低8位
可这样需要把60536转换成16进制数,为了省略转换过程,就让编译器去转换。所以写成
TH0=60536/256;//求高8位
TL0=60536%256;//求低8位
计算方法是做除法,60536/256,但是要除以后的余数,就是低8位,而不要商,商是高8位。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-11
因为单片机th0,tl0是2个8位的寄存器,最大256。而tmod=0x01是定时器方式1,定时时间最多65536,要赋值直接运算的话还要算完在转换为16进制,在分成高8位和低8位。顾直接采用运算方式将计算方法65536-50000/256直接出来就是高8位的数据,而%256是除256后取余数,正好是低8位的数据,所以采用这个计算方法。