}
unsigned int ADC_BAT_ONE(void)//转换一次
{
unsigned int value;
value=0;
ADCON0bits.CHS =0;//选择通道AN0
ADCON0bits.ADGO=1;//开始转换
while(ADCON0bits.GO==1);//等待转换结束
value=(unsigned int)ADRESH;//强制类型转换,因为ADRESH是字符型的只能表示8位二进制。所以必须转换成可以容纳10位二进制的整型。
value= value《《8;// 将高两位左移8位
value += ADRESL;//低八位加入ADRESL的值。
return value;
}
unsigned int ADC_BAT_contiue(void)
{
unsigned int ADV_MCU[ADC_NUM],ADV_CNT,ADV_ALL;
ADV_ALL=0;
for(ADV_CNT=0;ADV_CNT {
ADV_MCU[ADV_CNT]=ADC_BAT_ONE();
}
for(ADV_CNT=0;ADV_CNT {
ADV_ALL += ADV_MCU[ADV_CNT];
}
ADV_ALL= ADV_ALL/ADC_NUM;
return ADV_ALL;//得到结果返回
}
/*
*
*/
int main(int argc, char** argv) {
init_fosc();//设置时钟
init_GPIO();//设置I/O口
init_AD();//设置AD
while(1)
{
if( ADC_BAT_contiue()》400)//判断输入电压是否大于1.2V
{
LED=1;//灯亮
}
else
{
LED=0;//灯灭
}
}
}
责任编辑;zl
关于控制,MCU就介绍完了,您有什么想法可以联系小编。