微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 一个独立按键实现两种功能

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

时间:10-02 整理:3721RD 点击:
各位大神们求助,怎么通过单片机外接一个独立按键来通过编程来完成其实现两种不同的功能呢?
#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;
                        }
                }
        }
}
帮忙看看哪里出问题了?哇

十种功能都能实现,用不同的延时程序就可以实现。

直接用if......else    或者swithcase     就可以实现   剩下的自己想吧

用标志flag试试。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top