PIC的AD转换

2020-02-09 11:45发布

我用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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
youmcu
2020-02-09 22:13
A/D转换参考程序:
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 中

一周热门 更多>