; 配合"4個8*8彩色點矩陣LED實習板" ; 在16*16彩色點矩陣LED上依序顯示紅色的"歡",綠色的"迎",橙色的"參"紅色的"觀" BASEINT EQU 5 ;速度 INTERVAL1 EQU BASEINT*1 INTERVAL2 EQU BASEINT*2 INTERVAL3 EQU BASEINT*3 INTERVAL4 EQU BASEINT*4 INTERVAL5 EQU BASEINT*5 INTERVAL6 EQU BASEINT*6 INTERVAL7 EQU BASEINT*7 INTERVAL8 EQU BASEINT*8 IDX REG R2 INTERVAL REG R5 COLOR REG R6 WOFFSET REG R4 CTRLLED REG P2.0 LRED1 REG P1.4 LGREEN1 REG P1.5 LRED2 REG P1.6 LGREEN2 REG P1.7 START: MOV IDX,#0 MOV WOFFSET,#0 MOV INTERVAL,#0 MOV COLOR,#0 MOV DPTR,#HWAN LOOP: SETB CTRLLED CJNE COLOR,#0,CHKCOLOR1 SJMP CHKCOLOR2 CHKCOLOR1: CJNE COLOR,#2,CHKCOLOR3 CHKCOLOR2: MOV A,IDX ADD A,ACC ADD A,WOFFSET MOVC A,@A+DPTR MOV P0,A CLR LRED1 SETB LRED1 MOV A,IDX ADD A,ACC ADD A,WOFFSET INC A MOVC A,@A+DPTR MOV P0,A CLR LRED2 SETB LRED2 SJMP CHKCOLOR4 CHKCOLOR3: MOV P0,#0FFH CLR LRED1 SETB LRED1 CLR LRED2 SETB LRED2 CHKCOLOR4: CJNE COLOR,#1,CHKCOLOR5 SJMP CHKCOLOR6 CHKCOLOR5: CJNE COLOR,#2,CHKCOLOR7 CHKCOLOR6: MOV A,IDX ADD A,ACC ADD A,WOFFSET MOVC A,@A+DPTR MOV P0,A CLR LGREEN1 SETB LGREEN1 MOV A,IDX ADD A,ACC ADD A,WOFFSET INC A MOVC A,@A+DPTR MOV P0,A CLR LGREEN2 SETB LGREEN2 SJMP CHKCOLOR8 CHKCOLOR7: MOV P0,#0FFH CLR LGREEN1 SETB LGREEN1 CLR LGREEN2 SETB LGREEN2 CHKCOLOR8: MOV A,P1 ANL A,#0F0H ORL A,IDX MOV P1,A CLR CTRLLED INC IDX CJNE IDX,#16,CHKINTERVAL ;一次顯示多少列(幾列) MOV IDX,#0 INC INTERVAL CHKINTERVAL: CJNE INTERVAL,#INTERVAL1,CHKINTERVAL1 MOV COLOR,#1 MOV WOFFSET,#1*32 SJMP DELAY CHKINTERVAL1: CJNE INTERVAL,#INTERVAL2,CHKINTERVAL2 MOV COLOR,#2 MOV WOFFSET,#2*32 SJMP DELAY CHKINTERVAL2: CJNE INTERVAL,#INTERVAL3,CHKINTERVAL3 MOV COLOR,#0 MOV WOFFSET,#3*32 SJMP DELAY CHKINTERVAL3: CJNE INTERVAL,#INTERVAL4,CHKINTERVAL4 MOV COLOR,#1 MOV WOFFSET,#4*32 SJMP DELAY CHKINTERVAL4: CJNE INTERVAL,#INTERVAL5,CHKINTERVAL5 MOV COLOR,#2 MOV WOFFSET,#5*32 SJMP DELAY CHKINTERVAL5: CJNE INTERVAL,#INTERVAL6,CHKINTERVAL6 MOV COLOR,#0 MOV WOFFSET,#6*32 SJMP DELAY CHKINTERVAL6: CJNE INTERVAL,#INTERVAL7,CHKINTERVAL7 MOV COLOR,#1 MOV WOFFSET,#7*32 SJMP DELAY CHKINTERVAL7: CJNE INTERVAL,#INTERVAL8,DELAY MOV INTERVAL,#0 MOV COLOR,#2 MOV WOFFSET,#0 DELAY: ACALL DELAY1MS AJMP LOOP ;Simulator 專用副程式 ;使用R0, R1, R2, R3 ; DELAY100US: PUSH ACC MOV A,R1 PUSH ACC MOV R1,#44 DJNZ R1,$ POP ACC MOV R1,A POP ACC RET ; DELAY1MS: PUSH ACC MOV A,R1 PUSH ACC MOV R1,#255 DJNZ R1,$ MOV R1,#236 DJNZ R1,$ POP ACC MOV R1,A POP ACC RET ; DELAY10MS: PUSH ACC MOV A,R0 PUSH ACC MOV A,R1 PUSH ACC MOV R0,#19 DELAY10ms_1: MOV R1,#255 DJNZ R1,$ DJNZ R0,DELAY10ms_1 MOV R1,#113 DJNZ R1,$ NOP POP ACC MOV R1,A POP ACC MOV R0,A POP ACC RET ; DELAY100MS: PUSH ACC MOV A,R0 PUSH ACC MOV A,R1 PUSH ACC MOV R0,#194 DELAY100ms_1: MOV R1,#255 DJNZ R1,$ DJNZ R0,DELAY100ms_1 POP ACC MOV R1,A POP ACC MOV R0,A POP ACC RET ; DELAY1S: PUSH ACC MOV A,R2 PUSH ACC MOV R2,#10 DELAY1s_1: LCALL DELAY100MS DJNZ R2,DELAY1s_1 POP ACC MOV R2,A POP ACC RET ; DELAY10S: PUSH ACC MOV A,R2 PUSH ACC MOV R2,#100 DELAY10s_1: LCALL DELAY100MS DJNZ R2,DELAY10s_1 POP ACC MOV R2,A POP ACC RET ; DELAY100S: PUSH ACC MOV A,R3 PUSH ACC MOV R3,#10 DELAY100s_1: LCALL DELAY10S DJNZ R3,DELAY100s_1 POP ACC MOV R2,A POP ACC RET ; DELAY100USP: PUSH ACC MOV A,R1 PUSH ACC MOV A, R7 DELAY100usP_1: MOV R1,#44 DJNZ R1,$ DJNZ ACC,DELAY100usP_1 POP ACC MOV R1,A POP ACC RET ; HWAN: DB 0FFH,0FFH DB 0DFH,0EFH DB 0D1H,0DFH DB 085H,000H DB 0D1H,055H DB 0DEH,055H DB 0D1H,001H DB 085H,055H DB 0D1H,055H DB 0DEH,0FEH DB 0F9H,0F9H DB 087H,0E7H DB 0F4H,01FH DB 0F7H,0E7H DB 0F5H,0F9H DB 0F3H,0FEH DB 0FFH,0FFH DB 0F7H,0BEH DB 0BBH,0B9H DB 0DBH,007H DB 0DFH,0BBH DB 0FFH,0DDH DB 080H,00DH DB 0DFH,0DEH DB 0BFH,0BEH DB 0BFH,07EH DB 0FFH,0FEH DB 080H,002H DB 0DFH,0DEH DB 0DFH,0CEH DB 0C0H,01DH DB 0DFH,0FDH DB 0FFH,0FFH DB 0FFH,07DH DB 0FFH,07DH DB 0EFH,07DH DB 0F7H,07BH DB 0FBH,077H DB 0FDH,00FH DB 080H,07FH DB 0FDH,00FH DB 0FBH,077H DB 0F7H,07BH DB 0F7H,07DH DB 0EFH,07DH DB 0FFH,07DH DB 0FFH,07DH DB 0FFH,0FFH DB 080H,001H DB 0BDH,0BDH DB 0BDH,0BDH DB 081H,081H DB 0BDH,0BDH DB 0BCH,03DH DB 0FFH,0FFH DB 0F7H,0E1H DB 0EFH,0EDH DB 0C8H,06DH DB 0ABH,061H DB 0EBH,07FH DB 0E8H,061H DB 0EFH,0EDH DB 0EFH,0EDH DB 0EFH,0E1H DB 0FFH,0FFH DB 0EEH,0FFH DB 0E6H,080H DB 0EAH,0ABH DB 08CH,0ABH DB 0EAH,0AAH DB 0E6H,080H DB 0EEH,0FFH DB 0FFH,0FFH DB 082H,000H DB 0DAH,0AAH DB 0DAH,0AAH DB 0DAH,0AAH DB 0F8H,0AAH DB 0FFH,0FFH DB 0FFH,0FFH DB 0FFH,0FFH DB 0FFH,0FFH DB 0FEH,0EFH DB 0DEH,0EFH DB 0DAH,0AFH DB 0D8H,02FH DB 08AH,0AFH DB 0DAH,0AFH DB 0D8H,000H DB 08AH,0AFH DB 0D8H,02FH DB 0DAH,0AFH DB 0DEH,0EFH DB 0FEH,0EFH DB 0FFH,0FFH DB 0FFH,0FFH DB 0FBH,0EFH DB 0FBH,0DFH DB 0BBH,0BFH DB 0BAH,07FH DB 080H,001H DB 0BAH,07FH DB 0BBH,0BFH DB 0FBH,0DFH DB 0FBH,0EFH DB 0D6H,0FFH DB 0D6H,0FFH DB 0D6H,0FFH DB 0FEH,0FFH DB 080H,001H DB 0FEH,0FFH DB 0FEH,0FFH DB 0FFH,0F1H DB 0F3H,0E3H DB 0F3H,0C7H DB 0F3H,08FH DB 0F3H,01FH DB 0F2H,03FH DB 080H,07FH DB 080H,0FFH DB 080H,07FH DB 0F2H,03FH DB 0F3H,01FH DB 0F3H,08FH DB 0F3H,0C7H DB 0F3H,0E3H DB 0F3H,0F1H DB 0FFH,0F8H END