新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AD采樣程序的設(shè)計(jì)

AD采樣程序的設(shè)計(jì)

作者: 時(shí)間:2012-08-31 來(lái)源:網(wǎng)絡(luò) 收藏
通過(guò)采樣某點(diǎn)的,與預(yù)設(shè)定值作比較,得出下一步MCU該如何工作。

例如:當(dāng)檢測(cè)到某點(diǎn)的電壓,大于預(yù)設(shè)定值,則產(chǎn)生,通過(guò)單片機(jī)控制減小輸入的、斷電、鳴叫,等一系列保護(hù)電路措施...

1.主函數(shù):

void main(void)
{
  // USER CODE BEGIN (MAIN_Main,2)
uword temp1=0,temp2=0,temp3=0,temp4=0;

// USER CODE END

MAIN_vInit();

// USER CODE BEGIN (MAIN_Main,3)

// USER CODE END

while(1)
{

// USER CODE BEGIN (MAIN_Main,4)
ADC_vStartSeqReqChNum(0,0,0,3);
temp1=ADC_uwGetResultData0();
temp1=temp1*10+24;
temp1=temp1/48;
temp2=temp1/10;
temp3=temp1%10;
temp4=temp24|temp3;
P3_DATA=temp4;
// USER CODE END

}

} // End of function main

2.ADC函數(shù):

在檢測(cè)到某點(diǎn)電壓大于或小于與設(shè)定值,單片機(jī)產(chǎn)生中斷,產(chǎn)生相應(yīng)措施。

void ADC_vIsr(void) interrupt ADCINT
{

// USER CODE BEGIN (ADC_Isr,2)
uword i=0,j=0;
// USER CODE END

SFR_PAGE(_su0, SST0); // switch to page 0

// Check Interrupt Request 0 Flag
if (((IRCON1 0x08) != 0)) //判斷中斷0標(biāo)志位是否置位
{
IRCON1 = ~(ubyte)0x08; // 置位了,清除該標(biāo)志位, 為下次做準(zhǔn)備


// USER CODE BEGIN (ADC_Isr,3)
for(i=0;i1000;i++) //八個(gè)發(fā)光二極管間隔亮,延時(shí)時(shí)間約0.45s
for(j=0;j500;j++)
P3_DATA=0xaa;
for(i=0;i1000;i++)
for(j=0;j500;j++)
P3_DATA=0x55;
// USER CODE END
}


// Check Interrupt Request 1 Flag
if (((IRCON1 0x10) != 0)) //判斷中斷1標(biāo)志位是否置位
{
IRCON1 = ~(ubyte)0x10; //置位了,清除該標(biāo)志位,為下次做準(zhǔn)備


// USER CODE BEGIN (ADC_Isr,4)

for(i=0;i1000;i++) //八個(gè)發(fā)光二極管高低半間隔亮,
for(j=0;j500;j++)
P3_DATA=0xf0;
for(i=0;i1000;i++)
for(j=0;j500;j++)
P3_DATA=0x0f;
// USER CODE END
}


// USER CODE BEGIN (ADC_Isr,5)

// USER CODE END

SFR_PAGE(_su0, RST0); // restore the old SCU page
} // End of function ADC_vIsr



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉