⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1键多功能按键识别技术.c

📁 AT89S52单片机程序50例(00-50)
💻 C
字号:
//一键多功能按键识别技术
//P3.0接按键,P1.0-P1.3接LED灯。

#include <reg52.h>
 
unsigned char ID=0;  //定义键值ID

sbit SP1=P3^0;  //定义P3.0为按键
sbit L1=P1^0;  //定义P1.0为灯L1
sbit L2=P1^1;  //定义P1.1为灯L2
sbit L3=P1^2;  //定义P1.2为灯L3
sbit L4=P1^3;  //定义P1.3为灯L4

//10ms延时子程序
void delay10ms(void)
{
	unsigned char i,j;
    for(i=20;i>0;i--)
    for(j=248;j>0;j--);
}

//0.2s延时子程序
void delay02s(void)
{
	unsigned char i;
    for(i=20;i>0;i--)
    {
    	delay10ms();
    }
}

//主程序
void main(void)
{
	while(1)
    {
    	if(SP1==0)  //按键是否按下,SP1=0时,是
        {
        	delay10ms();  //延时消抖
        	if(SP1==0)  //按键是否真的按下,SP1=0时,是
        	{
        		ID++;  //ID加1
        		if(ID==4)  //ID=4时,重新初始化ID
                {
                	ID=0;
                	L2=1;
                	L3=1;
                	L4=1;
                }
                
//按键是否释放,SP1=0时,没释放,进入死循环;SP1=1时,释放,退出死循环。
                while(SP1==0);
        	}
        }
        switch(ID)
        {
        	case 0:L1=~L1;delay02s();break;
			case 1:L2=L1=~L1;delay02s();break;
			case 2:L3=L2=L1=~L1;delay02s();break;
            case 3:L4=L3=L2=L1=~L1;delay02s();break;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -