LED.c
上传用户:buddy3
上传日期:2022-06-12
资源大小:100k
文件大小:5k
源码类别:

GPS编程

开发平台:

C/C++

  1. #include "..config.h"
  2. const int GSMsoon = 2800;
  3. const int soon = 12560;
  4. const int slow = 30000;
  5. /*
  6. **********************************************************************
  7. 函数:Delay
  8. 参数:DTime
  9. 返回:无
  10. 功能:延迟程序
  11. **********************************************************************
  12. */
  13. void Delay(int DTime)
  14. {
  15.   int i;
  16.   for(;DTime>0;DTime--){
  17.     for(i=0;i<20000;i++);}
  18. }
  19. /*
  20. **********************************************************************
  21. 函数:GSMGPSCon_Hi
  22. 参数:无
  23. 返回:无
  24. 功能:P5.7管脚输出高电平 控制MOS管开
  25. **********************************************************************
  26. */
  27. void GSMGPSCon_Hi(void)
  28. {
  29.     P5OUT |= BIT7;
  30.     return;
  31. }
  32. /*
  33. **********************************************************************
  34. 函数:GSMGPSCon_Lo
  35. 参数:无
  36. 返回:无
  37. 功能:P5.7管脚输出低电平  控制MOS管关
  38. **********************************************************************
  39. */
  40. void GSMGPSCon_Lo(void)
  41. {
  42.     P5OUT &= ~(BIT7);
  43.     return;
  44. }
  45. /*
  46. **********************************************************************
  47. 函数:GSMGPS_Reset
  48. 参数:无
  49. 返回:无
  50. 功能:GSMGPS掉电重启动函数
  51. **********************************************************************
  52. */
  53. void GSMGPS_Reset(void)
  54. {
  55.   Delay(20);            //延迟一段时间
  56.   GSMGPSCon_Lo();
  57.   Delay(20);
  58.   GSMGPSCon_Hi();
  59.   //GSM处理
  60.   GSMState = GSM;         //掉电重启后。GSM模块处于GSM状态
  61.   State[0] = '1';         //GSM状态位赋值0
  62.   GSM_Init_Flag = 0;      //重新开始初始化
  63.   GSM_Init_Flag_Time = 0; //初始化次数清零
  64.   GSMStart_Flag = 0;      //初始化标志位为0,表示GSM要进入初始化状态
  65.   
  66.   //GPS处理
  67.   GPSState = GPS_V;       //掉电重启后。GPS模块处于未定位状态
  68.   State[1] = '1';         //修改系统GPS状态位  1  表示没定到位
  69.   
  70.   UART0_SendStr_char("GSMGPS_Reset");
  71. }
  72. //////////////////////////////////////////////////////////////////////
  73. /*
  74. **********************************************************************
  75. 函数:GSM_Hi
  76. 参数:无
  77. 返回:无
  78. 功能:P4.5管脚输出高电平
  79. **********************************************************************
  80. */
  81. void GSM_Hi(void)
  82. {
  83.     P4OUT |= BIT5;
  84.     return;
  85. }
  86. /*
  87. **********************************************************************
  88. 函数:GSM_Lo
  89. 参数:无
  90. 返回:无
  91. 功能:P4.5管脚输出低电平
  92. **********************************************************************
  93. */
  94. void GSM_Lo(void)
  95. {
  96.     P4OUT &= ~(BIT5);
  97.     return;
  98. }
  99. /*
  100. **********************************************************************
  101. 函数:GPS_Hi
  102. 参数:无
  103. 返回:无
  104. 功能:P4.6管脚输出高电平
  105. **********************************************************************
  106. */
  107. void GPS_Hi(void)
  108. {
  109.     P4OUT |= BIT6;
  110.     return;
  111. }
  112. /*
  113. **********************************************************************
  114. 函数:GPS_Lo
  115. 参数:无
  116. 返回:无
  117. 功能:P1.2管脚输出低电平
  118. **********************************************************************
  119. */
  120. void GPS_Lo(void)
  121. {
  122.     P4OUT &= ~(BIT6);
  123.     return;
  124. }
  125. /*
  126. **********************************************************************
  127. 函数:LED_Init
  128. 参数:无
  129. 返回:无
  130. 功能:LED闪灯初始化
  131. **********************************************************************
  132. */
  133. void LED_Init(void)
  134. {
  135.      //将P4口所有的管脚在初始化的时候设置为输入方式
  136.     P4DIR = 0;
  137.  
  138.     //将P4口所有的管脚设置为一般I/O口
  139.     P4SEL = 0;
  140.     
  141.      // 将P4.5 P4.6 设置为输出方向
  142.     P4DIR |= BIT5;
  143.     P4DIR |= BIT6;
  144.     
  145.     
  146.    GSM_Lo(); 
  147.    GPS_Lo(); 
  148.     
  149.     //将P5口所有的管脚在初始化的时候设置为输入方式
  150.     P5DIR = 0;
  151.  
  152.     //将P5口所有的管脚设置为一般I/O口
  153.     P5SEL = 0;
  154.     
  155.     // 将P5.7设置为输出方向
  156.     P5DIR |= BIT7;
  157.     P5DIR |= BIT1;
  158.     // 将P5.7设置为输出高电平
  159.     P5OUT |= BIT7;
  160.     P5OUT |= BIT1;
  161.     
  162.     
  163.     return;
  164. }
  165. /*
  166. **********************************************************************
  167. 函数:LED_Prol
  168. 参数:无
  169. 返回:无
  170. 功能:LED闪灯程序
  171. **********************************************************************
  172. */
  173. int GSMLED_int = 10000; //GSM灯循环延迟系数
  174. unsigned char GSMLED_Flag = 0;
  175. int GPSLED_int = 10000; //GPS灯循环延迟系数
  176. unsigned char GPSLED_Flag = 0;
  177. void LED_Prol(void)
  178. {
  179.   if((GSMLED_int > 0) && ((--GSMLED_int) == 0))
  180.   {
  181.     if(GSMState == GPRS) GSMLED_int = soon;
  182.       else  GSMLED_int = slow;
  183.       
  184.     if(GSMStart_Flag == 0) GSMLED_int = GSMsoon;
  185.     
  186.     if(GSMLED_Flag) 
  187.     {
  188.       GSMLED_Flag = 0;
  189.       GSM_Hi();
  190.      }
  191.     else 
  192.     {
  193.       GSM_Lo();
  194.       GSMLED_Flag++;
  195.      }
  196.   }
  197.   
  198.   if((GPSLED_int > 0) && ((--GPSLED_int) == 0))
  199.   {
  200.     if(GPSState == GPS_A) GPSLED_int = soon;
  201.       else  GPSLED_int = slow;
  202.       
  203.     if(GSMStart_Flag == 0) GPSLED_int = GSMsoon;
  204.     
  205.     if(GPSLED_Flag) 
  206.     {
  207.       GPS_Hi();
  208.       GPSLED_Flag = 0;
  209.     }
  210.     else 
  211.     {
  212.       GPS_Lo();
  213.       GPSLED_Flag++;
  214.     }
  215.     
  216.     if((GPSData_Protect--) == 0) GSMGPS_Reset();//收不到GPS数据
  217.   }
  218.   
  219. }