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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1720|回復: 6
收起左側

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

[復制鏈接]
ID:299910 發表于 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應該先++,還是應該先位移?

通過語句分解和實驗證明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(低電平導通),所以P0.0一直不亮。

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

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

評分

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

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

ID:299910 發表于 2025-2-18 14:46 | 顯示全部樓層
qsssuv 發表于 2025-2-15 14:39
1、你的C語言需要加強。你可以去看一下C語言的運算符優先級?梢钥吹++是高于位移運算符的,只不過a++這種 ...

感謝大神指點,基礎知識的確差的很,需要從頭開始,好好學習。
回復

使用道具 舉報

ID:1110477 發表于 2025-3-28 04:59 | 顯示全部樓層
jackduan2018 發表于 2025-2-18 14:46
感謝大神指點,基礎知識的確差的很,需要從頭開始,好好學習。

對對對,a++是a的現在的值,先參與左邊的運算,然后再自增。好像有個左結合右結合的說法
回復

使用道具 舉報

ID:1110477 發表于 2025-3-28 05:06 | 顯示全部樓層
jackduan2018 發表于 2025-2-18 14:46
感謝大神指點,基礎知識的確差的很,需要從頭開始,好好學習。

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

使用道具 舉報

ID:1152291 發表于 2025-6-3 17:26 | 顯示全部樓層
這個程序已經很簡單了的噢 想必要學到非常高深的階段需要學習數碼管,LED燈,蜂鳴器,這才是你最終攻堅克難的關鍵噢
回復

使用道具 舉報

ID:1152839 發表于 2025-6-17 09:15 | 顯示全部樓層
我也不是很能看懂,可能是我還沒學過單片機,對這個程序兩眼一抹黑
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲人人舔人人 | 亚洲三区在线观看 | 国产精品欧美一区二区 | 美女在线观看国产 | 神马久久久久久久久久 | 97国产在线观看 | 亚洲天堂精品一区 | 亚洲a视| 欧美日韩高清 | 午夜影院视频在线观看 | 国产成人在线观看免费 | 国产精品免费观看 | 99影视| 亚洲精品日本 | 天堂在线1| av一二三区| 国产一区三区在线 | 欧美aⅴ| 午夜久久久久久久久久一区二区 | 成人免费区一区二区三区 | 中文字幕一区二区三区四区五区 | 精品久久电影 | 国产在线精品一区二区 | 国产999精品久久久 精品三级在线观看 | 请别相信他免费喜剧电影在线观看 | 欧美做暖暖视频 | 午夜资源 | 中文字幕一区二区三区在线乱码 | 国产在线观看一区二区三区 | 久久亚洲一区 | 99久久久久国产精品免费 | 国产成人精品免高潮在线观看 | 日日爱av| 国际精品鲁一鲁一区二区小说 | 欧美一区视频 | 久久久亚洲精品视频 | 久久久久国产一区二区三区 | 精品久久久久久国产 | 国产精品区一区二区三区 | 久久一区二区三区四区 | 日本中文字幕日韩精品免费 |