标题:
单片机定时器初始化程序求解释
[打印本页]
作者:
胡椒葉
时间:
2020-2-23 14:18
标题:
单片机定时器初始化程序求解释
希望懂的人指点一下,每一条命令是表达什么?谢谢
void timer_init() //定时器初始化
{
TMOD=0x01; //定时器0,方式1
TH0=0x3c; //初值50ms,这50怎么算出来的?
TL0=0XB0;
TR0=1;
ET0=1;
EA=1;
}
作者:
csmyldl
时间:
2020-2-23 14:38
void timer_init() //定时器初始化
{
TMOD=0x01; //设置定时器0方式1,即16位计数,用TH0TL1来计数
TH0=0x3c; //设置初值50ms,TH0=(65536-50000)/256 这是按机器周期1us算的
TL0=0XB0; //TL0=(65536-50000)%256 这是按机器周期1us算的
TR0=1; //开始计数工作
ET0=1; //开启中断允许
EA=1; //开启总中断允许
}
机器周期就是晶振动12次的时间,用T表示的话 T=1/12000000x12,其中1/12000000是12MHz晶振振动1次的时间,乘上12是1个机器周期需要振动12次,算出来就是1us时间
TH0TL0组成的16位计数器如果从0x0000计数到0xffff就需要65536个机器周期,为了达到计数50000次,即50ms,所以设置起点(65536-50000)=15536,用16进制表示就是0x3CB0
作者:
钟志伟
时间:
2020-2-23 15:01
定时器满值65536-初值50000(50ms)=15536,这个减出来的差值15536换成16进制就是3CB0,然后TH0取高两位,TL0取低两位赋值。
51hei截图.png
(256.93 KB, 下载次数: 59)
下载附件
2020-2-23 15:01 上传
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1