搜索
bottom↓
回复: 5

PIC的AD转换

[复制链接]

出0入0汤圆

发表于 2010-1-15 17:18:58 | 显示全部楼层 |阅读模式
我用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

出0入0汤圆

发表于 2010-1-15 20:03:49 | 显示全部楼层
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?

出0入0汤圆

 楼主| 发表于 2010-1-16 09:56:59 | 显示全部楼层
读出来的就是AD值呀,你能不能直接给个参考程序,我以前用AVR的多点,刚刚学PIC

出0入0汤圆

发表于 2010-1-16 10:32:23 | 显示全部楼层
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 中

出0入0汤圆

发表于 2010-1-16 10:38:36 | 显示全部楼层
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 中

出0入0汤圆

 楼主| 发表于 2010-1-23 01:13:34 | 显示全部楼层
呵呵,这几天忙,没来,问题OK了,不是程序的问题,程序能正常使用的。是APPLE的电脑为自动测试串口波特率的,发一个字节它识别不出来,晕了两天,呵呵!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 17:49

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表