工作总结
正在做STM8S系列芯片的工作
工程建立
库文件的应用
主要判断ad口
ad判断的过程
配置ad
配置ad口
得到结果
其中需要知道的是,ad结果需要灵敏度判断程序如下:
主要应用场合STM8S系列
/*******************************************
函数名称: MachineContrl()
功 能: 外围控制程序
参 数: 无
返回值 : 无
********************************************/
void MachineContrl(void)
{
unsigned int NewADdata;
NewADdata=GetADdata();
/*设置一定的值域范围,以防止继电器的来回抖动*/
if(NewADdata>ADdata)
{
if(NewADdata-ADdata>SensityValue)//新采集的值超过设定的灵敏度
ADdata=NewADdata; //将新值赋给当前存储AD采集值的变量
else
ADdata=ADdata; //当前值保持不变
}
else
{
if(ADdata-NewADdata>SensityValue)
ADdata=NewADdata;
else
ADdata=ADdata;
}
同时还有测温的类似一系列的过程:
网络上借鉴了好多程序
类似于滞回算法
void AD_12V_work()//12v工作
{
if (AD_FLAG)//ad检测标志位
{
AD_FLAG = 0;//ad标志位清零
AD_Work();//ad采集
ii++;
ADVal_sum_C += ADVal;
if(ii >= 10)
{
ii = 0;//寄存器清零
ADVal_B = ADVal_sum_C/10;//ad值取平均值
if((ADVal_B > 338) && (ADVal_last < 338))
s12V_stop_flag = 1;//上升标志位置1
if((ADVal_B < 423) && (ADVal_last > 423))
s12V_work_flag = 1;//下降标志位置1
if(ADVal_B < 338)//低于12V
{
GPIO_WriteLow(GPIOD,GPIO_PIN_4);//红灯灭
GPIO_WriteLow(GPIOC,GPIO_PIN_1);//风机工作
s12V_work_flag = s12V_stop_flag = 0;//检测标志位清零
}
else if(ADVal_B <= 423)//中间段
{
if(s12V_stop_flag)//下降标志位
GPIO_WriteLow(GPIOD,GPIO_PIN_4);//红灯灭
GPIO_WriteLow(GPIOC,GPIO_PIN_1);//风机工作
if(s12V_work_flag)//上升标志位
GPIO_WriteHigh(GPIOD,GPIO_PIN_4);//红灯亮
GPIO_WriteHigh(GPIOC,GPIO_PIN_1);//风机短路
}
else //其他工作区间
{
GPIO_WriteHigh(GPIOD,GPIO_PIN_4);//红灯亮
GPIO_WriteHigh(GPIOC,GPIO_PIN_1);//风机短路
s12V_work_flag = s12V_stop_flag = 0;//检测标志位清零
}
ADVal_last = ADVal_B;//更新备份值
ADVal_sum_C = 0;//求和值清零
}
}
}
结束