TH0=(65535-1000)/256为什么要这样赋值
比如说是1000,然后像上面那样的格式,就可以得到64535的高八位?请各位高手解答。。。。。。。...
比如说是1000,然后像上面那样的格式,就可以得到64535的高八位?请各位高手解答。。。。。。。
展开
1个回答
展开全部
这是给定时器一个初值
TH0=(65535-1000)/256,意思为65535-1000后求模,再赋给TH0(定时器高八位);还有TL0=(65535-1000)%256,意思为65535-1000后求余,再赋给TL0(0定时器低八位)。这样启动定时器后,TH0,TL0装这个数,每经过一个机器周期,计数器自加1,当计数器计到65535溢出(即是加1000后停止),要求中断请求。这样可以准确定时。t=1000*振荡周期*12.
初学我写的一个定时器流水灯程序:
#include<stc12c5a.h>//我是用stc的单片机,就直接用其头文件了,普通的reg52.h也行
#include<intrins.h>
int t;
unsigned char LS;
void main()
{
TMOD=0x01;//定时器工作模式的选择:T0定时器
TH0=(65536-50000)/256;//求模给高8位
TL0=(65536-50000)%256;//求余给低8位
EA=1;//打开总中断
ET0=1;//打开定时器中断
TR0=1;//启动定时器工作
t=0;
LS=0Xfe;
P1=LS;//初始化LED
while(1)
{
if(t==10)
{
LS=_crol_(LS,1);//左移1位
P1=LS;
t=0;
}
}
}
void timer1_int() interrupt 1//定时选模式1
{
TH0=(65536-50000)/256;//求模给高8位
TL0=(65536-50000)%256;//求余给低8位
t++;
}
请多多指教。
TH0=(65535-1000)/256,意思为65535-1000后求模,再赋给TH0(定时器高八位);还有TL0=(65535-1000)%256,意思为65535-1000后求余,再赋给TL0(0定时器低八位)。这样启动定时器后,TH0,TL0装这个数,每经过一个机器周期,计数器自加1,当计数器计到65535溢出(即是加1000后停止),要求中断请求。这样可以准确定时。t=1000*振荡周期*12.
初学我写的一个定时器流水灯程序:
#include<stc12c5a.h>//我是用stc的单片机,就直接用其头文件了,普通的reg52.h也行
#include<intrins.h>
int t;
unsigned char LS;
void main()
{
TMOD=0x01;//定时器工作模式的选择:T0定时器
TH0=(65536-50000)/256;//求模给高8位
TL0=(65536-50000)%256;//求余给低8位
EA=1;//打开总中断
ET0=1;//打开定时器中断
TR0=1;//启动定时器工作
t=0;
LS=0Xfe;
P1=LS;//初始化LED
while(1)
{
if(t==10)
{
LS=_crol_(LS,1);//左移1位
P1=LS;
t=0;
}
}
}
void timer1_int() interrupt 1//定时选模式1
{
TH0=(65536-50000)/256;//求模给高8位
TL0=(65536-50000)%256;//求余给低8位
t++;
}
请多多指教。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询