ORG 0000H
ST: MOV DPTR,#TAB ;顯示數據表首址
LP5:CLR P2.2 ;74HC595輸出清零
SETB P2.2
CLR P2.4 ;選取第一行000
CLR P2.5
CLR P2.6
MOV A,#00H ;清累加器
MOVC A,@A+DPTR ;取顯示數據
LCALL DIS ;送列數據子程?
LCALL DELAY ; 延時
SETB P2.4 ;選取第二行001
CLR P2.5
CLR P2.6
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
LCALL DIS
LCALL DELAY
CLR P2.4 ;選取第三行010
SETB P2.5
CLR P2.6
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
LCALL DIS
LCALL DELAY
SETB P2.4 ;選取第四行011
SETB P2.5
CLR P2.6
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
LCALL DIS
LCALL DELAY
CLR P2.4 ;選取第五行100
CLR P2.5
SETB P2.6
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
LCALL DIS
LCALL DELAY
SETB P2.4 ;選取第六行101
CLR P2.5
SETB P2.6
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
LCALL DIS
LCALL DELAY
CLR P2.4 ;選取第七行110
SETB P2.5
SETB P2.6
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
LCALL DIS
LCALL DELAY
SETB P2.4 ;選取第八行111
SETB P2.5
SETB P2.6
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
LCALL DIS
LCALL DELAY
LJMP ST ;一楨畫面顯示完成返回繼續顯示下一禎
;****************************************************************
;送列數據子程序
;****************************************************************
DIS:CLR C
LP1:MOV R5,#08H
LP: RRC A
MOV P2.0,C
CLR P2.1
SETB P2.1
DJNZ R5, LP
CLR P2.3
SETB P2.3
NOP
NOP
RET
;******************************************************************
;延時子程序
;******************************************************************
DELAY: MOV R5,#04H
H0: MOV R6,#0ffH
H1 : MOV R7,#0ffH
H2: DJNZ R7,H2
DJNZ R6,H1
DJNZ R5,H0
RET
;*****************************************************************
;顯示數據表
;*****************************************************************
TAB:
DB 0ffH,7eH,3cH,18H,18H,3cH,7eH,0FFH
TAB1:
DB 10,0feH,92H,92H,0feH,92H,10H,10H
END