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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3163|回復: 19
收起左側

怎么讓程序不循環

  [復制鏈接]
ID:1040289 發表于 2022-7-28 11:29 來自手機 | 顯示全部樓層 |閱讀模式
流水燈依次流過后怎么讓它不重新循環再流一次
怎么樣流過后讓燈常亮?
我試過用結尾加上while(1),但是后面的程序就動不了了,所以怎么樣讓流水燈流一次后常亮,而且不影響后面的程序。
望大佬解答。
回復

使用道具 舉報

ID:228467 發表于 2022-7-28 12:10 | 顯示全部樓層
可以用for循環,只執行一次
回復

使用道具 舉報

ID:121859 發表于 2022-7-28 12:25 | 顯示全部樓層
只執行一次流水很容易實現,但看你的意思貌似之后這個流水在不斷執行,要解決這個問題,你可以將流水程序放在While之前,也就是初始化之后執行流水程序,之后再進入while主循環里面。
回復

使用道具 舉報

ID:1040766 發表于 2022-7-28 13:40 | 顯示全部樓層
  1. a=1
  2. while(a)
  3. {
  4.     流水燈();
  5.     a--;
  6. }
復制代碼
回復

使用道具 舉報

ID:1040766 發表于 2022-7-28 13:42 | 顯示全部樓層
  1. a=1
  2. while(a)
  3. {
  4.         流水燈();
  5.         a--;
  6. }       
  7.        
復制代碼



試一下
回復

使用道具 舉報

ID:331575 發表于 2022-7-28 14:31 | 顯示全部樓層
把后面的程序放在while里面,流水燈放在while之前,也就是程序初始化,燈亮一次之后,再進入到主體程序中。
回復

使用道具 舉報

ID:61140 發表于 2022-7-28 15:02 | 顯示全部樓層
放在main中的while(1)之前 main.png

比如這個程序中,在while(1)之前的函數在單片機上電后只執行一次,在while(1)之后的函數則不斷重復執行。
回復

使用道具 舉報

ID:248705 發表于 2022-7-28 15:24 | 顯示全部樓層
哥幾個說的都沒錯,俺感覺這玩意加個標志位不就行了
  1. static u8 flag = 0;  //全局變量或局部靜態變量
  2. if(!flag)
  3. {
  4. flag = 1;
  5.    /*流水燈代碼*/
  6. }
復制代碼
回復

使用道具 舉報

ID:213173 發表于 2022-7-28 15:29 | 顯示全部樓層
定義一個位變量bit sign=0,執行完一次流水燈,sign=1,就沒有下次了。
        if(!sign)
        {
                //流水燈
                sign=1;
        }

評分

參與人數 1黑幣 +5 收起 理由
上善-若水 + 5 贊一個!

查看全部評分

回復

使用道具 舉報

ID:584639 發表于 2022-7-28 16:16 | 顯示全部樓層
break;
回復

使用道具 舉報

ID:1040698 發表于 2022-7-28 16:25 | 顯示全部樓層
void main(void)
{
   //流水燈
  while(1)
{
   后面的程序;
}


}
回復

使用道具 舉報

ID:8222 發表于 2022-7-28 23:28 | 顯示全部樓層
祖國的花朵 發表于 2022-7-28 15:24
哥幾個說的都沒錯,俺感覺這玩意加個標志位不就行了

static u8 flag = 1;  //全局變量或局部靜態變量
if(flag)
{
flag = 0;
   /*流水燈代碼*/
}
這樣可以減少一個!邏輯判斷。
回復

使用道具 舉報

ID:123289 發表于 2022-7-29 09:00 | 顯示全部樓層
很簡單自然的事,怎么就想不到呢?
在你的循環過程中,加入一個破壞循環的條件。條件具備時,就退出循環。
回復

使用道具 舉報

ID:1040289 發表于 2022-7-29 11:33 來自手機 | 顯示全部樓層
wulin 發表于 2022-7-28 15:29
定義一個位變量bit sign=0,執行完一次流水燈,sign=1,就沒有下次了。
        if(!sign)
        {

okok,謝謝大佬解答,問題解決啦
回復

使用道具 舉報

ID:624769 發表于 2022-7-29 20:01 | 顯示全部樓層
溫xyz 發表于 2022-7-28 23:28
static u8 flag = 1;  //全局變量或局部靜態變量
if(flag)
{

你需要了解一下跳轉原理。

if(!flag)  表示 為0繼續執行, 為1跳過。
而:  if(flag) 表示 為1 繼續執行, 為0跳過。
對于 51 擁有  為 0 跳轉 和 為1跳轉 的情況下,兩者一樣。
對于, 有些單片機,只有為1跳轉 而沒有為0 跳轉的情況下, if(!flag)  才是真正的節約了,你這種寫法反而需要多一條強制跳轉。
回復

使用道具 舉報

ID:1040201 發表于 2022-7-30 16:37 | 顯示全部樓層
用for循環  do..while()循環,static u8 i =1;if(i--);或者放在main下面while(1)之前。
回復

使用道具 舉報

ID:420836 發表于 2022-8-2 07:56 | 顯示全部樓層
在程序中,使用標志字啟用流動 LED,在 LED 全部點亮后,重置標志字以禁用 LED 流動。
回復

使用道具 舉報

ID:275165 發表于 2022-8-13 09:24 來自手機 | 顯示全部樓層
利用定時器中斷
回復

使用道具 舉報

ID:1042050 發表于 2022-8-14 10:17 | 顯示全部樓層
設置標志位,進去時判斷標志位,循環時清除標志位
回復

使用道具 舉報

ID:1042823 發表于 2022-8-24 16:11 | 顯示全部樓層
while(1)是無限循環,你想不重復循環可以用if判斷
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜视频在线免费观看 | 国产精品爱久久久久久久 | 9999在线视频 | 91在线精品一区二区 | 一区二区日本 | 亚洲高清免费观看 | 国产精品国产三级国产aⅴ入口 | 亚洲狠狠丁香婷婷综合久久久 | 538在线精品 | 国产精品一区在线 | 久久久久99 | 亚洲高清免费观看 | 久久亚洲一区二区三区四区 | 81精品国产乱码久久久久久 | 亚洲不卡视频 | 久久久av| 国产成人一区二 | 亚洲成人久久久 | 久久亚洲国产精品日日av夜夜 | 国产精品视频久久久久 | hitomi一区二区三区精品 | 在线观看国产视频 | 日本在线免费 | 久久伊人一区 | 日本三级精品 | 一级h片| 国产二区精品视频 | 国产小视频精品 | 一区二区三区在线免费观看 | 国产欧美精品 | 国产999精品久久久久久 | 国产精品成人在线播放 | 成人精品毛片 | 亚洲精品天堂 | 欧美日韩一区二区电影 | 成人国产精品久久久 | 日韩电影免费在线观看中文字幕 | 欧美最猛黑人xxxx黑人 | 你懂的在线视频播放 | 四虎影院新网址 | 欧美视频一区 |