📄 gsm.lst
字号:
C51 COMPILER V8.05a GSM 03/24/2009 10:29:07 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE GSM
OBJECT MODULE PLACED IN gsm.OBJ
COMPILER INVOKED BY: D:\Program Files\keil c51 v8.05\C51\BIN\C51.EXE gsm.c COMPACT BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 sbit key1=P3^3;//按钮
3 unsigned int rsl;//接收字符串长度
4 unsigned char *q;//发送数组指针
5 unsigned char cmgs;//发送的字节数
6 //code的用法因为你定义的数据是常量,放在DATA或XDATA区中浪费了,故被定位在CODE(就是程序存储器)区内。
7 unsigned char callno[]="ATDT15816916909;";//发送的字符串
8 unsigned char msmorder[]="AT+CMGS=21";
9 unsigned char msm[140];
10 unsigned char rsbuf;
11 unsigned char rspoint,z;//接收数组下标+接收数组开关
12 void sendmassage();//发短信
13 void call();//打电话
14 void scankey1(); //扫描按钮
15 void delay(int); //粗略延时
16 void ser(); //串口中断
17 void sendtogsm(unsigned char,int);//发送字符串
18 void sendasc(unsigned char);//发送一个ASCII码
19 void sendenter();//发送回车
20
21
22 main()
23 {
24 1 //----------串口通信初始化开始------------------
25 1 PCON=0x80;//设置波特率为19200 若想变成9600删除此行即可
26 1 TMOD=0x20;//设置定时器1为方式2
27 1 TH1=0xfd;//设置波特率
28 1 TL1=0xfd;
29 1 TR1=1;
30 1 REN=1;//打开串口通信
31 1 SM0=0;
32 1 SM1=1;
33 1 EA=1;
34 1 ES=1;
35 1 z=0;
36 1 rspoint=0;
37 1 //---------串口通信初始化结束-------------------
38 1
39 1 while(1)
40 1 {
41 2 scankey1();
42 2 }
43 1 }
44
45 //------------扫描按键是否按下------------------
46 void scankey1()
47 {
48 1 if (key1==0)
49 1 {
50 2 delay(6000);
51 2 if (key1==0)
52 2
53 2 {
54 3
55 3 sendmassage();
C51 COMPILER V8.05a GSM 03/24/2009 10:29:07 PAGE 2
56 3 delay(20000);
57 3 }
58 2
59 2 }
60 1 }
61
62 //---------------粗糙延时-----------------------
63 void delay(int x)
64 {
65 1 int i;
66 1 for (i=0;i<=x;i++);
67 1 }
68 //-------串口中断+串口数据接收-----------
69 void ser() interrupt 4 using 1
70 {
71 1 RI=0;
72 1 if(SBUF=='~')
73 1 {
74 2 z=1;
75 2 }
76 1 if(SBUF=='!')
77 1 {
78 2 rspoint=0;
79 2 z=0;
80 2 }
81 1 if(z==1)
82 1 {
83 2 msm[rspoint]=SBUF;
84 2 rspoint++;
85 2 }
86 1
87 1 }
88
89 //-----------发送一个ASCII码----------------
90 void sendasc(unsigned char asc)
91 {
92 1 bit es;
93 1 es=ES;
94 1 ES=0;
95 1 TI=0;
96 1 SBUF=asc;
97 1 while(!TI);
98 1 TI=0;
99 1 ES=es;
100 1 }
101
102 //---------------------------发送字符串------------------------------------
103 void sendtogsm(unsigned char *p,int L)//1、字符串数组 2、字符串长度
104 {
*** WARNING C235 IN LINE 104 OF GSM.C: parameter 1: different types
105 1 while (L--)
106 1 {
107 2 sendasc(*p++);
108 2 }
109 1 }
110 //---------------------发送字符串去首字符---------------------------------
111 void sendtogsmno1(unsigned char *p,int L)//1、字符串数组 2、字符串长度
112 {
113 1 p++;
114 1 while (L--)
115 1 {
116 2 sendasc(*p++);
C51 COMPILER V8.05a GSM 03/24/2009 10:29:07 PAGE 3
117 2 }
118 1 }
119 //-----------------发短信-----------------------
120 void sendmassage()
121 {
122 1 int i;
123 1 sendtogsm(msmorder,sizeof(msmorder)-1);
124 1 sendenter();
125 1 for(i=0;i<10000;i++) delay(50000);//接收<符号
126 1 q=&msm[1];
127 1 sendtogsm(q,sizeof(msm)-1);
128 1 sendasc(26);
129 1 }
130
131
132 //-----------------打电话-----------------------
133 void call()
134 {
135 1 sendtogsm(callno,sizeof(callno)-1);
136 1 sendenter();
137 1
138 1 }
139
140 //-------------------发送回车---------------------
141 void sendenter()
142 {
143 1 sendasc(13);//传送回车
144 1 sendasc(10);
145 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 335 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = 177 6
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -