亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4746|回復(fù): 17
打印 上一主題 下一主題
收起左側(cè)

很久才整明白的單片機C語言語句

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:299910 發(fā)表于 2025-2-14 09:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
unsigned char a;

  //a=0;
port_mode();              // 將單片機所有端口配置為準雙向弱上拉方式

        while(1)      

        {

                P0 =~(1<<a++);                  // 第一次運行時 0000 0001<< 0 = 0000 0001

                //a++;

                //P0=~(1<<a);

                //a++;

           if (a==0x08)          // 允許左移8次。

                {

                        a=0;

                }

        }

這是一個流水燈的程序,其中P0 =~(1<<a++);這條語句我看了很久才弄明白。

1.困惑的是運算順序 a應(yīng)該先++,還是應(yīng)該先位移?

通過語句分解和實驗證明a是先進行左移運算,后進行自加運算的。

如果a先進行自加運算P0.0這個燈會一直不亮。被拋棄了。至于為什么會被拋棄,我在思考的這個階段還沒特別明白,能想到的就是那一位被拋棄了。

2.其次是1<<a,這條語句我一直理解為a左移了1位,其實是1左移了a位。弄明白這個語句就不難理解為什么P0.0會被拋棄了。a先自加1,a==1,1左移1位=0000 0010,再取反=1111 1101,P0.0位一直會是1(低電平導(dǎo)通),所以P0.0一直不亮。

3.為什么沒有對a進行賦初值,那初值會是多少?是0嗎?

經(jīng)測試a的初值可以是0。但是a賦值大于8的時候燈就不會亮,因為if (a==0x08)時a=0,這里改成a> =0x08,a就可以是大于8的值。可是原程序a==0x08,a不賦初值也都可以運行,那a是怎么保證不大于8的?

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:353115 發(fā)表于 2025-2-15 14:39 | 只看該作者
1、你的C語言需要加強。你可以去看一下C語言的運算符優(yōu)先級?梢钥吹++是高于位移運算符的,只不過a++這種運算,它要求先參與運算,后進行自加。
2、程序直接初始化P0=~0x01。在循環(huán)中P0 = P0<<1|P0>>7。這樣就可以循環(huán)移動了。比你添加一個變量a要清爽得多。
3、變量若被使用必須先初始化,這是個規(guī)范。
回復(fù)

使用道具 舉報

板凳
ID:299910 發(fā)表于 2025-2-18 14:46 | 只看該作者
qsssuv 發(fā)表于 2025-2-15 14:39
1、你的C語言需要加強。你可以去看一下C語言的運算符優(yōu)先級。可以看到++是高于位移運算符的,只不過a++這種 ...

感謝大神指點,基礎(chǔ)知識的確差的很,需要從頭開始,好好學(xué)習(xí)。
回復(fù)

使用道具 舉報

地板
ID:1110477 發(fā)表于 2025-3-28 04:59 | 只看該作者
jackduan2018 發(fā)表于 2025-2-18 14:46
感謝大神指點,基礎(chǔ)知識的確差的很,需要從頭開始,好好學(xué)習(xí)。

對對對,a++是a的現(xiàn)在的值,先參與左邊的運算,然后再自增。好像有個左結(jié)合右結(jié)合的說法
回復(fù)

使用道具 舉報

5#
ID:1110477 發(fā)表于 2025-3-28 05:06 | 只看該作者
jackduan2018 發(fā)表于 2025-2-18 14:46
感謝大神指點,基礎(chǔ)知識的確差的很,需要從頭開始,好好學(xué)習(xí)。

他的第一條對,后兩條也對,但是太古板了,C語言是技巧的藝術(shù)
回復(fù)

使用道具 舉報

6#
ID:1152291 發(fā)表于 2025-6-3 17:26 | 只看該作者
這個程序已經(jīng)很簡單了的噢 想必要學(xué)到非常高深的階段需要學(xué)習(xí)數(shù)碼管,LED燈,蜂鳴器,這才是你最終攻堅克難的關(guān)鍵噢
回復(fù)

使用道具 舉報

7#
ID:1152839 發(fā)表于 2025-6-17 09:15 | 只看該作者
我也不是很能看懂,可能是我還沒學(xué)過單片機,對這個程序兩眼一抹黑
回復(fù)

使用道具 舉報

8#
ID:1153607 發(fā)表于 2025-8-27 10:52 | 只看該作者
A++,先用后加;++a,先加后用。不賦初值的變量從最小開始運行。
回復(fù)

使用道具 舉報

9#
ID:123036 發(fā)表于 2025-8-27 16:08 | 只看該作者
哈哈哈 i+=(++i)+(i++) 這種經(jīng)典燒腦請看 C語言教程-潭浩強
正式代碼誰寫這種。
以下代碼ai優(yōu)化過的,兩句話就行
    while (1) {
        P0 = ~(1 << a);  // 直接使用a當前值進行移位和取反
        a = (a + 1) & 0x07;  // 利用位操作實現(xiàn)0-7循環(huán)計數(shù)
    }
回復(fù)

使用道具 舉報

10#
ID:468878 發(fā)表于 2025-8-28 10:44 | 只看該作者
其實也無所謂,一些細節(jié)記不清的優(yōu)先級,多打個括號就不會分辨不清了
代碼嘛,能用就行
回復(fù)

使用道具 舉報

11#
ID:1159936 發(fā)表于 2025-9-6 13:56 | 只看該作者
學(xué)習(xí)了謝謝分享
回復(fù)

使用道具 舉報

12#
ID:1163107 發(fā)表于 2025-11-19 19:37 | 只看該作者
學(xué)習(xí)了,謝謝分享
回復(fù)

使用道具 舉報

13#
ID:813057 發(fā)表于 2026-2-4 11:01 | 只看該作者
~(1<<a++) 的運算順序是“先 1<<a,再對結(jié)果取反 ~,最后 a 才自增 1”。
因此 P0 = ~(1<<a++); 等價于
C
P0 = ~(1 << a);   // 用 a 當前的值做移位
a = a + 1;        // 然后 a 再自增
逐拍拆解:
取 a 當前值(假設(shè)為 0)。
計算 1 << 0 → 0x01。
取反 → ~0x01 → 0xFE。
把 0xFE 輸出到 P0。
a 自增,變成 1。
下一次循環(huán)就輪到 1 << 1 → 0x02 → ~0x02 → 0xFD ……
如此 P0 依次輸出 0xFE、0xFD、0xFB、0xF7、0xEF、0xDF、0xBF、0x7F,實現(xiàn)“單 0 跑馬燈”。
AI回復(fù)
回復(fù)

使用道具 舉報

14#
ID:1064915 發(fā)表于 2026-2-4 14:47 | 只看該作者
樓主自學(xué)能力還是比較強,找個指導(dǎo)教師,進步會更快
回復(fù)

使用道具 舉報

15#
ID:1167694 發(fā)表于 2026-3-1 02:11 | 只看該作者
總是看視頻沒有什么用,還是要自己寫程序。多寫寫就熟了。
回復(fù)

使用道具 舉報

16#
ID:1167694 發(fā)表于 2026-3-1 02:12 | 只看該作者
多寫程序,那怕把前輩的程序重新寫幾遍,
回復(fù)

使用道具 舉報

17#
ID:60178 發(fā)表于 2026-4-9 12:23 | 只看該作者
還是分開來寫清楚,人家STM32就是規(guī)范。
回復(fù)

使用道具 舉報

18#
ID:69038 發(fā)表于 2026-6-8 16:14 | 只看該作者
"回"字有4種寫法!
要是我,才不管3728的,直接一條運算寫一行,
最后編譯出來的代碼也不會增加或減少,
何必搞這種花里胡哨的東東?
非要追求一行代碼把一個功能寫完嗎?
代碼邏輯性、可讀性、可維護性要體現(xiàn)出來。

評分

參與人數(shù) 1黑幣 +5 收起 理由
tongguan123 + 5

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表