打印
[MCU]

按键检测程序,仿真可以通过,但是上板子不行

[复制链接]
911|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bishopcool|  楼主 | 2016-1-3 21:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bishopcool 于 2016-1-3 21:51 编辑

tc0_intsrv:
        b0bclr   ftc0irq
        mov          a,p0
        b0bset        fp02m;P0.2置为输出
        b0bset        fp03m;P0.3置为输出

        xor        a,#11111111b        ;
        xch        a,keyPre        ;
        xch        a,keyPrePre        ;
        xor        a,#11111111b        ;
        and        a,keyPrePre        ;
        and        a,keyPre        ;
        and        a,#00011100b        ; 只取P0.2、P0.3和P0.4
        mov        keyPress,a        ; keyPress = !keyPrePre&keyPre&(!P0)&(00011100b);keyPrePre=keyPre;keyPre=!P0
这是我程序按键检测的一小段。是在定时器tc0的中断中实现的。主要是想实现按键按下的一个检测,按键按下时P0对应位为0.程序中keyPre是记录上一次P0端口的按键状态,对应位是1表示按键按下。keyPrepre是记录之前的之前一次。检测三次的目的,一个是防抖,一个是检测按下动作,触发后续处理。
在程序里,同一个引脚既作为输入又作为输出,每隔8ms左右就用32us检测一下输入。其余时间都是输出。
但是这个程序ICE仿真没有问题,烧录到芯片上板子的时候按键检测就不灵了,短按按键还能起点最用,长按就不起作用,反而本来只作为输出的其他引脚上接的LED灯却不停闪烁。搞不懂原因,求教大神!

相关帖子

沙发
bishopcool|  楼主 | 2016-1-3 22:55 | 只看该作者
好像是在IO频繁切换时出现的问题,但是我也具体不太清楚怎么做,哪位大神解释一下?怎么样做才能让IO口切换时不出问题?

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝