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

📄 he11.asm

📁 51系列单片机的汇编程序包
💻 ASM
字号:
;===================硬件实验十一  8279键盘、显示实验===================
        ORG 00D0H
H900:   MOV SP,#53H
        MOV DPTR,#0FFE1H
        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
        MOV DPTR,#0FFE0H
        MOV A,#0C8H
        MOVX @DPTR,A            ;字形送入
        INC DPTR
        MOV A,#80H
        MOVX @DPTR,A            ;字位送入.显示P
H902:   MOV 30H,#80H
        MOV 31H,#40H
H903:   MOV DPTR,#0FFE1H
        MOVX A,@DPTR
        ANL A,#07H
        CJNE A,#00H,H904        ;有键按下吗?
        AJMP H903
H904:   MOV DPTR,#0FFE0H
        MOVX A,@DPTR
        MOV B,A                 ;取出键值
        MOV R1,#00H
        MOV DPTR,#GOJZ
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,#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               ;无键按下返回
H907:   MOV A,30H
        MOV DPTR,#0FFE1H        ;字位送入8297
        MOVX @DPTR,A
        MOV A,R1
        MOV R0,31H
        MOV @R0,A
        INC 31H                 ;字形缓冲区加1
        MOV DPTR,#ZOE0
        MOVC A,@A+DPTR          ;取出字形代码
        MOV DPTR,#0FFE0H
        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
        LJMP L241
        LJMP L242
GOJZ:   DB 0C1H,0C8H,0C9H,0D0H,0D8H,0E0H,0C2H,0CAH,0D1H
        DB 0D9H,0DAH,0C3H,0CBH,0D2H,0D3H,0DBH
GOJZ1:  DB 0E3H,0E2H,0E1H
ZOE0:   DB 0CH,9FH,4AH,0BH,99H,29H,28H,8FH,08H,09H,88H
        DB 38H,6CH,1AH,68H,0E8H
;--------------------------------------------------------
L240:   MOV R5,#0CH
        LJMP L245               ;0字循环
L241:   MOV R5,#9FH
        LJMP L245               ;1字循环
L242:   MOV R5,#4AH
L245:   MOV R6,#08H             ;2字循环
L246:   MOV A,R6
        MOV DPTR,#0FFE1H
        MOVX @DPTR,A            ;字位送入8279
        MOV A,R5
        MOV DPTR,#0FFE0H
        MOVX @DPTR,A            ;字形送入8279
        MOV R2,#20H
        LCALL DELY              ;延时
        MOV A,#0FFH
        MOVX @DPTR,A            ;关显示
        INC R6                  ;下一位显示
        CJNE R6,#88H,L246
        AJMP L245               ;不到最后一位继续
;----------------------------------------------------------
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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -