英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 2787|回复: 1
打印 上一主题 下一主题

PIC的AD模块精度

[复制链接]
跳转到指定楼层
1#
发表于 2009-5-20 13:39:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PIC的AD模块可以用AD中断的方式的方式,也可以用查询的方式,但我需要多次求平均,可我发现我的程序16次只能做第一次转换,请问为什么?          我的AD取得电压值很小,他是判断此电压是否为零的,既然此AD只能准确到8位,那该用什么方法提高精度呢,能不能提高到10位以上?
;=========================================================  
; A/D转换子程序,采样16次并取平均值
;
;---------------1次A/D转换子程序--------------------------
ADCONV
  CALL INTADC
   CALL DELAY1
   BSF ADCON0,GO ;A/D START
ADCONV1
   BTFSS PIR1,ADIF
   GOTO ADCONV1
   MOVF ADRESH,W
   MOVWF ADH
   BANKSEL ADRESL
   MOVF ADRESL,W
  BANKSEL PORTC
   MOVWF ADL
  RETURN
;------------------------16次求和--------------------------
ADAVG
  MOVLW 10H
  MOVWF COUNT0
ADAVG1  
  CALL ADCONV
  BCF STATUS,C
  MOVF ADL,0
  ADDWF TEMPL,1
  MOVF ADH,0
  ADDWF TEMPH,1
   BTFSC STATUS,C ;DO WITH "C"
  CALL ADDONE
GO_ON
  DECFSZ COUNT0,1
  GOTO ADAVG1
  MOVLW 04H
  MOVWF RL
GO1
  BCF STATUS,0
  RRF TEMPL,1
  RRF TEMPH,1
  DECFSZ RL,1
  GOTO GO1

  RETURN
ADDONE
  MOVLW 01H
  ADDWF TEMPH
  RETURN
;-----------------------------------------------
INTADC
  BANKSEL ADCON0
  MOVLW 0X41
  MOVWF ADCON0  BANKSEL ADCON1
  MOVLW 0X8E
  MOVWF ADCON1  BANKSEL ADCON0
  RETURN
;-----------------------------------------------
2#
 楼主| 发表于 2009-5-20 13:39:40 | 只看该作者
我找到问题了,我在AD中断溢出后没有及时清除溢出标志,后加上就没事了。

;---------------1次A/D转换子程序--------------------------
ADCONV
  CALL INTADC
   CALL DELAY1
   BSF ADCON0,GO ;A/D START
   ADCONV1
   BTFSS PIR1,ADIF
   GOTO ADCONV1
   MOVF ADRESH,W
   MOVWF ADH
   BANKSEL ADRESL
   MOVF ADRESL,W
  BANKSEL PORTC
   MOVWF ADL

   BCF PIR1,ADIF                    ;加一句清中断溢出标志即可
  RETURN
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-12-25 22:01 , Processed in 0.055988 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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