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