单片机定时时间怎么算,,下面程序的50ms是怎么算出来的啊。求过程

voidInitTime(void){TMOD=0x51;//T0为定时器工作于方式1,T1为计数器工作于方式1TH0=0x4C;//定时器50ms赋高8初值,12M晶振... void InitTime(void)
{

TMOD=0x51;//T0为定时器工作于方式1,T1为计数器工作于方式1
TH0=0x4C;//定时器50ms赋高8初值 , 12M晶振
TL0=0x00;//定时器50ms赋低8初值 , 12M晶振
TR0=1;//开定时器1
TH1=0;//计数器赋高8初值初值
TL1=0;//计数器赋低8初值
TR1=1;//开计数器0
ET0=1;
EA=1;
}
void timeo(void) interrupt 1
{
TH0=0x4C;//定时器50ms赋高8初值
TL0=0x00;//定时器50ms赋低8初值
nm=nm+1;

if(nm==10)
{
TR1=0; //关闭T1定时器,定时1S完成
TR0=0;//关闭T0
}
展开
 我来答
一剑出血
高粉答主

2012-05-22 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
12MHz晶振,经典51核是12分频,因此时钟周期为1μs。
50ms = 50000μs,因此定时器累加至溢出需要50000个周期。
因此65536 - 50000 = 15536 = 0x3CB0
因此TH0 = 0x3C,TL0 = 0xB0。

0x4C00这个初值对应的不是12MHz晶振,*而是11.0592MHz晶振。你抄错了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式