单片机中给定时器赋做值时 TH0=(65536-30000)/256 TL0=(65536-30000)%256 256代表什么,是怎么来的?最大

如题所述

TH0是定时器高位,TL0是定时器低位。/是取整,%是取余。

(65536-30000)%256 刚好就是TL0的计数初值,当计数到30000%256时候,也就是到了256了,这样TH0增加1. TL0下一次再从(65536-30000)%256开始计数。所以TH0要除256取整数,TL0除256取余数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-24
因为TH0、TL0都是8位的,而8位的二进制数最大的值是255,而要使计算得到数能放进TH0、TL0中,就得写一个不大于255的数。故除上,模256
第2个回答  2011-08-25
count=table[i];
th=(65536-count)/256;
tl=(65536-count)%256;
TH0=th;
TL0=tl;
TR0=1;
while(P3!=0xf0);
delay(10);
while(P3==0xf0);
scan();
你的输出是什么,数码管?你的程序输出指令是
void time() interrupt 1
{
TH0=th;
TL0=tl;
out=~out;
}
你的12号按键功能是改变了定时器的定时时间而已,而输出就只有两种状态out=~out,这样肯定没有输出。
第3个回答  2011-08-24
count=table[i];
th=(65536-count)/256;
tl=(65536-count)%256;
TH0=th;
TL0=tl;
TR0=1;
while(P3!=0xf0);
delay(10);
while(P3==0xf0);
scan();
你的输出是什么,数码管?你的程序输出指令是
void time() interrupt 1
{
TH0=th;
TL0=tl;
out=~out;
}
你的12号按键功能是改变了定时器的定时时间而已,而输出就只有两种状态out=~out,这样肯定没有输出。
相似回答