新手常用單片機(jī)延時(shí)程序
下面幾個(gè)是單片機(jī)的延時(shí)程序(包括asm和C程序,都是我在學(xué)單片機(jī)的過程中用到的),在單片機(jī)延時(shí)程序中應(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的子程序
評(píng)論