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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于SPCE061A單片機匯編語實現(xiàn)的流水燈

          基于SPCE061A單片機匯編語實現(xiàn)的流水燈

          作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
          //====================================================================//

          //名稱:流水燈
          //功能描述:發(fā)光二極管單向循環(huán)點亮。SPCE061A單片機匯編語言實現(xiàn)

          //===================================================================//

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

          .include SPCE061A.inc //包含頭文件
          .ram
          .var R_LEDControl //定義LED控制變量
          .var R_DaleyControl //定義延時程序控制變量
          .code
          .public _main

          //===================================================================//
          //函數(shù)名:主函數(shù)
          //功能描述:控制發(fā)光二極管單向循環(huán)點亮
          //===================================================================//

          _main:
          r1=0x00ff //定義IOA口為同向輸出,并輸出低電平
          [P_IOA_Dir]=r1
          [P_IOA_Attrib]=r1
          r1=0x0000
          [P_IOA_Data]=r1 //IO口電平初始化,如果是接共陽極的LED,則選用高電平輸出
          r1=0x0001
          [R_LEDControl]=r1
          L_MAINloop: //通過循環(huán)左移實現(xiàn)LED單向循環(huán)點亮程序段
          r1=[R_LEDControl]
          [P_IOA_Data]=r1 //點亮第一個LED
          r1=r1 LSL 1 //循環(huán)左移語句
          CMP r1,0x0100 //控制點亮的LED在IOA低八位之內(nèi)。CMP指令進行做差比較
          JNE NoOver //該指令的意思為:不等于轉(zhuǎn)接到后邊的程序段
          r1=0x0001 //如果等于的話,則對IOA口的輸出初始化
          NoOver:
          [R_LEDControl]=r1
          r1=0x0000 //給延時函數(shù)的計數(shù)賦初值
          [R_DaleyControl]=r1
          CALL L_Daleyloop //轉(zhuǎn)到延時子函數(shù)
          JMP L_MAINloop //循環(huán)控制LED的點亮

          //===================================================================//
          //函數(shù)名:延時函數(shù)
          //功能描述:通過計數(shù)實現(xiàn)延時,不精確延時
          //===================================================================//

          L_Daleyloop:
          r1=0x0001
          [P_Watchdog_Clear]=r1 //清看門狗
          r1=[R_DaleyControl]
          r1+=1 //延時計數(shù)加1
          [R_DaleyControl]=r1
          JNZ L_Daleyloop //JNZ指令標(biāo)示“非0則轉(zhuǎn)到loop”。該語句的意思是“R_DaleyControl的值不為0則轉(zhuǎn)到L_Daleyloop”。
          RETF //一般情況下,循環(huán)加法的值到65535時為最大值,超過該值時則會從0算起,及65536標(biāo)示0




          評論


          技術(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); })();