欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

蓝桥单片机_06独立按键的拓展应用

程序员文章站 2022-03-13 17:18:17
...

1. 题目
蓝桥单片机_06独立按键的拓展应用

2. 代码

#include "reg52.h"

unsigned char k=0;

sbit S7=P3^0;
sbit S6=P3^1;
sbit S5=P3^2;
sbit S4=P3^3;

sbit L1=P0^0;
sbit L2=P0^1;
sbit L3=P0^2;
sbit L4=P0^3;
sbit L5=P0^4;
sbit L6=P0^5;

void SelectHC573(unsigned char n)
{
	switch(n){
		case 4:
			P2=(P2&0x1f)|0x80;
			break;
		case 5:
			P2=(P2&0x1f)|0xa0;
			break;
		case 6:
			P2=(P2&0x1f)|0xc0;
			break;
		case 7:
			P2=(P2&0x1f)|0xe0;
			break;
	}
}

void Delay(unsigned char t)
{
	while(t--);
}



void Select_Button()
{
	if(S7==0){	//如果按下S7
		Delay(100);
		if(S7==0){
			if(k==0){	//k=0时表示没有按键按下
				L1=0;
				k=1;
			}
			else if(k==1){	//k=1表示已经按下S7,再按S7是关闭S7,即熄灭L1
				L1=1;
				k=0;	//关闭S7后将k的状态空出来
			}
			while(S7==0);
		}
	}
	
	if(S6==0){	//如果按下S6
		Delay(100);
		if(S6==0){
			if(k==0){	//k=0表示没有按键按下
				L2=0;
				k=2;
			}
			else if(k==2){	//k=2表示已经按下S6,再按S6时关闭S6,即熄灭L2
				L2=1;
				k=0;	//关闭S6后将k的状态空出来
			}
			while(S6==0);
		}
	}
	
	if(S5==0){	//如果按下S5
		Delay(100);
		if(S5==0){	//S5等于0时,判断S7与S6的状态
			if(k==1){
				L3=0;	//S7打开时L3亮
				while(S5==0);
				L3=1;
			}
			else if(k==2){
				L5=0;	//S6打开时L2亮
				while(S5==0);
				L5=1;
			}
		}
	}
	
	if(S4==0){	//如果按下S4
		Delay(100);
		if(S4==0){	//S4等于0时,判断S7与S6的状态
			if(k==1){
				L4=0;	//S7打开时L4亮
				while(S4==0);
				L4=1;
			}
			else if(k==2){
				L6=0;	//S6打开时L6亮
				while(S5==0);
				L6=1;
			}
		}
	}
	
}

void main()
{
	SelectHC573(4);
	while(1){
		Select_Button();
	}
}

3. 注

本博客是学习完B站某视频后所写,如有错误,欢迎指正;如有侵权,删除。
学习网址:https://www.bilibili.com/video/av41275873?p=4。