打印
[国产单片机]

矩阵扫描之按键按下与抬起

[复制链接]
790|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
scan:
                 clr   p_ia_c
              set   p_ia                                       ;A口置一   
              set   p_ia_c                                    ;A输入口
$1:                                   
              mov a,R_Nc                                  ;C初始为0FEH然后依次左移一位
              mov p_oc,a                                   ;C输出口
$2:            
                 mov a,p_ia                                   ;将A口的实际值给入累加器           
              sub a,R_Fnum                             ;R_Fnum自然数初始值0FEH                                                               
              sz z                                               ;R_Lie列数,R_Hang行数。R_Lie,R_Hang初始都为0           
              jmp loop                                      ;跳到loop中从而获得10进制的按键值           
               
              rl R_Fnum
              inc R_Lie
              mov a,R_Lie
              sub a,8
              snz z            
              jmp $2        
                    
              clr R_Lie                                   ;扫完8列将列清0
              rl  R_Nc
              inc R_Hang
              mov a,R_Hang
              sub a,8
              snz z
              jmp $1         
                        
              clr R_Hang                               ;扫完8行将行清0
              ret
                                         
loop:
  
        rl R_Hang
        rl R_Hang
        rl R_Hang
        mov a,R_Hang        ;行乘以8然后加列值即为按键的值(0到64)
        add a,R_Lie
       
        rr R_Hang                  ;乘完后恢复行的值
        rr R_Hang
        rr R_Hang  
     jmp  l_led_num_dispose   ;跳到将10进制的数处理成个位十位并查表获得对应数码管的值
ret
现在想加一个判断按键按下与抬起,按下时显示某一个键值,抬起后显示的是键值加上80,该怎么修改,大家帮帮忙,谢谢(显示部分在主循环里,这里没写)

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

247

帖子

4

粉丝