MOV DPTR,#GOJZ1 H909: MOV A,#00H
MOVC A,@A+DPTR ;功能键键值取出 CJNE A,B,H90A ;键值相等吗?
AJMP H90B ;转功能键处理子程序
H90A: INC DPTR INC R1 MOV A,R1
JNB ACC.2,H909 ;继续查找,够四次的话认为是功能返回键,不够的话继续查找。 AJMP H900 ;无键按下返回,即显示P
H907: MOV A,30H
MOV DPTR,#8001H ;字位送入8279 MOVX @DPTR,A
MOV A,R1 MOV R0,31H MOV @R0,A
INC 31H ;字形缓冲区加1
MOV DPTR,#ZOE0
MOVC A,@A+DPTR ;取出字形代码
MOV DPTR,#8000H
MOVX @DPTR,A ;送入8279显示 DEC 30H ;字位减1 MOV A,30H
CJNE A,#7fH,H90C ;显示到第8位,从头显示 AJMP H902 H90C: AJMP H903
H90B: MOV DPTR,#CKEY3 ;功能键散转处理 MOV A,R1 RL A ADD A,R1
JMP @A+DPTR CKEY3: LJMP L240 LJMP L241 LJMP L242 LJMP H900
GOJZ: DB 0C9H,0C1H,0D1H,0E1H,0C8H,0D8H,0E8H,0C0H,0D0H DB 0E0H,0F0H,0F8H,0F1H,0F9H,0E9H,0D9H
GOJZ1: DB 0F2H,0FAH,0F3H,0FBH
ZOE0: DB 0CH,9FH,4AH,0BH,99H,29H,28H,8FH,08H,09H,88H DB 38H,6CH,1AH,68H,0E8H
ORG 0E41H L240: MOV R5,#0CH
LJMP L245 ;0字循环
31
L241: MOV R5,#9FH
LJMP L245 ;1字循环 L242: MOV R5,#4AH
L245: MOV R6,#80H ;2字循环 L246: MOV A,R6
MOV DPTR,#8001H
MOVX @DPTR,A ;字位送入8279
MOV A,R5
MOV DPTR,#8000H
MOVX @DPTR,A
MOV R2,#20H
LCALL DELY
MOV A,#0FFH
MOVX @DPTR,A INC R6
CJNE R6,#88H,L246
AJMP L245 RET
DELY: PUSH 02H DEL2: PUSH 02H DEL3: PUSH 02H DEL4: DJNZ R2,DEL4 POP 02H
DJNZ R2,DEL3 POP 02H
DJNZ R2,DEL2 POP 02H DJNZ R2,DELY RET END
;字形送入8279 ;延时 ;关显示 ;下一位显示 ;不到最后一位继续 32