单片机中延时程序有什么作用?如下段程序。。。。( ACALL DELAY ;延时 MOV P1,#0FFH)这两句的作用是啥?0
DISP_BUF EQU 50H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP ITOP
ORG 0200H
MAIN: MOV TMOD,#01H
MOV 20H,#20
CLR A
MOV 40H,A
MOV 41H,A
MOV 42H,A
SETB ET0
SETB EA
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
HERE: JNB P2.0,KEY1
JNB P2.1,KEY2
LCALL RESET
LCALL DISP
LJMP HERE
ITOP: PUSH PSW ;数据处理
PUSH ACC
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ 20H,RETURN
MOV 20H,#20
MOV A,#01H
ADD A,42H
DA A
MOV 42H,A
CJNE A,#60H,RETURN
MOV 42H,#00H
MOV A,#01H
ADD A,41H
DA A
MOV 41H,A
CJNE A,#60H,RETURN
MOV 41H,#00H
MOV A,#01H
ADD A,40H
DA A
MOV 40H,A
CJNE A,#24H,RETURN
MOV 40H,#00H
RETURN:POP ACC
POP PSW
RETI
KEY1: LCALL DELAY
JB P2.0,RETU1
MOV A,#01H
ADD A,41H
DA A
MOV 41H,A
WAIT1:JNB P2.0,WAIT1
CJNE A,#60H,RETU1
MOV 41H,#00H
RETU1:LCALL RESET
LCALL DISP
LJMP HERE
KEY2: LCALL DELAY
JB P2.1,RETU2
MOV A,#01H
ADD A,40H
DA A
MOV 40H,A
WAIT2:JNB P2.1,WAIT2
CJNE A,#24H,RETU2
MOV 40H,#00H
RETU2:LCALL RESET
LCALL DISP
LJMP HERE
RESET:MOV A,40H
ANL A,#0FH
MOV 54H,A
MOV A,40H
ANL A,#0F0H
SWAP A
MOV 55H,A
MOV A,41H
ANL A,#0FH
MOV 52H,A
MOV A,41H
ANL A,#0F0H
SWAP A
MOV 53H,A
MOV A,42H
ANL A,#0FH
MOV 50H,A
MOV A,42H
ANL A,#0F0H
SWAP A
MOV 51H,A
RET
DISP:MOV R1,#DISP_BUF;数据显示
MOV R7,#6 ;6位循环6次
MOV R2,#0FEH ;位码
MOV DPTR,#TAB ;段码
LOOP:MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
MOV A,R2
MOV P3,A
ACALL DELAY ;延时
MOV P1,#0FFH
RL A ;位码左移1位
MOV R2,A
INC R1
DJNZ R7,LOOP
RET
DELAY: MOV R4,#10 ;延时程序3精确延时1000微秒
D_4094:MOV R5,#248
DJNZ R5,$
DJNZ R4,D_4094
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9
DB 88H,83H,0C6H,0A1H,86H,8EH ;A~F
END