TH0=(65535-1000)/256为什么要这样赋值比如说是1000,然后像上面那样的格式,就可以得到64535的高八位?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/13 00:55:34

TH0=(65535-1000)/256为什么要这样赋值比如说是1000,然后像上面那样的格式,就可以得到64535的高八位?
TH0=(65535-1000)/256为什么要这样赋值
比如说是1000,然后像上面那样的格式,就可以得到64535的高八位?

TH0=(65535-1000)/256为什么要这样赋值比如说是1000,然后像上面那样的格式,就可以得到64535的高八位?
这是给定时器一个初值
TH0=(65535-1000)/256,意思为65535-1000后求模,再赋给TH0(定时器高八位);还有TL0=(65535-1000)%256,意思为65535-1000后求余,再赋给TL0(0定时器低八位).这样启动定时器后,TH0,TL0装这个数,每经过一个机器周期,计数器自加1,当计数器计到65535溢出(即是加1000后停止),要求中断请求.这样可以准确定时.t=1000*振荡周期*12.
初学我写的一个定时器流水灯程序:
#include//我是用stc的单片机,就直接用其头文件了,普通的reg52.h也行
#include
int t;
unsigned char LS;
void main()
{
\x05TMOD=0x01;//定时器工作模式的选择:T0定时器
\x05TH0=(65536-50000)/256;//求模给高8位
\x05TL0=(65536-50000)%256;//求余给低8位
\x05EA=1;//打开总中断
\x05ET0=1;//打开定时器中断
\x05TR0=1;//启动定时器工作
\x05t=0;
\x05LS=0Xfe;
\x05P1=LS;//初始化LED
\x05while(1)
\x05{\x05
\x05\x05if(t==10)
\x05\x05{
\x05\x05\x05LS=_crol_(LS,1);//左移1位
\x05\x05\x05P1=LS;
\x05\x05\x05t=0;\x05\x05\x05\x05
\x05\x05}\x05
\x05}
}
void timer1_int() interrupt 1//定时选模式1
{
\x05TH0=(65536-50000)/256;//求模给高8位
\x05TL0=(65536-50000)%256;//求余给低8位
\x05t++;
}
请多多指教.