與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,則編程為高優先級。








