; 用来测试KM3006的程序 ; KM3006A for LCM 1621 ; KM3006 ;R1--传递指令码/显示码 ;R0--传递地址 CS BIT P3.0 ;CS FOR KM3006 _WR BIT P3.1 DAT BIT P3.2 LED BIT P3.3 KEY BIT P3.4 DDD EQU 60H
MOV A,R0 ;ADDRESS(FROM 0~31) RLC A ;LOW 6 BIT IS AVAILABITITY RLC A ; MOV R7,#6 SPP2: RLC A MOV DAT,C NOP CLR _WR NOP SETB _WR NOP DJNZ R7,SPP2
MOV A,R1 ;DATA RLC A RLC A RLC A RLC A ;MISSING HIGH 4 BIT MOV R7,#4 ;Low 4 bit is D0,D1,D2,D3 SPP3: RLC A MOV DAT,C NOP CLR _WR NOP SETB _WR NOP DJNZ R7,SPP3 NOP RET ;================================ DELAY: MOV 50H,#100 D2: MOV 51H,#0 LCALL MS100 D1: SETB KEY JNB KEY,KEY_PAUSE DJNZ 51H,D1 LCALL MS100 DJNZ 50H,D2 RET KEY_PAUSE: LCALL PAUSE RET PAUSE: SETB KEY ;PAUSE KEY PROCESS SETB KEY LCALL MS100 JNB KEY,PAUSE ;CHECK KEY WAS PRESSED PAUSE1: LCALL MS100 JB KEY,PAUSE1 ;CHECK KEY OPEN AFTER PRESSED PAUSE2: SETB KEY SETB KEY LCALL MS100 JNB KEY,PAUSE2 ;CHECK KEY WAS PRESSED AGAIN RET ;======================================== delay1: MOV 53H,#0ffh DEL11: MOV 54H,#0ffh DJNZ 54H,$ DJNZ 53H,del11 RET ;-------------------------------- MS200: MOV 50h,#10 QEAT: SETB KEY SETB KEY QEA1: LCALL MS100 JB KEY,$ QEA2: LCALL MS100 JNB KEY,$ LCALL MS100 RET ;-------------------------------- MS100: MOV R5,#100 DJNZ R5,$ RET ;-------------------------------- TAB_3002: DB 0AFH ;0 DB 0A0H ;1 DB 06BH ;2 DB 0E3H ;3 DB 0E4H ;4 DB 0C7H ;5 DB 0CDH ;6 DB 0A2H ;7 DB 0EFH ;8 DB 0E7H ;9
TAB_3006: DB 0BEH; 07DH ;0 DB 0A0H; 005H ;1 DB 07CH; 03EH ;2 DB 0F8H; 01FH ;3 DB 0E2H; 047H ;4 DB 0DAH; 05BH ;5 DB 0CEH; 073H ;6 DB 0B0H; 00DH ;7 DB 0FEH; 07FH ;8 DB 0FAH; 05FH ;9