連接器選項設置和啟動代碼 ... ARM入門筆記(5) " />
第五章 模擬量輸入 ——A/D轉換實驗 一.目的 通過A/D轉換,能夠正確讀取外部模擬輸入通道的電壓值。 二.實驗程序和參數設置 1>連接器選項設置和啟動代碼都與上個實驗相同 2>C語言的代碼 #i nclude "AT91SAM7S64.h" #i nclude "Board.h" volatile unsigned int EXT_AD_Val[4]; //定義A/D轉換結果值 int main(void) {unsigned char i; *AT91C_ADC_CR = AT91C_CKGR_MOSCEN; //ADC的軟件復位,即清除ADC的所有寄存器 *AT91C_PMC_SCER = AT91C_CKGR_MOSCEN;//使能系統時鐘寄存器的處理器時鐘 *AT91C_PMC_PCER = 1 91C_ID_ADC; //使能ADC時鐘 *AT91C_PIOA_PDR = EXT_AD0 | EXT_AD1; //禁止管腳的I/O口功能,使作為模擬輸入功能 *AT91C_ADC_MR = 0x0f1f3f00; //軟件起動,10位分辨率,128分頻 *AT91C_ADC_CHER = 0x33; //使能通道0,1,4,5 *AT91C_ADC_CHDR = 0xcc; //禁能通道2,3,6,7 *AT91C_ADC_IDR = 0xfffff; //禁止所有ADC中斷 while (1) { *AT91C_ADC_CR = 0x2; //起動轉換 while(1) { if ((*AT91C_ADC_SR) & 0x33) //等待轉換結束 { EXT_AD_Val[0] = (*AT91C_ADC_CDR0) & 0x3ff;//讀取10Bit的結果值 EXT_AD_Val[1] = (*AT91C_ADC_CDR1) & 0x3ff; EXT_AD_Val[2] = (*AT91C_ADC_CDR4) & 0x3ff; EXT_AD_Val[3] = (*AT91C_ADC_CDR5) & 0x3ff; for (i = 0; i break; } } } } 三.總結 執行ADC的軟件復位,將清除ADC的所有相關寄存器,因此必須在設置ADC相關寄存器之前執行。 |