欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

快速回復 返回頂部 返回列表