ADCON1状态寄存器的7bit位定义了输出结果是左对齐还是右对齐,比较迷茫,不懂在说什么,查阅了一下DataSheet,如下:
从上面的示意图可以看出,结果寄存器的对齐方式是为了方便我们读取转换后的数据。示意图不是很详细,我们可以看一下AD的结果寄存器。
AD的结果寄存器是16位宽的,但是有六位是不用的,所以实际上读取10位数据。
控制AD模块的所有寄存器如下图所示:
AD模块基本控制寄存器:ADCON0、ADCON1;主要管理AD模块上电、时钟选择、通道选择、结果寄存格式选择、AD转换启动等。
端口配置寄存器:TRISA、PORTA;主要定义模拟通道输入端口,以及锁定数据流向(Input=1)。
结果保存寄存器。
相关的中断寄存器:中断总开关、外围中断控制开关、AD中断使能、AD中断标志位;
1. 端口配置: • 禁止引脚输出驱动器 • 将引脚配置为模拟输入引脚 2. 配置 ADC 模块: • 选择 ADC 转换时钟 • 配置参考电压 • 选择 ADC 输入通道 • 选择结果的格式 • 启动 ADC 模块 3. 配置 ADC 中断 (也可以用查询的方式) : • 清零 ADC 中断标志位 • 允许 ADC 中断 • 允许外设中断 • 允许全局中断 4. 等待所需的采集时间 5. 将 GO/DONE 置 1 启动转换。 6. 由如下方法之一等待 ADC 转换结束: • 查询 GO/DONE 位 • 等待 ADC 中断 (允许中断) 7. 读 ADC 结果 8. 将 ADC 中断标志位清零 (如果允许中断的话,需要进行此操作)。