
以HT46 R47微控器为例,其内嵌式之模拟/数字转换器之工作原理系利用四个特殊缓存器来完成,分别是ADRL(20H)、ADRH (21H)、ADCR(22H)、和ACSR(23H)。ADRL和ADRH分别代表A/D转换完成后的低、高字节,因此这两个缓存器仅具有只读的特性。而ADCR是控制A/D转换的工作缓存器,它被用来定义A/D转换的可用信道的数目、那一个模拟信道被选择、开始转换位、及完成指示旗标等,其位定义如表二所示。此外,ACSR缓存器可以被用来设定转换的时序来源,如表三所示。模拟/数字转换器之使用方法如下:
1. 首先以PCR0-PCR2定义好端口B的配置,对于不需要用的信道建议关闭,以节省电源消耗。换言之,选择刚好够用的模拟信道数目,且从端口B的位0开始依序指定,例如需要三个模拟信道、则可以使用位0、位1、及位2、。
2. 再来用ACS0-ACS2来选择工作的模拟信道,如表2所示。
3. 然后再将START位给于上升及下降的讯号变化,如:0→1→0。当START位由0→1时EOC会被设定成1。
4. 最后,等待EOC位变成0即表示转换完成,其转换后的结果存在ADRL和ADRH,其位的配置如表四所示。
模拟/数字转换器使用方法的最后步骤,必须经常查看EOC旗标,因此会浪费许多宝贵的时间,HOLTEK也设计使用中断的方法,来取得A/D转换后的结果,其中断形成的先决条件有三:其一为A/D转换完毕;其二是激活中断向量;最后堆栈尚有空间,也就是说不会造成堆栈溢出的情形。当此三个条件满足后,程序会直接跳至地址00CH处。