;--------------------------------------- ;雄铎科技股分有限公司-中文模组测试程式 ;档名:china.asm ;--------------------------------------- ; P1.0 - P1.7 -> DB0 - DB7 ; RS -> P3.0 ; RW -> P3.1 ; E -> P3.2 ;--------------------------------------- RS REG P3.0 R_W REG P3.1 E1 REG P3.2 KEY REG P3.5 E2 REG P3.3 KEY2 REG P3.4 ;--------------------------------------- RS08 MACRO D1 PUSH A CALL BUSY_DELAY MOV A,D1 MOV R0,#0 MOVX @R0,A MOV P1,A CLR RS CLR R_W SETB E1 SETB E2 CLR E1 CLR E2 POP A ENDM ;--------------------------------------- RS18 MACRO D2 PUSH A CALL BUSY_DELAY MOV A,D2 MOV R0,#1 MOVX @R0,A MOV P1,A SETB RS CLR R_W SETB E1 SETB E2 CLR E1 CLR E2 POP A ENDM ;---------------------------------- RS04 MACRO D1 PUSH A CALL DELAY1 CLR RS CLR R_W CLR E1 CLR E2 MOV A,D1 ANL A,#11110000B MOV R0,#0 MOVX @R0,A MOV P1,A SETB E1 SETB E2 CLR E1 CLR E2 CALL DELAY2 MOV A,D1 ANL A,#00001111B SWAP A MOV R0,#0 MOVX @R0,A MOV P1,A SETB E1 SETB E2 CLR E1 CLR E2 CALL DELAY2 POP A ENDM ;--------------------------------------- RS14 MACRO D2 PUSH A CALL DELAY1 SETB RS CLR R_W CLR E1 CLR E2 MOV A,D2 ANL A,#11110000B MOV R0,#1 MOVX @R0,A MOV P1,A SETB E1 SETB E2 CLR E1 CLR E2 CALL DELAY2 MOV A,D2 ANL A,#00001111B SWAP A MOV R0,#1 MOVX @R0,A MOV P1,A SETB E1 SETB E2 CLR E1 CLR E2 CALL DELAY2 POP A ENDM ;--------------------------------------- ;--------------------------------------- ORG 0 CLR E1 CLR E2 ;PRINT CHARACTERS----------------------- START: CALL CHECK_KEY JB KEY2,T80 CALL F_BIT4 JMP START T80: CALL F_BIT8 JMP START ;*********************************** ;* 8-BIT 操作主程序 * ;*********************************** F_BIT8: CALL LCD_RESET8 MOV R4,#2 MOV DPTR,#LINE1 ; CALL LCD_RESET8 MOV R3,#8 NEXTN8: MOV A,#0 MOVC A,@A+DPTR XCH A,B RS18 B INC DPTR DJNZ R3,NEXTN8 RS08 #00001111B CALL DELAY JB KEY,$ CALL LCD_RESET8 ;JMP AS8 MOV R1,#0 MOV R4,#7 MOV DPTR,#CHAR NEXT08: RS08 #01000000B MOV R3,#32 LOOP08: MOV A,#0 MOVC A,@A+DPTR XCH A,B RS18 B INC DPTR DJNZ R3,LOOP08 RS08 #10000000B MOV R3,#64 LOOP18: RS18 #00000000B DJNZ R3,LOOP18 CALL ICON8 INC R1 CALL DELAY JB KEY,$ DJNZ R4,CC8 JMP CA8 CC8: JMP NEXT08 ;PRINT ASCII CODE CHARACTERS------------ CA8: CALL LCD_RESET8 MOV A,#33 RS08 #00000001B MOV R3,#64 LOOP28: XCH A,B RS18 B XCH A,B INC A DJNZ R3,LOOP28 CALL DELAY JB KEY,$ ;SHOW 2--------------------------------- AS8: MOV R4,#2 MOV DPTR,#LINE2 SHOW18: CALL LCD_RESET8 MOV R3,#64 NEXT38: MOV A,#0 MOVC A,@A+DPTR XCH A,B RS18 B INC DPTR DJNZ R3,NEXT38 CALL DELAY JB KEY,$ LOOP38: RS08 #00011000B ;CALL ICON8 ;INC R1 CALL DELAY JNB KEY,LOOP48 JMP LOOP38 LOOP48: RS08 #00011100B ;CALL ICON8 INC R1 CALL DELAY JNB KEY,S_EXIT8 JMP LOOP48 S_EXIT8:DJNZ R4,SHOW18 RET ;----------------------------------------------------- ;--------------------------------------- BUSY_DELAY: MOV R7,#0 DJNZ R7,$ DJNZ R7,$ DJNZ R7,$ DJNZ R7,$ DJNZ R7,$ DJNZ R7,$ RET ;--------------------------------------- LCD_RESET8: RS08 #00110000B ;Function set MOV R7,#81 ; $1: MOV R6,#50 ; DJNZ R6,$ ; DJNZ R7,$1 ;Delay 4.1 ms RS08 #00110000B ;Function set MOV R7,#100 ; DJNZ R7,$ ;Delay 0.1 ms RS08 #00110000B ;Function set RS08 #00111000B ;Cursor or Display Shift RS08 #00001100B ;Display ON/OFF RS08 #00000110B ;Enter Mode Set RS08 #00000010B ;Return Home RS08 #00000001B ;Clear Display RS08 #10000000B ;Set DDRAM Address RS08 #01000000B ;Set CGRAM Address RS08 #00000010B ;Return Home RET ;--------------------------------------- ICON8: PUSH DPH PUSH DPL PUSH A CJNE R1,#9,I_RUN8 JC I_RUN8 MOV R1,#0 I_RUN8: MOV DPTR,#ICON_P MOV A,R1 MOVC A,@A+DPTR RS08 #01110000B XCH A,B RS18 B XCH A,B RS08 #01110001B SWAP A XCH A,B RS18 B I_EXIT8:POP A POP DPL POP DPH RET ;--------------------------------------- DELAY: MOV R7,#2 DLY: MOV R6,#0 LP1: MOV R5,#0 DJNZ R5,$ DJNZ R6,LP1 DJNZ R7,DLY RET ;--------------------------------------- ;--------------------------------------- F_BIT4: CALL LCD_RESET4 MOV R4,#2 MOV DPTR,#LINE1 CALL LCD_RESET4 MOV R3,#7 NEXTN4: MOV A,#0 MOVC A,@A+DPTR XCH A,B RS14 B INC DPTR DJNZ R3,NEXTN4 RS04 #00001111B CALL DELAY JB KEY,$ CALL LCD_RESET4 ;JMP AS MOV R1,#0 MOV R4,#7 MOV DPTR,#CHAR NEXT04: RS04 #01000000B MOV R3,#8 LOOP04: MOV A,#0 MOVC A,@A+DPTR XCH A,B RS14 B INC DPTR DJNZ R3,LOOP04 RS04 #10000000B MOV R3,#80 LOOP14: RS14 #00000000B DJNZ R3,LOOP14 CALL ICON4 INC R1 CALL DELAY JB KEY,$ DJNZ R4,CC4 JMP CA4 CC4: JMP NEXT04 ;PRINT ASCII CODE CHARACTERS------------ CA4: CALL LCD_RESET4 MOV R4,#2 MOV A,#33 NEXT24: MOV R3,#80 LOOP24: XCH A,B RS14 B XCH A,B INC A DJNZ R3,LOOP24 CALL DELAY JB KEY,$ JMP X0 X1: ADD A,#48 DJNZ R4,NEXT24 JMP XX X0: RS04 #00000001B JMP X1 XX: ;SHOW 2--------------------------------- AS4: MOV R4,#2 MOV DPTR,#LINE2 SHOW14: CALL LCD_RESET4 MOV R3,#80 NEXT34: MOV A,#0 MOVC A,@A+DPTR XCH A,B RS14 B INC DPTR DJNZ R3,NEXT34 LOOP34: RS04 #00011000B ;CALL ICON4 INC R1 CALL DELAY JNB KEY,LOOP44 JMP LOOP34 LOOP44: RS04 #00011100B ;CALL ICON4 INC R1 CALL DELAY JNB KEY,S_EXIT4 JMP LOOP44 S_EXIT4:DJNZ R4,LOOP4 RET LOOP4: JMP SHOW14 ;--------------------------------------- CHECK_KEY: PUSH A NO_KEY: MOV R7,#100 DLYN: MOV R6,#200 DJNZ R6,$ DJNZ R7,DLYN MOV A,P3 JNB A.7,NO_KEY JZ NO_KEY POP A RET ;--------------------------------------- LCD_RESET4: RS04 #00110011B CALL DELAY1 CALL DELAY1 CALL DELAY1 RS04 #00110010B CALL DELAY1 RS04 #00101000B RS04 #00001100B RS04 #00000110B RS04 #00000010B RS04 #00000001B RS04 #10000000B RET ;--------------------------------------- ICON4: PUSH DPH PUSH DPL PUSH A CJNE R1,#9,I_RUN4 JC I_RUN4 MOV R1,#0 I_RUN4: MOV DPTR,#ICON_P MOV A,R1 MOVC A,@A+DPTR RS04 #01110000B XCH A,B RS14 B XCH A,B RS04 #01110001B SWAP A XCH A,B RS14 B I_EXIT4:POP A POP DPL POP DPH RET ;--------------------------------------- DELAY1: MOV R7,#5 DLY1: MOV R6,#200 DJNZ R6,$ DJNZ R7,DLY1 RET ;---------------------------------------- DELAY2: MOV R7,#25 DJNZ R7,$ RET ;---------------------------------------- LINE1: DB "HIJK 17" LINE2: DB "==== SDEC TECHNOLGY CORP. ====" DB "TEL:2-29956152 FAX:2-22781869 " DB "==== 雄铎科技股分有限公司 ====" DB "TEL:2-22782884 TEL:2-22782885 " ICON_P: DB 17H,00H,10H,04H,02H,01H,12H,05H,17H CHAR: DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 000H,000H,000H,000H,000H,000H,000H,000H DB 000H,000H,000H,000H,000H,000H,000H,000H DB 000H,000H,000H,000H,000H,000H,000H,000H DB 000H,000H,000H,000H,000H,000H,000H,000H DB 080H,000H,0C0H,000H,0E0H,000H,0F0H,000H DB 0F8H,000H,0FCH,000H,0FEH,000H,0FFH,000H DB 0FFH,080H,0FFH,0C0H,0FFH,0E0H,0FFH,0F0H DB 0FFH,0F8H,0FFH,0FCH,0FFH,0FEH,0FFH,0FFH DB 000H,001H,000H,003H,000H,007H,000H,00FH DB 000H,01FH,000H,03FH,000H,07FH,000H,0FFH DB 001H,0FFH,003H,0FFH,007H,0FFH,00FH,0FFH DB 01FH,0FFH,03FH,0FFH,07FH,0FFH,0FFH,0FFH DB 055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH DB 055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH DB 055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH DB 055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH DB 0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H DB 0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H DB 0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H DB 0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H DB 001H,080H,003H,0C0H,007H,0E0H,00FH,0F0H DB 01FH,0F8H,03FH,0FCH,07FH,0FEH,0FFH,0FFH DB 001H,080H,001H,080H,001H,080H,001H,080H DB 001H,080H,001H,080H,001H,080H,001H,080H ;--------------------------------------- END