十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C语言的延迟函数一般是利用无意义程序运行来控制时间从而达到延时的目的
成都创新互联公司:于2013年成立为各行业开拓出企业自己的“网站建设”服务,为1000+公司企业提供了专业的成都网站建设、网站制作、网页设计和网站推广服务, 定制网站设计由设计师亲自精心设计,设计的效果完全按照客户的要求,并适当的提出合理的建议,拥有的视觉效果,策划师分析客户的同行竞争对手,根据客户的实际情况给出合理的网站构架,制作客户同行业具有领先地位的。
举个例子:
for(i=0;ix;i++)
for(j=0;j120;j++);
这是延时x毫秒的for循环语句。
值得注意的是记得最后的;一定得记得写。
首先你要知道一个指令周期是几秒
算法是1/(晶振频率除以12)
然后你要知道循环究竟执行了几个指令周期
你可以用keil里在线反汇编命令看看你的循环编译成机器语言后到底是几个指令周期
这样就知道了延迟时间
当然你取近似值也可以的
比如
for(i=0,i255,i++){x=2}
这里x=2是一个指令周期
而执行了255次
假如你的晶振是12MHZ的
则你执行一个指令周期是1us
255次是0.255ms
这个是预编译的写法,符合#if后面的条件后编译器才会编译,否则不会占用FALSH空间,
#if 相当于 if
#elif 相当于 else
#endif 表示上面的判断结束。
你这个程序的意思是当晶振频率是那个值则编译那个for循环,来达到不同频率都可以使用这一个函数来达到更精确的延时。
c语言提供了三种形式的if语句:
1、if(表达式)语句。
例如:if(xy)printf("%d",x);
此时,如果表达式为真,则执行printf语句。
2、if(表达式)语句1 else 语句2
例如:
if(xy)printf("%d",x);
else printf("%d",y);
此时,如果xy成立为真,则执行语句printf("%d",x),然后直接跳过else,同时也跳过语句printf("%d",y),去执行之后的语句。
如果xy不成立为假,则不执行语句printf("%d",x),执行语句printf("%d",x)。
3、if(表达式1)语句1
else if(表达式2)语句2
else if(表达式3)语句3
else if(表达式m)语句m
else 语句 n
此时,哪个表达式为真,则运行哪个if后面的语句。如表达式3成立为真,执行语句3。
在每个语句中,可以有多个语句,但需要加上大括号
例:if(xy){printf("%d",x);break;}
IF函数的参数:
(1)Logical_test 表示计算结果为 TRUE 或 FALSE 的任意值或表达式。
例如,A10=100 就是一个逻辑表达式,如果单元格 A10 中的值等于 100,表达式即为 TRUE,否则为 FALSE。本参数可使用任何比较运算符(=(等于)、(大于)、=(大于等于)、=(小于等于等运算符))。
(2)Value_if_true表示 logical_test 为 TRUE 时返回的值。
例如,如果本参数为文本字符串“预算内”而且
logical_test 参数值为 TRUE,则 IF 函数将显示文本“预算内”。如果 logical_test 为 TRUE 而
value_if_true 为空,则本参数返回 0。
(3)Value_if_false表示 logical_test 为 FALSE 时返回的值。
例如,如果本参数为文本字符串“超出预算”而且
logical_test 参数值为 FALSE,则 IF 函数将显示文本“超出预算”。如果 logical_test 为 FALSE 且忽略了
value_if_false(即 value_if_true 后没有逗号)。
一般单片机在c语言中很难得到精确的延时,所以一般对时间要求高的都用计时器中断来做了。如果时间要求不严格可以用for循环来做,你可以实际测试一下,把时间延时到大概一秒左右,然后烧进单片机里运行,比如一个灯亮灯灭的程序,看着灯计数,同时用秒表计时,几个几十次后取平均值就能知道大概时间了。
while (i = 100) {
if (i == 50) {
Sleep(1000);
break;
}
if (i != 50)
Sleep(2000);
i++;
}
两个 if 语句,不管程序会不会执行者两个 if 语句,程序都会在一次循环中检查两个 if 语句,而不会一定执行这两个语句,如上所述,两个 if 语句在一个 while 循环中并不会同时执行,上述代码中的第二个 if 语句完全可以使用 else代替,但是为了保持你问题的效果,我用了 if 语句,两个产生效果是相同的。
总之:
1. if 语句不会同时执行,你可以将条件同时写入 if 语句分参数中来达到同时执行的目的。
2. 在循环中的 if 语句,不论有几个 if 语句,编译器都会检查这几个 if 语句而非执行,如你所知,只有当条件判断符合是才会执行 if 语句