一个独立按键实现两种功能

2019-07-15 14:23发布

各位大神们求助,怎么通过单片机外接一个独立按键来通过编程来完成其实现两种不同的功能呢?
#include<reg52.h>                    //一个按键实现两个功能
#define uchar unsigned char
#define uint unsigned int
uint k=0,flag=1;
sbit key=P1^0;
void delay10ms(unsigned int c)   //误差 0us
{
    unsigned char a, b;
    for (;c>0;c--)
        {
                for (b=38;b>0;b--)
                {
                        for (a=130;a>0;a--);
                }

        }      
}
void keyscan()          //按键扫描函数,flag值用于实现功能的切换,k=1表示由按键发生
{
        uchar j;
        //--检测按键//
        if (key != 1)                //检测按键K1是否按下
        {
                delay10ms(1);        //消除抖动
                if (key !=1)        //再次检测按键是否按下
                {
                        flag=~flag;  //只要按下键,flag就取反,相应的后面的模式也改变
                        k=1;
                }
        }
        j=0;
        while ((j<50) && (key != 1))         //检测按键是否松开
        {
                delay10ms(1);
                j++;
        }
}
void main()
{
        P0=0x00;
        while(1)
        {
                keyscan();
                if(k==1)
                {
                        switch(flag)
                        {
                                case(1):P0=0xff;break;
                                case(0):P0=0x01;break;
                        }
                }
        }
}

帮忙看看哪里出问题了??哇
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。