📄 8279.asm
字号:
;8279键盘、显示实验
ORG 0000H
H900: MOV SP,#53H
MOV DPTR,#8001H
MOV A,#00H
MOVX @DPTR,A ;8279方式字写入
MOV A,#32H
MOVX @DPTR,A ;分频
MOV A,#0DFH
MOVX @DPTR,A
H901: MOVX A,@DPTR ;清缓冲区
JB ACC.7,H901
temp: mov dptr,#8000h ;MOV DPTR,#0FFE0H
MOV A,#0CH ;p.代码
MOVX @DPTR,A ;字形送入
INC DPTR
MOV A,#80H
MOVX @DPTR,A ;字位送入.显示P
H902: MOV 30H,#80H
MOV 31H,#40H
H903: mov dptr,#8001h
MOVX A,@DPTR
ANL A,#0fH
CJNE A,#00H,H904 ;有键按下吗?
AJMP H903
H904: mov dptr,#8000h
MOVX A,@DPTR
MOV B,A ;取出键值
MOV R1,#00H
MOV DPTR,#keycode
H905: MOV A,#00H
MOVC A,@A+DPTR ;查键值表是否相同
CJNE A,B,H906
AJMP H907 ;转数字外处理程序
H906: INC DPTR ;键表地址加1
INC R1 ;查找次数加1
MOV A,R1
JB ACC.4,H908 ;是功能键吗?
AJMP H905 ;继续查找
H908: MOV R1,#00H
MOV DPTR,#fkeycode
H909: MOV A,#00H
MOVC A,@A+DPTR ;功能键键值取出
CJNE A,B,H90A ;键值相等吗?
AJMP H90B ;转功能键处理子程序
H90A: INC DPTR
INC R1
MOV A,R1
jNb ACC.4,H909 ;继续查找
AJMP H903 ;查询不到键值返回
H907: MOV A,30H
mov dptr,#8001h ;字位送入8297
MOVX @DPTR,A
MOV A,R1
MOV R0,31H
MOV @R0,A
INC 31H ;字形缓冲区加1
MOV DPTR,#ledmap
MOVC A,@A+DPTR ;取出字形代码
mov dptr,#8000h
MOVX @DPTR,A ;送入8279显示
INC 30H
MOV A,30H ;字位加1
CJNE A,#88H,H90C ;显示到第八位,从头显示
AJMP H902
H90C: AJMP H903
H90B: MOV DPTR,#CKEY3
MOV A,R1
RL A ;功能键 散转处理
ADD A,R1
JMP @A+DPTR
CKEY3: lJMP L240 ;00
lJMP L241 ;01
lJMP L242 ;02
lJMP L243 ;03
lJMP L244 ;04
lJMP L245 ;05
lJMP L246 ;06
lJMP L247 ;07
lJMP L248 ;08
lJMP L249 ;09
lJMP L24a ;0a
lJMP L24b ;0b
lJMP L24c ;0c
lJMP L24d ;0d
lJMP L24e ;0e
lJMP L24f ;0f
L240: MOV R5,#0C0H
LJMP L250 ;0字循环
L241: MOV R5,#0F9H
LJMP L250 ;1字循环
L242: MOV R5,#0A4H
ljmp L250 ;2字循环
L243: MOV R5, #0B0H ;3
LJMP L250
L244: MOV R5, #99H ;4
LJMP L250
L245: MOV R5, #92H ;5
LJMP L250
L246: MOV R5, #82H ;6
LJMP L250
L247: MOV R5, #0F8H ;7
LJMP L250
L248: MOV R5, #80H ;8
LJMP L250
L249: MOV R5, #90H ;9
LJMP L250
L24A: MOV R5, #88H ;A
LJMP L250
L24B: MOV R5, #83H ;B
LJMP L250
L24C: MOV R5, #0C0H ;C
LJMP L250
L24D: MOV R5, #0A1H ;D
LJMP L250
L24E: MOV R5, #86H ;E
LJMP L250
L24F: MOV R5,#8EH ;F
LJMP L250
L250: MOV R6,#80H
L251: MOV A,R6
MOV DPTR ,#8001H
MOVX @DPTR,A ;字位送入8279
MOV A,R5
mov dptr,#8000h ;MOV DPTR,#0FFE0H
MOVX @DPTR,A ;字形送入8279
MOV R2,#1CH
LCALL DELAY ;延时
MOV A,#0FFH
MOVX @DPTR,A ;关显示
INC R6 ;下一位显示
CJNE R6,#89H,L251
ljmp TEMP ;不到最后一位继续
DELAY: 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,DELAY
RET
;数字键值表
keycode: db 0f1h,0f9h,0e9h,0d9h,0f0h,0e0h,0d0h,0f8h
db 0e8h,0d8h,0c8h,0c0h,0c9h,0c1h,0d1h,0e1h
;功能键值表
fkeycode:db 0fah,0f2h,0fbh,0f3h,0eah,0e2h,0ebh,0f3h
db 0dah,0d2h,0dbh,0d3h,0cah,0c2h,0cbh,0c3h
;字形表
ledmap: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh
db 0ffh,0ch,89h,7fh,0bfh
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -