登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

[转帖]8255扫描键盘、显示实验

作者:timetime 栏目:单片机


程序框图

源代码:

D8255   EQU     8506H          ;8255状态/数据口地址
D8255A  EQU     8500H          ;8255 PA口地址
D8255B  EQU     8502H          ;8255 PB口地址
Z8279   EQU     8701H          ;8279状态口地址
D8279   EQU     8700H          ;8279数据口地址
DISPTR  EQU     08H             ;当前显示位置
KEYVAL  EQU     09H             ;读到的键码
        ORG     0000H
        LJMP    START
        ORG     0040H
START:
        MOV     SP,#60H
        LCALL   DELAY           ;延时
        MOV     DISPTR,#30H     ;显示缓冲区头指针
        MOV     DPTR,#D8255
        MOV     A,#90H          ;置8255状态
                                ;方式0,PB,PC口输出,PA口输入
        MOVX    @DPTR,A
        MOV     DPTR,#Z8279     ;置8279命令字
        MOV     A,#0D3H
     MOVX    @DPTR,A         ;清LED显示
        MOV     A,#00H
        MOVX    @DPTR,A
        MOV     A,#38H
        MOVX    @DPTR,A
        MOV     A,#0D1H
KB_DIS:
        LCALL   RD_KB           ;读键盘
        MOV     A,#0FFH
        CJNE    A,KEYVAL,DISBUF ;判读到键
        SJMP    KB_DIS          ;没有则继续读键
DISBUF:
        LCALL   DISP            ;把键移入显存
        LCALL   DELAY           ;延时消抖
        LCALL   DELAY
        SJMP    KB_DIS
DISP:                           ;显存依次前移
        MOV     R1,#31H         ;在最后加入新键值
MOVE:
        MOV     A,@R1
        DEC     R1
        MOV     @R1,A
        INC     R1
        INC     R1
        CJNE    R1,#38H,MOVE
        MOV     37H,KEYVAL
        MOV     KEYVAL,#0FFH
        MOV     DPTR,#Z8279
        MOV     A,#90H
        MOVX    @DPTR,A
        MOV     R0,#08H
        MOV     R1,#30H
        MOV     DPTR,#D8279
LP:     MOV     A,@R1
        MOVX    @DPTR,A
        INC     R1
        DJNZ    R0,LP
        RET
RD_KB:                          ;键盘扫描
        MOV     A,#02H          ;扫描第一行
        MOV     DPTR,#D8255B
        MOVX    @DPTR,A
        MOV     DPTR,#D8255A
        MOVX    A,@DPTR
        MOV     R1,#00H
        CJNE    A,#0FFH,KEYCAL  ;判键是否按下
        MOV     A,#01H          ;扫描第二行
        MOV     DPTR,#D8255B
        MOVX    @DPTR,A
        MOV     DPTR,#D8255A
        MOVX    A,@DPTR
        MOV &n

参与讨论
昵称:
讨论内容:
 
 
相关帖子
有谁用过STC89C54RD+?
[转帖]8279显示电子钟实验
[转帖]51单片机串口调试程序一列
[转帖]4×4矩阵式键盘识别技术(桂林电子工业学院)
[讨论]关于AT89C2051正常工作的湿度范围,高手请进!
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号