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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
millwood0
1楼-- · 2020-02-09 16:01
first of all, you need to learn how to program anything appropriately. The most important three things in programming are comment, comment and comment. Only a piss-poor programmer will program without commenting the code extensively.

"读出来的值一直是F9,FF,F9,FF。。"

read what?
mick
2楼-- · 2020-02-09 19:03
读出来的就是AD值呀,你能不能直接给个参考程序,我以前用AVR的多点,刚刚学PIC
youmcu
3楼-- · 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 中
youmcu
4楼-- · 2020-02-10 00:09
 精彩回答 2  元偷偷看……
mick
5楼-- · 2020-02-10 00:10
呵呵,这几天忙,没来,问题OK了,不是程序的问题,程序能正常使用的。是APPLE的电脑为自动测试串口波特率的,发一个字节它识别不出来,晕了两天,呵呵!

一周热门 更多>