- #include "..config.h"
- const int GSMsoon = 2800;
- const int soon = 12560;
- const int slow = 30000;
- /*
- **********************************************************************
- 函数:Delay
- 参数:DTime
- 返回:无
- 功能:延迟程序
- **********************************************************************
- */
- void Delay(int DTime)
- {
- int i;
- for(;DTime>0;DTime--){
- for(i=0;i<20000;i++);}
- }
- /*
- **********************************************************************
- 函数:GSMGPSCon_Hi
- 参数:无
- 返回:无
- 功能:P5.7管脚输出高电平 控制MOS管开
- **********************************************************************
- */
- void GSMGPSCon_Hi(void)
- {
- P5OUT |= BIT7;
- return;
- }
- /*
- **********************************************************************
- 函数:GSMGPSCon_Lo
- 参数:无
- 返回:无
- 功能:P5.7管脚输出低电平 控制MOS管关
- **********************************************************************
- */
- void GSMGPSCon_Lo(void)
- {
- P5OUT &= ~(BIT7);
- return;
- }
- /*
- **********************************************************************
- 函数:GSMGPS_Reset
- 参数:无
- 返回:无
- 功能:GSMGPS掉电重启动函数
- **********************************************************************
- */
- void GSMGPS_Reset(void)
- {
- Delay(20); //延迟一段时间
- GSMGPSCon_Lo();
- Delay(20);
- GSMGPSCon_Hi();
- //GSM处理
- GSMState = GSM; //掉电重启后。GSM模块处于GSM状态
- State[0] = '1'; //GSM状态位赋值0
- GSM_Init_Flag = 0; //重新开始初始化
- GSM_Init_Flag_Time = 0; //初始化次数清零
- GSMStart_Flag = 0; //初始化标志位为0,表示GSM要进入初始化状态
- //GPS处理
- GPSState = GPS_V; //掉电重启后。GPS模块处于未定位状态
- State[1] = '1'; //修改系统GPS状态位 1 表示没定到位
- UART0_SendStr_char("GSMGPS_Reset");
- }
- //////////////////////////////////////////////////////////////////////
- /*
- **********************************************************************
- 函数:GSM_Hi
- 参数:无
- 返回:无
- 功能:P4.5管脚输出高电平
- **********************************************************************
- */
- void GSM_Hi(void)
- {
- P4OUT |= BIT5;
- return;
- }
- /*
- **********************************************************************
- 函数:GSM_Lo
- 参数:无
- 返回:无
- 功能:P4.5管脚输出低电平
- **********************************************************************
- */
- void GSM_Lo(void)
- {
- P4OUT &= ~(BIT5);
- return;
- }
- /*
- **********************************************************************
- 函数:GPS_Hi
- 参数:无
- 返回:无
- 功能:P4.6管脚输出高电平
- **********************************************************************
- */
- void GPS_Hi(void)
- {
- P4OUT |= BIT6;
- return;
- }
- /*
- **********************************************************************
- 函数:GPS_Lo
- 参数:无
- 返回:无
- 功能:P1.2管脚输出低电平
- **********************************************************************
- */
- void GPS_Lo(void)
- {
- P4OUT &= ~(BIT6);
- return;
- }
- /*
- **********************************************************************
- 函数:LED_Init
- 参数:无
- 返回:无
- 功能:LED闪灯初始化
- **********************************************************************
- */
- void LED_Init(void)
- {
- //将P4口所有的管脚在初始化的时候设置为输入方式
- P4DIR = 0;
- //将P4口所有的管脚设置为一般I/O口
- P4SEL = 0;
- // 将P4.5 P4.6 设置为输出方向
- P4DIR |= BIT5;
- P4DIR |= BIT6;
- GSM_Lo();
- GPS_Lo();
- //将P5口所有的管脚在初始化的时候设置为输入方式
- P5DIR = 0;
- //将P5口所有的管脚设置为一般I/O口
- P5SEL = 0;
- // 将P5.7设置为输出方向
- P5DIR |= BIT7;
- P5DIR |= BIT1;
- // 将P5.7设置为输出高电平
- P5OUT |= BIT7;
- P5OUT |= BIT1;
- return;
- }
- /*
- **********************************************************************
- 函数:LED_Prol
- 参数:无
- 返回:无
- 功能:LED闪灯程序
- **********************************************************************
- */
- int GSMLED_int = 10000; //GSM灯循环延迟系数
- unsigned char GSMLED_Flag = 0;
- int GPSLED_int = 10000; //GPS灯循环延迟系数
- unsigned char GPSLED_Flag = 0;
- void LED_Prol(void)
- {
- if((GSMLED_int > 0) && ((--GSMLED_int) == 0))
- {
- if(GSMState == GPRS) GSMLED_int = soon;
- else GSMLED_int = slow;
- if(GSMStart_Flag == 0) GSMLED_int = GSMsoon;
- if(GSMLED_Flag)
- {
- GSMLED_Flag = 0;
- GSM_Hi();
- }
- else
- {
- GSM_Lo();
- GSMLED_Flag++;
- }
- }
- if((GPSLED_int > 0) && ((--GPSLED_int) == 0))
- {
- if(GPSState == GPS_A) GPSLED_int = soon;
- else GPSLED_int = slow;
- if(GSMStart_Flag == 0) GPSLED_int = GSMsoon;
- if(GPSLED_Flag)
- {
- GPS_Hi();
- GPSLED_Flag = 0;
- }
- else
- {
- GPS_Lo();
- GPSLED_Flag++;
- }
- if((GPSData_Protect--) == 0) GSMGPS_Reset();//收不到GPS数据
- }
- }