问下STC8G2K32S4芯片定时50MS,则么老是47MS的样子
用了STC8G2K32S4芯片定时器1定时50MS发送数据,用SSCOM时间戳显示都47MS左右,代码用的是STCISP里的代码,麻烦坛主看下什么原因void timer1(void) interrupt 3 //using 2
{
TL1 |= 0x00;
TH1 = 0x4c; //50MS
TI=1; //发送数据
P12 = !P12;
}
void main()
{
AUXR &= 0xBF; //定时器1时钟12T模式
TMOD &= 0x0F; //设置定时器模式 16位重载模式
TH1 = 0x4c; //50MS
TL1 = 0x00;
//------------------------
// ES = 1; //使能串口中断
ET1=1; //开T1中断
TR=1;
EA = 1; //开全局中断
while(1){}
} pc系统不是实时系统!你要想获取精确的时间,请用示波器打到10ms档。 io翻转测频喽 wye11083 发表于 2021-4-8 22:02
pc系统不是实时系统!你要想获取精确的时间,请用示波器打到10ms档。
关键同样50ms的定时stc11f01芯片就在50ms左右,同样的电脑,从xp到Win10都是正常,而stc8g2k32s4就是47ms左右,所以奇怪,同样用软件记数也是stc11f01更准 晶振是不是晶振弄错了? ersha4877 发表于 2021-4-8 22:43
关键同样50ms的定时stc11f01芯片就在50ms左右,同样的电脑,从xp到Win10都是正常,而stc8g2k32s4就是47ms ...
那先测片内晶振频率吧。可能漂移的问题,串口能扛住10%的时钟误差(不发0x00或0xff)。 你这个初值在11.0592M晶振下是50mS,在12M晶振下是46mS。看看是不是晶振频率不匹配 mtdzok 发表于 2021-4-9 02:58
你这个初值在11.0592M晶振下是50mS,在12M晶振下是46mS。看看是不是晶振频率不匹配 ...
改成外部晶振还是47ms左右,一开始也是认为内部晶振问题,我要在试试晶振了 IO翻转,上示波器。电脑那个延时太垃圾,不要指望 用最强大的stc仿真器看看吧啥ulinkjlink都是垃圾 这是官方广告词{:lol:} 第一次知道,原来你们还能用电脑,用串口看时间。。。我一直是示波器 IO翻转看。。学到了 我也学到了,原来你们还能用电脑,用串口看时间。 我一直是遇事不决找示波器。
页:
[1]