12MHz的晶振,一個機器周期是1uS.?

創(chuàng)新互聯(lián)成立于2013年,先為陜州等服務(wù)建站,陜州等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為陜州企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
void?Delay_ms(unsigned?char?i,?unsigned?char?j) //@12.000MHz
{
unsigned?char?n?=?0;
unsigned?char?m?=?0;
for(n?=?0;?n??i;?n++)
for(m?=?0;?m??j;?m++);
}
然后調(diào)用:
Delay_ms(117, 184);//Delay 20 mS
117 × 184 = 21528, 約等于 20mS.
這樣很不準(zhǔn)確,實際計算指令周期的話,接近了40mS
下面這中方法能準(zhǔn)確一些:
void?Delay_ms(uchar?count)
{
uchar?i,?j,?k;
for(k?=?count;?k??0;?k--)
for(i=5;?i0;?i--)
for(j=98;?j0;?j--);
}
第一個函數(shù)延時時間短,就是判斷一下是否為0,然后進行減法,第二個函數(shù)延時時間長,就要進行多次減法,因此用兩個for循環(huán)。調(diào)用方法:
delay_ms(10);就是延時10ms
delay_ms(20);就是延時20ms
delay_10us(1),就是延時10us
1、delay函數(shù)是一般自己定義的一個延時函數(shù)。
2、C語言定義延時函數(shù)主要通過無意義指令的執(zhí)行來達到延時的目的。下面給出一個經(jīng)典的延時函數(shù)。
//?定義一個延時xms毫秒的延時函數(shù)
void?delay(unsigned?int?xms)??//?xms代表需要延時的毫秒數(shù)
{
unsigned?int?x,y;
for(x=xms;x0;x--)
for(y=110;y0;y--);
}
延遲函數(shù),一般建議調(diào)用系統(tǒng)函數(shù)。不建議循環(huán)。
特別是多任務(wù)操作系統(tǒng),循環(huán)會消耗系統(tǒng)資源。
如果是Dos,indows,linux系統(tǒng)建立調(diào)用 Sleep()函數(shù)。
其他系統(tǒng),請自行查找。
C語言的延遲函數(shù)一般是利用無意義程序運行來控制時間從而達到延時的目的
舉個例子:
for(i=0;ix;i++)
for(j=0;j120;j++);
這是延時x毫秒的for循環(huán)語句。
值得注意的是記得最后的;一定得記得寫。
這段代碼因該是測試按鍵的吧,延時可能是為了防止按鍵抖動吧.或者是防止卡死的.
按鍵抖動的概念百科有:
名稱欄目:延時20ms的函數(shù)c語言,延時1s的程序設(shè)計c語言
文章分享:http://chinadenli.net/article13/dsicjgs.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、App設(shè)計、網(wǎng)站內(nèi)鏈、企業(yè)建站、網(wǎng)站設(shè)計、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)