|
#include "MY_Key.h"
#include "modbus.h"
uint8_t set_flag=0,key_value=0,alarm_flag=0;
void Key_Init(void)
{
Gpio_InitIOExt(1,5,GpioDirIn,TRUE,FALSE,FALSE,FALSE);
Gpio_InitIOExt(1,4,GpioDirIn,TRUE,FALSE,FALSE,FALSE);
}
uint8_t KEY_Scan(void)
{
static uint8_t key_up=1;//按键按松开标志
if(key_up&&(KEY1==0|| KEY2==0))
{
// delayus(30);//去抖动
delay1ms(15);
key_up=0;
if(KEY1==0) return KEY1_PRESS;
else if(KEY2==0) return KEY2_PRESS;
}
else if(KEY1==1&&KEY2==1) key_up=1;
return 0;// 无按键按下
}
uint8_t key=0;
//uint16_t NUM_POS=0;
//uint16_t Hour_rain=0; //当前小时雨量
//uint16_t LastHour_rain=0; //前一个小时雨量
//uint16_t Day_rain=0; //一天的雨量
//uint16_t LastDay_rain=0; //前一天的雨量
uint16_t SAVE_FLAG=0;
//uint16_t Tota_rain=0;//总雨量
void Rainfall(void)
{
key=KEY_Scan();
switch (key)
{
case KEY1_PRESS: //
key = KEY_NO;
RegList.Instant_rain+=RegList.Rainfall_Num;
RegList.Rainfall+=RegList.Rainfall_Num;
RegList.Day_rain+=RegList.Rainfall_Num;
RegList.Hour_rain+=RegList.Rainfall_Num;
RegList.Tota_rain+=RegList.Rainfall_Num;
SAVE_FLAG=1;
break;
case KEY2_PRESS: //测试案件
// key = KEY_NO;
break;
default:
break;
}
if((RegList.PCF_buf[1]==0)&&(RegList.PCF_buf[0]<=1)) //一个小时的雨量清零,赋值上个小时的雨量
{
if(RegList.PCF_buf[0]==0)
{
// LastHour_rain=Hour_rain;
RegList.LastHour_rain=RegList.Hour_rain;
if(RegList.PCF_buf[2]==0)
{
// LastDay_rain=Day_rain;
RegList.LastDay_rain=RegList.Day_rain;
}
}
if(RegList.PCF_buf[0]==1)
{
// Hour_rain=0;
RegList.Hour_rain=0;
if(RegList.PCF_buf[2]==0)
{
// Day_rain=0;
RegList.Day_rain=0;
SAVE_FLAG=1;
}
}
}
if(RegList.Clearing==0)
{
RegList.Rainfall=0;
RegList.Day_rain=0;
RegList.Hour_rain=0;
RegList.LastDay_rain=0;
// RegList.Tota_rain=0;
RegList.LastDay_rain=0;
RegList.Instant_rain=0;
RegList.Clearing=1;
SAVE_FLAG=1;
}
if(RegList.Tota_rain>65000)
{
RegList.Tota_rain=0;
RegList.Instant_rain=0;
}
if(RegList.Rainfall_Num<=0)
{
RegList.Rainfall_Num=1;
}
if(SAVE_FLAG==1)
{
SaveWReg();
SAVE_FLAG=0;
}
}
|
|