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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1091|回復(fù): 33
收起左側(cè)

流水燈代碼哪里有誤

  [復(fù)制鏈接]
ID:1146126 發(fā)表于 2025-3-23 16:57 | 顯示全部樓層 |閱讀模式
各位大佬,普中51開發(fā)板,led共陽極,流水燈代碼這樣寫為什么不對,效果是全滅
聯(lián)想截圖_20250323165612.png
回復(fù)

使用道具 舉報

ID:1146126 發(fā)表于 2025-3-23 16:59 | 顯示全部樓層
把while(1)框架刪除,是全亮而且板子一直響
回復(fù)

使用道具 舉報

ID:1146126 發(fā)表于 2025-3-23 17:03 | 顯示全部樓層
延時函數(shù)那邊已經(jīng)修改過了
回復(fù)

使用道具 舉報

ID:796531 發(fā)表于 2025-3-24 08:59 | 顯示全部樓層
用移位操作,你的n=n*2 會超出0XFF
while(1)
    {
        for(i = 0; i < 7; i++)
        {
            P2 = ~(0x01 << i);
            DelayXms(500);
        }
        
回復(fù)

使用道具 舉報

ID:583948 發(fā)表于 2025-3-24 09:30 | 顯示全部樓層
#include <STC89C5xRC.H>

void DelayXms(unsigned int ms) {
    unsigned int i, j;
    for (i = ms; i > 0; i--)
        for (j = 110; j > 0; j--);
}

void main() {
    unsigned char i;
    while(1) {
        for(i=0; i<8; i++) {
            P2 = 0xFF - (0x01 << i); // 逐位點(diǎn)亮
            DelayXms(500);
        }
    }
}
1.查看一下你的LED端口是否為P2等等,確認(rèn)硬件端口正確
2.參數(shù)類型確認(rèn)
3.端口移位操作
回復(fù)

使用道具 舉報

ID:452475 發(fā)表于 2025-3-24 09:30 | 顯示全部樓層
呃。我猜你是想表達(dá)是的P2 = 0XFF << 1 ?
回復(fù)

使用道具 舉報

ID:890708 發(fā)表于 2025-3-24 09:40 | 顯示全部樓層
sunwind001 發(fā)表于 2025-3-23 16:59
把while(1)框架刪除,是全亮而且板子一直響

你的unsigned char n = 1,是全局變量,不釋放內(nèi)存,你這一直循環(huán)的話,char類型最大256,多循環(huán)幾次就char就溢出了就是這個變量n錯了;
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2025-3-24 09:46 | 顯示全部樓層
n = 0,   n*2 依然 = 0,   n*2*2*2*2……  也依然是 0

從頭到尾 n = 0,   從頭得尾 P2 = 0xff
你希望 怎么流水燈??
回復(fù)

使用道具 舉報

ID:1109793 發(fā)表于 2025-3-24 10:05 | 顯示全部樓層
188610329 發(fā)表于 2025-3-24 09:46
n = 0,   n*2 依然 = 0,   n*2*2*2*2……  也依然是 0

從頭到尾 n = 0,   從頭得尾 P2 = 0xff

人家N不是初始化=1了?
回復(fù)

使用道具 舉報

ID:1057978 發(fā)表于 2025-3-24 10:22 | 顯示全部樓層
你還是很有想象力的,不過要注意N的階乘容易溢出
回復(fù)

使用道具 舉報

ID:1109793 發(fā)表于 2025-3-24 10:23 | 顯示全部樓層
代碼原理大概沒啥問題。但是你延時函數(shù)的參數(shù)沒有使用。就是調(diào)用的時候的500沒起作用。顏色400周期后退出,400周期很快的,就是可能一瞬間就完成了8個LED的流水,你沒看到。實際上是7個,因為你輸出時是先N*2的。這樣第一個實際上是沒有亮過的。如5樓那樣改下延時讓參數(shù)起作用試試看。
而且你聲明是全局的NTIME變量,然后在形參里面也用了NTIME,并且沒有指明類型。這習(xí)慣不好,容易混淆。不指定類型的參數(shù)會是什么類型?另外這種編譯時不會有警告嗎?如果是你聲明的CHAR類型那么你傳給他一個500是超了范圍的。
回復(fù)

使用道具 舉報

ID:36322 發(fā)表于 2025-3-24 10:24 | 顯示全部樓層
把最后的i=0改成n=1;
回復(fù)

使用道具 舉報

ID:227393 發(fā)表于 2025-3-24 11:58 來自觸屏版 | 顯示全部樓層
主要是8次循環(huán)后n沒有重新置1,后面就溢出了
回復(fù)

使用道具 舉報

ID:879809 發(fā)表于 2025-3-26 13:47 | 顯示全部樓層
第29行i=0無意義,改成n=1即可。
回復(fù)

使用道具 舉報

ID:1146339 發(fā)表于 2025-3-26 14:12 | 顯示全部樓層
把最后的i=0改成n=1;
回復(fù)

使用道具 舉報

ID:890708 發(fā)表于 2025-3-26 16:16 | 顯示全部樓層
188610329 發(fā)表于 2025-3-24 09:46
n = 0,   n*2 依然 = 0,   n*2*2*2*2……  也依然是 0

從頭到尾 n = 0,   從頭得尾 P2 = 0xff

n = 1;啊
回復(fù)

使用道具 舉報

ID:1146126 發(fā)表于 2025-3-26 20:11 | 顯示全部樓層
CQ123 發(fā)表于 2025-3-26 14:12
把最后的i=0改成n=1;

好的,這樣改就可以流水了
回復(fù)

使用道具 舉報

ID:1146126 發(fā)表于 2025-3-26 20:13 | 顯示全部樓層
xiaobendan001 發(fā)表于 2025-3-24 10:23
代碼原理大概沒啥問題。但是你延時函數(shù)的參數(shù)沒有使用。就是調(diào)用的時候的500沒起作用。顏色400周期后退出, ...

我沒考慮到char的范圍,現(xiàn)在改一改,延時函數(shù)那邊我已經(jīng)改過了,把30行和29行換一個位置就都能流了,感謝
回復(fù)

使用道具 舉報

ID:1146126 發(fā)表于 2025-3-26 20:18 | 顯示全部樓層
mirvv 發(fā)表于 2025-3-24 09:40
你的unsigned char n = 1,是全局變量,不釋放內(nèi)存,你這一直循環(huán)的話,char類型最大256,多循環(huán)幾次就cha ...

請問這應(yīng)該怎么釋放內(nèi)存
回復(fù)

使用道具 舉報

ID:1146126 發(fā)表于 2025-3-26 20:20 | 顯示全部樓層
xiaobendan001 發(fā)表于 2025-3-24 10:23
代碼原理大概沒啥問題。但是你延時函數(shù)的參數(shù)沒有使用。就是調(diào)用的時候的500沒起作用。顏色400周期后退出, ...

沒有警告,我是想在最開頭聲明nTime,延時函數(shù)直接用我聲明的nTime,這樣不可以嗎
回復(fù)

使用道具 舉報

ID:1110477 發(fā)表于 2025-3-27 01:43 | 顯示全部樓層
mirvv 發(fā)表于 2025-3-24 09:40
你的unsigned char n = 1,是全局變量,不釋放內(nèi)存,你這一直循環(huán)的話,char類型最大256,多循環(huán)幾次就cha ...

一次定義全局變量,多次使用并不會無限增加內(nèi)存占用
回復(fù)

使用道具 舉報

ID:1110477 發(fā)表于 2025-3-27 01:46 | 顯示全部樓層
延時函數(shù)內(nèi)部沒有使用傳進(jìn)來的參數(shù),變成了很短的定時函數(shù)
回復(fù)

使用道具 舉報

ID:1110477 發(fā)表于 2025-3-27 01:49 | 顯示全部樓層
paladina 發(fā)表于 2025-3-24 08:59
用移位操作,你的n=n*2 會超出0XFF
while(1)
    {

溢出了影響流水燈依次亮,也能亂亮
回復(fù)

使用道具 舉報

ID:1110477 發(fā)表于 2025-3-27 01:51 | 顯示全部樓層
普中的板子,不太懂,不知有沒有LED流水燈的總開關(guān),或者控制芯片
回復(fù)

使用道具 舉報

ID:1110477 發(fā)表于 2025-3-27 01:53 | 顯示全部樓層
188610329 發(fā)表于 2025-3-24 09:46
n = 0,   n*2 依然 = 0,   n*2*2*2*2……  也依然是 0

從頭到尾 n = 0,   從頭得尾 P2 = 0xff

他前面定義時n=1呀
回復(fù)

使用道具 舉報

ID:1110477 發(fā)表于 2025-3-27 01:56 | 顯示全部樓層
sgq657785 發(fā)表于 2025-3-24 11:58
主要是8次循環(huán)后n沒有重新置1,后面就溢出了

溢出并不影響亮燈,亂亮而已,關(guān)鍵問題不對
回復(fù)

使用道具 舉報

ID:1110477 發(fā)表于 2025-3-27 02:01 | 顯示全部樓層
data是錯的
回復(fù)

使用道具 舉報

ID:1109793 發(fā)表于 2025-3-27 10:33 | 顯示全部樓層
sunwind001 發(fā)表于 2025-3-26 20:20
沒有警告,我是想在最開頭聲明nTime,延時函數(shù)直接用我聲明的nTime,這樣不可以嗎

還是要看看書的,當(dāng)然也可以自己試試看,全局的變量和參數(shù)是不是一個,以及各自的作用范圍
回復(fù)

使用道具 舉報

ID:1109793 發(fā)表于 2025-3-27 10:36 | 顯示全部樓層
keemee 發(fā)表于 2025-3-27 01:49
溢出了影響流水燈依次亮,也能亂亮

有沒有可能*2就是被編譯為左移了,事實上8次后就永遠(yuǎn)都是0了。就是全都滅的狀態(tài)了。樓主并沒有說這個流水燈只流一次還是一直流。
回復(fù)

使用道具 舉報

ID:1109793 發(fā)表于 2025-3-27 10:36 | 顯示全部樓層
keemee 發(fā)表于 2025-3-27 01:56
溢出并不影響亮燈,亂亮而已,關(guān)鍵問題不對

為何是亂亮?
回復(fù)

使用道具 舉報

ID:831024 發(fā)表于 2025-3-27 11:43 | 顯示全部樓層
為何是亂亮?
回復(fù)

使用道具 舉報

ID:879809 發(fā)表于 2025-3-27 17:18 | 顯示全部樓層

默認(rèn)就是data,加不加效果一樣,并不是錯的。
回復(fù)

使用道具 舉報

ID:819175 發(fā)表于 2025-3-28 08:22 | 顯示全部樓層
你還是弄個豆包AI編程吧,要快很多
回復(fù)

使用道具 舉報

ID:707558 發(fā)表于 2025-3-30 11:42 | 顯示全部樓層
12樓說得好,在第23行的for開始中已經(jīng)重新給i賦值為0了,所以第29行的i=0是多余的,且n應(yīng)該重新賦值才能讓for循環(huán)中語句正常工作,所以把第29行改為n=1就可以實現(xiàn)流水燈了。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜一区 | 久久丁香| 久久亚洲一区二区三区四区 | 欧美日韩国产一区二区三区 | 人成在线视频 | 国产成人免费视频网站高清观看视频 | 亚洲免费婷婷 | 91色在线 | 国产亚洲欧美在线视频 | 国产高清视频在线观看 | 欧美极品一区二区 | 久久精品欧美一区二区三区不卡 | 欧美男人天堂 | 亚洲一区二区三区免费在线 | 精品一区二区三区四区外站 | 四虎影院美女 | 午夜网站视频 | 日韩高清一区 | 一区二区三区国产精品 | 日韩欧美一区二区三区免费看 | 欧美aaaaaaaa | 天天看夜夜 | 看真人视频一级毛片 | 日本aⅴ中文字幕 | 日韩久久综合 | 黄色一级在线播放 | 日本不卡免费新一二三区 | 黄色毛片视频 | 日韩在线精品视频 | 一级在线 | 成人免费在线视频 | av中文网| 亚洲国产黄色av | 国产高清在线精品一区二区三区 | 日韩高清国产一区在线 | 国产精品中文 | 干干天天| 蜜桃视频一区二区三区 | 一级片在线视频 | 精品久久电影 | 欧美福利视频 |