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