C語言的延遲函數(shù)一般是利用無意義程序運(yùn)行來控制時間從而達(dá)到延時的目的
成都創(chuàng)新互聯(lián)公司:于2013年成立為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為1000+公司企業(yè)提供了專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計和網(wǎng)站推廣服務(wù), 定制網(wǎng)站設(shè)計由設(shè)計師親自精心設(shè)計,設(shè)計的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據(jù)客戶的實(shí)際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。
舉個例子:
for(i=0;ix;i++)
for(j=0;j120;j++);
這是延時x毫秒的for循環(huán)語句。
值得注意的是記得最后的;一定得記得寫。
首先你要知道一個指令周期是幾秒
算法是1/(晶振頻率除以12)
然后你要知道循環(huán)究竟執(zhí)行了幾個指令周期
你可以用keil里在線反匯編命令看看你的循環(huán)編譯成機(jī)器語言后到底是幾個指令周期
這樣就知道了延遲時間
當(dāng)然你取近似值也可以的
比如
for(i=0,i255,i++){x=2}
這里x=2是一個指令周期
而執(zhí)行了255次
假如你的晶振是12MHZ的
則你執(zhí)行一個指令周期是1us
255次是0.255ms
這個是預(yù)編譯的寫法,符合#if后面的條件后編譯器才會編譯,否則不會占用FALSH空間,
#if 相當(dāng)于 if
#elif 相當(dāng)于 else
#endif 表示上面的判斷結(jié)束。
你這個程序的意思是當(dāng)晶振頻率是那個值則編譯那個for循環(huán),來達(dá)到不同頻率都可以使用這一個函數(shù)來達(dá)到更精確的延時。
c語言提供了三種形式的if語句:
1、if(表達(dá)式)語句。
例如:if(xy)printf("%d",x);
此時,如果表達(dá)式為真,則執(zhí)行printf語句。
2、if(表達(dá)式)語句1 else 語句2
例如:
if(xy)printf("%d",x);
else?printf("%d",y);
此時,如果xy成立為真,則執(zhí)行語句printf("%d",x),然后直接跳過else,同時也跳過語句printf("%d",y),去執(zhí)行之后的語句。
如果xy不成立為假,則不執(zhí)行語句printf("%d",x),執(zhí)行語句printf("%d",x)。
3、if(表達(dá)式1)語句1
else if(表達(dá)式2)語句2
else if(表達(dá)式3)語句3
else if(表達(dá)式m)語句m
else 語句 n
此時,哪個表達(dá)式為真,則運(yùn)行哪個if后面的語句。如表達(dá)式3成立為真,執(zhí)行語句3。
在每個語句中,可以有多個語句,但需要加上大括號
例:if(xy){printf("%d",x);break;}
IF函數(shù)的參數(shù):
(1)Logical_test 表示計算結(jié)果為 TRUE 或 FALSE 的任意值或表達(dá)式。
例如,A10=100 就是一個邏輯表達(dá)式,如果單元格 A10 中的值等于 100,表達(dá)式即為 TRUE,否則為 FALSE。本參數(shù)可使用任何比較運(yùn)算符(=(等于)、(大于)、=(大于等于)、=(小于等于等運(yùn)算符))。
(2)Value_if_true表示 logical_test 為 TRUE 時返回的值。
例如,如果本參數(shù)為文本字符串“預(yù)算內(nèi)”而且
logical_test 參數(shù)值為 TRUE,則 IF 函數(shù)將顯示文本“預(yù)算內(nèi)”。如果 logical_test 為 TRUE 而
value_if_true 為空,則本參數(shù)返回 0。
(3)Value_if_false表示 logical_test 為 FALSE 時返回的值。
例如,如果本參數(shù)為文本字符串“超出預(yù)算”而且
logical_test 參數(shù)值為 FALSE,則 IF 函數(shù)將顯示文本“超出預(yù)算”。如果 logical_test 為 FALSE 且忽略了
value_if_false(即 value_if_true 后沒有逗號)。
一般單片機(jī)在c語言中很難得到精確的延時,所以一般對時間要求高的都用計時器中斷來做了。如果時間要求不嚴(yán)格可以用for循環(huán)來做,你可以實(shí)際測試一下,把時間延時到大概一秒左右,然后燒進(jìn)單片機(jī)里運(yùn)行,比如一個燈亮燈滅的程序,看著燈計數(shù),同時用秒表計時,幾個幾十次后取平均值就能知道大概時間了。
while (i = 100) {
if (i == 50) {
Sleep(1000);
break;
}
if (i != 50)
Sleep(2000);
i++;
}
兩個 if 語句,不管程序會不會執(zhí)行者兩個 if 語句,程序都會在一次循環(huán)中檢查兩個 if 語句,而不會一定執(zhí)行這兩個語句,如上所述,兩個 if 語句在一個 while 循環(huán)中并不會同時執(zhí)行,上述代碼中的第二個 if 語句完全可以使用 else代替,但是為了保持你問題的效果,我用了 if 語句,兩個產(chǎn)生效果是相同的。
總之:
1. if 語句不會同時執(zhí)行,你可以將條件同時寫入 if 語句分參數(shù)中來達(dá)到同時執(zhí)行的目的。
2. 在循環(huán)中的 if 語句,不論有幾個 if 語句,編譯器都會檢查這幾個 if 語句而非執(zhí)行,如你所知,只有當(dāng)條件判斷符合是才會執(zhí)行 if 語句
當(dāng)前題目:c語言延時函數(shù)和if語句 c語言程序if語句
URL地址:http://muchs.cn/article2/hjdgic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站維護(hù)、App設(shè)計、網(wǎng)站排名、面包屑導(dǎo)航、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)