关于8279的实例

来源:互联网 发布:淘宝托管软件是真的吗 编辑:程序博客网 时间:2024/06/05 17:24

8279 是键盘、显示专用接口芯片,一般来说,它可以带动 8 个LED数码显示器和 64 个按键。
它可以自动的实现动态扫描输出,按键消抖,按键缓存等等,优点不少。

一个单片机系统,如果使用了 8279,基本就算是豪华系统了,但是近几年来,很少有这么大型的单片机系统的需求,8279 也逐渐淡出了开发者的视线。

下面给出一个用 8279 的数码显示器显示被按下的键的程序,以纪念这块光耀一时的芯片。

程序首先进行 8279 的初始化,然后检测是否有键被按下,如果没有,则循环等待;如果检测到有键被按下,则读取被按下键的代码,并把其代码送到显示RAM中。


;8279键盘显示实验

    ORG  0000H
    LJMP START
    ORG  0100H
START:
    MOV  DPTR, #0CFE9H       ;8279命令/状态口地址
    MOV  A, #11010001B       ;D1H 清显示命令字
    MOVX @DPTR, A            ; 全部清空
LOOP1:
    MOVX A, @DPTR            ;读出状态
    ANL  A, #0FH             ;低四位是FIFO中的键入字符数
    JZ   LOOP1               ;没有键按下则循环等待
    MOV  A, #10100000B       ;A0H, 显示消隐命令
    MOVX @DPTR, A            ;显示暗
    MOV  A, #01000000B       ;40H, 读FIFO命令
    MOVX @DPTR, A            ;读FIFO的0000地址
    MOV  DPTR, #0CFE8H       ;8279数据口地址
    MOVX A, @DPTR            ;读键值
    MOV  R1, A               ;保存键值
    MOV  DPTR, #0CFE9H       ;8279命令/状态口地址
    MOV  A, #81H             ;选中LED2
    MOVX @DPTR, A            ;写显示RAM命令
    MOV  A, R1
    ANL  A, #0FH             ;取键值后半字节
    MOV  DPTR, #TAB
    MOVC A, @A + DPTR        ;换算出段码
    MOV  DPTR, #0CFE8H       ;8279数据口地址
    MOVX @DPTR, A            ;写入显示RAM
    MOV  DPTR, #0CFE9H       ;8279命令/状态口地址
    MOV  A, #80H             ;选中LED1
    MOVX @DPTR, A            ;显示
    MOV  A, R1
    ANL  A, #0F0H            ;取键值前半字节
    SWAP A                   ;
    MOV  DPTR, #TAB
    MOVC A, @A + DPTR        ;换算出段码
    MOV  DPTR, #0CFE8H
    MOVX @DPTR, A            ;显示
    MOV  DPTR, #0CFE9H       ;8279命令/状态口地址
    SJMP LOOP1
TAB:
    DB   3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;段码表
    DB   7FH,6FH,77H,7CH,39H,5EH,79H,71H
    END

0 0