問題:為什么第一次不是正常的碼制,而之后顯示正常
ORG 0000H
JMP MAIN
ORG 0003H
JMP INT_0
ORG 000BH
JMP TIM_0
LATCHB EQU P2.2 ;8位數碼管鎖存口
LATCHA EQU P2.3
RECEIVEOK EQU 20H.0
REDATEOK EQU 20H.1
DTTMP EQU 70H ;TEMP
PRTMP EQU 71H
CONS32 EQU 72H
MAIN:
CALL INITIAL
CALL INITIME0
CALL INIINT0
MAILP:
JNB RECEIVEOK,MAILP
CLR RECEIVEOK
CLR REDATEOK
CALL PROCESS
CALL DISPLAY
JMP MAIN
INITIAL: ; INITIAL
CLR RECEIVEOK
CLR REDATEOK
MOV R7,#00H
MOV DTTMP,#30H
MOV PRTMP,#50H
MOV CONS32,#32
RET
INITIME0: ;TIME0 INITIAL
MOV TMOD,#02H
MOV TL0,#00H
MOV TH0,#00H
SETB ET0
SETB EA
RET
INIINT0: ;INT0 INITIAL
SETB IT0
SETB EX0
SETB EA
SETB PX0
RET
PROCESS:
CLR EX0
MOV R0,#30H
MOV R3,#8
PROLP2:
MOV R2,#4
CLR A
PROLP0:
CJNE @R0,#7,CMP
SETB C
RRC A
JMP PROLP1
CMP:
JC ZERO
CPL C
RRC A
JMP PROLP1
ZERO:
CPL C
RRC A
PROLP1:
INC R0
DJNZ R2,PROLP0
SWAP A
MOV R1,PRTMP ; 開辟50H以后為解碼存儲區
MOV @R1,A
INC R1
MOV PRTMP,R1
DJNZ R3,PROLP2
SETB EX0
RET
DISPLAY:
MOV R3,#0FFH
CLR EX0
DISDL0:
MOV R1,#11111110B
MOV R0,#50H
MOV R2,#8
DISLP0:
MOV A,@R0
INC R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
SETB LATCHB
CLR LATCHB
MOV A,R1
MOV P0,A
SETB LATCHA
CLR LATCHA
RL A
MOV R1,A
CALL DELAY
DJNZ R2,DISLP0
DISDL:
MOV R5,#100
DJNZ R5,$
DJNZ R3,DISDL0
SETB EX0
RET
DELAY:
MOV R4,#2
MOV R5,#2
DELLP1:
MOV R6,#2
DJNZ R6,$
DJNZ R5,DELLP1
DJNZ R4,DELLP1
RET
TIM_0:
INC R7
RETI
INT_0:
SETB TR0
JB REDATEOK,REDATE
CJNE R7,#30,CHOOSE
CHOOSE:
JC INTEXIT0
;CJNE R7,#200,CHOOSE1
; CHOOSE1:
; JNC INTEXIT0
SETB REDATEOK
JMP INTEXIT1
REDATE:
MOV R0,DTTMP ;開辟30H以后為數據接收區
MOV A,R7
MOV @R0,A
INC R0
MOV DTTMP,R0
DJNZ CONS32,INTEXIT1
SETB RECEIVEOK
CLR TR0
INTEXIT1:
MOV R7,#00H
RETI
INTEXIT0:
RETI
TAB:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
|