將PIC16C711片內(nèi)8位A/D提高到11位的方法
以下是使用PIC16C711指令系統(tǒng)完成11位A/D轉(zhuǎn)換的程序段。
BSF STATUS,RP0;選頁面1
MOVLW 00000010B ;RA0、RA1為模擬通道
MOVWF ADCON1 ;內(nèi)部參考電壓
BCF STATUS,RP0 ;選頁面0
MOVLW 11000001B ;選RA0通道和內(nèi)部時鐘
MOVWF ADCON0
MOVLW .125 ;延時125μs,等待輸入
CALL WAIT ;穩(wěn)定
BSF ADCON0,GO ;啟動A/D
LOOP BTFSC ADCON0,GO ;判斷A/D完成否
GOTO LOOP
MOVF ADRES,W ;取轉(zhuǎn)換結(jié)果
ANDLW 0E0 ;屏蔽低5位
MOVWF D1 ;存入D1
BCF STATUS,C
RRF D1,1 ;右移5次
RRF D1,1
RRF D1,1
RRF D1,1
RRF D1,1
MOVF D1,W
MOVWF PORTB ;檔位輸出
MOVLW 11001001B ;選RA1通道
MOVWF ADCON0
MOVLW .60 ;延時60μs
CALL WAIT
BSF ADCON0,GO ;啟動A/D
LOOP1 BTFSC ADCON0,GO ;判斷A/D完成否
GOTO LOOP1
MOVF ADRES,W ;A/D轉(zhuǎn)換結(jié)果存D0
MOVWF D0
WAIT MOVWF TEMP ;延時子程序
NEXT DECFSZ TEMP,1
GOTO NEXT
RETURN
用這種方法實現(xiàn)的11位A/D轉(zhuǎn)換速度快PIC16C711基本上都是單周期指令,在4MHz振蕩頻率下指令周期1μs,進(jìn)行1次A/D轉(zhuǎn)換最短時間20μs;2次A/D轉(zhuǎn)換40μs;2個運放變換時間20μs×2=40μs??偟霓D(zhuǎn)換時間為百μs級。
本文介紹的方法電路簡單,速度快,調(diào)試方便,已用于我們研制的單片機電阻爐溫自動控制系統(tǒng)中,取得了預(yù)期的效果。對于其他帶8位、10位A/D的單片機稍加改動均可使用,具有推廣價值。
評論