51单片机C语言中delay函数是怎么定义和使用的?

voidDelay(unsignedinta){unsignedinti;while(--a!=0){for(i=0;i<600;i++);}}这一句delay后面的()... void Delay (unsigned int a){
unsigned int i;
while( --a != 0){
for(i = 0; i < 600; i++);
}
}

这一句delay后面的()内和{}内的表达式和语法是什么关系啊?初学者,见笑哈
展开
 我来答
休闲娱乐chl
高粉答主

2019-08-20 · 每个回答都超有意思的
知道大有可为答主
回答量:5627
采纳率:100%
帮助的人:151万
展开全部

定义一个延时xms毫秒的延时函数

void delay(unsigned int xms) // xms代表需要延时的毫秒数

{

unsigned int x,y;

for(x=xms;x》0;x--)

for(y=110;y》0;y--);

}

使用:

void Delay10us(uchar Ms)

{

uchar data i;

for(;Ms》0;Ms--)

for(i=26;i》0;i--);

}

i=[(延时值-1.75)*12/Ms-15]/4

扩展资料

1、在C51中进行精确的延时子程序设计时,尽量不要或少在延时子程序中定义局部变量,所有的延时子程序中变量通过有参函数传递。

2、在延时子程序设计时,采用do…while,结构做循环体要比for结构做循环体好。

3、在延时子程序设计时,要进行循环体嵌套时,采用先内循环,再减减比先减减,再内循环要好。

天云小店
推荐于2017-09-20 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:782万
展开全部

delay函数是一般自己定义的一个延时函数。


C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。

// 定义一个延时xms毫秒的延时函数
void delay(unsigned int xms)  // xms代表需要延时的毫秒数
{
    unsigned int x,y;
    for(x=xms;x>0;x--)
        for(y=110;y>0;y--);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a462420207
推荐于2017-09-07 · TA获得超过148个赞
知道答主
回答量:44
采纳率:0%
帮助的人:33.3万
展开全部
这是一个延时函数()里的unsigned int a是一个形参,为int型变量最 大值为32767;{}里的unsigned int i和()里的一样 只是变量的名称不同,为i;while就是循环语句 如果他后面的()里的量不为零就执行他{}里的内容,一旦为零就跳出该语句。for(i=0;i<600;i++);就是把i定为零,如果i在for里小于600就跳到第三步i++(也就是i自增1);然后i=1但他还是小于600,接着就到第三步。。。。599次之后i=600,600就不小于600,这时就跳出for。while后的()如果为零就跳出while
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vjryh701uzg
2011-08-25 · TA获得超过780个赞
知道小有建树答主
回答量:952
采纳率:0%
帮助的人:548万
展开全部
C的话其实时间没有办法完全定性地计算的
如果非得精确的话只能使用定时器了,或者汇编的也行
不过时间要求精度不是很高的话使用下面的代码就行了
当时使用示波器把时间完全调准的,65536ms范围内还是比较准的,已经可以满足通常的要求了:

#include "reg51.h" //头文件包含

//宏定义
#define uint unsigned int
#define uchar unsigned char

void delay(uint ms) // 毫秒级延时(AT89C52 @ 11.0592MHz)
{
uint ti;
while(ms--)
{
for(ti=0;ti<112;ti++){}//112
}
}

调用方式如下:
delay(400); //开机延时400ms
够详细了吧?!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-08-25
展开全部
这是个延迟函数,delay 括号中的表达式是定义的无符号的整形变量,它是形参,你只要知道它是定义一个变量既可,它的值由main 函数传递过来,a的值有了,就进入了while 循环。不知你是否学过c语言,如果没有,就看看while 循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式