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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機流水燈程序如何加個開關換向?

[復制鏈接]
跳轉到指定樓層
樓主
想要用p1的開關來控制流水燈的方向改變,求解決思路

單片機源程序如下:
#include<reg52.h>   //頭文件
#include<intrins.h>
#define uchar unsigned char//宏定義
#define uint unsigned int//宏定義
void delayms(uchar ms) //延時子函數
{
   uchar i;
   while(ms--)
   for(i=0;i<123;i++);
}
void main()//主函數
{
P0=0xFE;
   while(1)
    {
      delayms(500);//延時100ms
      P0=(P0<<1)|(P0>>7);//循環移位
    }
}  

1.png (140.4 KB, 下載次數: 16)

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

使用道具 舉報

來自 6#
ID:121859 發表于 2022-10-12 08:41 | 只看該作者
#include<reg52.h>   //頭文件
#include<intrins.h>
#define uchar unsigned char//宏定義
#define uint unsigned int//宏定義

sbit Key = P1^0;
bit  Forward;

void delayms(uchar ms) //延時子函數
{
   uchar i;
   while(ms--)
   {
        for(i=0;i<123;i++);        //酌情減小
   }
}
void main()//主函數
{
P0=0xFE;
   while(1)
    {
      delayms(500);//延時100ms
      if(Key==0)
      {
        while(Key==0);
        Forward = !Forward;
      }
      if(Forward){P0=(P0<<1)|0x01;if(P0==0xff)P0=0xfe;}
      else{P0=(P0>>1)|0x80;if(P0==0xff)P0=0x7f;}
    }
}
回復

使用道具 舉報

沙發
ID:1047343 發表于 2022-10-11 22:45 來自觸屏版 | 只看該作者
求大伙指點一下
回復

使用道具 舉報

板凳
ID:624769 發表于 2022-10-11 23:07 | 只看該作者
在你的代碼基礎上改的。

#include<reg52.h>   //頭文件
#include<intrins.h>
#define uchar unsigned char//宏定義
#define uint unsigned int//宏定義

sbit Key = P1^0;
bit        Press,Forward;

void delayms(uchar ms) //延時子函數
{
   uchar i;
   while(ms--)
   {
           if(Key == 0) Press = 1;        //檢查Key
        for(i=0;i<123;i++);        //酌情減小
   }
}
void main()//主函數
{
P0=0xFE;
   while(1)
    {
      delayms(500);//延時100ms
      if(Press)
      {
              Press = 0;
        Forward = !Forward;
      }
      if(Forward)      P0=(P0<<7)(P0>>1);//循環移位
      else      P0=(P0<<1)(P0>>7);//循環移位
    }
}

回復

使用道具 舉報

地板
ID:1047343 發表于 2022-10-12 08:10 | 只看該作者
188610329 發表于 2022-10-11 23:07
在你的代碼基礎上改的。

這連原來的循環都沒有了,p1.0的開關也沒用上
回復

使用道具 舉報

5#
ID:1047343 發表于 2022-10-12 08:20 | 只看該作者
188610329 發表于 2022-10-11 23:07
在你的代碼基礎上改的。

對不起是我的問題,代碼是正確的,感謝指導
回復

使用道具 舉報

7#
ID:123289 發表于 2022-10-12 09:04 | 只看該作者
1、沒有換相這一說!也沒有流水這一說!!這有N個燈從一個顯示狀態【A】,切換成另一個顯示狀態【B】而矣!!!
【A】=第3個燈亮,【B】=第4個燈亮,于是就認為是向右了。
【A】=第3個燈亮,【B】=第2個燈亮,于是就認為是向左了。
2、任意給個信號(如開關),收到信號后,修改一個[【A】【B】的狀態就可以達成,你希望的任何狀態形式。
回復

使用道具 舉報

8#
ID:1047343 發表于 2022-10-12 10:23 來自觸屏版 | 只看該作者
zhxiufan 發表于 2022-10-12 08:41
#include   //頭文件
#include
#define uchar unsigned char//宏定義

這個優化了上面的,把key從延時函數里移到了主函數里,感謝大佬
回復

使用道具 舉報

9#
ID:624769 發表于 2022-10-12 12:02 | 只看該作者
zephry 發表于 2022-10-12 10:23
這個優化了上面的,把key從延時函數里移到了主函數里,感謝大佬

到底是不是優化,當你多按幾次按鍵,或者,你把  delayms(uchar ms)   這個 uchar  修正成 uint  
你delayms(500); 這個 500 正確傳遞進去了(你現在傳得其實是244), 你就明白 為什么  按鍵判斷要寫在  delay 函數里了。
回復

使用道具 舉報

10#
ID:1047409 發表于 2022-10-12 13:23 | 只看該作者
#include <REGX51.H>
unsigned char k=0;
void delay(unsigned int num)
{
         unsigned int i,j;
         for(i=0;i<num;i++)
         for(j=0;j<120;j++)
        ;
}
void main()
{
         unsigned char i,j;  
       
          IT0=1; //ÅäÖÃ′¥·¢·½ê½£¬Ï½μÑØ′¥·¢
          EX0=1;  //ÖD¶ÏÔêDí
          EA=1;  //×ü¿a1Ø
          PX0=0;  //ÖD¶ÏóÅÏè¼¶£¬Ä¬èÏóÅÏè¼¶¿éòÔê¡
          while(1)
                {
                if(k==0)
                        {
                                j=0xfe;
                                for(i=0;i<8;i++) //¶¨òåiÎa0~8μÄìõ¼têy£¬jÎaLED1μ½8μÄ
                                 {
                                        P1=j;
                                        j=(j<<1)|0x01;
                                        delay(300);
                                 }
                  }                       
                        else
                        {
                                        j=0x7f;
                                        for(i=8;i>0;i--)
                                 {
                                        P1=j;
                                        j=(j>>1)|0x80;
                                        delay(300);
                                 }
                        }
                }
}

void waib0() interrupt 0  //°′ò»ÏÂè¡·′
{
        k=~k;
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本成人在线免费视频 | 中文字幕高清免费日韩视频在线 | 日韩中文字幕在线 | 99亚洲精品 | 欧美亚洲视频 | 久久久无码精品亚洲日韩按摩 | 欧美三区视频 | 久久精品欧美一区二区三区不卡 | 欧美一区二区三区在线 | 国产高清av免费观看 | 午夜影院操 | 午夜免费看视频 | 18gay男同69亚洲网站 | 国产精品视频网 | 色啪网| 亚洲iv一区二区三区 | 在线播放一区二区三区 | 久久久九九 | 精品精品视频 | 97国产精品视频人人做人人爱 | 中文在线一区二区 | 天天综合网天天综合色 | 国产伦精品一区二区三区照片91 | 羞羞视频免费观看 | 日韩欧美专区 | 久久久国产一区二区 | 一区二区国产精品 | 91一区二区在线观看 | 国产精品黄 | 国产中的精品av涩差av | 黄色大片网站 | 日本aa毛片a级毛片免费观看 | 激情五月综合网 | 一区二区三区四区av | 久久国产日韩欧美 | 欧美日韩亚洲视频 | 日本精品网站 | 国产亚洲第一页 | 激情毛片| 日韩在线观看中文字幕 | 蜜桃臀av一区二区三区 |