打印

矩阵按键思路

[复制链接]
1827|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wlzeagle|  楼主 | 2012-9-28 14:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
阿南| | 2012-9-28 14:34 | 只看该作者
直接读吧,当读到一个不同的健值时不要认为当初的健已经无效就可

使用特权

评论回复
板凳
dlyt_test001| | 2012-9-28 15:12 | 只看该作者
并转串的芯片,一次读进来!

使用特权

评论回复
地板
hopewise| | 2012-9-28 16:15 | 只看该作者
;***************************************
;**************按键扫描管理*************
key_scan_man:
        mov    a,keydwn_t
        sub     a,251
        snz     c
        inc      keydwn_t           ;按键扫描计数:1~251        
        clr      out0                   ;先扫描第1行(低电平有效)
        set     out1
        set     out2
        set     out3
        nop                             ;延时(必须要,当8MHZ时)
        nop
        nop
        nop
        nop      
        snz     input0
        jmp     scan_key1         ;数字键1按下
        snz     input1
        jmp     scan_key2         ;数字键2按下
        snz     input2
        jmp     scan_key3         ;数字键3按下
        
        set     out0                  ;再扫描第2行
        set     out1
        set     out2
        clr       out3
        nop
        nop
        nop
        nop
        nop
        snz     input0
        jmp     scan_key4             ;数字键4按下
        snz     input1
        jmp     scan_key5             ;数字键5按下
        snz     input2
        jmp     scan_key6             ;数字键6按下
           
        set     out0                      ;然后扫描第3行
        clr      out1
        set     out2
        set     out3      
        nop
        nop
        nop
        nop
        nop     
        snz     input0
        jmp     scan_key7             ;数字键7按下
        snz     input1
        jmp     scan_key8             ;数字键8按下
        snz     input2
        jmp     scan_key9             ;数字键9按下
               
        set      out0                      ;最后扫描第4行
        set      out1
        clr       out2
        set      out3   
        nop
        nop
        nop
        nop
        nop      
        snz     input0
        jmp     scan_delete           ;delete(reset)键按下
        snz     input1
        jmp     scan_key0             ;数字键0按下
        snz     input2
        jmp     scan_enter            ;enter(lock)键按下
         
       clr        keydwn_t               ;都没有按键按下,则清按键次数变量
       ret
scan_enter:                           
       mov     a,keydwn_t
       sub      a,10                      ;2ms*10=20ms?
       sz        z
       set       enter_key              ;置#键按下标志位为1                                                     
       ret



        clr     sw_bz

使用特权

评论回复
5
wlzeagle|  楼主 | 2012-9-29 11:38 | 只看该作者
2# 阿南
当按键按下时,我可以置标志位,可是当按下不放手时,按下的这个键已经执行后,这个标志位在什么情况下清除呢?

使用特权

评论回复
6
阿南| | 2012-10-6 14:58 | 只看该作者
你可以再多设一个标置位,以保存多一种状态。就是说你第一个按下后是一个状态,第二人按下是一个状态,执行完或没按下又是一个状态

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
wlzeagle + 1 谢谢
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

266

帖子

0

粉丝