我用PIC16F726时,VCC为3.67V锂电通过两个电阻(20K和10K)分压后为1/3的VCC(实际测试为1.22),读出来的值一直是F9,FF,F9,FF。。
这样变化。
ADC部分程序如下,请大家帮忙看看
BCF STATUS,5
BCF STATUS,6
CLRF 05H
CLRF 06H
CLRF 07H
MOVLW 2CH
MOVWF ADCON0 ;AN11
BSF STATUS,5
BCF STATUS,6
MOVLW 73H
MOVWF ADCON1
MOVLW 0C2H
MOVWF FVRCON ;2.048v
MOVLW 10H
MOVWF ANSELB
MOVLW 17H
MOVWF TRISB
ADC_CONVERSION
BSF ADCON0,0
CALL SYNC_BYTE_DELAY20MS
BSF ADCON0,1
BTFSC ADCON0,1
GOTO $-1
BCF ADCON0,0
MOVF ADRES,0
MOVWF ADCRESULT
BCF PORT_ADC_ON,PIN_ADC_ON
RETURN
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
"读出来的值一直是F9,FF,F9,FF。。"
read what?
AdConvert bsf STATUS,RP0
movlw 0x80 ; 0x80 =右对齐 使用VSS-VDD为参考电位
movwf ADCON1 ; 转换结果右移,ADRESH寄存器的高6位为"0"
; 且把RA RE口置为8路模拟量输入方式
bcf STATUS,RP0
movlw B'01000001' ; 选择AD通道为AN?,且打开A/D转换器
movwf ADCON0 ; 在工作状态,且使AD转换时钟为8tosc
call T20US ; 延时20us,给予一定的延时,保证电容充电时间
ADks bsf ADCON0,GO ; 开始 A/D 转换 GO对应ADCON0 2位
WaitAD btfsc ADCON0,GO ; 用查询方式等待A/D转换结束
goto WaitAD
bsf STATUS,RP0
movf ADRESL,W
bcf STATUS,RP0
movwf adatal ; A/D 转换值存入ADdatal 中
movf ADRESH,W
movwf ADdatah ; A/D 转换值存入ADdatah 中
一周热门 更多>