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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2607|回復: 12
打印 上一主題 下一主題
收起左側

這個單片機程序怎樣改 按鍵按下后只在LED1和LED2之間來回切換

  [復制鏈接]
跳轉到指定樓層
樓主
請教各位這個程序怎樣改成按鍵按下后只在LED1和LED2之間來回切換,就是說上電LED1,LED2都不亮,按鍵按下后LED1亮,LED2滅。再按一次LED2亮,LED1滅,再按一次又是LED1亮,LED2滅,如此反復循環,謝謝

#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;

u16 mode;

sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
sbit LED5=P2^4;
sbit LED6=P2^5;
sbit LED7=P2^6;
sbit LED8=P2^7;
sbit key=P3^1;

void delay(u16 i)
{
        while(i--);
}

void LED()
{
        switch(mode)
        {
                case(0):LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;break;
                case(1):LED1=0;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;break;
                case(2):LED1=1;LED2=0;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;break;
                case(3):LED1=1;LED2=1;LED3=0;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;break;
                case(4):LED1=1;LED2=1;LED3=1;LED4=0;LED5=1;LED6=1;LED7=1;LED8=1;break;
                case(5):LED1=1;LED2=1;LED3=1;LED4=1;LED5=0;LED6=1;LED7=1;LED8=1;break;
                case(6):LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=0;LED7=1;LED8=1;break;
                case(7):LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=0;LED8=1;break;
                case(8):LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=0;break;

        }
}


void main()
{
        while(1)
        {
                LED();
                if(key==0)
                {
                        delay(1000);
                        if(key==0)
                        {
                                mode++;
                                if(mode==9)
                                {
                                        mode=0;
                                }
                                while(!key);
                        }
                }
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:883242 發表于 2023-5-28 20:00 | 只看該作者
把這一段
  1.         switch(mode)
  2.         {
  3.         }
復制代碼

改成
  1. LED1=mode&1;
  2. LED2=!(mode&1);
復制代碼
回復

使用道具 舉報

板凳
ID:161164 發表于 2023-5-28 23:04 | 只看該作者

回復

使用道具 舉報

地板
ID:549933 發表于 2023-5-28 23:07 | 只看該作者
void LED()
{
        switch(mode)
        {
                case(0):LED1=1;LED2=1;break;
                case(1):LED1=0;LED2=1;break;
                case(2):LED1=1;LED2=0;break;
                case(3):LED1=0;LED2=1;break;
                case(4):LED1=1;LED2=0;break;
                case(5):LED1=0;LED2=1;break;
                case(6):LED1=1;LED2=0;break;
                case(7):LED1=0;LED2=1;break;
                case(8):LED1=1;LED2=0;break;

        }
}
回復

使用道具 舉報

5#
ID:1077017 發表于 2023-5-28 23:41 | 只看該作者
#include <reg52.h>
sbit LED1=P2^0;
sbit LED2=P2^1;
void delay(int i)
{
        while(i--);
}
void main()
{
while(1)
{  
      LED1=0;
      LED2=1;
      if(key==0)
                {
                      delay(1000);
                      if(key==0)
                      {LED1=~LED1;LED2=~LED2;while(!key);}
}
   
}


回復

使用道具 舉報

6#
ID:1057946 發表于 2023-5-29 00:06 | 只看該作者
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;

bit mode;

sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
sbit LED5=P2^4;
sbit LED6=P2^5;
sbit LED7=P2^6;
sbit LED8=P2^7;
sbit key=P3^1;

void delay(u16 i)
{
        while(i--);
}
void main()
{
      LED3=LED4=LED5=LED6=LED7=LED8=1;
        while(1)
        {
                if(key==0)
                {
                    delay(20);
                    while(key==0)
                     delay(20);
                        mode^=1;
                       LED1=mode?1:0;
                       LED2=mode?0:1;
                }
        }
}
回復

使用道具 舉報

7#
ID:213173 發表于 2023-5-29 05:59 | 只看該作者
去掉所有贅句,越簡單越好。
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;

sbit LED1=P2^0;
sbit LED2=P2^1;

sbit key=P3^1;

void delay(u16 i)
{
        while(i--);
}

void main()
{
        while(1)
        {
                if(!key)
                {
                        delay(200);
                        if(!key)
                        {
                                LED1=~LED1;
                                LED2=~LED1;
                                while(!key);
                        }
                }
        }
}
回復

使用道具 舉報

8#
ID:1019324 發表于 2023-5-29 20:21 | 只看該作者
把按鍵分出來定一個標志位
回復

使用道具 舉報

9#
ID:149799 發表于 2023-5-29 20:56 | 只看該作者
編程技巧,能減少程序步數,是程序簡潔,謝謝分享。
回復

使用道具 舉報

10#
ID:712097 發表于 2023-5-30 08:43 | 只看該作者
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;

u16 mode;

sbit LED1=P2^0;
sbit LED2=P2^1;

sbit key=P3^1;

void delay(u16 i)
{
        while(i--);
}

void main()
{
        while(1)
        {
                LED1=LED2=1;//假設LED高電平滅,低電平亮
                if(key==0)//開關按下為低電平
                {
                        delay(1000);//延時防誤觸
                        if(key==0)
                        {
                              LED1=~LED1;//LED1取反,上電LED1不亮,第一次按時,LED1亮,第2次按時LED1滅                              LED2=~LED1;//LED2取LED1反,上電時LED2不亮,第一次按時,LED1亮,LED2滅,第二次按時,LED1滅,LED2亮

                        }
                }
        }
}
回復

使用道具 舉報

11#
ID:341045 發表于 2023-5-30 10:52 | 只看該作者
主程序 if(mode==9) 改成 if(mode == 3), 如果你循環是有滅燈的就不用改了, 你要求不滅燈只是1,2燈交叉亮滅的, 把下面  mode=0; 改為 mode = 1; 就改完收工了

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

12#
ID:1061331 發表于 2023-5-30 11:02 | 只看該作者
用switch case來試試                case(0):LED1=1;LED2=1;break;                 case(1):LED1=0;LED2=1;break;                 case(2):LED1=1;LED2=0;break;                 case(3):LED1=0;LED2=1;break;                 case(4):LED1=1;LED2=0;break;                 case(5):LED1=0;LED2=1;break;                 case(6):LED1=1;LED2=0;break;                 case(7):LED1=0;LED2=1;break;                 case(8):LED1=1;LED2=0;break;
回復

使用道具 舉報

13#
ID:143767 發表于 2023-5-30 11:49 | 只看該作者
謝謝各位的詳細解答
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 97精品国产| 一区二区三区中文字幕 | 中文字幕免费在线 | 国产特级毛片aaaaaa | 日韩激情网 | 狠狠做深爱婷婷综合一区 | 91xxx在线观看 | 一区在线观看 | av香蕉| 国产精品99久久久久 | 99精品国产一区二区青青牛奶 | 一级毛片网 | 成人a视频在线观看 | 午夜爽爽爽男女免费观看 | 国产高清性xxxxxxxx | 亚洲一区二区 | 亚洲高清在线观看 | 亚洲一区二区三区久久 | 精品亚洲一区二区 | 中文字幕 亚洲一区 | 国产小视频在线 | 免费视频久久久久 | 91精品国产91久久久久久三级 | 日韩av中文 | 国产成人免费视频网站高清观看视频 | 亚洲高清在线视频 | 久久精品中文 | 日韩一区在线播放 | 男人天堂av网站 | av一区二区三区四区 | 国产激情精品视频 | 亚洲一级毛片 | 欧美精品一二三 | 日本不卡一区 | 中文字幕一区二区三区在线乱码 | 欧美黑人国产人伦爽爽爽 | a级在线免费视频 | 国产www. | 欧美不卡在线 | 一区福利视频 | 亚洲精品永久免费 |