打印
[AVR单片机]

请大神看下这个按键程序

[复制链接]
854|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fff321|  楼主 | 2015-6-4 16:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#define key_pc1 0X02
#define key_pc2 0X04
void KeyRead( void )
{
     unsigned char ReadData=PINC^0x06;
       
         
           ReadData=PINC^0x06;
       Trg=ReadData&(ReadData^Cont);      
       Cont=ReadData;
                                       
}   
void main()
{
   init();
   while(1)
   {
       KeyRead();
       if(Trg&key_pc2)
           {
              while(1)
             {
                display2(0);
                if(Trg&key_pc1)
                    break;
                 }
           }
             display2(1);
                 while(1)
                 {
                   if(num>20)
                   {
                     num=0;
                     break;
                   }
                 }
                 
   }
}
void ms()
{
    TCNT1H=0XFF;
        TCNT1L=0X82;
       
        num++;
}
按下key_pc2后能显示 display2(0),但是再按key_pc1后不能跳出while,不能显示display2(1)。而且按键好像有问题,还没按动一下就跳了,我按网上在后面加了20ms的消抖啊

相关帖子

沙发
qq4988| | 2015-6-4 17:20 | 只看该作者
按下2后,没有KeyRead();怎么知道1按下了啊

使用特权

评论回复
板凳
fff321|  楼主 | 2015-6-4 19:37 | 只看该作者
qq4988 发表于 2015-6-4 17:20
按下2后,没有KeyRead();怎么知道1按下了啊

按键就是碰一下就变了,消抖有问题么

使用特权

评论回复
地板
小强强12138| | 2015-8-3 16:31 | 只看该作者
#define Key_DOWN() ((PINB & 0x40)==0x00)
if(Key_DOWN())
{
        while(Key_DOWN());
        _delay_ms(20);//防止按键的抖动影响采集的值
//你要执行的东西
}

使用特权

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

本版积分规则

14

主题

39

帖子

0

粉丝