AVR 单片机C语言怎样实现按键按一下led灯闪烁 再按一下led灯灭如此反复循环 led接PC0脚 按键接PD0脚

2025-01-05 13:47:56
推荐回答(5个)
回答(1):

#include
sbit pc0= P1^0;
sbit pd0= P1^1;

void delay(unsigned int t) //延时1ms
{
unsigned char i;
while(t--)
for(i=0;i<120;i++);
}

unsigned char smkey( ) //按键扫描程序
{
unsigned char sm,kk;
sm=pc0;
if(sm==1) //按键防抖
{delay(20);
sm=pc0;
if(sm==1)
{kk=1;

}
}
else
{kk=0;}
return(kk);
}

void main()
{
unsigned char key;
bit ll=0;
while(1)
{
if(ll==0)
{pd0=1;} //灯灭
else if(ll==1)
{
pd0=0; //闪烁
delay(500);
pd0=1;
delay(500);
}

key=smkey();
if(key==1)
{ll=~ll;}

}

}

回答(2):

定义一个位变量temp,每按下一次,位变量temp取反一次。当temp为0时,让LED灯闪烁,当temp为1时让LED灯灭

回答(3):

ldcwudy 朋友,人家是AVR的。

回答(4):

请问你用AVR的哪一款MCU啊?

回答(5):

这种问题还要问啊,去看看网上的AVR教学视频