📄 sms.lst
字号:
C51 COMPILER V8.06 SMS 12/25/2007 08:55:46 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE SMS
OBJECT MODULE PLACED IN SMS.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE SMS.c BROWSE MODDP2 DEBUG OBJECTEXTEND
line level source
1 /*************************************************
2 文件名:SMS.C
3 功 能:与短信相关的代码
4 *************************************************/
5 #include <W77C32.h>
6 #include "hal.h"
7 #include "SMS.h"
8
9 //发送AT命令
10 void SENDCMD(uchar cmdlen,uchar *cmd)
11 {uchar i=0;
12 1 for(;cmdlen>0;cmdlen--)
13 1 {SBUF=cmd[i++];
14 2 while(TI==0);
15 2 TI=0;
16 2 }
17 1 }
18
19 //发送一个字符
20 void SENDCHAR(uchar c)
21 { SBUF=c;
22 1 while(TI==0);
23 1 TI=0;
24 1 }
25
26 //获得发送手机的号码和数据
27 void GETNUMBER_DATA(void)
28 {uint i;
29 1 for(;rcount>0;rcount--)
30 1 {if((rbuff[rcount]==0x38)&&(rbuff[rcount-1]==0x30)&&(rbuff[rcount-2]==0x0A)&&(rbuff[rcount-3]==0x0D))
31 2 for(i=0;i<14;i++)
32 2 {number_buff[i]=rbuff[rcount+23+i];
33 3 }
34 2 datalen=(DoubleAscii2Byte(rbuff[rcount+55],rbuff[rcount+56]))*2;
35 2 for(i=0;i<datalen;i++)
36 2 {databuff[i]=rbuff[rcount+57+i];
37 3 }
38 2 break;
39 2 }
40 1 }
41
42
43 //向指定的号码发送短消息(内容为:短信已收到!)
44 void SENDSMS(void)
45 {ulong i=0xfffff;
46 1 rcount=0;//数据缓冲区指针回0
47 1 SENDCMD(10,&cmgs);
48 1 SENDCHAR(0x0D);
49 1 while(rbuff[rcount-1]!=">")
50 1 {i--; //超时返回
51 2 if(i==0)
52 2 {return;}
53 2 }
54 1 SENDCMD(10,&smsdata0);
55 1 SENDCMD(14,&number_buff); //发送号码
C51 COMPILER V8.06 SMS 12/25/2007 08:55:46 PAGE 2
56 1 SENDCMD(20,&smsdata1);
57 1 SENDCHAR(0x1A); //Ctrl+z发送短信
58 1 i=0xffffff; //发送短消息超时处理
59 1 while(receive_ok==0)
60 1 {i--;
61 2 if(i==0) //超时还未响应则返回
62 2 {rcount=0;
63 3 receive_ok=0;
64 3 return;}
65 2 }
66 1 receive_ok=0;
67 1 rcount=0;
68 1 }
69
70 //读取指定索引号的短信内容
71 void READSMS(void)
72 {ulong i=0xfffff;
73 1 rcount=0;
74 1 SENDCMD(8,&cmgr);
75 1 SENDCHAR(index_buff[0]);
76 1 if(index_len==2)
77 1 {SENDCHAR(index_buff[1]);}
78 1 SENDCHAR(0x0D);
79 1 while(receive_ok==0)
80 1 {i--;
81 2 if(i==0) //超时还未响应则返回
82 2 {rcount=0;
83 3 receive_ok=0;
84 3 return;}
85 2 }
86 1 receive_ok=0;
87 1 }
88
89 //删除指定索引号的短信内容
90 void DELSMS(void)
91 {ulong i=0xffff;
92 1 rcount=0;
93 1 SENDCMD(8,&cmgd);
94 1 SENDCHAR(index_buff[0]);
95 1 if(index_len==2)
96 1 {SENDCHAR(index_buff[1]);}
97 1 SENDCHAR(0x0D);
98 1 while(receive_ok==0)
99 1 {i--;
100 2 if(i==0) //超时还未响应则返回
101 2 {rcount=0;
102 3 receive_ok=0;
103 3 return;}
104 2 }
105 1 receive_ok=0;
106 1 rcount=0;
107 1 }
108
109 //计算短信索引号
110 void GET_INDEX(void)
111 {for(;rcount>0;--rcount)
112 1 if(rbuff[rcount]==0x2C) //用逗号来定位
113 1 {if((rbuff[rcount+2]>=0x30)&&(rbuff[rcount+2]<=0x39))
114 2 {index_len=2;
115 3 index_buff[0]=rbuff[rcount+1];
116 3 index_buff[1]=rbuff[rcount+2];
117 3 break;
C51 COMPILER V8.06 SMS 12/25/2007 08:55:46 PAGE 3
118 3 }
119 2 else
120 2 {index_len=1;
121 3 index_buff[0]=rbuff[rcount+1];
122 3 break;
123 3 }
124 2 }
125 1
126 1 }
127
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 913 ----
CONSTANT SIZE = 58 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 17
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -