#include
#include
#include "ADC.h"
/**************************************************************
@beep_;
void Adc_Init(void);//完成ADC初始化
ADC配置过程:
>1:端口设置:模拟输入无上拉
TRISIO<5:0>:
1:GPIO引脚配置为输入
0:GPIO引脚配置为输出
*TRISIO3=1.只能输入.
ANSEL:bit3:0
ANS<3:0>: GP4|GP2|GP1|GP0
1:模拟输入
0:I/O
>2:ADC设置
转换时钟(TAD/bit),一次ADC转换需要11TAD周期.
ANSEL:bit6:4
ADCS<2:0>:
000:FOSC/2
001:FOSC/8 (FOSC=4MHZ,TAD=2us)
101:FOSC/16 (FOSC=4MHZ,TAD=4us)
...
ADCON0:A/D控制寄存器0
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
ADFM VCFG - CHS2 CHS1 CHS0 GO/DOWN ADON
配置参考电压:
ADCON0:bit6
VCFG:
1:VREF引脚
0:VDD
选择ADC通道:
ADCON0:bit4:2
CHS<2:0>:
000:AN0(GP0) 100:CVREF
001:AN1(GP1) 101:0.6V
010:AN2(GP2) 110:1.2V
011:AN3(GP4) 111:RES
选择结果格式:
ADCON0:bit7
ADFM:
1:右对齐(高2位放在ADRESH,低8位放在ADRESL)
0:左对齐
开启ADC:
ADCON0:bit0
ADON:
1:使能
0:关闭
>3:清除中断标志,使能中断
PIE1:bit6
ADIE:
1:中断允许
0:中断禁止
PIR1:bit6
ADIF:
1:A/D转换完成
0:A/D转换未完成或未开始
INTCON:中断寄存器
bit7:GIE 全局中断使能/禁止
bit6:PEIE 外设中断使能/禁止
>4:等待采集时间
NOP();NOP();NOP();NOP();
>5:启动转换
ADCON0:bit1
GO/DOWN:
1:启动转换或AD转换正在进行.
0:AD转换完成,由硬件清零.
>6:读取结果
*查询GO/DOWN
*等待中断
ADC=(ADRESH,ADRESL)
*清除中断标志
**************************************************************/
void Adc_Init(void)
{
GIE=0; //关闭全局中断
TRISIO4=1;
ANSEL=0x18;
ADCON0=0x8D;
ADIF=0;
ADIE=1;
NOP();NOP();NOP();NOP();//等待采集时间
PEIE=1; //打开外设中断
GIE=1; //打开全局中断
}
上一篇:基于PIC单片机的多媒体终端遥控器设计
下一篇:PIC单片机开发中PICC编译环境的应用
推荐阅读最新更新时间:2024-03-16 15:39