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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機多路數(shù)據(jù)采集匯編源程序

          單片機多路數(shù)據(jù)采集匯編源程序

          作者: 時間:2012-05-12 來源:網(wǎng)絡(luò) 收藏

          程序在下面

          單路采集程序:
          MOV DPTR,#0F8FFH
          MOV R0,#00H ;將存儲器的首地址存在R0,R1兩個寄存器中
          MOV R1,#00H
          MOV R2,#200D ;設(shè)置循環(huán)
          MOV R3,#4
          MOV R4,#8D

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

          MAIN:
          CLR P1.1 ;選中ADC0809
          PUSH DPL ;DPTR入棧
          PUSH DPH
          MOVX @DPTR,A ;啟動AD轉(zhuǎn)換
          ACALL DELAY ;延時5ms 保證采集數(shù)據(jù)頻率為200HZ
          MOVX A,@DPTR ;讀數(shù)據(jù)
          SETB P1.1 ;選中存儲器
          MOV DPL,R0 ;將存儲器的地址給DPTR
          MOV DPH,R1
          MOVX @DPTR,A ;存數(shù)據(jù)
          INC DPTR ;指向下一存儲單元
          MOV R0,DPL ;將該單元地址重新存入寄存器中
          MOV R1,DPH
          POP DPH ;DPTR出棧
          POP DPL

          DJNZ R2,MAIN
          DJNZ R3,MAIN
          DJNZ R4,MAIN
          SJMP $

          DELAY: ;延時程序 延時5ms
          MOV R5,#100D
          MOV R6,#24D
          LA:DJNZ R5,$
          DJNZ R6,LA
          RET

          END
          循環(huán)采集程序:
          MOV 30H,#00H ;將八塊存儲器的首地址分別存在30-3F共16個內(nèi)部存儲單元
          MOV 31H,#00H
          MOV 32H,#00H
          MOV 33H,#20H
          MOV 30H,#00H ;將八塊存儲器的首地址分別存在30-3F共16個內(nèi)部存儲單元
          MOV 31H,#00H
          MOV 32H,#00H
          MOV 33H,#20H
          MOV 34H,#00H
          MOV 35H,#40H
          MOV 36H,#00H
          MOV 37H,#60H
          MOV 38H,#00H
          MOV 39H,#80H
          MOV 3AH,#00H
          MOV 3BH,#0A0H
          MOV 3CH,#00H
          MOV 3DH,#0C0H
          MOV 3EH,#00H
          MOV 3FH,#0E0H

          MOV R2,#200D ;設(shè)置外循環(huán)200*40共8000次
          MOV R3,#40D

          MAIN: MOV DPTR,#0F8FFH ;0通道的地址
          MOV R0,#30H ;R0,R1作為存儲器地址的中間變量
          MOV R1,#31H
          MOV R4,#8 ;設(shè)置內(nèi)循環(huán)

          LOOP: CLR P1.1 ;選中ADC0809
          PUSH DPL ;DPTR入棧
          PUSH DPH
          MOVX @DPTR,A ;輸入一個數(shù)啟動AD轉(zhuǎn)換
          ACALL DELAY ;等待延時以達到每秒采集200個數(shù)據(jù)
          MOVX A,@DPTR ;讀數(shù)據(jù)
          SETB P1.1 ;選中存儲器
          MOV DPL,@R0 ;將存儲器的地址給DPTR
          MOV DPH,@R1
          MOVX @DPTR,A ;存數(shù)據(jù)
          INC DPTR ;指向下一存儲單元
          MOV @R0,DPL ;將該單元地址重新存入內(nèi)部數(shù)據(jù)存儲單元
          MOV @R1,DPH
          INC R0 ;指向下一塊存儲器的地址
          INC R0
          INC R1
          INC R1
          POP DPH ;DPTR出棧
          POP DPL
          INC DPH ;指向下一通道地址
          DJNZ R4,LOOP ;內(nèi)循環(huán)

          DJNZ R2,MAIN ;外循環(huán)
          DJNZ R3,MAIN
          SJMP $

          DELAY: ;延時程序 延時600us
          MOV R5,#100
          MOV R6,#3
          LA:DJNZ R5,$
          DJNZ R6,LA
          RET

          END



          評論


          相關(guān)推薦

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