与ADC相关的寄存器有以下: 

STC15W系列模数转换器寄存器_优先级STC15W系列模数转换器寄存器_寄存器_02

P1ASF为P1口模拟功能控制寄存器(该寄存器是只写寄存器,读无效)

PS:只写寄存器就是可以写但是读不出来,或者读出来的值是不对的,随机的.

STC15W系列模数转换器寄存器_寄存器_03STC15W系列模数转换器寄存器_寄存器_02

 P1ASF格式如上:其功能是P1.0~P1.7八个端口对应是否作为模拟功能A/D使用。比如:P1ASF=0xff;   //将P1口作为模拟功能A/D使用

ADC控制寄存器ADC_CONTR

格式如下:

STC15W系列模数转换器寄存器_优先级_05STC15W系列模数转换器寄存器_寄存器_02

 ADC_POWER:ADC电源控制位(0关1开)

SPEED1、SPEED0是模数速度转换控制位

STC15W系列模数转换器寄存器_单片机学习笔记_07STC15W系列模数转换器寄存器_寄存器_02

ADC_FLAG:模数转换器转换结束标志。(A/D转换完成后,ADC_FLAG=1,一定要用软件清零)

ADC_START:模数转换器(ADC)转换启动控制位(1开始转换;0转换结束)

CHS2、CHS1、CHS0作为模拟输入通道选择,比如:000 即P1.0作为A/D输入来源;010 即P1.2作为A/D输入来源;111 即P1.7作为A/D输入来源...

故ADC_CONTR=0x8b;      //也就是10001011   ADC_POWER=1打开A/D转换器电源;ADC_START=1启动模拟转换器ADC;CHS=011选择P1^3作为A/D输入使用

A/D转换结果寄存器ADC_RES、ADC_RESL

特殊功能寄存器ADC_RES(A/D转换结果寄存器高)和ADC_RESL(A/D转换结果寄存器低)寄存器用于保存A/D转换结果。

CKKO_DIV(PCON2)寄存器

格式如下:

STC15W系列模数转换器寄存器_高优先级_09STC15W系列模数转换器寄存器_寄存器_02

 其中ADRJ位是A/D转换结果寄存器(ADC_RES,ADC_RESL)的数据格式调整控制位。

当ADRJ=0时,ADC_RES【7:0】存放高8位结果,ADC_RESL【1:0】存放低2位ADC结果。

当ADRJ=1时,ADC_RES【1:0】存放高2位结果,ADC_RESL【7:0】存放低8位ADC结果。

Tx_Rx是串口1中断广播方式设置位,MCLKO_2为0则是P5.4对外输出时钟,为1则是P1.6

CLKS2、CLKS1、CLKS0

STC15W系列模数转换器寄存器_高优先级_11STC15W系列模数转换器寄存器_寄存器_02

 如:CLK_DIV=0x20;        //即0010 0000     ADRJ=1——ADC_RES[1:0]存放高2位ADC结果,ADC_RESL[7:0]存放低8位ADC结果,CPU工作时钟就是系统时钟(未分频)。

  CLK_DIV = 0X00;     //即0000 0000       ADRJ = 0    ADC_RES存放高八位结果

 中断允许寄存器IE

STC15W系列模数转换器寄存器_高优先级_13STC15W系列模数转换器寄存器_寄存器_02

EA:开放或禁止所有中断。

ELVD:LVD中断允许控制位。

EADC:ADC中断允许控制位。

ES:开放或禁止串行通道中断。

ET1:开放或禁止定时器1溢出中断。

EX1:开放或禁止外部中断源1。

ET0:开放或禁止定时器0溢出中断。

EX0:开放或禁止外部中断源0。 

1允许,0禁止(所以中断寄存器各位的意义应该都明白了)

中断优先级控制寄存器IP

STC15W系列模数转换器寄存器_高优先级_15STC15W系列模数转换器寄存器_寄存器_02

 PADC:A/D转换中断优先级控制位。

当PADC = 0时,A/D转换中断为最低优先级中断(优先级0)

当PADC = 1时,A/D转换中断为最高优先级中断(优先级1)

(1)PPCA:PCA中断优先级控制位。

1:PCA中断为高优先级;0:PCA中断为低优先级。

(2)PLVD:低电压检测中断优先级控制位。

1:低电压检测中断为高优先级;0:低电压检测中断为低优先级。

(3)PADC:ADC中断优先级控制位。

1:ADC中断为高优先级;0:ADC中断为低优先级
(4)PS:决定串行通道中断优先级。PS=1,则编程为高优先级。
PT1:决定定时器1中断优先级。
PT1=1,则编程为高优先级。PX1:决定外中断1优先级。PX1=1,则编程为高优先级。

PTO:决定定时器0中断优先级。PTO=1,则编程为高优先级。PXO:决定外中断0优先级。PX0=1,则编程为高优先级。