AD转换是非常普遍的模块了,在8位或者16位的单片机上都有应用,在HCS12系列的单片机上内置了一个AD转换器,可用于8位或者10位的AD转换,但做不了DA转换。原理很简单,就不提了。
寄存器:
ATDCTL2 AD的电源开关、中断和外部触发信号。
ATDCTL3 AD转换的序列长度、结果寄存器是否采用先进先出方式以及冻结模式下的设置。
ATDCTL4 时钟频率、第二阶段采样的时间长度及AD转换的精度(8位或者10位)。
ATDCTL5 AD转换序列的类型和采样的模拟量输入通道。
ATDSTAT0 包括转换完成标志位、外部触发中断溢出标志位、先入先出模式位和转换结果标号位。
ATDTEST1 用于激活特殊通道
ATDSTAT1 包含一些转换完成标志位。
ATDDIEN AD转换输入使能寄存器
PORTAD 数据寄存器
ATDDRAD转换结果寄存器
主要各个位的介绍见数据手册。
附初始化头文件:
ATDCTL2=0B11000000;
//ATDCTL2.ADPU=1为打开转换电源开关
//ATDCTL2.AFFC=1为AD转换CCF自动清零位
ATDCTL3=0B00001011;
//ATDCTL3.S1C=1表示序列长度为1
//ATDCTL3.FIFO=0为非FIFO模式
//ATDCTL3.FRZ0~FRZ1=11表示立刻进入冻结模式
ATDCTL4=0B00000111;
//ATDCTL4.PRS4~PRS0 = 00111表示总线频率16分频
ATDCTL4&=0B01111111;
//ATDCTL4.SRES8=0 表示10转换精度
AD模拟量输入的参考电压由VRL、VRH两个引脚决定。数字量的存储要注意是向左对齐或者向右对齐,并且注意软件滤波时防止溢出。