ersha4877 发表于 2021-4-8 21:45:51

问下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){}

}

wye11083 发表于 2021-4-8 22:02:13

pc系统不是实时系统!你要想获取精确的时间,请用示波器打到10ms档。

MYQQ2018 发表于 2021-4-8 22:32:50

io翻转测频喽

ersha4877 发表于 2021-4-8 22:43:28

wye11083 发表于 2021-4-8 22:02
pc系统不是实时系统!你要想获取精确的时间,请用示波器打到10ms档。

关键同样50ms的定时stc11f01芯片就在50ms左右,同样的电脑,从xp到Win10都是正常,而stc8g2k32s4就是47ms左右,所以奇怪,同样用软件记数也是stc11f01更准

登云钓月 发表于 2021-4-8 22:45:19

晶振是不是晶振弄错了?

wye11083 发表于 2021-4-9 00:55:49

ersha4877 发表于 2021-4-8 22:43
关键同样50ms的定时stc11f01芯片就在50ms左右,同样的电脑,从xp到Win10都是正常,而stc8g2k32s4就是47ms ...

那先测片内晶振频率吧。可能漂移的问题,串口能扛住10%的时钟误差(不发0x00或0xff)。

mtdzok 发表于 2021-4-9 02:58:53

你这个初值在11.0592M晶振下是50mS,在12M晶振下是46mS。看看是不是晶振频率不匹配

ersha4877 发表于 2021-4-9 04:09:35

mtdzok 发表于 2021-4-9 02:58
你这个初值在11.0592M晶振下是50mS,在12M晶振下是46mS。看看是不是晶振频率不匹配 ...

改成外部晶振还是47ms左右,一开始也是认为内部晶振问题,我要在试试晶振了

skynet 发表于 2021-4-9 08:37:34

IO翻转,上示波器。电脑那个延时太垃圾,不要指望

lb0857 发表于 2021-4-9 08:39:28

用最强大的stc仿真器看看吧啥ulinkjlink都是垃圾   这是官方广告词{:lol:}

zhuyi25762 发表于 2021-4-9 08:50:31

第一次知道,原来你们还能用电脑,用串口看时间。。。我一直是示波器 IO翻转看。。学到了

yanyanyan168 发表于 2021-4-9 09:13:23

我也学到了,原来你们还能用电脑,用串口看时间。   我一直是遇事不决找示波器。
页: [1]
查看完整版本: 问下STC8G2K32S4芯片定时50MS,则么老是47MS的样子