;TEST TO WS1621-001,2006.04.14 W_R EQU P2.1 DAT EQU P2.0 CS EQU P2.4 K EQU P3.3 ORG 0000H JMP START ORG 0013H JMP HALT ORG 0040H JMP START INIT: MOV R1,#01H LCALL DELAYL SETB CS SETB W_R ; MOV 42H,#00H ;SYS DIS ; LCALL COM MOV 42H,#01H ;SYS EN LCALL COM MOV 42H,#02H ;LCD OFF LCALL COM MOV 42H,#03H ;LCD ON LCALL COM ; MOV 42H,#0E3H ;NORMAL ; LCALL COM MOV 42H,#14H ; 32K ON LCALL COM MOV 42H,#29H ;BIAS 1/3, 4 COMMONS OPTION LCALL COM ; MOV 42H,#04H ;TIMER DIS ; LCALL COM ; MOV 42H,#05H ;WDT DIS ; LCALL COM ; MOV 42H,#08H ;TONE OFF ; LCALL COM ; MOV 42H,#80H ;IRQ DIS ; LCALL COM RET START: LCALL INIT LCALL CLEAR ;CLEAR DISPLAY OK MOV R1,#02H LCALL DELAYL LCALL WRFF ;ALL TEST MOV R1,#0AH LCALL DELAYL LCALL CLEAR MOV DPTR,#D0 MOV R6,#05H SETB EA SETB IT1 SETB EX1 WRDATA:MOV 40H,#00H ;DISPLAY CHARACTER LCALL W_RCOM MOV R5,#16 W_RDAT:MOV A,#0 MOVC A,@A+DPTR MOV 41H,A LCALL W_RDATA INC DPTR DJNZ R5,W_RDAT MOV R1,#05H LCALL DELAYL LCALL INIT DJNZ R6,WRDATA LJMP 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 COM: SETB CS ;WRITE '100' COMMAND SETB W_R CLR CS LCALL DELAY SETB DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY CLR DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY CLR DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY MOV R4,#08H COM1: MOV A,42H JB ACC.7 ,SETT ;WRITE COM CODE CLR DAT JMP COM2 SETT: SETB DAT COM2: CLR W_R LCALL DELAY SETB W_R LCALL DELAY RL A MOV 42H,A DJNZ R4,COM1 CLR DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY SETB CS RET W_RCOM:SETB CS ;WRITE 101 SETB W_R CLR CS SETB DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY CLR DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY SETB DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY MOV 43H,40H ;WRITE ADDRESS MOV A,43H RL A RL A MOV 43H,A MOV R4,#06H W_RCOM1:MOV A,43H JB ACC.7, SETT1 CLR DAT JMP W_RCOM2 SETT1: SETB DAT W_RCOM2:CLR W_R LCALL DELAY SETB W_R LCALL DELAY RL A MOV 43H,A DJNZ R4,W_RCOM1 RET W_RDATA: MOV 44H,41H ;WRITE DISPLAY DATA MOV A,44H MOV 44H,A MOV R4,#08H W_RDATA1:MOV A,44H JB ACC.7, SETT2 CLR DAT JMP W_RDATA2 SETT2: SETB DAT W_RDATA2: CLR W_R LCALL DELAY SETB W_R LCALL DELAY RL A MOV 44H,A DJNZ R4,W_RDATA1 LCALL DELAY LCALL DELAY RET CLEAR: SETB CS ;WRITE 101 SETB W_R CLR CS SETB DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY CLR DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY SETB DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY MOV R4,#06H CLEAR1: ;ADDRESS=00H ,CLEAR THE DISPLAY RAM CLR DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY DJNZ R4,CLEAR1 MOV R4,#0E0H CLEAR2: CLR DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY DJNZ R4,CLEAR2 LCALL DELAY LCALL DELAY SETB CS RET WRFF: SETB CS ;SEND OUT '101' SETB W_R CLR CS SETB DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY CLR DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY SETB DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY MOV R4,#06H WRFF1: ;ADDRESS=00H CLR DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY DJNZ R4,WRFF1 MOV R4,#0E0H WRFF2: ;WR 1 TO ALL RAM ,ALL SEG DISPLAY SETB DAT CLR W_R LCALL DELAY SETB W_R LCALL DELAY DJNZ R4,WRFF2 LCALL DELAY SETB CS RET DELAY: MOV R1,#10H DELAY1:DJNZ R1,DELAY1 RET DELAYL: DELAYL2: MOV R2,#0A0H ;DELAY TIME DELAYL0: MOV R3,#0FFH DELAYL1: DJNZ R3,DELAYL1 DJNZ R2,DELAYL0 DJNZ R1,DELAYL2 RET D0: DB 0F1H,085H,0F1H,085H,0F1H,085H,0F1H,085H,0BBH,0EBH,0EBH,0EBH,0FBH,0EBH,0EBH,0EEH;0 TEST DB 0D5H,083H,0D5H,083H,0D5H,083H,0D5H,083H,077H,0C7H,0C7H,0C7H,0C7H,0C7H,0C7H,0DCH;2 DB 064H,007H,064H,007H,064H,007H,064H,007H,0EEH,06EH,06EH,06EH,06EH,06EH,06EH,067H;H DB 00AH,018H,00AH,018H,00AH,018H,00AH,018H,0DDH,0ADH,0ADH,0ADH,0ADH,0ADH,0ADH,0AAH;5&X DB 0F5H,0E7H,0F5H,0E7H,0F5H,0E7H,0F5H,0E7H,0FFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EEH;8 END