您的位置 首页 新品

c51的准确延时

用c语言为单片机编程无疑十分节约时间,可在很短的时间内开发出较高效的代码,对于程序的维护和扩充也较汇编语言方便许多。但c语言也有它的

用c言语为单片机编程无疑非常节省时刻,可在很短的时刻内开宣布较高效的代码,关于程序的保护和扩大也较汇编言语便利许多。

但c言语也有它的不足之处,那就是在时刻的准确操控上。要想用c完成准确的延时,只能把c的函数编译成汇编言语,然后依照汇编言语核算其执行时刻。自己就依照这种办法,编写了几个51单片机的c言语准确延时函数。

注:1.编译软件为”Keil uVision3″(Keil uVision2也试用)。用其他编译软件的话就禁绝了。

2.需求包括头文件

3.一切函数的延时时刻都是在12Mhz晶振下核算的,如用其他晶振需进行换算。

4.函数的执行时刻为“函数的参数”乘以准确到的时刻。例如delayms(unsigned char n)函数,其准确度为1ms,假如写入句子delayms(4),那就是延时4ms。

5.核算出来的延时时刻不包括函数调用与回来的时刻。假如函数的准确度较高,且参数较小,那么实践延时时刻就可能与核算的时刻差很远。

(1)准确到2us的延时(12MHz)

void delayus(unsigned char n)

{ while(–n);

}

(2)准确到100us的延时(12MHz)

void delay100us(unsigned char n)

{ unsigned char i;
for(;n;n–)
{ _nop_();
for(i=46;i;i–);
}
}

(3)准确的半毫秒延时函数(12MHz)

void delay1_2ms(unsigned char n)

{ unsigned char i;
for(;n!=0;n–)
{ _nop_();
for(i=246u;i!=0;i–);
}
}

(4)准确的毫秒延时函数(12MHz)

void delayms(unsigned char n)

{ unsigned char i;
for(;n!=0;n–)
{ for(i=248u;i!=0;i–);
for(i=248u;i!=0;i–);
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/256976.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部