void Timer0(void) interrupt 1 {//定时:50000uS TH0 = 0x4C; TL0 = 0x00; ms++; if(ms>19) //1s { ss++; led1=!led1; }
晶振是11.0592M 上面这个代码定时1秒 但是led的闪烁频率很高大概200ms左右
请问这是什么问题
如果是11.0592M的晶振的话,TH0和TL0的赋值没有问题。进入中断是50ms。但是没有看到你的ms的定义,以及你的ms加到了20之后,有没有清零。如果没有清零,那么后面都会是50ms的频率闪烁。
如果这里弄清楚了,还是出现问题,可以拿示波器看看波形,看下频率。
再者可以通过STC的下载程序的软件看看你下载程序时的时钟频率。我有过这样的经历:
就是明明自己用的11.0592的晶振,但是下载程序后,发现串口波特率对不上,然后后面看那下载器上面显示我的时钟频率竟然少了一倍。变成了5.5左右了,后面重新下载又好了。
ms计数结束没有清零,另外条件语句中的ss++ 是个什么鬼,突然冒出这个变量,应该是ms = 0;就对了。