新聞中心

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

新手常用單片機延時程序

作者: 時間:2013-01-30 來源:網(wǎng)絡 收藏

(適合初學者)

下面幾個是(包括asm和C程序,都是我在學的過程中用到的),在單片機中應考慮所使用的晶振的頻率,在51系列的單片機中我們常用的是11.0592MHz和12.0000MHz的晶振,而在AVR單片機上常用的有8.000MHz和4.000MH的晶振所以在網(wǎng)上查找程序時如果涉及到精確延時則應該注意晶振的頻率是多大。

軟件延時:(asm)

晶振12MHZ,延時1秒

程序如下:

DELAY:MOV 72H,#100

LOOP3:MOV 71H,#100

LOOP1:MOV 70H,#47

LOOP0JNZ 70H,LOOP0

NOP

DJNZ 71H,LOOP1

MOV 70H,#46

LOOP2JNZ 70H,LOOP2

NOP

DJNZ 72H,LOOP3

MOV 70H,#48

LOOP4JNZ 70H,LOOP4

定時器延時:

晶振12MHZ,延時1s,定時器0工作方式為方式1

DELAY1:MOV R7,#0AH ;; 晶振12MHZ,延時0.5秒

AJMP DELAY

DELAY2:MOV R7,#14H ;; 晶振12MHZ,延時1秒

DELAY:CLR EX0

MOV TMOD,#01H ;設置定時器的工作方式為方式1

MOV TL0,#0B0H ;給定時器設置計數(shù)初始值

MOV TH0,#3CH

SETB TR0 ;開啟定時器

HERE:JBC TF0,NEXT1

SJMP HERE

NEXT1:MOV TL0,#0B0H

MOV TH0,#3CH

DJNZ R7,HERE

CLR TR0 ;定時器要軟件清零

SETB EX0

RET

C語言延時程序:

void delay_18B20(unsigned int i)

{

while(i--);

}

void Delay10us( ) //12mhz

{

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

}

/*****************11us延時函數(shù)*************************/

//

void delay(uint t)

{

for (;t>0;t--);

}

1ms延時子程序(12MHZ)

void delay1ms(uint p)//12mhz

{ uchar i,j;

for(i=0;i

{

for(j=0;j124;j++)

{;}

}

}

函數(shù)功能:延時20ms的子程序


上一頁 1 2 3 下一頁

關鍵詞: 單片機 延時程序

評論


相關推薦

技術專區(qū)

關閉