?? 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;//發(fā)送數(shù)組指針
5 unsigned char cmgs;//發(fā)送的字節(jié)數(shù)
6 //code的用法因為你定義的數(shù)據(jù)是常量,放在DATA或XDATA區(qū)中浪費了,故被定位在CODE(就是程序存儲器)區(qū)內(nèi)。
7 unsigned char callno[]="ATDT15816916909;";//發(fā)送的字符串
8 unsigned char msmorder[]="AT+CMGS=21";
9 unsigned char msm[140];
10 unsigned char rsbuf;
11 unsigned char rspoint,z;//接收數(shù)組下標(biāo)+接收數(shù)組開關(guān)
12 void sendmassage();//發(fā)短信
13 void call();//打電話
14 void scankey1(); //掃描按鈕
15 void delay(int); //粗略延時
16 void ser(); //串口中斷
17 void sendtogsm(unsigned char,int);//發(fā)送字符串
18 void sendasc(unsigned char);//發(fā)送一個ASCII碼
19 void sendenter();//發(fā)送回車
20
21
22 main()
23 {
24 1 //----------串口通信初始化開始------------------
25 1 PCON=0x80;//設(shè)置波特率為19200 若想變成9600刪除此行即可
26 1 TMOD=0x20;//設(shè)置定時器1為方式2
27 1 TH1=0xfd;//設(shè)置波特率
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 //---------串口通信初始化結(jié)束-------------------
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 //-------串口中斷+串口數(shù)據(jù)接收-----------
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 //-----------發(fā)送一個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 //---------------------------發(fā)送字符串------------------------------------
103 void sendtogsm(unsigned char *p,int L)//1、字符串?dāng)?shù)組 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 //---------------------發(fā)送字符串去首字符---------------------------------
111 void sendtogsmno1(unsigned char *p,int L)//1、字符串?dāng)?shù)組 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 //-----------------發(fā)短信-----------------------
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 //-------------------發(fā)送回車---------------------
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)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -