⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8279.asm

📁 51系列单片机的汇编程序包
💻 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 + -