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