新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 8051單片機精確延時程序

8051單片機精確延時程序

作者: 時間:2016-11-24 來源:網絡 收藏
各種教材都喜歡用for循環(huán)再嵌套一個for循環(huán)來實現延時,下列是通過定時器來延時;

本文引用地址:http://m.butianyuan.cn/article/201611/320673.htm

delay(t)表示延時t ms;

也可以通過定時器中斷的方式來延時,但是每次延時的時間非常有限,對于11.0592MHz的晶振,每次中斷延時只有約71ms.

延時函數

void delay(unsigned int t)//延時t ms

{

TMOD=0x01;//設置工作模式

TR0=1; //啟動定時器0

ET0=0x00;//禁止定時中斷

while(t!=0)//循環(huán)次數t

{

TH0=0xFC;

TL0=0x66;//設置計數初值

while(TF0!=1);//查詢計數器溢出標志位

TF0=0;//溢出后清零

t--;

}

}

此外,還用excel制作了一個計算計數初值的的小工具,輸入晶振和需要延時的最小單位,就自動計算出計算初值,并轉換為16進制(用DEC2HEX函數)

各種教材都喜歡用for循環(huán)再嵌套一個for循環(huán)來實現延時,下列是通過定時器來延時;

delay(t)表示延時t ms;

也可以通過定時器中斷的方式來延時,但是每次延時的時間非常有限,對于11.0592MHz的晶振,每次中斷延時只有約71ms.

延時函數

void delay(unsigned int t)//延時t ms

{

TMOD=0x01;//設置工作模式

TR0=1; //啟動定時器0

ET0=0x00;//禁止定時中斷

while(t!=0)//循環(huán)次數t

{

TH0=0xFC;

TL0=0x66;//設置計數初值

while(TF0!=1);//查詢計數器溢出標志位

TF0=0;//溢出后清零

t--;

}

}

此外,還用excel制作了一個計算計數初值的的小工具,輸入晶振和需要延時的最小單位,就自動計算出計算初值,并轉換為16進制(用DEC2HEX函數)



評論


技術專區(qū)

關閉