与ADC相关的寄存器有以下:
P1ASF为P1口模拟功能控制寄存器(该寄存器是只写寄存器,读无效)
PS:只写寄存器就是可以写但是读不出来,或者读出来的值是不对的,随机的.
P1ASF格式如上:其功能是P1.0~P1.7八个端口对应是否作为模拟功能A/D使用。比如:P1ASF=0xff; //将P1口作为模拟功能A/D使用
ADC控制寄存器ADC_CONTR
格式如下:
ADC_POWER:ADC电源控制位(0关1开)
SPEED1、SPEED0是模数速度转换控制位
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)寄存器
格式如下:
其中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:
如: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
EA:开放或禁止所有中断。
ELVD:LVD中断允许控制位。
EADC:ADC中断允许控制位。
ES:开放或禁止串行通道中断。
ET1:开放或禁止定时器1溢出中断。
EX1:开放或禁止外部中断源1。
ET0:开放或禁止定时器0溢出中断。
EX0:开放或禁止外部中断源0。
1允许,0禁止(所以中断寄存器各位的意义应该都明白了)
中断优先级控制寄存器IP
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,则编程为高优先级。