51单片机的按键控制小灯亮灭的问题(程序类型:c语言)

2024-10-31 03:14:54
有4个网友回答
网友(1):

#include
#define uint unsigned int
sbit LED = P1^0;
sbit KEY1 = P1^2;
void delay(uint);
void main(void)
{
LED = 1; //初始化LED熄灭
KEY1 = 1; //赋值KEY1高电平
while(1)
{
if(!KEY1) //检测到按键按下
{
LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不
进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循
环,LED取反得到LED = 0,灯亮。*/
delay(500); /*此处延迟,保证连续两次按键动作处在程序的延时过程中,不进行其他程序从而不会影响小灯。*/
}
}

}
void delay(uint z) //延时函数
{
uint x, y;
for(x=85; x>0; x--)
for(y=z; y>0; y--);
}

可下载到单片机验证。

网友(2):

系统设置如下 p1.0 按键1 p1.1 按键2 p1.2按键3
p2.0 p2.1 p 2.2 分别接一个继电器和LED
IO口 初始化均为高电平

程序
main()
{
while(1)
{
if(p1.0==0)

if(p1.1==0)

if(p1.2==0)

}

网友(3):

int0中断 程序我先试试

#include
sbit P10 = P1^0;
sbit K1= P3^2;
unsigned char a;
void main(void)
{

IT0=1;
EX0=1;
EA=1;
while(1)
{
}

}

int0() interrupt 0
{

a++;
if(a%2==0)
{
P10=~P10;
}
}

希望采纳 看不懂 继续追问 在professional仿真成功

网友(4):

你的开和关是一个按键吗?