求大神指正一个51单片机定时器代码 200
voidTimerConfiguration(){TMOD=0x01;TH0=0xfc;TL0=0x18;EA=1;ET0=1;TR0=1;}voidTimer0()in...
void TimerConfiguration()
{
TMOD=0x01;
TH0=0xfc;
TL0=0x18;
EA=1;
ET0=1;
TR0=1;
}
void Timer0() interrupt 1
{
TH0=0Xfc;
TL0=0X18;
Time++;
}
能用这个函数在单片机上显示毫秒计数吗?为什么我实验的时候不能显示。 展开
{
TMOD=0x01;
TH0=0xfc;
TL0=0x18;
EA=1;
ET0=1;
TR0=1;
}
void Timer0() interrupt 1
{
TH0=0Xfc;
TL0=0X18;
Time++;
}
能用这个函数在单片机上显示毫秒计数吗?为什么我实验的时候不能显示。 展开
3个回答
展开全部
这个其实很简单的,你只需要知道一个条件即可:晶振频率因为51单片机的机器周期计算公式是12/晶振频率MHz,若晶振为12MHz,则机器周期就是12/(12×10^6)=1us,也就是说计数器没1us计数一次那么有了这个条件就好办多了,一般来说,12MHz晶振下,16位定时器满计数是65536次,每次1us,最大就能计时65.536ms,则65536减去多少就是定时多少,如(65536-X)/256,就是定时X微秒那么如果晶振不是12MHz,就要把上述☪♈♨º⊙的X乘以12/晶振,得到的值就是定时时长原理相同有不懂的地方随时回复我希望我的回答能帮助到你
追问
void Timer0() interrupt 1
{
TH0=0Xec;
TL0=0X78;
Time++;
}
把初值定义为5毫秒,就可以实验,精确度还可以。但是把初值定义为1毫秒,就显示的特别慢,完全无法实验。
是51单片机的问题吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询