1.独立按键控制LED亮灭
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit k1=P3^1; //定义P31口是k1
sbit led=P2^0; //定义P20口是led
void delay(u16 i)
{
while(i--);
}
void keypros() //按键处理函数,判断按键K1是否按下
{
if(k1==0) //检测按键K1是否按下
{
delay(1000); //消除抖动 一般大约10ms
if(k1==0) //再次判断按键是否按下
{
led=~led; //led状态取反
}
while(!k1); //检测按键是否松开
}
}
void main()
{
while(1)
{
keypros(); //按键处理函数
}
}
各开关分别控制LED
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit k1=P3^1;
sbit k2=P3^2;
sbit k3=P3^3;
sbit k4=P3^4;
void delay(u16 i)
{
while(i--);
}
void keypros()
{
if(k2==0)
{
delay(1000);
if(k2==0)
{
led2=~led2;
}
while(!k2);
}
if(k1==0)
{
delay(1000);
if(k1==0)
{
led1=~led1;
}
while(!k1);
}
if(k3==0)
{
delay(1000);
if(k3==0)
{
led3=~led3;
}
while(!k3);
}
if(k4==0)
{
delay(1000);
if(k4==0)
{
led4=~led4;
}
while(!k4);
}
}
void main()
{
while(1)
{
keypros();
}
}
当然 上边的代码是错的
以后!一定!要康康原理图!找对引脚
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^3;
sbit k4=P3^4;
void delay(u16 i)
{
while(i--);
}
void keypros()
{
if(k2==0)
{
delay(1000);
if(k2==0)
{
led2=~led2;
}
while(!k2);
}
if(k1==0)
{
delay(1000);
if(k1==0)
{
led1=~led1;
}
while(!k1);
}
if(k3==0)
{
delay(1000);
if(k3==0)
{
led3=~led3;
}
while(!k3);
}
if(k4==0)
{
delay(1000);
if(k4==0)
{
led4=~led4;
}
while(!k4);
}
}
void main()
{
while(1)
{
keypros();
}
}
错误!
正确!!
k2引脚应为p3 ^ 0,而不应该为p3 ^ 2