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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)AD轉(zhuǎn)換匯編程序

          PIC單片機(jī)AD轉(zhuǎn)換匯編程序

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

          ;*********軟件延時子程序****************
          DELAY
          MOVLW 0XFF
          MOVWF DEYH
          AGAIN1 MOVLW 0XFF
          MOVWF DEYL
          AGAIN2 NOP
          DECFSZ DEYL
          GOTO AGAIN2
          DECFSZ DEYH
          GOTO AGAIN1
          RETURN

          ;*************** A/D中斷服務(wù)子程序*****************
          INTSERVE
          BCF PIR1,ADIF ;清除A/D轉(zhuǎn)換標(biāo)志
          MOVF ADRESH,W
          MOVWF INDF0 ;讀取并存儲A/D轉(zhuǎn)換結(jié)果的高兩位
          INCF FSR0L
          MOVF ADRESL,W
          MOVWF INDF0
          INCF FSR0L ;讀取并存儲A/D轉(zhuǎn)換結(jié)果的低8位
          DECF TIMES,1 ;A/D轉(zhuǎn)換次數(shù)減1
          MOVLW 0X02
          MOVWF DEY
          LOOP13 DECFSZ DEY,1
          GOTO LOOP13 ;給予一定的延時,保證兩次A/D轉(zhuǎn)換期間
          ;2Tad的間隔時間和電容的采樣時間
          BSF ADCON0,2 ;啟動下一次A/D轉(zhuǎn)換
          RETFIE ;中斷返回

          ;********** LED閃爍報(bào)警子程序*************
          ALARM
          MOVLW 0X01
          XORWF FLAG,1
          BTFSS FLAG,0
          CALL DISPLAY0 ;調(diào)用顯“0”子程序
          NOP
          BTFSC FLAG,0
          CALL DISPDARK ;調(diào)用顯“DARK”子程序
          RETURN

          ;**********顯全0子程序*************
          DISPLAY0
          TRANSMIT ;SPI發(fā)送顯示子模塊
          CLRF PORTA ;LACK送低電平,為鎖存做準(zhǔn)備
          MOVLW 0X08
          MOVWF TIMES
          LOOP80 MOVLW 0XC0 ;顯示值為0,C0H為0的段碼
          MOVWF SSPBUF ;啟動發(fā)送
          WAIT
          BTFSS PIR1,SSPIF
          GOTO WAIT ;等待發(fā)送結(jié)束
          BCF PIR1,SSPIF ;清除中斷標(biāo)志
          DECFSZ TIMES
          GOTO LOOP80 ;一次要發(fā)送完8個數(shù)據(jù)
          BSF PORTA,5 ;最后給一個鎖存信號,代表一次顯示任務(wù)完成
          RETURN

          ;**********顯示全DARK子程序*************
          DISPDARK
          TRANSMIT1 ;SPI發(fā)送顯示子模塊
          CLRF PORTA ;LACK送低電平,為鎖存做準(zhǔn)備
          MOVLW 0X08
          MOVWF TIMES
          LOOP8D MOVLW 0XFF ;顯示值為0,F(xiàn)FH為DARK的段碼
          MOVWF SSPBUF ;啟動發(fā)送
          WAIT1
          BTFSS PIR1,SSPIF
          GOTO WAIT1 ;等待發(fā)送結(jié)束
          BCF PIR1,SSPIF ;清除中斷標(biāo)志
          DECFSZ TIMES
          GOTO LOOP8D ;一次要發(fā)送完8個數(shù)據(jù)
          BSF PORTA,5 ;最后給一個鎖存信號,代表一次顯示任務(wù)完成
          RETURN

          ;*********A/D轉(zhuǎn)換主程序************
          ;轉(zhuǎn)載請保留文章原始出處http://www.51hei.com 單片機(jī)網(wǎng)
          MAIN NOP
          CALL INITIAL ;初始化
          LOOP
          MOVLW 0X80 ;轉(zhuǎn)換結(jié)果右移,及ADRESH寄存器的高6位為"0"
          ;且把RA2口設(shè)置為模擬量輸入式(注意后面要把
          ; RA5改成數(shù)據(jù)I/O方式,以輸出顯示瑣存信號)
          MOVWF ADCON1
          MOVLW BEGFSR
          MOVWF FSR0L ;給出間接尋址時FSR的初值
          MOVLW 0X0A
          MOVWF TIMES ;每一輪A/D連續(xù)采樣10次
          BSF INTCON,GIE ;總中斷打開,及可以進(jìn)行A/D轉(zhuǎn)換中斷
          BSF ADCON0,2 ;啟動A/D轉(zhuǎn)換
          LOOP1 MOVF TIMES,W
          BTFSS STATUS,Z
          GOTO LOOP1 ;等待A/D轉(zhuǎn)換中斷
          BCF INTCON,GIE ;A/D轉(zhuǎn)換次數(shù)到10次,關(guān)閉中斷
          NOP
          CLRF ACCBHI
          CLRF ACCBLO ;雙精度加法的結(jié)果寄存器清0,為后面準(zhǔn)備
          MOVLW 0X0A
          MOVWF TIMES
          MOVLW BEGFSR
          MOVWF FSR0L
          LOOP15 MOVF INDF0,W
          MOVWF ACCAHI
          INCF FSR0L
          MOVF INDF0,W
          MOVWF ACCALO
          INCF FSR0L
          CALL D_ADD
          DECFSZ TIMES
          GOTO LOOP15
          NOP ;計(jì)算得到10次A/D轉(zhuǎn)換的和
          MOVLW 0X84
          MOVWF ADCON1 ;把RA5設(shè)成數(shù)字I/O,以輸出顯示鎖存信號
          MOVLW 0X14
          MOVWF ACCAHI
          CLRF ACCALO
          CALL D_SUB ;通過雙精度減判斷模擬量是否達(dá)到報(bào)警限
          ;度(1400H=200H*0AH,200H與2.5V對應(yīng))
          BTFSS ACCBHI,7
          CALL ALARM ;若ACCBHI的最高位為1,則證明減法結(jié)
          ;果為負(fù),即直流電壓值超過2.5V,則報(bào)警
          NOP
          BTFSC ACCBHI,7
          CALL DISPLAY0 ;若沒有超過2.5V,則不報(bào)警,8個LED
          ;同時顯示0
          CALL DELAY ;軟件延時,使電壓檢測不要過于頻繁
          GOTO LOOP ;重復(fù)檢測輸入的直流電壓值
          END

          單片機(jī)相關(guān)文章:單片機(jī)教程


          單片機(jī)相關(guān)文章:單片機(jī)視頻教程


          單片機(jī)相關(guān)文章:單片機(jī)工作原理



          上一頁 1 2 下一頁

          評論


          相關(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); })();