关于51单片机定时器的问题。
TMOD=0x01;//选择工作方式1TH0=0x3C;//设置初始值,定时50MSTL0=0xB0;比如上面这段代码,是设置每50ms溢出一次,那么TH0和TL0的初值...
TMOD = 0x01; //选择工作方式1
TH0 = 0x3C; //设置初始值,定时50MS
TL0 = 0xB0;
比如上面这段代码,是设置每50ms溢出一次,那么TH0和TL0的初值是怎么确定的??比如要是想要一秒钟溢出一次,TH0和TL0的初值是什么呢?
新手,求大佬指点。 展开
TH0 = 0x3C; //设置初始值,定时50MS
TL0 = 0xB0;
比如上面这段代码,是设置每50ms溢出一次,那么TH0和TL0的初值是怎么确定的??比如要是想要一秒钟溢出一次,TH0和TL0的初值是什么呢?
新手,求大佬指点。 展开
2个回答
展开全部
看来,你对定时器真是不理解呀。
1.关于定时器最长的定时时间,假如晶振频率是12MHz,机器周期是1us,最长定时的时间是65.536ms。所以,你想定时1秒是不可能的。通常是定时50ms,以中断方式,这样,每中断一次50ms,则中断20次就是1秒。
2.你这个程序就是定时50ms的,变成50000us。晶振频率是12M,初始值计算,X=65535-50000=15536=3CB0H,所以,高8位,TH0=0x3C;
低8位,TL0=0xB0;
1.关于定时器最长的定时时间,假如晶振频率是12MHz,机器周期是1us,最长定时的时间是65.536ms。所以,你想定时1秒是不可能的。通常是定时50ms,以中断方式,这样,每中断一次50ms,则中断20次就是1秒。
2.你这个程序就是定时50ms的,变成50000us。晶振频率是12M,初始值计算,X=65535-50000=15536=3CB0H,所以,高8位,TH0=0x3C;
低8位,TL0=0xB0;
更多追问追答
追答
修正,X=65536-50000=15536
追问
那么请问,要是11.0592MHz的晶振呢?50ms怎么计算初值?
2018-06-08
展开全部
工作方式1是16位的自动重装定时计数器,能装的最大数为65536(0-65535);那么初值为65536-50000=15536(0x3cb0),就是你说的50ms溢出一次;12M的晶振,一个时钟周期刚好1us,50000us=50ms;
如果你需要1秒的定时,可以在定时器计数器中断里设一个计数变量x,进一次中断x+1;然后在程序里检查x的值,当x加够20次,把x清零,计时时间就是1秒了。
如果你需要1秒的定时,可以在定时器计数器中断里设一个计数变量x,进一次中断x+1;然后在程序里检查x的值,当x加够20次,把x清零,计时时间就是1秒了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询