觀察DR寄存器bit31位來確認是否轉(zhuǎn)換完成,屬于查詢方式,如果沒有轉(zhuǎn)換完成,程序會停在檢測的那條語句處,不能做其他的事情,極大的浪費了處理器的資源,這一節(jié),介紹更為效率的中斷方式。
給ADINTEN寄存器對應(yīng)ADINT位寫1,當ADC轉(zhuǎn)換完成后,會引發(fā)ADC轉(zhuǎn)換中斷。
ADINTEN寄存器:
位符號描述復位值7:0ADINT這個位決定了哪個通道轉(zhuǎn)換完成后產(chǎn)生中斷。例如:當bit1=1,當AD1通道轉(zhuǎn)換完成后,產(chǎn)生中斷0x008ADGINT如果這個位是1,當全局DR寄存器的DONE位置1,引發(fā)中斷注意:當BURST=1,即硬件掃描模式下,如果用中斷,只能用bit7:0這個位必須為0
131:9–保留0在ADC_Init()函數(shù)中,加入下面兩條語句開啟ADC中斷。
LPC_ADC->INTEN=(1<在main.c文件或者adc.c文件中,寫入中斷服務(wù)函數(shù),如下所示:
voidADC_IRQHandler(void){uint16_tadc_value;adc_value=(LPC_ADC->DR[Channel]>>6)&0x3FF;adc_value=(adc_value*Vref)/1024;UART_send_byte(adc_value);UART_send_byte(adc_value>>8);}假如設(shè)置了CAP引腳觸發(fā)轉(zhuǎn)換,當CAP引腳上出現(xiàn)上升沿或下降沿時,就會觸發(fā)ADC轉(zhuǎn)換,轉(zhuǎn)換結(jié)束后,進入ADC中斷服務(wù)函數(shù)。