大神来帮我看看程序哪里不行
时间:10-02
整理:3721RD
点击:
我要做一个4位共阳七段数码管动态显示计数器。帮忙看看哪里不行(脉冲信号发生器)DBUF EQU 30H
ORG 0000H
JMP MAIN
ORG 0013H
JMP inter_addr
ORG 0030H
MAIN: SETB EA
SETB EX0
SETB IT0
MOV SP,#60H
LOOP: call display
JMP LOOP
inter_addr:
PUSH PSW
PUSH ACC
SETB PSW.3
MOV R0,#31H
CALL ADD1
MOV A,R7
XRL A,#00H
JNZ END_INTERUPT
MOV R0,#30H
CALL CLEAR
MOV R0,#33H
CALL ADD1
MOV A,R7
XRL A,#00H
JNZ END_INTERUPT
MOV R0,#32H
CALL CLEAR
END_INTERUPT:
POP ACC
POP PSW
RETI
ADD1:MOV A,@R0
SWAP A
DEC R0
ORL A,@R0
ADD A,#01H
DA A
MOV R7,A
INC R0
MOV A,R7
ANL A,#0F0H
SWAP A
MOV @R0,A
RET
CLEAR:CLR A
MOV @R0,A
INC R0
MOV @R0,A
RET
display:
MOV R0,#DBUF
MOV R1,#01H
MOV R2,#8
MOV DPTR,#SEGTAB
LOOP2:MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
MOV P2,R1
CALL DELAY
INC R0
MOV A,R1
RL A
MOV R1,A
MOV P0,#0FFH
DJNZ R2,LOOP2
RET
DELAY:MOV R4,#05H
AAA:MOV R5,#0FFH
AA:DJNZ R5,AA
DJNZ R4,AAA
RET
SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
MOV R0,#33H
CALL ADD1
MOV A,R7
XRL A,#00H
JNZ END_INTERUPT
MOV R0,#32H
CALL CLEAR
MOV R0,#35H
CALL ADD1
MOV A,R7
XRL A,#00H
JNZ END_INTERUPT
MOV R0,#34H
CALL CLEAR
MOV R0,#37H
CALL ADD1
MOV A,R7
XRL A,#00H
JNZ END_INTERUPT
MOV R0,#36H
CALL CLEAR
END_INTERUPT:
POP ACC
POP PSW
RETI
ADD1:
MOV A,@R0
SWAP A
DEC R0
ORL A,@R0
ADD A,#01H
DA A
MOV R7,A
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,R7
ANL A,#0F0H
SWAP A
MOV @R0,A
RET
CLEAR:
CLR A
MOV @R0,A
INC R0
MOV @R0,A
RET
display:
MOV R0,#DBUF
MOV R1,#01H
MOV R2,#8
MOV DPTR,#SEGTAB
LOOP2:
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
MOV P1,R1
CALL DELAY
INC R0
MOV A,R1
RL A
MOV R1,A
MOV P0,#0FFH
DJNZ R2,LOOP2
RET
DELAY:MOV R4,#05H
AA1:MOV R5,#0FFH
AA:DJNZ R5,AA
DJNZ R4,AA1
RET
SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
ORG 0000H
JMP MAIN
ORG 0013H
JMP inter_addr
ORG 0030H
MAIN: SETB EA
SETB EX0
SETB IT0
MOV SP,#60H
LOOP: call display
JMP LOOP
inter_addr:
PUSH PSW
PUSH ACC
SETB PSW.3
MOV R0,#31H
CALL ADD1
MOV A,R7
XRL A,#00H
JNZ END_INTERUPT
MOV R0,#30H
CALL CLEAR
MOV R0,#33H
CALL ADD1
MOV A,R7
XRL A,#00H
JNZ END_INTERUPT
MOV R0,#32H
CALL CLEAR
END_INTERUPT:
POP ACC
POP PSW
RETI
ADD1:MOV A,@R0
SWAP A
DEC R0
ORL A,@R0
ADD A,#01H
DA A
MOV R7,A
INC R0
MOV A,R7
ANL A,#0F0H
SWAP A
MOV @R0,A
RET
CLEAR:CLR A
MOV @R0,A
INC R0
MOV @R0,A
RET
display:
MOV R0,#DBUF
MOV R1,#01H
MOV R2,#8
MOV DPTR,#SEGTAB
LOOP2:MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
MOV P2,R1
CALL DELAY
INC R0
MOV A,R1
RL A
MOV R1,A
MOV P0,#0FFH
DJNZ R2,LOOP2
RET
DELAY:MOV R4,#05H
AAA:MOV R5,#0FFH
AA:DJNZ R5,AA
DJNZ R4,AAA
RET
SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
MOV R0,#33H
CALL ADD1
MOV A,R7
XRL A,#00H
JNZ END_INTERUPT
MOV R0,#32H
CALL CLEAR
MOV R0,#35H
CALL ADD1
MOV A,R7
XRL A,#00H
JNZ END_INTERUPT
MOV R0,#34H
CALL CLEAR
MOV R0,#37H
CALL ADD1
MOV A,R7
XRL A,#00H
JNZ END_INTERUPT
MOV R0,#36H
CALL CLEAR
END_INTERUPT:
POP ACC
POP PSW
RETI
ADD1:
MOV A,@R0
SWAP A
DEC R0
ORL A,@R0
ADD A,#01H
DA A
MOV R7,A
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,R7
ANL A,#0F0H
SWAP A
MOV @R0,A
RET
CLEAR:
CLR A
MOV @R0,A
INC R0
MOV @R0,A
RET
display:
MOV R0,#DBUF
MOV R1,#01H
MOV R2,#8
MOV DPTR,#SEGTAB
LOOP2:
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
MOV P1,R1
CALL DELAY
INC R0
MOV A,R1
RL A
MOV R1,A
MOV P0,#0FFH
DJNZ R2,LOOP2
RET
DELAY:MOV R4,#05H
AA1:MOV R5,#0FFH
AA:DJNZ R5,AA
DJNZ R4,AA1
RET
SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
还是在学校的时候用的汇编,看得人头疼
