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

標(biāo)題: 51單片機(jī)入門(mén)經(jīng)驗(yàn)分享3-通過(guò)流水燈講解for循環(huán)語(yǔ)句 取反 與或非運(yùn)算 [打印本頁(yè)]

作者: dabing89    時(shí)間: 2018-10-13 08:41
標(biāo)題: 51單片機(jī)入門(mén)經(jīng)驗(yàn)分享3-通過(guò)流水燈講解for循環(huán)語(yǔ)句 取反 與或非運(yùn)算
接上一篇帖子,繼續(xù)來(lái)看,既然我們會(huì)點(diǎn)亮一個(gè)小燈,并可以讓其閃爍了,那么我們就嘗試著點(diǎn)亮流水燈好了,讓8個(gè)小燈,從左到右,從右往左來(lái)回流動(dòng),還是在上一個(gè)程序的基礎(chǔ)上來(lái)修改,很簡(jiǎn)單依次賦值即可實(shí)現(xiàn)。
  1. while(1)
  2.         {
  3.              P2 = 0XFE;//1111_1110;
  4.                  Delay500ms();//500ms延時(shí) 11.0592MHZ
  5.                  P2 = 0XFD;//1111_1101;
  6.                  Delay500ms();//500ms延時(shí) 11.0592MHZ
  7.                  P2 = 0XFB;//1111_1011;
  8.                  Delay500ms();//500ms延時(shí) 11.0592MHZ
  9.                  P2 = 0XF7;//1111_0111;
  10.                  Delay500ms();//500ms延時(shí) 11.0592MHZ
  11.                  P2 = 0XEF;//1110_1110;
  12.                  Delay500ms();//500ms延時(shí) 11.0592MHZ
  13.                  P2 = 0XDF;//1101_1111;
  14.                  Delay500ms();//500ms延時(shí) 11.0592MHZ
  15.                  P2 = 0XBF;   //1011_1110;
  16.                  Delay500ms();//500ms延時(shí) 11.0592MHZ
  17.                  P2 = 0X7F;   //0111_1111;
  18.                  Delay500ms();//500ms延時(shí) 11.0592MHZ

  19.                  P2 = 0XBF;     //1011_1110;
  20.                  Delay500ms();  //500ms延時(shí) 11.0592MHZ
  21.                  P2 = 0XDF;     //1101_1111;
  22.                  Delay500ms();  //500ms延時(shí) 11.0592MHZ
  23.                  P2 = 0XEF;     //1110_1110;
  24.                  Delay500ms();  //500ms延時(shí) 11.0592MHZ
  25.                  P2 = 0XF7;     //1111_0111;
  26.                  Delay500ms();  //500ms延時(shí) 11.0592MHZ
  27.                  P2 = 0XFB;     //1111_0111;
  28.                  Delay500ms();  //500ms延時(shí) 11.0592MHZ
  29.                  P2 = 0XFD;     //1111_1101;
  30.                  Delay500ms();  //500ms延時(shí) 11.0592MHZ

  31.         }
復(fù)制代碼




這樣弄,雖然很好理解,但是代碼顯得太冗長(zhǎng)了,我們接觸下for循環(huán)語(yǔ)句,先用for語(yǔ)句來(lái)實(shí)現(xiàn)我們想要的功能。代碼修改如下:
  1.   for(i = 0; i < 8;i++)
  2.                 {
  3.                         P2 = ~(0X01 << i);
  4.                         Delay500ms();//500ms延時(shí) 11.0592MHZ
  5.                 }

  6.                 for(i = 0; i < 6;i++)
  7.                 {
  8.                         P2 = ~(0X40 >> i);
  9.                         Delay500ms();//500ms延時(shí) 11.0592MHZ
  10.                 }
復(fù)制代碼


用了for循環(huán)左移和右移的辦法,配合取反實(shí)現(xiàn)的,還有一種辦法,更簡(jiǎn)單可以實(shí)現(xiàn)來(lái)回循環(huán),這便是循環(huán)左移和循環(huán)右移指令
  1. /*******************************************************************
  2. * 文件名 main函數(shù)入口
  3. * 描述:        
  4. * 功 能
  5. * 作者:大核桃
  6. * 版本號(hào):V1.00(2018.09.17)
  7. ********************************************************************/
  8. void main(void)
  9. {
  10.     uint8 i = 0;
  11.         uint8 temp;

  12.         MCU_Port_Init();//端口模式初始化函數(shù)
  13.         //上電IO默認(rèn)是0
  14.         LED0 = 1;//輸出1
  15.         LED1 = 0;
  16.         LED2 = 0;
  17.         LED3 = 0;
  18.         LED4 = 0;
  19.         LED5 = 0;
  20.         LED6 = 0;
  21.         LED7 = 0;//

  22.         temp = 0XFE;

  23.         while(1)
  24.         {

  25.            for(i = 0; i < 7;i++)
  26.                 {
  27.                     P2 = temp;
  28.                         temp = _crol_(temp,1);         
  29.                         Delay500ms();//500ms延時(shí) 11.0592MHZ
  30.                 }

  31.                 for(i = 0; i < 7;i++)
  32.                 {                              
  33.                     P2 = temp;
  34.                         temp = _cror_(temp,1);
  35.                         Delay500ms();//500ms延時(shí) 11.0592MHZ
  36.                 }
  37. }
復(fù)制代碼




這一節(jié),用到了for循環(huán)這個(gè)知識(shí)點(diǎn),for語(yǔ)句的用法在C語(yǔ)言課本的第120頁(yè),詳細(xì)的了解可以看C語(yǔ)言這本書(shū),我們只列舉一個(gè)實(shí)際例子來(lái)說(shuō)明C語(yǔ)言的流程,就拿下面的代碼來(lái)說(shuō)吧。
  1.   for(i = 0; i < 8;i++)
  2.                 {
  3.                         P2 = ~(0X01 << i);
  4.                         Delay500ms();//500ms延時(shí) 11.0592MHZ
  5.                 }
復(fù)制代碼


首先i = 0;是給變量賦初值,i<8是循環(huán)條件,i++是變量累加,先來(lái)看看i = 0;的時(shí)候,這個(gè)時(shí)候判斷下語(yǔ)句P2 = 0XFE,然后0 < 8條件成立,i++;
  1. //  i = 0;的時(shí)候
  2. for(i = 0; i < 8;i++)
  3. {
  4.         P2 = ~(0X01 << 0);
  5.         Delay500ms();//500ms延時(shí) 11.0592MHZ
  6. }
  7. //  i = 1;的時(shí)候
  8. for(i = 0; i < 8;i++)
  9. {
  10.         P2 = ~(0X01 << 1);
  11.         Delay500ms();//500ms延時(shí) 11.0592MHZ
  12. }
復(fù)制代碼



當(dāng) i= 1;的時(shí)候,P2 = 0XFD,依然1<8成立,然后i++;
當(dāng) i= 2;的時(shí)候,P2 = 0XFB,依然2<8成立,然后i++;
當(dāng) i= 3;的時(shí)候,P2 = 0XF7,依然3<8成立,然后i++;
當(dāng) i= 4;的時(shí)候,P2 = 0XEF,依然4<8成立,然后i++;
當(dāng) i= 5;的時(shí)候,P2 = 0XDF,依然5<8成立,然后i++;
當(dāng) i= 6;的時(shí)候,P2 = 0XBF,依然6<8成立,然后i++;

當(dāng) i= 7;的時(shí)候,P2 = 0X7F,依然7<8成立,然后i++;
當(dāng) i= 8;的時(shí)候,8<8不成立,跳出循環(huán)執(zhí)行下面的語(yǔ)句;

這樣我們就把for循環(huán)的流程給分解了,首先就是賦初值,然后執(zhí)行循環(huán),循環(huán)完之后變量累加,回過(guò)頭看條件是否成立,如果條件繼續(xù)成立,則繼續(xù)循環(huán),累加變量,直到條件不滿(mǎn)足為止。
     關(guān)于取反符號(hào)
~這個(gè)符號(hào),可以讀作取反,注意這不是!(非),數(shù)字電路中的 &(按位與) , |  (按位或),!(非)和 &&(邏輯與),||(邏輯或),和~(取反)是不一樣的,按位與顧名思義,是位和位之間運(yùn)算,他們運(yùn)算是能夠得出一個(gè)具體的結(jié)果的,而邏輯與是對(duì)左右兩個(gè)表達(dá)式的真假進(jìn)行判斷,得出的結(jié)果不是真就是假。
    關(guān)于與或非的真值表
與或非是數(shù)字電路最基本的知識(shí)點(diǎn),必須要掌握這個(gè)知識(shí)點(diǎn)。
    &, 就好比乘法一樣,如果A和B都為1,那么結(jié)果就是1,如果有一個(gè)為0,則輸出都是0,。
    |,   就好比加法運(yùn)算,如果A或者B有一個(gè)是1,那么結(jié)果就是1,否則就是0;

    !,     輸入為0時(shí),輸出為1,輸入為1時(shí),輸出為0;
   !|,或非門(mén),只有A和B輸入全部位0時(shí),輸出才為1,否則全為0;
   !&,與非門(mén),只有A和B全部輸入為1時(shí),輸出才為0,否則全為1;
   異或門(mén),如果A和B相等時(shí),輸出都是0,否則輸出都是1。


好了,今天就到這里吧,明天繼續(xù)。。。代碼奉獻(xiàn)上。。。

001 LED點(diǎn)亮.rar (25.11 KB, 下載次數(shù): 59)

002 LED閃爍.rar (27.56 KB, 下載次數(shù): 51)




作者: 哈哈我哈哈    時(shí)間: 2018-10-13 15:25
真好,感謝樓主
作者: dabing89    時(shí)間: 2018-10-14 14:54
哈哈我哈哈 發(fā)表于 2018-10-13 15:25
真好,感謝樓主

謝謝,一起進(jìn)步
作者: 一片到    時(shí)間: 2018-10-15 14:37
有位老師說(shuō),盡量不要用延時(shí)的習(xí)慣。
作者: dabing89    時(shí)間: 2018-10-15 19:37
一片到 發(fā)表于 2018-10-15 14:37
有位老師說(shuō),盡量不要用延時(shí)的習(xí)慣。

你說(shuō)的對(duì),后面我們基本都是用定時(shí)器了,延時(shí)確實(shí)不實(shí)用
作者: yaoming110    時(shí)間: 2018-10-18 16:14
收了下
作者: yaoming110    時(shí)間: 2018-10-18 16:14
真好,感謝樓主

作者: 臺(tái)風(fēng)天然粉    時(shí)間: 2018-10-30 12:23
延時(shí)要的,CPU處理太快了
作者: vectorxu    時(shí)間: 2018-11-1 14:17

真好,感謝樓主
作者: qiangcn    時(shí)間: 2018-11-12 23:29
感謝樓主。講的很好!
作者: friend114    時(shí)間: 2018-12-4 19:27

真好,感謝樓主
作者: 時(shí)光倒影    時(shí)間: 2018-12-13 11:39
謝謝樓主分享
作者: 2019keil    時(shí)間: 2019-1-23 15:04
感謝樓主
作者: supper戰(zhàn)    時(shí)間: 2019-2-16 22:26
不錯(cuò)不錯(cuò),直擊要點(diǎn)
作者: a89588038    時(shí)間: 2019-3-6 11:56
感謝樓主
作者: zhouqihang    時(shí)間: 2019-3-28 20:00
感謝  小白學(xué)習(xí)
作者: 鵝鵝鵝鵝    時(shí)間: 2019-4-8 16:22
真好謝謝
作者: sugui    時(shí)間: 2019-7-9 15:50
太棒了,感謝!
作者: cphnkj188    時(shí)間: 2019-7-24 18:13
真好,講的很透徹,受益匪淺啊!
作者: 木示    時(shí)間: 2020-3-19 21:01
感謝分享
作者: 256339    時(shí)間: 2020-8-21 15:25
第二組代碼那,i是要小于6嗎,不應(yīng)該小于7嗎,左移一共要點(diǎn)亮8個(gè)燈,右移的時(shí)候點(diǎn)亮7個(gè)燈,這里沒(méi)看懂,希望樓主能解答一下,謝謝、

作者: Tuier    時(shí)間: 2020-12-13 14:26
清晰透徹,初學(xué)者的好資料
作者: aktuan007    時(shí)間: 2021-2-9 22:49
樓主沒(méi)有講循環(huán)移位啊
作者: szkalwa    時(shí)間: 2021-3-13 18:09
是STC單片機(jī)嗎,謝謝
作者: 黃sir    時(shí)間: 2021-3-28 20:38
這個(gè)直接用循環(huán)移位函數(shù)就好了 ,直接一個(gè)循環(huán)
作者: 內(nèi)卷卷    時(shí)間: 2021-12-2 16:44
雖然現(xiàn)在不是很理解其中意思,但是很謝謝樓主
作者: free1sxh    時(shí)間: 2022-3-4 23:16
受益匪淺,感謝樓主
作者: wyl138    時(shí)間: 2022-10-31 20:15
樓主提供的學(xué)習(xí)資料很有用,可惜我沒(méi)那么多下載幣,繼續(xù)努力!。。
作者: Longan.Wang    時(shí)間: 2022-11-11 17:05
還可以定義數(shù)組方式,把所有狀態(tài)都存放在數(shù)組里,用一個(gè)for循環(huán)調(diào)用就可以了。
這種可擴(kuò)展性強(qiáng),把數(shù)組定義到程序flash里,擴(kuò)展?fàn)顟B(tài)數(shù)量取決于flash大小。




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 一区二区三区在线免费观看 | japan25hdxxxx日本| 不卡的av在线 | 中文字幕一区二区三区日韩精品 | 国产在线第一页 | 九九九久久国产免费 | 亚洲电影第三页 | a在线观看免费 | 欧美激情黄色 | 国产成人免费 | 国产激情视频网站 | 亚洲一区 中文字幕 | 亚洲国产一区二区视频 | 精品中文字幕在线观看 | 91久久国产综合久久 | 精品中文字幕久久 | 免费午夜视频 | 免费观看的黄色网址 | 久久精品亚洲精品国产欧美 | 黄色操视频| 亚洲a视频 | 午夜久久久 | 久久精品国产免费看久久精品 | 欧美视频一级 | 成人国产精品久久 | 午夜精品一区二区三区三上悠亚 | 欧美国产精品一区二区三区 | 91精品久久久久久久久久入口 | 欧美亚洲国产一区 | 在线毛片网 | 国产精品久久久久久久一区二区 | 天堂成人av | av日日操| 亚洲精品一区二区三区蜜桃久 | 日本不卡免费新一二三区 | 日韩av成人在线 | 91精品国产综合久久久久久丝袜 | 成人免费视频一区二区 | 成人亚洲性情网站www在线观看 | 最新中文字幕久久 | 久久伊人精品 |