以下内容是由四个独立按键来控制相对应的LED灯,没每按一下按键相对应的LED灯的状态都会发生改变翻转,代码如下
#include <reg52.h>
sbit L1=P0^0;
sbit L2=P0^1;
sbit L3=P0^2;
sbit L4=P0^3;
void delay(int a)
{
int i,j;
for(i=a;i>0;i--)
for(j=110;j>0;j--);
}
void led1()
{
if(L1==0)
L1=1;
else
L1=0;
}
void led2()
{
if(L2==0)
L2=1;
else
L2=0;
}
void led3()
{
if(L3==0)
L3=1;
else
L3=0;
}
void led4()
{
if(L4==1)
L4=0;
else
L4=1;
}
void main()
{
while(1)
{
if(P1!=0xff)
{
delay(100);//消除抖动
if(P1!=0xff)
{
switch(P1)
{
case 0xfe: led1();break; //0xfe=1111 1110
case 0xfd: led2();break; //0xfd=1111 1101
case 0xfb: led3();break; //0xfb=1111 1011
case 0xf7: led4();break; //0xf7=1111 0111
}
while(P1!=0xff);//确定按键按下
}
}
}
}
下面这个代码的功能也是一样的,这个是上课的时候旁边同学的想法
#include<reg51.h>
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
void delay(int a)
{
int i,j;
for(i=a;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
if(k1==0)
{
delay(5);
if(k1==0)
{
if(led1==1)
{
led1=0;
}
else
{
led1=1;
}
}while(k1==0);
}
if(k2==0)
{
delay(5);
if(k2==0)
{
if(led2==1)
{
led2=0;
}
else
{
led2=1;
}
}
while(k2==0);
}
if(k3==0)
{
delay(5);
if(k3==0)
{
if(led3==1)
{
led3=0;
}
else
{
led3=1;
}
}
while(k3==0);
}
if(k4==0)
{
delay(5);
if(k4==0)
{
if(led4==1)
{
led4=0;
}
else
{
led4=1;
}
}
while(k4==0);
}
}
}
虽然代码的观感不行,但这个相当于我个人的学习的一个比较吧,方便自己去找的资源,记录一下。
仿真图