/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include <stm8s_conf.h>
#define WATCHDOG_OPEN
#define uint unsigned int
#define uchar unsigned char
void delay_1ms( uchar time);
//void delay_10us(uchar //void init_tim4(void);
//void iwdg_init(void);
void adc1_init1(void);
void adc1_init2(void);
void adc1_init3(void);
void adc1_init4(void);
//void adc1_init3(void);
extern uchar time_count;
uchar count;
uint adc1_value;
uint adc2_value;
uint adc3_value;
uint adc4_value;
uchar ZT;
#define LED1_OFF GPIO_WriteHigh(GPIOC,GPIO_PIN_3)
#define LED1_ON GPIO_WriteLow(GPIOC,GPIO_PIN_3)
#define RED_OFF GPIO_WriteHigh(GPIOA,GPIO_PIN_1)//红灯闪开
#define RED_ON GPIO_WriteLow(GPIOA,GPIO_PIN_1)//红灯闪关
#define LED2_OFF GPIO_WriteHigh(GPIOC,GPIO_PIN_5)
#define LED2_ON GPIO_WriteLow(GPIOC,GPIO_PIN_5)
#define LED3_OFF GPIO_WriteHigh(GPIOC,GPIO_PIN_6)
#define LED3_ON GPIO_WriteLow(GPIOC,GPIO_PIN_6)
#define LED4_OFF GPIO_WriteHigh(GPIOC,GPIO_PIN_7)
#define LED4_ON GPIO_WriteLow(GPIOC,GPIO_PIN_7)//水位状态
/*#define SW_ON GPIO_WriteHigh(GPIOA,GPIO_PIN_3)
#define SW_OFF GPIO_WriteLow(GPIOA,GPIO_PIN_3)*/
#define LEDGZ_OFF GPIO_WriteHigh(GPIOB,GPIO_PIN_4)
#define LEDGZ_ON GPIO_WriteLow(GPIOB,GPIO_PIN_4)
#define LED_EE GPIO_ReadInputPin(GPIOB, GPIO_PIN_5)
void delay_1ms(unsigned char time)
{
unsigned char i;
for(i=0;i<time;i++)
{
time_count=0;
while(1)
{
if(time_count>10)
break;
}
WATCHDOG_OPEN
IWDG_ReloadCounter();
}
}
delay(unsigned int time)
{
unsigned char i,j;
while(time--)
{
for(i=0;i<200;i++)
{
for(j=0;j<20;j++)
{;}
}
}
}
//GPIO_ReadInputPin(GPIOD, GPIO_PIN_6)
//MOS管必须5V以上才能驱动
//-----------5v------------
//10.8v 543
//12.5v 630
//13.2v 664
//13.8v 695
//14.4v 725
//14.6v 733
//16.5v 830
//-------------------------
main()
{
//红灯
//GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_SLOW);
GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_SLOW);
//MOS管控制
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_OD_HIZ_SLOW);
//继电器控制
GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW);
GPIO_Init(GPIOA, GPIO_PIN_1, GPIO_MODE_OUT_PP_HIGH_SLOW);
//水位灯一
GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_SLOW);
//水位灯二
GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_SLOW);
//水位灯三
GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_SLOW);
//水位灯四
GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT);
//测水管脚一
GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_IN_FL_NO_IT);
//测水管脚二
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);
//测水管脚三
GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);
GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_IN_FL_NO_IT);
//自动手动读入
//adc1_init();
count=0;
ZT=0;//红灯状态
RED_ON;
while(1)
{
if(GPIO_ReadInputPin(GPIOB, GPIO_PIN_5))//
{
adc1_init1(); //
delay(5); //
adc1_value=ADC1_GetConversionValue();//
delay(5); //
if(ZT==1) //
{
RED_OFF; //
delay(5); //
RED_ON;
}
else
RED_ON;
if(adc1_value<578)
{
LED1_ON;//灯亮
}
else
{
LED1_OFF;
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW);
ZT=1;//红灯闪状态
delay(100);
count++;
if(count==45)
{
count=0;
while(adc1_value>578)
{
if(GPIO_ReadInputPin(GPIOB, GPIO_PIN_5)==0)
break;
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_OD_HIZ_SLOW);
ZT=0;
adc1_value=ADC1_GetConversionValue();
LEDGZ_OFF;
delay(10);
LEDGZ_ON;
}
RED_ON;
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW);
ZT=1;
}
}
adc1_init2();
delay(10);
adc2_value=ADC1_GetConversionValue();
delay(10);
if(adc2_value<578)
{
LED2_ON;
}
else
{
LED2_OFF;
}
adc1_init3();
delay(10);
adc3_value=ADC1_GetConversionValue();
delay(10);
if(adc3_value<578)
{
LED3_ON;
}
else
{
LED3_OFF;
}
adc1_init4();
delay(10);
adc4_value=ADC1_GetConversionValue();
delay(10);
if(adc4_value<578)
{
LED4_ON;
delay(600);
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_OD_HIZ_SLOW);
ZT=0;
}
else
{
LED4_OFF;
}
LEDGZ_OFF;
delay(5);
LEDGZ_ON;
}
else
{
LEDGZ_OFF;
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_OD_HIZ_SLOW);
RED_ON;
adc1_init1();
delay(5);
adc1_value=ADC1_GetConversionValue();
delay(5);
if(adc1_value<578)
{
LED1_ON;//灯亮
}
else
{
LED1_OFF;
}
adc1_init2();
delay(5);
adc2_value=ADC1_GetConversionValue();
delay(5);
if(adc2_value<578)
{
LED2_ON;
}
else
{
LED2_OFF;
}
adc1_init3();
delay(5);
adc3_value=ADC1_GetConversionValue();
delay(5);
if(adc3_value<578)
{
LED3_ON;
}
else
{
LED3_OFF;
}
adc1_init4();
delay(5);
adc4_value=ADC1_GetConversionValue();
delay(5);
if(adc4_value<578)
{
LED4_ON;
}
else
{
LED4_OFF;
}
}
}
}
/*adc1_init2();
adc1_value=ADC1_GetConversionValue();
delay(250);
adc1_init3();
adc1_value=ADC1_GetConversionValue();
delay_10us(250);*/
|