标题:
STC89单片机定时器比预定值快3倍,不知道程序那里出问题了?
[打印本页]
作者:
robinsonlin
时间:
2019-5-13 22:20
标题:
STC89单片机定时器比预定值快3倍,不知道程序那里出问题了?
晶振12M没有问题, 硬件电路一切正常。 val就是自加变量,用来在LED上显示读秒的。 主要是为了调定时器,结果就是调不准。时间读数快出将近3倍。 不知道哪里出问题了。 请职业高手赐教。
void ConfigTimer1(void) //5ms定时
{
AUXR &= 0xBF; //定时器时钟12T模式
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x10; //设置定时器模式
TL1 = 0xB0; //设置定时初值
TH1 = 0x3c; //设置定时初值
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
}
void main()
{
EA=1;
// ET0=1;
ET1=1;
k1=1;
k2=0;
// ConfigTimer0(); //10ms
ConfigTimer1(); //50ms
while(1)
{
LedRefresh();
LedBuffUpdate();
}
}
void InterruptTimer1() interrupt 3
{
TH1 = 0xB0; //加载 T1 重载值
TL1 = 0x3C;
if(tmr1s>=20)
{
val++;
if(val>=60)
{
val=0;
k1=~k1;
}
tmr1s=0;
}
else tmr1s++;
}
作者:
wulin
时间:
2019-5-14 06:53
就按普通51的模式设置定时器,下载时不要勾选“使能6T模式”
void ConfigTimer1(void) //50毫秒@12.000MHz
{
TMOD= 0x10; //设置定时器模式
TL1 = 0xB0; //设置定时初值
TH1 = 0x3C; //设置定时初值
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
}
作者:
yzwzfyz
时间:
2019-5-14 07:59
注意一下,主频时钟是否设置成取晶振频率。
作者:
robinsonlin
时间:
2019-5-14 11:42
yzwzfyz 发表于 2019-5-14 07:59
注意一下,主频时钟是否设置成取晶振频率。
在哪里设置? 还请详细说来,这两天被这个定时器搞晕了。
作者:
robinsonlin
时间:
2019-5-14 14:19
问题找到了。 还真是在代码里面,看花眼了。 低级错误。 中断里面重载初值时,高位和低位搞返了。哎。
作者:
酸葡萄
时间:
2019-5-15 19:14
将主频时钟设置成晶振频率
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1