ulong lCounter=0XA59;
//lCounter=ADCData;
lCounter = (ADOL&0XF)|(ADOH<<4);
//lCounter = ADCData&0XFFFF;
///led_display_test(lCounter>>4,2);
//led_display_test(lCounter&0xf,1);
led_display_test(lCounter>>4,1);
if(lCounter <= adc_value[0]&&lCounter>=0){
bat_state=1;
led_display_test(bat_state,4);
}
else if(lCounter <= adc_value[1]){
bat_state=2;
led_display_test(bat_state,4);
}
else if(lCounter <= adc_value[2]){
bat_state=3;
led_display_test(bat_state,4);
}
else if(lCounter <= adc_value[3]){
bat_state=4;
led_display_test(bat_state,4);
}
else{
bat_state=8;
led_display_test(bat_state,2);
}
发现最终bat_state老是等于1,请问这是什么原因造成的啊?各位帮看下!
其中ulong adc_value[4]={2168,2440,2648,2840};
------解决方案--------------------
lCounter 的值每多少?
------解决方案--------------------
说明lCounter?一直是小于2168的值
------解决方案--------------------
改一下试试:
if((lCounter <= adc_value[0]) && (lCounter >=0))
另外,你可以直接设置一个较大的值试试:
ulong lCounter=2680;
//lCounter=ADCData;
//lCounter = (ADOL&0XF)
------解决方案--------------------
(ADOH<<4);
------解决方案--------------------
那就是 取ADC值 出问题了
------解决方案--------------------
要么自己一句一句分析.
要么把程序给详细点.大家来找查.
任何位置的一点点错误都会造你的纠结.
------解决方案--------------------
设个断点跟踪啊,看看运行到比较语句时lcounter的值就清楚了。