注册 登录
编程论坛 汇编论坛

数码管求大神指导一下

minzhuxian 发布于 2013-07-05 16:48, 658 次点击
各位大神来解答一下..老师给我们一个模版要进行调试...按一个按钮显示数码管的数字..求大神来打救一下结合扫描键盘的工作原理(逐列拉低,读行值,从而判断出有无按键按下,哪个键被按下?),设8255A工作于方式0,C口高4位为输入;低4位为输出。再将图13-1中的LED数码显示驱动工作综合考虑进来,8255A的A、B口均需工作于输出状态。得8255A的扫描键盘程序段如下:
    MOV        DPTR,#6000H
    MOV        A,#88H
    MOV    X    @DPTR,A    ;初始化8255A
AGAIN:    MOV        DPTR,#4000H    ;指向C口
    MOV        A,#0FEH;高4位可任意如XEH
    MOVX    @DPTR,A    ;将列线1拉低
    NOP
    MOV        A,@ DPTR
    ANL        A,#0F0H    ;屏蔽低4位
    CJNE        A,#0F0H, KEY159
    LJMP        COL2        ;无键按下转2列
KEY159:CJNE        A,#0E0H,KEY59;不是第1行转
    LJMP        KEY1        ;第1列第1行处理
KEY59:    CJNE        A,#0D0H, KEY913;不是第2行
    LJMP        KEY5         ;第1列第2行处理
KEY913:CJNE        A,#0B0H,KEY13;不是第3行转
    LJMP        KEY9        ;第1列第3行处理
KEY13:    CJNE        A,#70H,AGAIN;干扰重新扫描
    LJMP        KEY13W    ;第1列第4行处理
COL2:    MOV        A,#0FDH;高4位可任意如X7H
    MOVX    @DPTR,A    ;将列线2拉低
    MOV        A, @ DPTR
    ANL        A,#0FH    ;屏蔽高4位
    CJNE        A,#0F0H,KEY26 ;无键按下转3列
    LJMP        COL3
KEY26    …         ;参照第1列处理方法   
COL3:     MOV        A,#0FBH;将列线3拉低
        …         ;参照第2列处理方法
COL4:     MOV        A,#0F7H;将列线4拉低
        …         ;参照第2列处理方法
             LJMP        AGAIN        ;重复键盘扫描
0 回复
1