|
匯編更容易讀出,
ALE BIT P2.6
ST BIT P2.3
OE BIT P2.7
EOC BIT P3.7
ADD1 BIT P2.2
ADD2 BIT P2.1
ADD3 BIT P2.0
ACC1 BIT P3.0
ACC2 BIT P3.1
ACC3 BIT P3.2
L2 BIT P3.5
L1 BIT P3.4
ORG 0000H
AJMP START
START:JNB L1,LOOP3
LJMP LOOP2
LOOP3:LCALL DELAY1
JNB L1,$
JMP LOOP1
LOOP1:JNB L1,START ;測試IN0
CLR ADD1
CLR ADD2
CLR ADD3
LCALL W1
LCALL DE
JNB L1,LOOP3
JNB L1,START ;測試IN1
CLR ADD1
CLR ADD2
SETB ADD3
LCALL W1
LCALL DE
JNB L1,LOOP3
JNB L1,START ;測試IN2
CLR ADD1
SETB ADD2
CLR ADD3
LCALL W1
LCALL DE
JNB L1,LOOP3
JNB L1,START ;測試IN3
CLR ADD1
SETB ADD2
SETB ADD3
LCALL W1
LCALL DE
JNB L1,LOOP3
JNB L1,START ;測試IN4
SETB ADD1
CLR ADD2
CLR ADD3
LCALL W1
LCALL DE
JNB L1,LOOP3
JNB L1,LOOP4 ;測試IN5
SETB ADD1
CLR ADD2
SETB ADD3
LCALL W1
LCALL DE
JNB L1,LOOP3
JNB L1,LOOP4 ;測試IN6
SETB ADD1
SETB ADD2
CLR ADD3
LCALL W1
LCALL DE
JNB L1,LOOP5
JNB L1,LOOP4 ;測試IN7
SETB ADD1
SETB ADD2
SETB ADD3
LCALL W1
LCALL DE
LJMP LOOP1
LOOP4:LJMP START
LOOP5:LJMP LOOP3
LOOP2:CLR ACC1
CLR ACC2
CLR ACC3
LCALL W1
LJMP START
W1: SETB ALE ;啟動0809
CLR ST
CLR OE
SETB ST
CLR ST
JNB EOC,$
SETB OE
LOOP: MOV R1,#20H
SETB ACC1 ;初始設(shè)置
SETB ACC2
SETB ACC3
W2: CLR ACC1 ;顯示第一位
CLR ACC2
MOV A,P0 ;將p0口和0809的各個數(shù)據(jù)口連接
MOV B,#51
DIV AB ;將二進制數(shù)轉(zhuǎn)化成10進制數(shù)
MOV DPTR,#TAB
MOVC A,@A+DPTR
ANL A,#07FH
MOV P1,A
LCALL DELAY
MOV A,#0FFH
MOV P1,A
MOV A,B ;顯示第二位
MOV B,#100
DIV AB
MOVC A,@A+DPTR
SETB ACC1
CLR ACC2
MOV P1,A
LCALL DELAY
MOV A,#0FFH
MOV P1,A
MOV A,B ;顯示第三位
MOV B,#10
DIV AB
MOVC A,@A+DPTR
CLR ACC1
SETB ACC2
MOV P1,A
LCALL DELAY
MOV A,#0FFH
MOV P1,A
MOV A,B ;顯示第四位
MOVC A,@A+DPTR
SETB ACC1
MOV P1,A
LCALL DELAY
DJNZ R1,W2
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DELAY: MOV R5,#29H ;延時1
D1: MOV R6,#1AH
DJNZ R6,$
DJNZ R5,D1
RET
DE: MOV R1,#0FFH ;延時2
D2: MOV R3,#0FH
DJNZ R3,$
DJNZ R1,D2
RET
DELAY1: MOV R6,#20 ;延時10ms子程序
C1: MOV R5,#248
DJNZ R5,$
DJNZ R6,C1
RET
END |
|