PIC單片機C語言程序設(shè)計(14)
TRISA=0X07;
ADCON0=0X81;// 打開通道0 作數(shù)據(jù)采樣
PORTA=0XFF;
ADRESH=0;
ADRESL=0;// 轉(zhuǎn)換結(jié)果寄存器清零
INTCON=0x00;// 關(guān)閉所有中斷
GIE=1;// 打開總中斷
PEIE=1;// 打開第一外圍中斷
ADIE=1;// 打開AD 中斷
ADIF=0;// 清除AD 中斷標(biāo)志位
}
以下是中斷服務(wù)函數(shù):
void interrupt AD(void)
{
unsigned int ad_1=0;
// 定義一個ad 轉(zhuǎn)換結(jié)果寄存器
if(k16)
{
ADIF=0; // 清楚AD 標(biāo)志位
ad_1=(ADRESH0X03)*256+ ADRESL;
// 讀取AD 轉(zhuǎn)換結(jié)果
ad_sum=ad_sum+ad_1;
k++;
if(k16)
ADGO=1; // 啟動AD
}
if(k==16)
{
ad_1=ad_sum/16;
if( b>16)
{
if(ad_1>ad_temp)
ad_1=ad_1-ad_temp;
else if(ad_1ad_temp)
ad_1=ad_temp-ad_1;
else if(ad_1==ad_temp)
ad_1=0;
AD_
value=(float)(ad_1);
}
d=1;
ad_sum=0;
k=0;
if(b32)
{
b++;
ADGO=1;
}
if(b==15)
ad_temp=ad_1;
}
}
上述A/D 轉(zhuǎn)換的C 程序,初學(xué)時有些難度,但結(jié)合A/D 轉(zhuǎn)換相關(guān)的專用寄存器功能,也不難理解的,待下次連載15,筆者對A/D 轉(zhuǎn)換方法,還有一些說明的,讀者可以關(guān)注。
評論