如何用12M晶振代换24M

如何用12M晶振代换24M...
2026年09月22日 22:36
有2个网友回答
网友(1):

如果通过程序修改那么需要改变的是:
if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms
if(i==33)
这两个地方也要改。
首先你要理解为什么要改,在这里定时器0相当于一把尺子,通过irtime的多少来测量经过的时间。当晶振频率变大一倍后,这把尺子就变了,所以就要把所有和irtime有关的全改了就行了。但这样并不是最好的方案。尺子变了,你在把它变回来就行了。
1.比如说
void tim0_isr (void) interrupt 1 using 1
{
irtime++; //用于计数2个下降沿之间的时间
}

变成
void tim0_isr (void) interrupt 1 using 1
{
irtime+=0.5; //用于计数2个下降沿之间的时间
}
这里就只用把尺子改下其他全不动。
2.
void TIM0init(void)//定时器0初始化
{

TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
TH0=0x00; //重载值
TL0=0x00; //初始化值
ET0=1; //开中断
TR0=1;
}
我不知道你芯片是怎么设定的,但这里肯定也可以设定这把尺子,而且也只用改这一个地方。

网友(2):

直接更换了就行,然后在程序中你得把和晶振频率相关的一些寄存器设置的分频系数啊什么的都得改改,改成和原来的一样就可以了,这样程序就可以保持继续使用……