1. W79E825、W79E824 ADC簡介 W79E825、W79E824 系列集成有4路10位A-D轉換器,開始A-D轉換可以由軟件設置也可以由硬件觸發。ADC中斷向量是5BH。轉換結果的高8位在ADCH中,低兩位在ADCCON.7和ADCCON.7。
2. W79E825、W79E824系列MCU ADC 編程方法 2.1 A-D 的轉換過程 在使用ADC電路前,必須把ADCCEX置’1’打開ADC電路。當ADCCON.5 (ADCEX) =0時,是軟件開始模式,把控制位ADCCON.3 (ADCS)置‘1’即可以開始ADC轉換。當ADCCON.5 =1時,是軟件或硬件開始模式,ADCCON.3 (ADCS)置‘1’或STADC (P1.4)上的有效上升沿開始ADC轉換。當使用STADC (P2.0)上的有效上升沿開始ADC轉換時低電平至少保持一個機器周期,之后的高電平也至少保持一個機器周期。 控制位ADCCON.4 (ADCI)置‘1’標志10-位轉換的結束。轉換結果的高8位存放在特殊功能寄存器ADCH中,剩下的兩位存放在ADCCON.7 (ADC.1)和ADCCON.6 (ADC.0)中?偟霓D換時間共有52個機器周期。ADC 時把ADCS狀態標志置‘1’,并在52時鐘周期后清‘0’。 控制位ADCCON.0、ADCCON.1被用作4選1多路模擬開關控制。ADC轉換步驟不受外部或軟件開始轉換的影響。轉換結束的結果也不會影響ADCI = 邏輯1;ADC在轉換過程中系統將不能進入空閑或掉電模式。轉換結束結果(ADCI = 邏輯1) 仍然不影響。 2.2 ADC 的編程實例 2.2.1 打開/關閉ADC 的電路 AUXR1.2(ADCEN)=1打開ADC 的電路,AUXR1.2(ADCEN)=0關閉ADC 的電路。 void EnableADC() { AUXR1|=0x04; //打開ADC 的電路,ADC 的電路開始工作 } void DisableADC() { AUXR1&=0xFB;// 關閉ADC 的電路,ADC 的電路停止工作 } 2.2.2 選擇ADC 模擬輸入通道 P0口的其中4只腳復用為ADC的模擬輸入功能,首先把它設置為模擬輸入,即P0M1.y=1; P0M1.y=0;ADCCON的低2位控制選擇哪一路模擬信號輸入。設置ADCCON的低兩位必須在ADCI和ADCS都等于’0’的狀態。具體程序如下: void ADC_Select(unsigned char ADC_C) { switch(ADC_C) { case 0:P0M1|=0x08;P0M2&=0xF7;ADCCON=0;break; case 1:P0M1|=0x10;P0M2&=0xef;ADCCON=1; break; case 2:P0M1|=0x20;P0M2&=0xdf;ADCCON=2; break; case 3:P0M1|=0x40;P0M2&=0xbf;ADCCON=4; break;
default: break; } } 2.2.3 啟動ADC (1)、若ADCCON.5(ADCEX)=0;把ADCCON.3(ADCS)置’1’,就開始一次新的A-D轉換。實例程序如下: void StartADC() { ADCCON|=0x08; } (2)、若ADCCON.5(ADCEX)=0,STADC(P1.4)上的上升沿,就開始一次新的A-D轉換。 2.2.4 ADC 中斷編程 (1)、打開ADC中斷。 void EnableADC_INT() { EADC=1; EA=1; } (2)、編寫ADC中斷服務程序。 void ADC_ISR() interrupt 11 { / /用戶程序 }
W79E825/W79E824 AD功能常用于溫度控制器、電動自行車、智能家電、UPS、TPMS、儀器儀表等 |