所以我有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
答案 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转换时应遵循以下步骤:
- 配置A / D模块:•配置模拟引脚/电压参考/和数字I / O(ADCON1)•选择A / D输入通道 (ADCON0)•选择A / D转换时钟(ADCON0)•打开A / D模块 (ADCON0)
- 配置A / D中断(如果需要):•清零ADIF位•将ADIE位置1•将GIE位置1 第3。等待所需的采集时间。
- 开始转换:•设置GO / DONE位(ADCON0)
- 通过以下任一方式等待A / D转换完成:•轮询GO / DONE位清零或•等待A / D中断
- 读取A / D结果寄存器对(ADRESH:ADRESL),如果需要,清除ADIF位。
- 要进行下一次转换,请根据需要转到步骤1或步骤2。每位的A / D转换时间定义为TAD。最低限度 在下一次采集开始之前需要等待2TAD。
醇>
在开始转换之前,您没有等待获取时间。其他一切似乎都是正确的。