📄 sms.lst
字号:
C51 COMPILER V7.50 SMS 01/26/2007 17:53:09 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SMS
OBJECT MODULE PLACED IN sms.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sms.c BROWSE DEBUG OBJECTEXTEND CODE
line level source
1 #include <w77e58.h>
2 #include "global.h"
3 #include "io.h"
4 #include "timer.h"
*** WARNING C258 IN LINE 4 OF TIMER.H: 'd': mspace on parameter ignored
*** WARNING C258 IN LINE 5 OF TIMER.H: 'd': mspace on parameter ignored
5 #include "serial.h"
*** WARNING C258 IN LINE 4 OF SERIAL.H: 'nLength': mspace on parameter ignored
*** WARNING C258 IN LINE 5 OF SERIAL.H: 'nLength': mspace on parameter ignored
*** WARNING C258 IN LINE 12 OF SERIAL.H: 'j': mspace on parameter ignored
*** WARNING C258 IN LINE 13 OF SERIAL.H: 'j': mspace on parameter ignored
*** WARNING C258 IN LINE 14 OF SERIAL.H: 'nLength': mspace on parameter ignored
*** WARNING C258 IN LINE 14 OF SERIAL.H: 'nNumRead': mspace on parameter ignored
*** WARNING C258 IN LINE 14 OF SERIAL.H: 'time_out': mspace on parameter ignored
6 #include "gsm.h"
7
8
9
10 //用户信息编码方式
11 #define GSM_7BIT 0
12 #define GSM_8BIT 4
13 #define GSM_UCS2 8
14
15
16 // 短消息参数结构,编码/解码共用
17 // 其中,字符串以0结尾
18 #if 1
19 typedef struct
20 {
21 char SCA[16]; // 短消息服务中心号码(SMSC地址)
22 char TPA[16]; // 目标号码或回复号码(TP-DA或TP-RA)
23 char TP_PID; // 用户信息协议标识(TP-PID)
24 char TP_DCS; // 用户信息编码方式(TP-DCS)
25 char TP_SCTS[16]; // 服务时间戳字符串(TP_SCTS), 接收时用到
26 char TP_UD[161]; // 原始用户信息(编码前或解码后的TP-UD)
27 char index; // 短消息序号,在读取时用到
28 } SM_PARAM;
29 #else
typedef struct
{
char xdata SCA[16]; //_at_ 0x000; // 短消息服务中心号码(SMSC地址)
char xdata TPA[16]; //_at_ 0x016; // 目标号码或回复号码(TP-DA或TP-RA)
char xdata TP_PID; //_at_ 0x032; // 用户信息协议标识(TP-PID)
char xdata TP_DCS; // _at_ 0x033; // 用户信息编码方式(TP-DCS)
char xdata TP_SCTS[16]; // _at_ 0x049; // 服务时间戳字符串(TP_SCTS), 接收时用到
char xdata TP_UD[161]; // _at_ 0x064; // 原始用户信息(编码前或解码后的TP-UD)
char xdata index; // _at_ 0x065; // 短消息序号,在读取时用到
} SM_PARAM;
#endif
43
44 char xdata SCA1[16]; //_at_ 0x000; // 短消息服务中心号码(SMSC地址)
45 char xdata TPA1[16]; //_at_ 0x016; // 目标号码或回复号码(TP-DA或TP-RA)
46 char xdata TP_PID1; //_at_ 0x032; // 用户信息协议标识(TP-PID)
C51 COMPILER V7.50 SMS 01/26/2007 17:53:09 PAGE 2
47 char xdata TP_DCS1; // _at_ 0x033; // 用户信息编码方式(TP-DCS)
48 char xdata TP_SCTS1[16]; // _at_ 0x049; // 服务时间戳字符串(TP_SCTS), 接收时用到
49 char xdata TP_UD1[161]; // _at_ 0x064; // 原始用户信息(编码前或解码后的TP-UD)
50 char xdata index1; // _at_ 0x065; // 短消息序号,在读取时用到
51
52 //char xdata cmd[16]
53 //char xdata pdu[512];
54 //char xdata ans[256]; //Read GSM answer buff;
55
56
57
58 int gsmDecode7bit(uchar xdata * pSrc, char xdata * pDst, int xdata nSrcLength);
*** WARNING C258 IN LINE 58 OF SMS.C: 'nSrcLength': mspace on parameter ignored
59
60
61
62 /*********************************************************************************************************
-*****
63
64 GSM_IO10: L->H-L,H=40-50 ms,wake up MCU,and gsm set IO11 to low.
65 GSM_ROW4: ,Wake up GSM.
66
67
68 Host to GSM: check GSM sleep? if yes,Host pull low GSM_ROW4 to low 50 ms,at once send AT command.
69 **********************************************************************************************************
-****/
70
71
72 void gsmModule_init(void)
73 {
74 1
75 1 GSM_PWON=HIGH;
76 1 delay_ms(5);
77 1 GSM_PWON=LOW;
78 1 delay_ms(200); //Over 120 ms,M32 power on.
79 1 GSM_PWON=HIGH;
80 1 }
81
82
83
84
85 /************************************************************************************************
86 * int gsmEncode7bit(const char* pSrc, unsigned char* pDst, int nSrcLength)
87 * 7-bit编码
88 * pSrc: 源字符串指针
89 * pDst: 目标编码串指针
90 * nSrcLength: 源字符串长度
91 * 返回: 目标编码串长度
92 ***************************************************************************************/
93 int gsmEncode7bit(char xdata* pSrc, unsigned char xdata* pDst, int xdata nSrcLength)
*** WARNING C258 IN LINE 93 OF SMS.C: 'nSrcLength': mspace on parameter ignored
94 {
95 1 int xdata nSrc; // 源字符串的计数值
96 1 int xdata nDst; // 目标编码串的计数值
97 1 int xdata nChar; // 当前正在处理的组内字符字节的序号,范围是0-7
98 1 unsigned char xdata nLeft; // 上一字节残余的数据
99 1 // 计数值初始化
100 1 nSrc = 0;
101 1 nDst = 0;
102 1
103 1 // 将源串每8个字节分为一组,压缩成7个字节
104 1 // 循环该处理过程,直至源串被处理完
C51 COMPILER V7.50 SMS 01/26/2007 17:53:09 PAGE 3
105 1 // 如果分组不到8字节,也能正确处理
106 1 while(nSrc<nSrcLength)
107 1 {
108 2 // 取源字符串的计数值的最低3位
109 2 nChar = nSrc & 7;
110 2
111 2 // 处理源串的每个字节
112 2 if(nChar == 0)
113 2 {
114 3 // 组内第一个字节,只是保存起来,待处理下一个字节时使用
115 3 nLeft = *pSrc;
116 3 }
117 2 else
118 2 {
119 3
120 3 // 组内其它字节,将其右边部分与残余数据相加,得到一个目标编码字节
121 3 *pDst = (*pSrc << (8-nChar))| nLeft;
122 3 // 将该字节剩下的左边部分,作为残余数据保存起来
123 3 nLeft = *pSrc >> nChar;
124 3 // 修改目标串的指针和计数值
125 3 pDst++;
126 3 nDst++;
127 3 }
128 2
129 2
130 2 // 修改源串的指针和计数值
131 2 pSrc++;
132 2 nSrc++;
133 2 }
134 1
135 1 // 返回目标串长度
136 1 return nDst;
137 1 }
138
139 int gsmEncode8bit(char xdata * pSrc, unsigned char xdata* pDst, int xdata nSrcLength)
*** WARNING C258 IN LINE 139 OF SMS.C: 'nSrcLength': mspace on parameter ignored
140 {
141 1
142 1
143 1
144 1 }
*** WARNING C280 IN LINE 139 OF SMS.C: 'pSrc': unreferenced local variable
*** WARNING C280 IN LINE 139 OF SMS.C: 'pDst': unreferenced local variable
*** WARNING C280 IN LINE 139 OF SMS.C: 'nSrcLength': unreferenced local variable
145
146 /*****************************************************************************************************
147 * int gsmDecode7bit(const unsigned char* pSrc, char* pDst, int nSrcLength)
148 *
149 * 7-bit解码
150 * pSrc: 源编码串指针
151 * pDst: 目标字符串指针
152 * nSrcLength: 源编码串长度
153 * 返回: 目标字符串长度
154 *******************************************************************************************************/
155 //int gsmDecode7bit(const unsigned char* pSrc, char* pDst, int nSrcLength)
156 int gsmDecode7bit(uchar xdata * pSrc, char xdata * pDst, int xdata nSrcLength)
*** WARNING C258 IN LINE 156 OF SMS.C: 'nSrcLength': mspace on parameter ignored
157 {
158 1 int xdata nSrc; // 源字符串的计数值
159 1 int xdata nDst; // 目标解码串的计数值
160 1 int xdata nByte; // 当前正在处理的组内字节的序号,范围是0-6
161 1 unsigned char xdata nLeft; // 上一字节残余的数据
C51 COMPILER V7.50 SMS 01/26/2007 17:53:09 PAGE 4
162 1
163 1 // 计数值初始化
164 1 nSrc = 0;
165 1 nDst = 0;
166 1 // 组内字节序号和残余数据初始化
167 1 nByte = 0;
168 1 nLeft = 0;
169 1 // 将源数据每7个字节分为一组,解压缩成8个字节
170 1 // 循环该处理过程,直至源数据被处理完
171 1 // 如果分组不到7字节,也能正确处理
172 1 while(nSrc<nSrcLength)
173 1 {
174 2 // 将源字节右边部分与残余数据相加,去掉最高位,得到一个目标解码字节
175 2 *pDst = ((*pSrc << nByte) | nLeft) & 0x7f;
176 2 // 将该字节剩下的左边部分,作为残余数据保存起来
177 2 nLeft = *pSrc >> (7-nByte);
178 2 // 修改目标串的指针和计数值
179 2 pDst++;
180 2 nDst++;
181 2 // 修改字节计数值
182 2 nByte++;
183 2 // 到了一组的最后一个字节
184 2 if(nByte == 7)
185 2 {
186 3 // 额外得到一个目标解码字节
187 3 *pDst = nLeft;
188 3 // 修改目标串的指针和计数值
189 3 pDst++;
190 3 nDst++;
191 3 // 组内字节序号和残余数据初始化
192 3 nByte = 0;
193 3 nLeft = 0;
194 3 }
195 2 // 修改源串的指针和计数值
196 2 pSrc++;
197 2 nSrc++;
198 2 }
199 1 *pDst = 0;
200 1 // 返回目标串长度
201 1 return nDst;
202 1 }
203
204 //int gsmDecode8bit(const unsigned char* pSrc, char* pDst, int nSrcLength)
205 int gsmDecode8bit(uchar xdata * pSrc, char xdata * pDst, int xdata nSrcLength)
*** WARNING C258 IN LINE 205 OF SMS.C: 'nSrcLength': mspace on parameter ignored
206 {
207 1
208 1
209 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -