新聞中心

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

新手常用單片機(jī)延時(shí)程序

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

(適合初學(xué)者)

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

軟件延時(shí):(asm)

晶振12MHZ,延時(shí)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

定時(shí)器延時(shí):

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

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

AJMP DELAY

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

DELAY:CLR EX0

MOV TMOD,#01H ;設(shè)置定時(shí)器的工作方式為方式1

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

MOV TH0,#3CH

SETB TR0 ;開啟定時(shí)器

HERE:JBC TF0,NEXT1

SJMP HERE

NEXT1:MOV TL0,#0B0H

MOV TH0,#3CH

DJNZ R7,HERE

CLR TR0 ;定時(shí)器要軟件清零

SETB EX0

RET

C語言延時(shí)程序:

void delay_18B20(unsigned int i)

{

while(i--);

}

void Delay10us( ) //12mhz

{

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

}

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

//

void delay(uint t)

{

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

}

1ms延時(shí)子程序(12MHZ)

void delay1ms(uint p)//12mhz

{ uchar i,j;

for(i=0;i

{

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

{;}

}

}

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


上一頁 1 2 3 下一頁

關(guān)鍵詞: 單片機(jī) 延時(shí)程序

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉