<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)綜合流水燈C程序

          AVR單片機(jī)綜合流水燈C程序

          作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
          自己焊了塊實(shí)驗(yàn)板,就是研究了一下AVR單片機(jī),因?yàn)榍懊嬉荒陼r(shí)間里一直苦戰(zhàn)51單片機(jī),有了一定的基礎(chǔ),所以看了一下視頻,原來(lái) AVR單片機(jī)主要有三個(gè)寄存器設(shè)置IO口,DDR(X)、PORT(X) BIT(X)等寄存器,至于其它的編程思想,我認(rèn)為和51那些差不多,看來(lái)前輩說(shuō)得對(duì)啊,“學(xué)會(huì)了一種單片機(jī),學(xué)其它的很容易入手”,今天總算得到了驗(yàn)證,于是寫(xiě)出了下面的流水燈程序!

          #include //AVR單片機(jī)頭文件包含
          #define uchar unsigned char//宏定義
          #define uint unsigned int//
          /*************************************************************/
          /*********************延時(shí)子程序******************************/
          /*************************************************************/
          void delay(uint z)//一個(gè)帶參數(shù),不帶返回值的子函數(shù)
          {
          uint x,y;//定義兩個(gè)變量
          for(x=0;x<100;x++)//外循環(huán)
          for(y=z;y>0;y--);//內(nèi)循環(huán)
          }
          /*************************************************************/
          /*********************左移流水燈******************************/
          /*************************************************************/
          void zouyi()
          {
          uchar shu,j;//定義兩個(gè)變量,shu表示要存的數(shù),j表示循環(huán)變量
          shu=0x01;//先將數(shù)變量賦值,即讓左邊第1顆燈亮起
          for(j=0;j<9;j++)//循環(huán)9次
          {
          PORTA=~shu;//將要顯示的數(shù)給寄存器
          delay(3550);//調(diào)用延時(shí)子程序
          shu<<=1;//將要顯示的數(shù)左移1位,這樣就形成了左移
          }
          }
          /*************************************************************/
          /*********************右移流水燈******************************/
          /*************************************************************/
          void youyi()
          {
          uchar shu,j;//定義兩個(gè)變量,shu表示要存的數(shù),j表示循環(huán)變量
          shu=0x80;//先將數(shù)變量賦值,即讓右邊第1顆燈亮
          for(j=0;j<9;j++)//循環(huán)9次
          {
          PORTA=~shu;//將要顯示的數(shù)給寄存器
          delay(3550);//調(diào)用延時(shí)子程序
          shu>>=1;//將要顯示的數(shù)右移1位,這樣就形成了右移
          }
          }
          /*************************************************************/
          /*********************左移跑馬燈******************************/
          /*************************************************************/
          void zoupao()
          {
          uchar shu,j;//定義兩個(gè)變量,shu表示要存的數(shù),j表示循環(huán)變量
          shu=0xfe;//先將數(shù)變量賦值,即讓左邊第1顆燈亮
          for(j=0;j<9;j++)//循環(huán)9次
          {
          PORTA=shu;//將要顯示的數(shù)給寄存器
          delay(1000);//調(diào)用延時(shí)子程序
          shu<<=1;//將要顯示的數(shù)左移1位,這樣就亮起2顆燈.....3顆燈
          }
          }
          /*************************************************************/
          /*********************右移跑馬燈******************************/
          /*************************************************************/
          void youpao()
          {
          uchar shu,j;//定義兩個(gè)變量,shu表示要存的數(shù),j表示循環(huán)變量
          shu=0x7f;//先將數(shù)變量賦值,即讓右邊第1顆燈亮
          for(j=0;j<9;j++)//循環(huán)9次
          {
          PORTA=shu;//將要顯示的數(shù)給寄存器
          delay(1000);//調(diào)用延時(shí)子程序
          shu>>=1;//將要顯示的數(shù)右移1位,這樣就亮起2顆燈.....3顆燈
          }
          }
          /*************************************************************/
          /******************中間到兩邊跑馬燈***************************/
          /*************************************************************/
          void zhongjian()
          {
          uchar shu,j;//定義兩個(gè)變量,shu表示要存的數(shù),j表示循環(huán)變量
          shu=0x08;//先將數(shù)變量賦值,即中間那顆LED
          for(j=0;j<6;j++)//循環(huán)6次
          {
          PORTA=~shu;//將要顯示的數(shù)給寄存器
          delay(2000);//調(diào)用延時(shí)子程序
          shu<<=1;//將要顯示的數(shù)左移1位,這樣就形成了從中間到左邊亮起
          }
          shu=0x08;//先將數(shù)變量賦值,即中間那顆LED亮
          for(j=0;j<5;j++)//循環(huán)5次
          {
          PORTA=~shu;//將要顯示的數(shù)給寄存器
          delay(2000);//調(diào)用延時(shí)子程序
          shu>>=1;//將要顯示的數(shù)右移1位,這樣就形成了從中間到右邊亮起
          }
          }
          /*************************************************************/
          /************************主程序*******************************/
          /*************************************************************/
          void main()
          {
          uchar shu,j;//定義兩個(gè)變量,shu表示要存的數(shù),j表示循環(huán)變量
          DDRA=0xff;//設(shè)置PA口全為輸出口
          while(1)//大循環(huán)
          {
          zouyi();//調(diào)用左流水燈子程序
          youyi();//調(diào)用右流水燈子程序
          zoupao();//調(diào)用左跑馬燈子程序
          youpao();//調(diào)用右跑燈子程序
          zhongjian();//調(diào)用從中間到兩邊流水燈子程序
          zoupao();//調(diào)用左跑馬燈子程序
          zhongjian();//調(diào)用從中間到兩邊流水燈子程序
          youyi();//調(diào)用右流水燈子程序
          zouyi();//調(diào)用左流水燈子程序
          zhongjian();//調(diào)用從中間到兩邊流水燈子程序
          }
          }

          本文引用地址:http://www.ex-cimer.com/article/201611/323387.htm


          關(guān)鍵詞: AVR單片機(jī)流水燈C程

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();