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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1527|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕在线看人 | 在线a视频| 一区二区三区在线免费观看 | 亚洲a网 | 国产女人与拘做视频免费 | 国产成人亚洲精品 | 91精品国产麻豆 | 精品一二区 | 国产一二区免费视频 | 欧美精品在线观看 | 久久国产一区二区三区 | 欧美13videosex性极品 | 色橹橹欧美在线观看视频高清 | 午夜欧美日韩 | 成人在线免费观看 | 99免费在线观看 | 国产综合久久 | 亚洲精品一区二区在线观看 | 欧美福利视频 | 在线视频一区二区 | 欧美久久不卡 | 久久在线视频 | 欧美久久一区二区 | 91直接看 | 欧美一区二区三区在线观看 | 国产精品不卡 | 国产在线精品一区二区 | 欧美一区二区三区四区五区无卡码 | 久久一及片 | 97超在线视频 | 午夜久久久 | 成人一区精品 | 在线视频 亚洲 | 91精品国产91久久久久久最新 | 欧美日韩综合一区 | 中文字幕在线不卡 | 欧美一区二区三区免费在线观看 | 国产精品日日夜夜 | 高清不卡毛片 | 精品国产伦一区二区三区观看体验 | 97人人草 |