单片机/MCU论坛
直播中

刘丽菲

7年用户 878经验值
私信 关注
[问答]

求助,关于P3^2.3.4端口接3个按键的疑问求解

#include
#define led P0
sbit k1=P3^2;
sbit k2=P3^3;
sbit k3=P3^4;
void delay50ms(void)
{
    unsigned char ab;
    for(b=173;b>0;b--)
        for(a=143;a>0;a--);
}

void delay15ms(void)
{
    unsigned char abc;
    for(c=1;c>0;c--)
        for(b=238;b>0;b--)
            for(a=30;a>0;a--);
}

void shanshuo ()
{
led=0xff;
delay50ms ();
led=0x00;
delay50ms ();
}
void keyscan()
{
​    if(k1==0|k2==0|k3==0)
     {
         delay15ms();
         if(k1==0|k2==0|k3==0)
         {
             shanshuo ();
         }
         while(!k1|!k2|!k3);
     }
}

void main ()
{
while(1)
{
keyscan();
}
}
乱按的时候有时候闪烁。换成P3.2和P3.3两个按键后正常,三个按键都接到P1口上时也正常 。就是一加上P3.4就不正常了

回帖(1)

魏霖

2023-11-1 14:30:32

  • 用逻辑或就可以了,不要用安位或
    void keyscan()
    {
        if(k1==0||k2==0||k3==0)
         {
             delay15ms();
             if(k1==0||k2==0||k3==0)
             {
                 shanshuo ();
             }
             while(!k1||!k2||!k3);
         }
    }
                   
举报

更多回帖

发帖
×
20
完善资料,
赚取积分