久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4655|回復: 4
收起左側

[求助] 一個KEY一個LED閃, ON/OFF功能,關不掉LED

[復制鏈接]
ID:34602 發表于 2012-5-9 00:06 | 顯示全部樓層 |閱讀模式

/*---------------------------------------------------------------------------------
功能描述:一個按鍵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呢? 現在是一旦按一下按鍵就一直閃, 我折騰了一個晚上了沒折騰出來.謝謝

[此貼子已經被作者于2012-5-9 0:07:38編輯過]
回復

使用道具 舉報

ID:27080 發表于 2012-5-11 14:11 | 顯示全部樓層

用一個計數器,記錄按鍵按下的次數,當按鍵次數為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);
  }
 }
}

 

 

回復

使用道具 舉報

ID:24484 發表于 2012-7-25 20:48 | 顯示全部樓層

樓主給個說法了

回復

使用道具 舉報

ID:24484 發表于 2012-7-25 20:56 | 顯示全部樓層

老兄 搞定了嗎

搞定了 請賜教  我也有同類的問題 

回復

使用道具 舉報

ID:43247 發表于 2012-7-25 21:05 | 顯示全部樓層
以下是引用longzhiming在2012-5-9 0:06:47的發言:

/*---------------------------------------------------------------------------------
功能描述:一個按鍵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呢? 現在是一旦按一下按鍵就一直閃, 我折騰了一個晚上了沒折騰出來.謝謝

[此貼子已經被作者于2012-5-9 0:07:38編輯過]

藍色處是個死循環所以燈一閃一閃的。應該把這個while去掉,但程序還不完整。

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91视频一区二区 | av一级 | 国产一区二区影院 | 成人av色| 日韩精品成人 | 成人精品鲁一区一区二区 | 99久久日韩精品免费热麻豆美女 | 拍真实国产伦偷精品 | 五月婷婷激情 | 羞羞视频在线观免费观看 | 日韩精品免费一区二区在线观看 | 国产高清精品一区二区三区 | 99久久久久| 免费国产视频 | 国产一级淫片a直接免费看 免费a网站 | 国产97在线视频 | 一级a爱片性色毛片免费 | 99热在线播放 | 91在线网站 | 99视频在线播放 | 成人一区二区三区在线观看 | 国产精品久久久亚洲 | 国产精品美女久久久久久久网站 | 狠狠干av | 91精品国产91久久久 | 免费看黄视频网站 | 高清av电影| 欧美激情精品久久久久久免费 | 在线看无码的免费网站 | 中文字幕在线播放不卡 | 久久久女女女女999久久 | 欧美日韩亚洲国产综合 | 欧美日韩在线成人 | 一级aaaa毛片 | 国产精品一区二区欧美黑人喷潮水 | 日韩午夜影院 | 午夜精品久久久久久久星辰影院 | 日本一区二区影视 | 欧美自拍日韩 | 欧美专区日韩 | 国产一区二区三区四区 |