设晶振频率为6MHz,试编制50 ms延时子程序

如题所述

很简单,把标准的12M晶振下的1ms延时程序改改就可以了。
下面是12MHz下的延时程序,
void delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++) ;
}
而6MHz时,每个机器周期就变成了12MHz时的两倍,则现在的延时循环周期只要原来的一半即可,所以延时1ms的程序就是:
void delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<60;j++) ;
}
你使用的时候只要在括号里填入你需要延时的毫秒数就可以,比如
delay1ms(50);
就是延时50ms,当然你要延时100ms,10ms都行,任意都行,只要不超过65535(int型的数字上限)。
如果你要非常精密的定式,就得用定时器了,这东西不是一两句话说得完的,你自己去看单片机书,
初值可以告诉你,9E58
温馨提示:答案为网友推荐,仅供参考