;TEST TO CHARACTER LCM ;CONTROLLER: KS0066B ;SIDE: CHARACTER ;DATE: 2005.07.29 ;***************************************************************** RS EQU P2.0 ;DEFINE LCM DATA/INSTRUCTION PIN RRW EQU P2.1 ;DEFINE LCM READ/WRITE PIN E EQU P2.4 ;DEFINE LCM CHIP ENABLE PIN K EQU P3.3 E1 EQU P2.7 ;DB0~DB7 EQU P0.0~P0.7 DEFINE LCM DATA BUS PIN ORG 0000H JMP START ORG 0013H JMP HALT ORG 0040H JMP START INIT: LCALL DELAY ;DELAY TIME LCALL DELAY MOV A,#38H ;8 BITS INTERFACE,2 LINE DISPLAY,5 X 7 DOTS LCALL COM1 LCALL DELAY MOV A,#38H ;8 BITS INTERFACE,2 LINE DISPLAY,5 X 7 DOTS LCALL COM1 LCALL DELAY MOV A,#38H ;8 BITS INTERFACE,2 LINE DISPLAY,5 X 7 DOTS LCALL COM1 LCALL DELAY MOV A,#0CH ;DISPLAY ON,CURSOR OFF,BLINKING OFF LCALL COM MOV A,#06H ;INCREASE,DISPLAY IS NOT SHIFTED LCALL COM MOV A,#01H ;DISPLAY CLEAR LCALL COM MOV R1,#14H INIT3: DJNZ R1,INIT3 MOV DPTR,#CG ;MAKE CG RAM MOV R4,#38H LCALL CGRAM RET START: LCALL INIT MOV A,#01H ;START TO TEST LCALL COM SETB EA SETB IT1 SETB EX1 LCALL TEST LCALL DELAY LCALL INIT MOV 44H,#30H LCALL WRCHAR LCALL DELAYL LCALL DELAY LCALL INIT MOV 44H,#0A0H LCALL WRCHAR LCALL DELAYL LCALL DELAY JMP START HALT: PUSH ACC PUSH 40H PUSH 41H CLR IT1 SETB K LCALL DELAYL JNB K,$ LCALL DELAY HALT1: SETB K JNB K,HALT2 JMP HALT1 HALT2: LCALL DELAY JNB K,HALTOUT JMP HALT1 HALTOUT:JNB K,$ LCALL DELAY POP 41H POP 40H POP ACC SETB IT1 RETI TEST: MOV R6,#00H ;TEST 1 MOV DPTR,#CG1 TEST1: MOV A,#80H LCALL COM MOV R3,#28H TEST2: CLR A MOVC A,@A+DPTR LCALL DAT DJNZ R3,TEST2 MOV A,#0C0H LCALL COM MOV R3,#28H TEST3: CLR A MOVC A,@A+DPTR LCALL DAT DJNZ R3,TEST3 LCALL DELAYL INC DPTR INC R6 CJNE R6,#02H,TEST1 RET WRCHAR: NOP WRCHAR1:MOV A,#80H LCALL COM MOV R3,#29H WRCHAR2:CLR A MOV A,44H LCALL DAT INC 44H DJNZ R3,WRCHAR2 MOV A,#0C0H LCALL COM MOV R3,#29H WRCHAR3: CLR A MOV A,44H LCALL DAT INC 44H DJNZ R3,WRCHAR3 RET COM: LCALL BUSY ;SEND OUT COMMAND MOV P0,A CLR RS CLR RRW SETB E CLR E SETB E1 CLR E1 RET COM1: ;SEND OUT COMMAND,NO CHECK BUSY MOV P0,A CLR RS CLR RRW SETB E CLR E SETB E1 CLR E1 RET DAT: LCALL BUSY ;SEND OUT DATA MOV P0,A SETB RS CLR RRW SETB E CLR E SETB E1 CLR E1 RET BUSY: MOV P0,#0FFH ;READ BUSY CLR RS SETB RRW SETB E SETB E1 MOV C,P0.7 CLR E CLR E1 JC BUSY RET DELAY: MOV R2,#20H ;DELAY TIME DELAY0: MOV R3,#50H DELAY1: DJNZ R3,DELAY1 DJNZ R2,DELAY0 RET DELAYL: MOV R1,#05H DELAYL2:MOV R2,#0BFH ;DELAY TIME DELAYL0: MOV R3,#0FFH DELAYL1: DJNZ R3,DELAYL1 DJNZ R2,DELAYL0 DJNZ R1,DELAYL2 RET CGRAM: ;MAKE CG RAM MOV A,#40H ;SET CG RAM ADDRESS LCALL COM CGRAM1: CLR A MOVC A, @A+DPTR LCALL DAT INC DPTR DJNZ R4,CGRAM1 RET CG: DB 01FH,011H,011H,011H,011H,011H,011H,01FH DB 014H,00AH,015H,00AH,015H,00AH,015H,00AH CG2: DB 01FH,000H,01FH,000H,01FH,000H,01FH,000H DB 000H,01FH,000H,01FH,000H,01FH,000H,01FH DB 015H,015H,015H,015H,015H,015H,015H,015H DB 00AH,00AH,00AH,00AH,00AH,00AH,00AH,00AH DB 01FH,011H,011H,011H,011H,011H,011H,01FH DB 01FH,01FH,01FH,01FH,01FH,01FH,01FH,01FH DB 00FH,009H,00FH,009H,00FH,009H,011H,000H CG1: DB 0FFH,000H,001H,002H,003H,004H,006H,024H,040H;0FFH:ALL DIS,024h&040h(ascii table) END