?? 模擬中斷shou.lst
字號:
C51 COMPILER V8.05a 模擬中斷SHOU 04/10/2009 21:13:28 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 模擬中斷SHOU
OBJECT MODULE PLACED IN 模擬中斷shou.OBJ
COMPILER INVOKED BY: D:\Program Files\keil c51 v8.05\C51\BIN\C51.EXE 模擬中斷shou.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<STC_NEW_8051.H>
2
3 //-------------------短信內(nèi)容數(shù)組--------------------
4 unsigned char idata msm[180]="1111111111222222222233333333334444444444555555555566666666667777777777888888
-88889999999999000000000011111111112222222222333333333344444444445555555555666666666677777777778888888888";
5
6 //-------------------------------變量定義--------------------------------------------
7 //b:檢測起始位 z:I/O發(fā)送開關(guān) a:接收串口信息
8 //rspoint:I/O口接收數(shù)組下標(biāo) x:I/O口接收起始位判斷 rsopen:I/O口接收開關(guān)
9 unsigned char b,z,a,rspoint,x,rsopen;
10
11 //--------------I/O口:接收設(shè)置--------------
12 sbit F1 = PSW^1;
13 sbit BT_REC=P3^4;//I/O口接收數(shù)據(jù)線
14 #define rsflag F1
15
16
17 //-----------------I/O口發(fā)送變量初始化------------------
18 sbit clk=P1^7; //I/O口發(fā)送時鐘線
19 sbit BT_SND=P1^5;//I/O口發(fā)送線
20 #define F_TM F0
21 sbit ACC0= ACC^0;
22 sbit ACC1= ACC^1;
23 sbit ACC2= ACC^2;
24 sbit ACC3= ACC^3;
25 sbit ACC4= ACC^4;
26 sbit ACC5= ACC^5;
27 sbit ACC6= ACC^6;
28 sbit ACC7= ACC^7;
29
30 //---------------------函數(shù)聲明---------------------------
31 void sendasc(unsigned char asc);//發(fā)送一個ASCII碼
32 void sendtogsm(unsigned char *p,int L);//發(fā)送字符串
33 void delay(int);//延時程序
34 bit StartBitOn();//檢測起始位
35 void time();//I/O口clk接收:外部中斷0
36 void initwai0();//I/O口接收:外部中斷0初始化
37 unsigned char PGetChar();//I/O口:接收函數(shù)
38 void IntTimer0();//發(fā)送clk中斷:定時器0
39 void init();//發(fā)送clk中斷:定時器0初始化
40 void cksz();//串口通訊設(shè)置初始化
41 void sed(unsigned char);//I/O口發(fā)送
42 void time4();//串口中斷
43
44
45
46 //---------------------主函數(shù)---------------------/
47 void main()
48 {
49 1 cksz();
50 1 initwai0();
51 1 init();
52 1 rsopen=0;
53 1 rspoint=0;
54 1 b=0;
C51 COMPILER V8.05a 模擬中斷SHOU 04/10/2009 21:13:28 PAGE 2
55 1 z=0;
56 1 while(1)
57 1 {
58 2 if(StartBitOn())
59 2
60 2 {
61 3
62 3 x=PGetChar();
63 3 if(x=='~')
64 3 {
65 4 rsopen=1;
66 4 }
67 3 if(x=='!')
68 3 {
69 4 rspoint=0;
70 4 rsopen=0;
71 4 sendtogsm(msm,180);
72 4 }
73 3 if(rsopen==1)
74 3 {
75 4 msm[rspoint]=x;
76 4
77 4 if(rspoint==3)
78 4 {
79 5 if(x=='A') P0=0x00;
80 5 if(x=='B') P0=0XFF;
81 5 }
82 4 rspoint++;
83 4 }
84 3 }
85 2
86 2 if(b==1)
87 2 {
88 3 b=0;
89 3 sed(a);
90 3 }
91 2 }
92 1
93 1 }
94
95 //----------------發(fā)送clk中斷:定時器0--------------------/
96 void IntTimer0() interrupt 1
97 {
98 1
99 1 clk=0;
100 1 F_TM=1;
101 1
102 1 }
103
104
105 //-------------發(fā)送clk中斷:定時器0初始化-----------------/
106 void init()
107 {
108 1 TH0=(256-12);
109 1 TL0=TH0;
110 1 EA=1;
111 1 ET0=1;
112 1 }
113
114
115 //----------------串口通訊設(shè)置初始化-----------------/
116 void cksz()
C51 COMPILER V8.05a 模擬中斷SHOU 04/10/2009 21:13:28 PAGE 3
117 {
118 1 AUXR=0x60; //波特率*12 4800*12=57600
119 1 TMOD=0x22; //波特率設(shè)置
120 1 TH1=0xfa; //4800
121 1 TL1=0xfa;
122 1 TR1=1;
123 1 REN=1;//工作方式設(shè)置
124 1 SM0=0;
125 1 SM1=1;
126 1 EA=1; //開啟中斷
127 1 ES=1;
128 1 }
129
130 //-----------串口:發(fā)送一個ASCII碼----------------
131 void sendasc(unsigned char asc)
132 {
133 1 bit es;
134 1 es=ES;
135 1 ES=0;
136 1 TI=0;
137 1 SBUF=asc;
138 1 while(!TI);
139 1 TI=0;
140 1 ES=es;
141 1 }
142
143 //------------------串口:發(fā)送字符串---------------------
144 void sendtogsm(unsigned char *p,int L)//1、字符串?dāng)?shù)組 2、字符串長度
145 {
146 1 while (L--)
147 1 {
148 2 sendasc(*p++);
149 2 }
150 1 }
151
152 //---------------串口中斷---------------------
153 void time4() interrupt 4
154 {
155 1 if(RI==1)
156 1 {
157 2 RI=0;
158 2 a=SBUF;
159 2 if(a=='~')
160 2 {
161 3 z=1;
162 3 }
163 2 if(z==1)
164 2 {
165 3 b=1;
166 3 }
167 2 }
168 1 }
169
170 //--------------I/O口發(fā)送---------------------/
171 void sed(unsigned char inch)
172 {
173 1 ACC=inch;
174 1 clk=1;
175 1 F_TM=0;
176 1 BT_SND=0; //start bit
177 1 TR0=1; //啟動
178 1 while(!F_TM);
C51 COMPILER V8.05a 模擬中斷SHOU 04/10/2009 21:13:28 PAGE 4
179 1
180 1 BT_SND=ACC0; //先送出低位
181 1 clk=1;
182 1 F_TM=0;
183 1 while(!F_TM);
184 1
185 1 BT_SND=ACC1;
186 1 clk=1;
187 1 F_TM=0;
188 1 while(!F_TM);
189 1
190 1 BT_SND=ACC2;
191 1 clk=1;
192 1 F_TM=0;
193 1 while(!F_TM);
194 1
195 1 BT_SND=ACC3;
196 1 clk=1;
197 1 F_TM=0;
198 1 while(!F_TM);
199 1
200 1 BT_SND=ACC4;
201 1 clk=1;
202 1 F_TM=0;
203 1 while(!F_TM);
204 1
205 1 BT_SND=ACC5;
206 1 clk=1;
207 1 F_TM=0;
208 1 while(!F_TM);
209 1
210 1 BT_SND=ACC6;
211 1 clk=1;
212 1 F_TM=0;
213 1 while(!F_TM);
214 1
215 1 BT_SND=ACC7;
216 1 clk=1;
217 1 F_TM=0;
218 1 while(!F_TM);
219 1
220 1 BT_SND=1;
221 1 clk=1;
222 1 F_TM=0;
223 1 while(!F_TM);
224 1 TR0=0; //停止timer
225 1 clk=1;
226 1 }
227
228 //--------------------------延時程序---------------------------
229 void delay(int x)
230 {
231 1 int i;
232 1 for (i=0;i<=x;i++);
233 1 }
234
235 //----------------------檢測起始位----------------------------/
236 bit StartBitOn()
237 {
238 1 return (BT_REC==0);
239 1
240 1 }
C51 COMPILER V8.05a 模擬中斷SHOU 04/10/2009 21:13:28 PAGE 5
241
242 //--------------------I/O口接收:外部中斷0初始化--------------------/
243 void initwai0()
244 {
245 1 IT0=1;
246 1 EA=1;
247 1 EX0=1;
248 1 ACC=0XFF;
249 1 }
250
251 //----------------------I/O口接收:外部中斷0------------------------/
252 void time() interrupt 0
253 {
254 1 rsflag=1;
255 1
256 1 }
257
258
259
260
261 //--------------------I/O口:接收函數(shù)--------------------------/
262 unsigned char PGetChar()
263 {
264 1 rsflag=0;
265 1 while(!rsflag); //等過起始位
266 1 ACC0=BT_REC;
267 1
268 1 rsflag=0;
269 1 while(!rsflag);
270 1 ACC1=BT_REC;
271 1
272 1 rsflag=0;
273 1 while(!rsflag);
274 1 ACC2=BT_REC;
275 1
276 1 rsflag=0;
277 1 while(!rsflag);
278 1 ACC3=BT_REC;
279 1
280 1 rsflag=0;
281 1 while(!rsflag);
282 1 ACC4=BT_REC;
283 1
284 1 rsflag=0;
285 1 while(!rsflag);
286 1 ACC5=BT_REC;
287 1
288 1 rsflag=0;
289 1 while(!rsflag);
290 1 ACC6=BT_REC;
291 1
292 1 rsflag=0;
293 1 while(!rsflag);
294 1 ACC7=BT_REC;
295 1
296 1 rsflag=0;
297 1 while(!rsflag)
298 1 {
299 2 if(BT_REC)
300 2 {
301 3 break;
302 3 }
C51 COMPILER V8.05a 模擬中斷SHOU 04/10/2009 21:13:28 PAGE 6
303 2 }
304 1 return ACC;
305 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 482 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 3
IDATA SIZE = 180 ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -