/*---------------------------------------------------------------------------------
功能描述:一个按键1个LED闪, ON/OFF功能,即按一下LED闪,再按一下LED灭.
---------------------------------------------------------------------------------*/
#include <reg51.h>
sbit LED = P1^0;
sbit KEY = P3^2;
void Delay (unsigned int a) //延时程序声明,并声明变量a为无符号整型数据
{ unsigned int i; //声明变量i为无符号整型数据
while(a--) {for(i=0;i<600;i++);} }
void main (void){
KEY = 1;
LED = 1;
while (1){if(KEY == 0)
{ while(1){LED = 0;
Delay(1000);
LED = 1;
Delay(1000);
while (KEY == 0); } }} } //各路高手,我要怎么写才能关掉LED呢? 现在是一旦按一下按键就一直闪, 我折腾了一个晚上了没折腾出来.谢谢
用一个计数器,记录按键按下的次数,当按键次数为1时,LED闪,当按键次数为2时,恢复至0,LED灭
/*---------------------------------------------------------------------------------
功能描述:一个按键1个LED闪, ON/OFF功能,即按一下LED闪,再按一下LED灭.
---------------------------------------------------------------------------------*/
#include <reg51.h>
sbit LED = P1^0;
sbit KEY = P3^2;
unsigned char wKeyStatus; //定义一个无符号字节,按键计数
void Delay (unsigned int a) //延时程序声明,并声明变量a为无符号整型数据
{
unsigned int i; //声明变量i为无符号整型数据
while(a--)
{
for(i=0;i<600;i++);
}
}
void KeyDet(void) //按键检测子函数
{
if(KEY == 0) //当检测到有按键按下;
{
Delay(20); //延时防抖;
if(KEY == 0)wKeyStatus++; //如果按键还在按下状态,则按键计数加1;
if(wKeyStatus == 2)wKeyStatus = 0; //当按键计数为2时,恢复至0;
while(KEY == 0); //直到按键释放;
}
}
void main (void)
{
// KEY = 1;
LED = 1; //置LED初始状态为灭;
while (1) //主循环;
{
KeyDet(); //检测按键
if(wKeyStatus == 0)LED = 1; //如果按键计数为0,LED灭;
else if(wKeyStatus == 1) //如果按键计数为1,LED闪;
{
LED = 0;
Delay(1000);
LED = 1;
Delay(1000);
}
}
}
楼主给个说法了
老兄 搞定了吗
搞定了 请赐教 我也有同类的问题
/*---------------------------------------------------------------------------------
功能描述:一个按键1个LED闪, ON/OFF功能,即按一下LED闪,再按一下LED灭.
---------------------------------------------------------------------------------*/
#include <reg51.h>
sbit LED = P1^0;
sbit KEY = P3^2;
void Delay (unsigned int a) //延时程序声明,并声明变量a为无符号整型数据
{ unsigned int i; //声明变量i为无符号整型数据
while(a--) {for(i=0;i<600;i++);} }
void main (void){
KEY = 1;
LED = 1;
while (1){if(KEY == 0)
{ while(1){LED = 0;
Delay(1000);
LED = 1;
Delay(1000);
while (KEY == 0); } }} } //各路高手,我要怎么写才能关掉LED呢? 现在是一旦按一下按键就一直闪, 我折腾了一个晚上了没折腾出来.谢谢
蓝色处是个死循环所以灯一闪一闪的。应该把这个while去掉,但程序还不完整。
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |