51单片机用c语言怎么写延时函数?

51单片机用c语言怎么写延时函数?,第1张

延时时间的计算与单片机的山氏滑晶振频率有关。若晶振频率为12Mhz,那么单片机每震动一次所需要的时间是1/12M s。那么再来看看单片机执行一次自减所需要的振动次数是96次,假如我们对时间要求不是特别精确的话,可以约等于100来计算。现核旦在通过上面两个数据可以得出:单片机每执行一次自减所需要的时间是1/12M *100(s),即1/120000 s,逆向计算逗腊一下,每1ms需要自减多少次?120次对吧。所以一个简单的延时功能就诞生了,我们只需要自减120次,就可以延时1ms,如果我们要延时50ms呢,那就自减50*120=6000次。那么在程序上如何表达呢?我们可以用两套for循环

void delay(int i){

int x,y

for(x=ix>0x--){

for(y=120y>0y--)

}

}

参数 i 代表该函数延时多少ms

可以有很多办法裤配,一是调整参数,使其延时5分钟或6分钟,循环24次或20次。二是将延时函数的形参改为长整型(32位)延时时间扩大65536倍。三是使用定时器,每次定时50mS,累计144000次,便是2小时,使用定时器(中断)的好处是在延时期间还可以干许多事情,例如显示剩余时间,检测设备工友运作状态或者调整延时时间等,而你的好纯梁纯软件延时期间想干其它事情比较困难。

用汇编语言写可以精确计算,但有时想拼出整数的ms或搏颤10ms也不容易,计算方法如下图说明:

而C语言靠经验和实验得来的,如下面程序

如果不准(与晶振频率基谨败有关),调K的值,,软件仿真查看,直到大致准确晌差,想更精确用定时器

void delay(unsigned char i)  //延时程序

{

unsigned char i,k

for(j=ij>0j--)

    for(k=125k>0k--)

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12337780.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存