正文

8279可实现对键盘/显示的自动扫描2005-09-15 12:38:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/guowei/4788.html

分享到:

利用8279可实现对键盘/显示器的自动扫描,以减轻CPU负担,并具有显示稳定、程序简单、不会出现误动作等特点。本系统中8279的状态/命令口地址位8701H;数据口地址位8700H。 示例程序运行将显示"8279 --",并等待按键输入,将键值显示在数码管上(只响应0-F按键)。   源代码: Z8279   EQU     08701H  ;8279 状态/命令口地址D8279   EQU     08700H  ;8279 数据口地址LEDMOD  EQU     10H     ;右端输入 八位字符显示                        ;外部译码键扫描方式,双键互锁LEDFEQ  EQU     38H     ;扫描速率LEDCLS  EQU     0D1H    ;清除LEDWR0  EQU     80H     ;设定的将要写入的显示RAM地址         ORG     0000H        AJMP    START        ORG     0040HSTART:        MOV     SP,#60H        LCALL   INIT8279        ;初始化8279 WAIT:   MOV     DPTR,#Z8279        MOVX    A,@DPTR        ANL     A,#0FH        JZ      WAIT        MOV     A,#40H        MOVX    @DPTR,A        MOV     DPTR,#D8279        MOVX    A,@DPTR        ANL     A,#3FH        MOV     R4,#00H        MOV     R5,A        LCALL   DISLED         SJMP    WAIT INIT8279:                       ;8279初始化子程序        PUSH   DPH              ;保存现场        PUSH   DPL        PUSH   ACC        LCALL  DELAY            ;延时        MOV    DPTR ,#Z8279        MOV    A,#LEDMOD        ;置8279工作方式        MOVX   @DPTR,A        MOV    A,#LEDFEQ        ;置键盘扫描速率        MOVX   @DPTR,A        MOV    A,#LEDCLS        ;清除 LED 显示        MOVX   @DPTR,A        LCALL  DELAY            ;延时        MOV    DPTR,#Z8279        MOV    A,#90H        MOV    DPTR,#D8279        MOV    A,#40H        MOVX   @DPTR,A        MOV    A,#40H        MOVX   @DPTR,A        MOV    A,#0H        MOVX   @DPTR,A        MOV    A,#0H        MOVX   @DPTR,A        MOV    A,#0EFH        MOVX   @DPTR,A        MOV    A,#27H        MOVX   @DPTR,A        MOV    A,#5BH        MOVX   @DPTR,A        MOV    A,#7FH        MOVX   @DPTR,A        POP    ACC              ;恢复现场        POP    DPL        POP    DPH        RET;显示字符子程序;输入: R4,位置 R5,值DISLED:  PUSH   DPH             ;保存现场         PUSH   DPL         PUSH   ACC         MOV    A,#LEDWR0       ;置显示起始地址         ADD    A,R4            ;加位置偏移量         MOV    DPTR,#Z8279         MOVX   @DPTR,A         ;设定显示位置         MOV    DPTR,#LEDSEG    ;置显示常数表起始位置         MOV    A,R5         MOVC   A,@A+DPTR       ;查表         MOV    DPTR,#D8279         MOVX   @DPTR,A         ;显示数据         POP    ACC             ;恢复现场         POP    DPL         POP    DPH         RETDELAY:                          ;延时子程序        PUSH    0               ;保存现场        PUSH    1        MOV     0,#0HDELAY1: MOV     1,#0H        DJNZ    1,$        DJNZ    0,DELAY1        POP     1               ;恢复现场        POP     0        RET LEDSEG: DB     3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7'        DB     7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F'        DB     6DH,02H,08H,00H,59H,0FH,76H     ;'U,-,_, ,I,O,P, '        END  

阅读(175) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册