觀察DR寄存器bit31位來確認(rèn)是否轉(zhuǎn)換完成,屬于查詢方式,如果沒有轉(zhuǎn)換完成,程序會(huì)停在檢測(cè)的那條語句處,不能做其他的事情,極大的浪費(fèi)了處理器的資源,這一節(jié),介紹更為效率的中斷方式。
給ADINTEN寄存器對(duì)應(yīng)ADINT位寫1,當(dāng)ADC轉(zhuǎn)換完成后,會(huì)引發(fā)ADC轉(zhuǎn)換中斷。
ADINTEN寄存器:
位符號(hào)描述復(fù)位值7:0ADINT這個(gè)位決定了哪個(gè)通道轉(zhuǎn)換完成后產(chǎn)生中斷。例如:當(dāng)bit1=1,當(dāng)AD1通道轉(zhuǎn)換完成后,產(chǎn)生中斷0x008ADGINT如果這個(gè)位是1,當(dāng)全局DR寄存器的DONE位置1,引發(fā)中斷注意:當(dāng)BURST=1,即硬件掃描模式下,如果用中斷,只能用bit7:0這個(gè)位必須為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)換,當(dāng)CAP引腳上出現(xiàn)上升沿或下降沿時(shí),就會(huì)觸發(fā)ADC轉(zhuǎn)換,轉(zhuǎn)換結(jié)束后,進(jìn)入ADC中斷服務(wù)函數(shù)。