STC15系列单片机A-D转换器是其内部一个重要的功能部件,使用控制A-D转换器需要设置相应的特殊功能寄存器。与A-D转换有关的新增特殊功能寄存器见表11-1。
表11-1 设置A-D转换的特殊功能寄存器表
1.A-D功能设置寄存器P1ASF
P1ASF是将P1口设置为A-D模拟信号输入功能的特殊功能寄存器,字节地址为9DH,不能位寻址,系统复位时为00H。P1ASF格式和各位功能说明如下:
P1ASF寄存器的8位对应于P1口的8位,当需要把P1.x(x=0~7)用作A-D转换器的模拟输入端ADC0~ADC7使用时,只要将P1ASF寄存器的相应位置1即可。
(1)P17ASF:将P1.7设置为A-D转换器的模拟输入口
P17ASF=0,将P1.7用作普通I/O口,最好用作输入。
P17ASF=1,将P1.7用作A-D转换器的模拟输入端ADC7。
(2)P16ASF:将P1.6设置为A-D转换器的模拟输入口
P16ASF=0,将P1.6用作普通I/O口,最好用作输入。
P16ASF=1,将P1.6用作A-D转换器的模拟输入端ADC6。
(3)P15ASF:将P1.5设置为A-D转换器的模拟输入口
P15ASF=0,将P1.5用作普通I/O口,最好用作输入。
P15ASF=1,将P1.5用作A-D转换器的模拟输入端ADC5。
(4)P14ASF:将P1.4设置为A-D转换器的模拟输入口
P14ASF=0,将P1.4用作普通I/O口,最好用作输入。
P14ASF=1,将P1.4用作A-D转换器的模拟输入端ADC4。
(5)P13ASF:将P1.3设置为A-D转换器的模拟输入口
P13ASF=0,将P1.3用作普通I/O口,最好用作输入。
P13ASF=1,将P1.3用作A-D转换器的模拟输入端ADC3。
(6)P12ASF:将P1.2设置为A-D转换器的模拟输入口
P12ASF=0,将P1.2用作普通I/O口,最好用作输入。
P12ASF=1,将P1.2用作A-D转换器的模拟输入端ADC2。
(7)P11ASF:将P1.1设置为A-D转换器的模拟输入口
P11ASF=0,将P1.1用作普通I/O口,最好用作输入。
P11ASF=1,将P1.1用作A-D转换器的模拟输入端ADC1。
(8)P10ASF:将P1.0设置为A-D转换器的模拟输入口
P10ASF=0,将P1.0用作普通I/O口,最好用作输入。
P10ASF=1,将P1.0用作A-D转换器的模拟输入端ADC0。
2.A-D转换控制寄存器ADC_CONTR
ADC_CONTR是选择通道和启动A-D转换的特殊功能寄存器,字节地址为0BCH,不能位寻址。对该寄存器可使用MOV指令赋值,也可用与指令和或指令。ADC_CONTR格式说明如下:
(1)CHS2、CHS1、CHS0:模拟输入通道选择位
通过这3位的不同组合选择8路A-D转换器的其中1路进行A-D转换。A-D转换器通道选择设置见表11-2。
表11-2 A-D转换器通道选择设置
(2)ADC_START:A-D转换启动控制位
ADC_START=1,启动A-D开始转换。当A-D转换结束后,该位由硬件自动清0。
(3)ADC_FLAG:A-D转换结束标志位,也是A-D转换完成中断请求标志位
当A-D转换结束后,硬件对ADC_FLAG置1,但必须由软件对该位清0。
如果A-D转换结束,系统自动置ADC_FLAG=1,可以向CPU申请中断,也可以通过软件查询该标志位判断本次A-D转换是否完成。建议在A-D转换结束之前,不要改变任何I/O口的状态,以保证A-D转换的精度,若能关闭定时器、串口或中断系统,则A-D转换效果会更好。(www.xing528.com)
(4)SPEED1、SPEED0:A-D转换速度选择控制位
由这2位组合设置A-D转换的速度。转换速度设置见表11-3。
表11-3 A-D转换速度设置
(5)ADC_POWER:电源控制位
ADC_POWER=1,打开接通A-D转换器电源。
ADC_POWER=0,关闭A-D转换器电源。
启动A-D转换前应先置ADC_POWER=1,并适当延时,待模拟电源稳定后再启动A-D转换。A-D转换结束后可关闭ADC电源以节省功耗,也可不关闭。为了提高A-D转换精度,在A-D转换结束前,不能改变任何I/O口状态。
3.时钟分频设置寄存器CLK_DIV
CLK_DIV寄存器用于控制系统时钟分频设置、ADC转换调整,控制ADC转换结果存放的位置。字节地址为97H,不可位寻址,系统复位后各有效位初值为00,寄存器各位格式如下:
(1)MCKO_S1、MCKO_S0:主时钟(fmclk)分频控制位
具体参见第2章的表2-10。
(2)ADRJ:A-D转换结果调整位
该位用于设置A-D转换结果存储方式。
ADRJ=0,即A-D转换结束后,10位转换结果的高8位放入ADC_RES寄存器,低2位存储在ADC_RESL寄存器的低2位。
A-D转换结果计算公式:
1)若取10位结果(ADC_RES[7:0],ADC_RESL[1:0]),则理论计算出A-D转换结果值。
2)若取8位结果(ADC_RES[7:0]),则理论计算出A-D转换结果值。
ADRJ=1,即A-D转换结束后,10位转换结果的高2位存储在ADC_RES寄存器的低2位,低8位存储在ADC_RESL寄存器。
A-D转换结果计算公式:取10位转换结果(ADC_RES[1:0],ADC_RESL[7:0]),则理论计算出A-D转换结果值。
其中,Vin为模拟输入通道的输入电压,VCC为单片机工作电压。
为了得到高精度,应先测量出实际的工作电压值,并保存在片内E2PROM中,计算时取出实际电压值代入计算公式进行运算,可以得到较高的A-D转换精度。A-D转换的参考电压可以不用单独外接,可直接使用工作电压VCC,再通过算法软件校准。
(3)Tx_Rx:串口1中继广播方式控制位
具体参见第8章。
(4)MCLKO_S2:主时钟(fmclk)对外输出引脚选择控制位
STC15W4K32S4单片机可通过该位来选择在哪个引脚对外输出时钟,可对外输出内部RC时钟,也可对外输出外部输入的时钟或者外部晶体振动器产生的时钟。
MCLKO_S2=0,在P5.4/MCLKO引脚对外输出时钟。
MCLKO_S2=1,在P1.6/MCLKO_2/XTAL2引脚对外输出时钟。
如果用户要对外输出13.56MHz时钟信号,可选择主时钟fmclk=27.12MHz,再选择2分频即可。
(5)CLKS2、CLKS1、CLKS0:系统时钟分频选择控制位
具体参见第2章的图2-23。
4.A-D转换结果寄存器ADC_RES、ADC_RESL
ADC_RES、ADC_RESL寄存器用于存放10位的A-D转换结果值,ADC_RES是高字节,字节地址为0BDH,ADC_RESL是低字节,字节地址为0BEH,不可位寻址,系统复位后各有效位初值为00。结果存放方式与ADRJ位有关。
1)当ADRJ=0时,A-D转换结果按如下格式存放:
2)当ADRJ=1时,A-D转换结果按如下格式存放:
5.A-D转换器的中断控制IE、IP
1)A-D转换器的中断允许控制位在IE寄存器的第5位(EADC位):EADC=0禁止中断,EADC=1允许A-D转换中断。详细请参见第6章。
2)A-D转换器的中断优先级控制位在IP寄存器的第5位(PADC位):PADC=0为低优先级,PADC=1选择A-D转换为高优先级。详细请参见第6章。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。