MCU:M16
定时器:100MS
程序流程:
水箱液位处理控制部分程序,水箱有三个设定值,当液位达到设定值时,相应继电器会动作,定时100MS,三秒送一次AD值在屏幕上显示,同时液位在设定值附近波动时,做个标志位,AD采集10次30秒内,液位都在设定值以上或者以下,标志位就做相应处理,在主程序中,标志位开启或者关闭,对应继电器的开合
问题:
做一个设定值时,程序正常,做三个设定值时,程序跑飞,不按正常流程走了,而且显示也会延缓,不知道问题出在哪里?
void ad_chuli(void)
{
if(flag_ad!=ad_flag)
{
flag_ad=ad_flag;
if((ad_flag%3)==0) //3S送一次AD值
adc();
if(yewei>=yewei1_setting)
{
time_count++;
count_time=0;
}
if(yewei<yewei1_setting) count_time++;
if(count_time>10) //低于设定值 采集10*3=30S防抖动
{
time_count=1;
yewei_flag1=0xaa;
count_time=11;
}
if(time_count>10) //高于设定值采集10*3=30s防抖动
{
yewei_flag1=0x55;
time_count=1;
time_count=11;
}
}
}
void main(void)
{
while(1)
{
if((SPSR&0X80)!=0)
{
adc();
}
ad_chuli();
sys_control();
}
} |