void delay(unsigned int t) //括號(hào)里面的是參數(shù),可以定義在函數(shù)前面,這里為了方便就定義在這里
{
while(t--); //將t定義為無(wú)符號(hào)整型,16位,是為了能延時(shí)更長(zhǎng)時(shí)間
} //while后的分號(hào)可以理解為空語(yǔ)句,讓while成為單獨(dú)的語(yǔ)句
delay的延時(shí)原理讓芯片通過(guò)循環(huán)語(yǔ)句,做無(wú)意義的語(yǔ)句,以起到延時(shí)的作用。
創(chuàng)新互聯(lián)建站-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比和縣網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式和縣網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋和縣地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴(lài)。delay的使用方法簡(jiǎn)單來(lái)說(shuō)就是,在主函數(shù)里調(diào)用寫(xiě)好的延時(shí)函數(shù),達(dá)到延時(shí)的目的。 下面用單片機(jī)LED的閃爍實(shí)驗(yàn)舉例:
#includesbit led=P2^7;
void delay(unsigned int t)
{
while(t--);
}
void main()
{
while(1)
{
led=0;
delay(60000); //調(diào)用delay函數(shù),再給參數(shù)t賦值
led=1;
delay(60000); //無(wú)符號(hào)整型,數(shù)字不能超過(guò)2的16次方,不然就會(huì)溢出
}
}
還有另一種方法寫(xiě)延時(shí)函數(shù),而且所延遲的時(shí)間更加精確,使用單片機(jī)的燒入程序STC-ISP。
然后輸入需要延時(shí)的時(shí)間,就可以得到相應(yīng)的子函數(shù)了。用這個(gè)方法寫(xiě)的延時(shí)函數(shù)如下方式調(diào)用
void main()
{
while(1)
{
led=0;
delay 100us(); //軟件所給出的delay函數(shù)
led=1;
delay 100us();
}
}
注:子函數(shù)里面有個(gè)_nop_,要添加頭文件
相較于軟件直接給出的函數(shù),手寫(xiě)的延時(shí)函數(shù)如何較為準(zhǔn)確的計(jì)算所延遲的時(shí)間?
這里教大家一種較為簡(jiǎn)單的方法,不用根據(jù)晶振大小計(jì)算時(shí)間。
逐條的運(yùn)行就可以較為準(zhǔn)確的計(jì)算t為各值時(shí)對(duì)應(yīng)的時(shí)間。
萌新上路,制作不易,如有錯(cuò)誤還請(qǐng)?jiān)u論區(qū)指正。各位帥氣逼人、美若天仙、顏值爆表的看官老爺點(diǎn)個(gè)贊吧,求求了。(在線(xiàn)卑微求贊)
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧