色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          Linglong之AVR程例3 流水燈

          作者: 時(shí)間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
          下面我們寫流水燈的程序。LED程序的書寫是我們學(xué)習(xí)單片機(jī)很基礎(chǔ)的,但我是我覺的還是很重要的。能寫好LED程序?qū)ξ覀兝斫釧VR IO口的操作很有好處呀。

          先這里簡(jiǎn)單的介紹下我的硬件,8個(gè)LED接到PA口上,公共端接地。

          本文引用地址:http://cafeforensic.com/article/201611/319946.htm

          程序:

          #include <avr/io.h> //調(diào)用AVR IO口頭文件

          #include //調(diào)用GCC本身的調(diào)時(shí)程序。

          int main(void) //主程序

          {

          unsigned char i = 0; //定義循環(huán)變量

          DDRA = 0xff; //定義PA口為輸出態(tài)

          while(1) //主程序循環(huán)語(yǔ)句

          {

          PORTA=0x01<//循環(huán)點(diǎn)亮IO口的燈

          if(++i>=8)i=0; //對(duì)循環(huán)變量的控制,讓其循環(huán)8次

          _delay_ms(1000); //延時(shí)程序

          }

          }
          這里我們主要講講while(1)語(yǔ)句部分。

          第一句:PORTA = 0x01<

          在主函數(shù)中我們定義了i變量,我們并對(duì)其賦值為0.(這里其實(shí)賦不賦0,效果都是一樣的,但是我還是希望大家賦值,這樣比較規(guī)范)

          這一句第一次執(zhí)行的意思就是0x01左移0次,并將左移后的結(jié)果賦結(jié)PA口。0x01就是二進(jìn)值的0000 0001,左移0位還是0000 0001.那么這樣就是第一個(gè)LED點(diǎn)亮了。

          第二句:if(++i>=8)i=0;

          這里用的是一個(gè)if語(yǔ)句,這句話的意思就是如果i的值大于等于8了,那么將其清0;如果沒有i就是其本身的值。

          這里一個(gè)要重點(diǎn)注意的地方就是++i,而不是i++。這兩個(gè)的區(qū)別就是是先加再執(zhí)行,還是執(zhí)行了再加。這是有不同的,大家可以試著改一下,體會(huì)下這兩個(gè)的不一樣。

          第三句就是延時(shí)了沒有什么好說的。

          現(xiàn)在我們?cè)僦匦碌幕仡櫹逻@個(gè)while(1)語(yǔ)句的一個(gè)執(zhí)行過程。首先0x01左移0位,將0x01賦給PA口,點(diǎn)亮第一個(gè)LED。再對(duì)i進(jìn)行自加0+1=1,1〈 8則不對(duì)其進(jìn)行清0操作,最后是延時(shí)一會(huì)。

          第二次執(zhí)行PORTA=0x01<

          如此循環(huán)下去,當(dāng)循環(huán)8次后i被清0,再?gòu)牡谝粋€(gè)LED亮起。

          這樣流水燈的效果就出來了。



          關(guān)鍵詞: AVR程例流水

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉