📄 7_flagdisp.asm.asm
字号:
SETB P3.6
CALL SDELAY
RET
;
DSP1
MOV P0,DIGIT1
CALL CLK4
MOV P0,DIGIT7
CALL CLK5
CLR P3.4 ;P3.6 P3.5 P3.4=1 0 0
CLR P3.5
SETB P3.6
CALL SDELAY
RET
DSP2
MOV P0,DIGIT2
CALL CLK4
MOV P0,DIGIT8
CALL CLK5
SETB P3.4 ;P3.6 P3.5 P3.4=0 1 1
SETB P3.5
CLR P3.6
CALL SDELAY
RET
DSP3
MOV P0,DIGIT3
CALL CLK4
MOV P0,DIGIT9
CALL CLK5
CLR P3.4 ;P3.6 P3.5 P3.4=0 1 0
SETB P3.5
CLR P3.6
CALL SDELAY
RET
DSP4
MOV P0,DIGIT4
CALL CLK4
MOV P0,DIGIT10
CALL CLK5
SETB P3.4 ;P3.6 P3.5 P3.4=0 0 1
CLR P3.5
CLR P3.6
CALL SDELAY
RET
DSP5
MOV P0,DIGIT5
CALL CLK4
MOV P0,DIGIT11
CALL CLK5
CLR P3.7 ;ENABLE
CLR P3.4 ;P3.6 P3.5 P3.4=0 0 0
CLR P3.5
CLR P3.6
CALL SDELAY
RET
;
CLK4 CLR P2.1
SETB P2.1
RET
CLK5 CLR P2.0
SETB P2.0
RET
;
SYSTEM_INIT
MOV P0,#FFH
MOV P1,#FFH
MOV P2,#FFH
MOV P3,#FFH
SETB P2.2 ;74273 CLR=1
SETB P2.1 ;U4 CLK
SETB P2.0 ;U5 CLK
MOV R0,#DIGIT0 ;CLEAR (30H)-(3BH)
CLR A
$1 MOV @R0,A
INC R0
CJNE R0,#DIGIT11+1,$1
RET
;
T0_INT ;TIMER0 OVERFLOW INTERRUPT
MOV TH0,#TMSH
MOV TL0,#TMSL
PUSH PSW
PUSH A
PUSH DPL
PUSH DPH
PUSH 00H
PUSH 01H
PUSH 02H
PUSH 03H
PUSH 04H
PUSH 05H
PUSH 06H
PUSH 07H
CALL DISP
POP 07H
POP 06H
POP 05H
POP 04H
POP 03H
POP 02H
POP 01H
POP 00H
POP DPH
POP DPL
POP A
POP PSW
RETI
;
;FUNCTION NAME : HEX_TO_BCD
;FUNCTION : CONVERT 20BIT BINARY TO 6 BYTE BCD CODE
;HEX DATA IN (NUMBER_H:LOW 4bit only)(NUMBER_M)(NUMBER_L)
;BCD RESULT IN (09H)(08H)(07H)(06H),(09H) ALWAYS 00H
;
MOV 03H,NUMBER_L
MOV 04H,NUMBER_M
MOV 05H,NUMBER_H
HEX_TO_BCD
ANL 05H,#00001111B ;GET ONLY LOW 4 BITS
MOV 06H,#00H ;CLEAR (06)(07)(08)(09)
MOV 07H,#00H
MOV 08H,#00H
MOV 09H,#24 ;COUNT
$1 MOV R0,#03H ;BINARY POINTER
MOV R2,#03H ;3 BYTE SHIFT LEFT
CLR C
$2 MOV A,@R0 ;SHIFT LEFT 1 BIT WITH CARRY
RLC A
MOV @R0,A
INC R0
DJNZ R2,$2
MOV R2,#03H
$3 MOV A,@R0 ;A=(06H)
ADDC A,A ;A=A+CARRY
DA A ;DECIMAL ADJUST
MOV @R0,A
INC R0
DJNZ R2,$3
DJNZ 09H,$1
;
MOV R0,#08H
MOV R2,#03H
$31 MOV A,@R0
JNZ $4
ORL A,#FFH
MOV @R0,A
SJMP $5
$4 ANL A,#F0H
JNZ $6
MOV A,@R0
ORL A,#F0H
MOV @R0,A
SJMP $6
$5 DEC R0
DJNZ R2,$31
INC R0
MOV @R0,#F0H
$6 RET
;
ADD_NUMBER ;NUMBER+1
INC U_CNT_L
MOV A,U_CNT_L
JNZ $1
INC U_CNT_M
$1 RET
;
CONVERT1
MOV 03H,U_CNT_L
MOV 04H,U_CNT_M
MOV 05H,U_CNT_H
CALL HEX_TO_BCD ;RESULT IN (08)(07)(06)
MOV R0,#DIGIT0
MOV A,08H
ANL A,#F0H ;GET HIGHER 4 BITS
SWAP A
CALL GET_PATTERN
MOV R0,#DIGIT1
MOV A,08H
ANL A,#0FH ;GET LOWER 4 BITS
CALL GET_PATTERN
MOV R0,#DIGIT2
MOV A,07H
ANL A,#F0H
SWAP A
CALL GET_PATTERN
MOV R0,#DIGIT3
MOV A,07H
ANL A,#0FH
CALL GET_PATTERN
MOV R0,#DIGIT4
MOV A,06H
ANL A,#F0H
SWAP A
CALL GET_PATTERN
MOV R0,#DIGIT5
MOV A,06H
ANL A,#0FH
CALL GET_PATTERN
RET
;
CONVERT2
MOV 03H,D_CNT_L
MOV 04H,D_CNT_M
MOV 05H,D_CNT_H
CALL HEX_TO_BCD ;RESULT IN (08)(07)(06)
MOV R0,#DIGIT6
MOV A,08H
ANL A,#F0H ;GET HIGHER 4 BITS
SWAP A
CALL GET_PATTERN
MOV R0,#DIGIT7
MOV A,08H
ANL A,#0FH ;GET LOWER 4 BITS
CALL GET_PATTERN
MOV R0,#DIGIT8
MOV A,07H
ANL A,#F0H
SWAP A
CALL GET_PATTERN
MOV R0,#DIGIT9
MOV A,07H
ANL A,#0FH
CALL GET_PATTERN
MOV R0,#DIGIT10
MOV A,06H
ANL A,#F0H
SWAP A
CALL GET_PATTERN
MOV R0,#DIGIT11
MOV A,06H
ANL A,#0FH
CALL GET_PATTERN
RET
;
SELF_TEST1
MOV TMP,#00H
$0 MOV R0,#30H
$1 MOV A,TMP
CALL GET_PATTERN
INC R0
CJNE R0,#(DIGIT11+1),$1
CALL TDELAY
INC TMP
MOV A,TMP
CJNE A,#10,$0
$2 RET
;
SELF_TEST2
MOV TMP,#00H
$0 MOV R0,#30H
$1 MOV A,TMP
CALL GET_PATTERN
SETB ACC.7
MOV @R0,A
INC R0
CJNE R0,#(DIGIT11+1),$1
CALL TDELAY
INC TMP
MOV A,TMP
CJNE A,#0AH,$0
RET
;
SELF_TEST3
MOV R2,#08H
MOV TMP,#01H
$0 MOV R0,#30H
$1 MOV A,TMP
MOV @R0,A
INC R0
CJNE R0,#(DIGIT11+1),$1
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
MOV A,TMP
RL A
MOV TMP,A
DJNZ R2,$0
RET
;
CLEAR MOV R0,#30H
$1 MOV A,#00H
MOV @R0,A
INC R0
CJNE R0,#(DIGIT11+1),$1
RET
;
ADD_U_CNT
MOV R0,#U_CNT_L
JMP ADD_CNT
ADD_D_CNT
MOV R0,#D_CNT_L
ADD_CNT MOV A,@R0
ADD A,#UNIT
MOV @R0,A
INC R0
MOV A,@R0
ADDC A,#00H
MOV @R0,A
INC R0
MOV A,@R0
ADDC A,#00H
MOV @R0,A
RET
;
SUBB_U_CNT
MOV R0,#U_CNT_L
JMP SUBB_CNT
SUBB_D_CNT
MOV R0,#D_CNT_L
SUBB_CNT
CLR C
MOV A,@R0
SUBB A,#UNIT
MOV @R0,A
INC R0
MOV A,@R0
SUBB A,#00H
MOV @R0,A
INC R0
MOV A,@R0
SUBB A,#00H
MOV @R0,A
RET
;
SDELAY MOV R6,#05H
$1 MOV R7,#00H
DJNZ R7,$
DJNZ R6,$1
RET
DELAY MOV R6,#00H
$1 MOV R7,#00H
DJNZ R7,$
DJNZ R6,$1
RET
;
TDELAY MOV TMPX,#30H
$1 LCALL DISP
DJNZ TMPX,$1
RET
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -