单片机STC89C52内部三个定时器,具体是怎么定时的?

如题所述

第1个回答  2013-06-03
#include <reg51.h>
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0FC;
TL0 = 0x18;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main(void)
{
InitTimer0();
}
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0x0FC;
TL0 = 0x18;
//add your code here!
}追问

跪求原理,不要编程。

追答

想要知道原理,你只有去查它的数据手册,
看看寄存器的每一位是什么功能。总之有点麻烦!

本回答被网友采纳
第2个回答  2013-06-03
资料里面有例程可以参考的。追问

请问关于STC89C52单片机的功能说明相关资料在哪可以查到?

追答

在宏晶网站,我发一个,你看看

第3个回答  2013-06-03
请先说清楚问题,是想知道定时的原理还是想知道如何编程。追问

跪求定时的原理,此单片机是应用于设计多功能数字钟中的,最好能结合数字钟的定时讲解一下原理,不胜感激吖!

追答

数字钟的定时要求是精确定时。定时器的定时就是对单片机自身的脉冲进行计数。在单片机规定好的寄存器中放入好初值,每经过一个机器周期,该数自动加1,当溢出时就会使另外一个寄存器TCON的标志位由0变1.这样我们通过查询标志位或者中断知道经过了多长时间,也就可以通过设置初值等来实现我们预先要求的定时时间比如1S。当达到了预期的时间之后我们可以在达到该时间时将数字钟的显示刷新一次。当然有的数字钟使用时钟芯片,这就需要查看该时钟芯片的资料了。希望对你有所帮助,如有疑问,继续交流。

追问

很感谢上面的回答,我还想问点问题,单片机STC89C52内部三个定时器T0,T1,T2具体怎么工作的,具体是怎么精确定时出年月日时分秒的?十分感谢!!!

追答

你好,这几天没有关注问题。我们可以用定时器精确定时出50ms(其它的时间也可以),设置变量num,定时器每溢出一次,num就加1.然后设置变量miao,feng,shi,我们通过if语句,当num=20时就让miao加1,当miao到60时,将miao清0,,将feng加1,等等。。。。。。我们将miao,feng,shi,这些变量的值送到数字钟去显示。基本原理如上所说,有不明白可以参考教材,也可以继续交流,希望对你有帮助。

本回答被提问者采纳
相似回答