PIC 16F88 ADC的例子?

时间:2012-05-22 09:44:57

标签: pic microchip

所以我有PIC 16F88,我设法做了几件事,但现在我想知道如何进行模拟到数字转换?

我在互联网上尝试过很多例子,但没有成功:(如果有人能说明如何使用ADCON0 / 1等等,我会很感激。

非常感谢。

编辑: 这是我的代码:

START
    banksel TRISA
    clrf    TRISB
    movlw   0xff
    movwf   TRISA
    movlw   b'11000111'
    movwf   OPTION_REG
    movlw   b'00000001'
    movwf   ADCON1
    banksel PORTB
    clrf    PORTB   
LOOP
    btfss   PIR1,ADIF
    goto    LOOP
    bsf ADCON0,GO   
WAIT
    btfsc   ADCON0,GO
    goto    WAIT
    movf    ADRESH,W
    movwf   PORTB,W
END

1 个答案:

答案 0 :(得分:0)

从PIC数据表:

  

ADRESH:ADRESL寄存器包含A / D的10位结果   转换。 A / D转换完成后,将加载结果   在该A / D结果寄存器对中,GO / DONE位(ADCON0< 2>)为   清零并且A / D中断标志位ADIF置1。方框图   A / D模块的结构如图11-1所示。

     

根据需要配置A / D模块后,选择   必须在转换开始之前获取频道。   模拟输入通道必须具有相应的TRIS位   被选为输入。要确定采样时间,请参见第11.1节。后   此采集时间已过,可以开始A / D转换。   进行A / D转换时应遵循以下步骤:

     
      
  1. 配置A / D模块:•配置模拟引脚/电压参考/和数字I / O(ADCON1)•选择A / D输入通道   (ADCON0)•选择A / D转换时钟(ADCON0)•打开A / D模块   (ADCON0)
  2.   
  3. 配置A / D中断(如果需要):•清零ADIF位•将ADIE位置1•将GIE位置1   第3。等待所需的采集时间。
  4.   
  5. 开始转换:•设置GO / DONE位(ADCON0)
  6.   
  7. 通过以下任一方式等待A / D转换完成:•轮询GO / DONE位清零或•等待A / D中断
  8.   
  9. 读取A / D结果寄存器对(ADRESH:ADRESL),如果需要,清除ADIF位。
  10.   
  11. 要进行下一次转换,请根据需要转到步骤1或步骤2。每位的A / D转换时间定义为TAD。最低限度   在下一次采集开始之前需要等待2TAD。
  12.   

在开始转换之前,您没有等待获取时间。其他一切似乎都是正确的。