51单片机延时0.5s和20ms的程序(汇编) 12M晶振

如题所述

第1个回答  2012-12-18
LCALL DELAY_20MS ;包括lcall和返回一共20ms,误差0us

DELAY_20MS: ;60H,61H,62H
MOV 62H,#26
MOV 61H,#5
MOV 60H,#74
DJNZ 60H,$
NOP
DJNZ 61H,$-7
DJNZ 62H,$-13
RET
;------------------------------------------------
LCALL DELAY_500MS ;包括lcall和返回一共0.5s,误差0us

DELAY_500MS: ;60H,61H,62H
MOV 62H,#10
MOV 61H,#102
MOV 60H,#243
DJNZ 60H,$
DJNZ 61H,$-6
DJNZ 62H,$-12
MOV 62H,#76
DJNZ 62H,$
RET
第2个回答  2012-12-17
0.5s

void delay(void) //误差 0us
{
unsigned char a,b,c;
for(c=23;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
}

20ms
void delay(void) //误差 0us
{
unsigned char a,b;
for(b=215;b>0;b--)
for(a=45;a>0;a--);
_nop_; //if Keil,require use intrins.h
_nop_; //if Keil,require use intrins.h
}
第3个回答  2012-12-17
qq邮箱 我发给你 好几种延时的