找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 918|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机键盘程序

[复制链接]
跳转到指定楼层
楼主
ID:761863 发表于 2020-5-26 19:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
BUFFER    DATA 30H                    ;键盘输入缓冲区首地址
BUFFER1  DATA 40H                    ;8字节显示缓冲区在首地址
CMD8279  XDATA 0BF01H           ;8279命 令/状态字地
DATA8279  XDATA 0BFO0H         ;8279读写 数据口地址
KEYCOUNT  DATA 50H

ORG     0000H
LJMP    MAIN
ORG     0100H
MAIN:
RUN8279:  ACALL INIT                 ;8279初始化
                 MOV KEYCOUNT,#0   ;按键个数计数

STAR1:      LCALL SCAN_KEY         ;键扫描
                JNC STAR1                  ;无按键则循环
                XCH A,KEYCOUNT
                INC  A
                CJINE A,#9,STAR2
                MOV_ KEYCOUNT,#0
                LCALL INIT8279_1
                SJMP STAR1
STAR2:     XCH A,KEYCOUNT
               LCALL KEY_NUM
               MOV DPTR,#LED_TAB
               MOVC A,@A+DPTR
               LCALL WRITE_DATA
               SJMP STAR1                ;8279初始化INIT:

INIT:        MOV A,#34H               ;命令字:分频系数20分频
               MOV DPTR, #CMD8279
               MOVX @DPTR,A
               MOV A,#10H
               MOVX @DPTR,A
INIT8279_ 1: LCALL CLEAR            ;清显示
                    MOV A,#90H            ;从最后-一个数码管开始显示移位
                    MOVX @DPTR,A
                    RET                          ;清显示
CLEAR:     MOV A,#ODEH              ;清屏命令
               MOV DPTR,#CMD8279
               MOVX @DPTR,A
WATIT11: MOVX A,@DPTR
               JB ACC.7,WAIT11            ;显示RAM清除完毕否?
               RET
;键盘扫描
SCAN_ KEY:   MOV DPTR,#CMD8279 ;读状态字
                     MOVX A, @DPTR
READ_ FIFO:  ANL A,#7
                     JZ NO_KEY                   ;判定是否有键按下

READ:       MOV A,#40H
                MOVX @DPTR,A               ;读FIFO RAM命令字
                MOV DPTR,#DATA8279
                MOVX A,@DPTR
                SETB C
SCAN_KEY1: RET
NO_KEY:    CLR C
                 SJMP SCAN_KEY1
KEY_NUM: ANL A,#3FH
                 RET
WRITE_DATA: MOV DPTR,#DATA8279
                      MOVX @DPTR,A
                      RET
LED_TAB:  DB   0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
                DB   80H,90H,88H,83H,0C6H,0A1H,86H,8EH
        END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2020-5-29 01:08 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表