佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1860|回复: 5

ADC setting

[复制链接]
发表于 24-4-2008 10:48 PM | 显示全部楼层 |阅读模式
我是PIC的新手,正在做FINAL PROJECT, 想请问如何setting adc?
我用的是16F877A, asm language...
我想要adc setting 的 sample templete...
谢谢各位!
回复

使用道具 举报


ADVERTISEMENT

发表于 25-4-2008 08:37 AM | 显示全部楼层
原帖由 dns 于 24-4-2008 10:48 PM 发表
我是PIC的新手,正在做FINAL PROJECT, 想请问如何setting adc?
我用的是16F877A, asm language...
我想要adc setting 的 sample templete...
谢谢各位!

首先, 欢迎你新手, 也希望你的project完成后, 继续回来这里帮助其他有需要的新手网友。

我不会ASM, 我建议你用CCS C。(其他的我不会
还有你要的Sample code, 只要你Google, 可以找到很多的。。。

如你要CCS C的sample code, 你可以看旧帖。

如你还是喜欢用ASM, 那以下的ASM 供你参考:

  1. ;16f877 a/d test routine
  2. ;
  3. ;TEST CIRCUIT:
  4. ;pin 11 & 32 = 5VDC
  5. ;pin 12 & 31 = 0VDC
  6. ;pin 1 = 5VDC
  7. ;pin 2 = 0 - 5 VDC analog input (center tap on 20k variable resistor)
  8. ;pin 13 & 14 = 4MHz crystal with 18pF capacitors to 0VDC
  9. ;pin 15,16,17,18,23,24,25,26 PORTC outputs each to 330 ohm resistor
  10. ;       in series with LED to 0VDC
  11. ;**********************************************************

  12.         __config _LVP_OFF & _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _BODEN_OFF
  13. & _DEBUG_OFF
  14.         list p=16f877

  15.         include "p16f877.inc"

  16.         ; Start at the reset vector
  17.         org     0x000
  18.         goto    Start
  19.         org     0x004
  20. Interrupt
  21.         retfie
  22. Start
  23.         bsf     STATUS,RP0      ;bank 1
  24.         bcf     STATUS,RP1
  25.         movlw   H'00'
  26.         movwf   TRISC           ;portc [7-0] outputs
  27.         clrf    ADCON1          ;left justified, all inputs a/d
  28.         bcf     STATUS,RP0      ;bank 0
  29.         movlw   B'01000001'     ;Fosc/8 [7-6], A/D ch0 [5-3], a/d on [0]
  30.         movwf   ADCON0
  31. Main
  32.         call    ad_portc
  33.         goto    Main


  34. ad_portc
  35.                                 ;wait for acquision time (20uS)
  36.                                 ;(non-critical for this test)

  37.         bsf     ADCON0,GO       ;Start A/D conversion
  38. Wait
  39.         btfsc   ADCON0,GO       ;Wait for conversion to complete
  40.         goto    Wait

  41.         movf    ADRESH,W        ;Write A/D result to PORTC
  42.         movwf   PORTC           ;LEDs
  43.         return

  44.         end
复制代码
回复

使用道具 举报

 楼主| 发表于 26-4-2008 10:31 PM | 显示全部楼层
谢谢版主,将来如果需要我的帮忙一定会经历而为
其实我还有很多东西要请教版主,如果用VR来控制ADC可以吗?
回复

使用道具 举报

发表于 27-4-2008 08:48 AM | 显示全部楼层
原帖由 dns 于 26-4-2008 10:31 PM 发表
谢谢版主,将来如果需要我的帮忙一定会经历而为
其实我还有很多东西要请教版主,如果用VR来控制ADC可以吗?

可以用VR 来模拟变化的DC 信号以输入ADC, 但记得不可以大过 >5V。
回复

使用道具 举报

发表于 22-9-2008 12:43 AM | 显示全部楼层
原帖由 pic 于 25-4-2008 08:37 AM 发表

首先, 欢迎你新手, 也希望你的project完成后, 继续回来这里帮助其他有需要的新手网友。

我不会ASM, 我建议你用CCS C。(其他的我不会
还有你要的Sample code, 只要你Google, 可以找到很多的。。。 ...


关于FOSC/8  我有点不明白。什么是FOSC/2, FOSC/64 呢?。 如果我的crystal 是20MHZ ,FOSC/8。 是不是我的instruction cycle time是4x10^-7 呢?? 其实FOSC/8,FOSC/2, FOSC/64有什么分别呢??

至于ADCON1<3:0> 如果我的voltage 大过5V , 是不是用Vref+ ,Vref- 来解决呢?
回复

使用道具 举报

发表于 22-9-2008 07:36 AM | 显示全部楼层
原帖由 ckchung 于 22-9-2008 12:43 AM 发表
关于FOSC/8  我有点不明白。什么是FOSC/2, FOSC/64 呢?。 如果我的crystal 是20MHZ ,FOSC/8。是不是我的instruction cycle time是4x10^-7 呢?? 其实FOSC/8,FOSC/2, FOSC/64有什么分别呢??

AD Convertion 需要时钟。你可以用Internal RC, 我常用的。
或从crystal osc 取得, 但TAD (AD Convertion Clock) 不能少过1.6uS, 所以用20MHZ 太快, 需要FOSC/32或FOSC/64 变慢。
请参考16F877A 的datasheet, chapter 11.1 Selecting the AD Conversion Clock。

至于ADCON1<3:0> 如果我的voltage 大过5V , 是不是用Vref+ ,Vref- 来解决呢?.

这个问的好。
大过5V, 就要用Voltage divider 弄小, PIC MCU的最大的输入是5V而已, 所以不是用控制Vref 来解决。

学习PIC MCU, 最快速的是从C 语言开始, 你现在学ASM, 但要有心理有一天准备换去C 语言。
回复

使用道具 举报

Follow Us
您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 28-1-2025 03:51 AM , Processed in 0.163929 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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