📄 gprs.lst
字号:
C51 COMPILER V7.50 GPRS 10/01/2006 11:02:26 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE GPRS
OBJECT MODULE PLACED IN gprs.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE gprs.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "gprs_funcdef.h"
2 #include "gprs_vardef.h"
3 #include "myfunclib.h"
4 #include "string.h"
5
6 bit Init_Flag=0;
7 //--------测试用ip地址和端口号-----------------------------
8 extern BYTE xdata IP_ADDRESS1;
9 extern BYTE xdata IP_ADDRESS2;
10 extern BYTE xdata IP_ADDRESS3;
11 extern BYTE xdata IP_ADDRESS4;
12
13 extern BYTE xdata PORT1;
14 extern BYTE xdata PORT2;
15 extern WORD xdata Send_timer;
16 //----------------------------------------------------------
17
18 BYTE xdata WAVE_Receive_Num = 0; //GPRS串口接收到的数据记数
19 BYTE xdata RECEIVEBUFFER[100];
20
21 void load_ip_port()
22 {
23 1 // 装入IP地址
24 1 IP_Head[16]=IP_ADDRESS1;
25 1 IP_Head[17]=IP_ADDRESS2;
26 1 IP_Head[18]=IP_ADDRESS3;
27 1 IP_Head[19]=IP_ADDRESS4;
28 1
29 1
30 1 //装入端口号
31 1 UDP_Head[2]=PORT1;
32 1 UDP_Head[3]=PORT2;
33 1 }
34
35
36 //***************************************************
37 //WAVECOM 数据接收子程序:串口0中断服务程序
38 //**************************************************
39 void Serial0_WAVECOM(void) interrupt 4
40 {
41 1 if(exitData || enterPhone)
42 1 {
43 2 if (RI)
44 2 {
45 3 RI = 0;
46 3 URAT0Revbuffer[URAT0writeBuffer++] = SBUF;
47 3 }
48 2 if(TI)
49 2 {
50 3 TI = 0;
51 3 if(URAT0SWriteBuffer != URAT0SWreadBuffer)
52 3 {
53 4 SBUF = URAT0SendBuffer[URAT0SWreadBuffer++];
54 4 }
55 3 else
C51 COMPILER V7.50 GPRS 10/01/2006 11:02:26 PAGE 2
56 3 {
57 4 URAT0SWriteBuffer = URAT0SWreadBuffer = 0;
58 4 sendOver = 1;
59 4 }
60 3 }
61 2 }//GPRS mode.
62 1 else
63 1 {
64 2 if (RI)
65 2 {
66 3 RI=0;
67 3 if(RECEIVE_FLAG==0)
68 3 {
69 4 if(SBUF==0x7E)
70 4 {
71 5 RECEIVE_FLAG=1;
72 5 RECEIVEBUFFERPOINT=RECEIVEBUFFER;
73 5 WAVE_Receive_Num = 0;
74 5 }
75 4 }
76 3 else
77 3 {
78 4 if(SBUF==0x7E)
79 4 {
80 5 RECEIVE_FLAG=0;
81 5 if(RECEIVEBUFFERPOINT!=RECEIVEBUFFER) //排除连续收到两个7E,数据长度为0的错误情况
82 5 {
83 6 PPP_Rec_Complete = 1;
84 6 }
85 5 }
86 4 else
87 4 {
88 5 if(PADDING_Flag==1)
89 5 {
90 6 *RECEIVEBUFFERPOINT=SBUF;
91 6 if((*RECEIVEBUFFERPOINT) == 0x5E)
92 6 {
93 7 *RECEIVEBUFFERPOINT = 0x7E;
94 7 }
95 6 else if((*RECEIVEBUFFERPOINT) == 0x5D)
96 6 {
97 7 *RECEIVEBUFFERPOINT = 0x7D;
98 7 }
99 6 else
100 6 {
101 7 *RECEIVEBUFFERPOINT^=0x20;
102 7 }
103 6 PADDING_Flag=0;
104 6 RECEIVEBUFFERPOINT++;
105 6 WAVE_Receive_Num++;
106 6 }
107 5 else
108 5 {
109 6 if(SBUF==0x7D)
110 6 PADDING_Flag=1;
111 6 else
112 6 {
113 7 *RECEIVEBUFFERPOINT=SBUF;
114 7 RECEIVEBUFFERPOINT++;
115 7 WAVE_Receive_Num++;
116 7 }
117 6 }
C51 COMPILER V7.50 GPRS 10/01/2006 11:02:26 PAGE 3
118 5 }
119 4 }
120 3 }
121 2 }
122 1 }
123
124 /////////////////////////////////////////////////////////////
125 //timer 0 interrupt
126 ////////////////////////////////////////////////////////////
127 void ISR_Timer0(void) interrupt 1
128 {
129 1 TH0=0;
130 1 TL0=0;
131 1 if(Timer0_Counter<10){ //256 //Wait 1000us 20*50us
132 2 Timer0_Counter++;
133 2 }
134 1 else{
135 2 Timer0_Counter = 0;
136 2 if(waitTimer)
137 2 waitTimer--;
138 2
139 2 if(Link_Timer) //if Link_Timer==0 but net not ok,connect again
140 2 {
141 3 Link_Timer--;
142 3 }
143 2 if(Send_timer)
144 2 {
145 3 Send_timer--;
146 3 }
147 2 }
148 1 }
149
150 ////////////////////////////////////////////////////////////////////
151 //联网从此函数开始
152 //该函数执行的条件,是没有联网和联网超时
153 ////////////////////////////////////////////////////////////////////
154 void InitAndConnect(void)
155 {
156 1 unsigned char xdata csq;
157 1
158 1 if(!GPRS_OK && Link_Timer == 0) //如果没有联网而且联网时间已超时,则开始重新联网
159 1 {
160 2 ES=1;
161 2 csq = 99;
162 2 while(csq > 31) //读取信号强度
163 2 {
164 3 csq = GetCSQ();
165 3 }
166 2 if(csq != 00)
167 2 {
168 3 exitData = 0;
169 3 TestAndConnect(); //拨号去联网
170 3 }
171 2 }
172 1 }
173 void TestAndConnect()
174 {
175 1 UINT i;
176 1
177 1 ES=1; //允许串
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -