单片机的时钟不准,是程序的问题还是晶振的问题呢

来源:百度知道 编辑:UC知道 时间:2024/09/25 01:14:05

如果你用的内部晶振,那时钟不准很正常,切换到外部晶振即可(视不同的单片机而定,例如stc的51就可以这样做,avr和430等则还可通过程序中配置相应的寄存器调整时钟频率)。

如果用外部晶振做时钟源还"不准"的话那就一定是程序的问题了。

希望我的回答对你有所帮助!

外接石英晶振是很准的,
如果你用内部晶振,就可能是晶振问题
接外部晶振,那一定是程序问题

检查下时钟电路。

1 用示波器量一下,
2 考虑指令的执行周期

给 你段程序自己感受下:
//中断方式
#include<at89x52.h>
#define uint unsigned int
#define uchar unsigned char
//共阴数码管段码
uchar a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint i=0;
uint j=10000; //10000*0.1ms=1s
//延时子程序
delay(uint m)
{
for(;m>0;m--);
}
//显示子程序
display()
{
P2=a[i];
delay(100);
}
//中断服务子程序
void timer1() interrupt 3 using 0
{
j--;
if(j==0)
{
j=10000;
i++;
if(i>9)
i=0;
}
}
//主程序
void main()
{
TMOD=0x20; //T1定时工作方式2 8位计数结构
TH1=0x9c; //设定计数初值 定时时间(0.1ms)=(256-计数初值)*晶振周期(1/12