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

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;
                        }
                }
        }
}

帮忙看看哪里出问题了??哇
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
autumn_rain
1楼-- · 2019-07-15 16:59
 精彩回答 2  元偷偷看……
张大猛
2楼-- · 2019-07-15 19:23
直接用if......else    或者swith.......case     就可以实现   剩下的自己想吧
im_cyb
3楼-- · 2019-07-15 23:06
用标志flag试试。。。

一周热门 更多>