📄 main.lst
字号:
185 2 Flag_TimeOver = 0;
186 2 }
187 1
188 1 }
189
190 /* 超时处理函数*/
191 void TimeOverDeal(void)
192 {
193 1 ClearR_bufR_data();
194 1
195 1 FLag_StartRec = 0;
196 1 gCount = 0;
197 1
198 1 SBUF = TIMEOVER; //回送超时响应字节
199 1 while ( TI ==0 );
200 1 TI =0 ;
201 1 }
202
203 /* 校验错误处理函数*/
204 void CheckErrorDeal(void)
205 {
206 1 ClearR_bufR_data();
207 1
208 1 SBUF = CHECKERROR; //回送校验错误响应字节
209 1 while ( TI ==0 );
210 1 TI =0 ;
211 1
212 1 }
213
214 /* 接收正确处理函数*/
215 void RecRightDeal(void)
216 {
217 1 unsigned char xdata i,j,k;
218 1 unsigned long xdata tmp;
219 1 unsigned char xdata D1,D2,D3 = 0;
220 1 ClearR_bufR_data();
221 1
222 1 TCount = 0;
223 1
224 1 /* 产生开关控制信号*/
225 1 tmp = RecData;
226 1 if (tmp/V_2_19 == 1)
227 1 {
228 2 D3 = D3 + 0x08;
229 2 tmp = tmp%V_2_19;
230 2 }
231 1 else if (tmp/V_2_18 == 1)
232 1 {
233 2 D3 = D3 + 0x04;
234 2 tmp = tmp%V_2_18;
235 2 }
236 1 else if (tmp/V_2_17 == 1)
237 1 {
238 2 D3 = D3 + 0x02;
239 2 tmp = tmp%V_2_17;
240 2 }
C51 COMPILER V7.02b MAIN 01/18/2005 21:41:19 PAGE 5
241 1 else if (tmp/V_2_16 == 1)
242 1 {
243 2 D3 = D3 + 0x01;
244 2 tmp = tmp%V_2_16;
245 2 }
246 1 else if (tmp/V_2_15 == 1)
247 1 {
248 2 D2 = D2 + 0x80;
249 2 tmp = tmp%V_2_15;
250 2 }
251 1 else if (tmp/V_2_14 == 1)
252 1 {
253 2 D2 = D2 + 0x40;
254 2 tmp = tmp%V_2_14;
255 2 }
256 1 else if (tmp/V_2_13 == 1)
257 1 {
258 2 D2 = D2 + 0x20;
259 2 tmp = tmp%V_2_13;
260 2 }
261 1 else if (tmp/V_2_12 == 1)
262 1 {
263 2 D2 = D2 + 0x10;
264 2 tmp = tmp%V_2_12;
265 2 }
266 1 else if (tmp/V_2_11 == 1)
267 1 {
268 2 D2 = D2 + 0x08;
269 2 tmp = tmp%V_2_11;
270 2 }
271 1 else if (tmp/V_2_10 == 1)
272 1 {
273 2 D2 = D2 + 0x04;
274 2 tmp = tmp%V_2_10;
275 2 }
276 1 else if (tmp/V_2_9 == 1)
277 1 {
278 2 D2 = D2 + 0x02;
279 2 tmp = tmp%V_2_9;
280 2 }
281 1 else if (tmp/V_2_8 == 1)
282 1 {
283 2 D2 = D2 + 0x01;
284 2 tmp = tmp%V_2_8;
285 2 }
286 1 else if (tmp/V_2_7 == 1)
287 1 {
288 2 D1 = D1 + 0x80;
289 2 tmp = tmp%V_2_7;
290 2 }
291 1 else if (tmp/V_2_6 == 1)
292 1 {
293 2 D1 = D1 + 0x40;
294 2 tmp = tmp%V_2_6;
295 2 }
296 1 else if (tmp/V_2_5 == 1)
297 1 {
298 2 D1 = D1 + 0x20;
299 2 tmp = tmp%V_2_5;
300 2 }
301 1 else if (tmp/V_2_4 == 1)
302 1 {
C51 COMPILER V7.02b MAIN 01/18/2005 21:41:19 PAGE 6
303 2 D1 = D1 + 0x10;
304 2 tmp = tmp%V_2_4;
305 2 }
306 1 else if (tmp/V_2_3 == 1)
307 1 {
308 2 D1 = D1 + 0x08;
309 2 tmp = tmp%V_2_3;
310 2 }
311 1 else if (tmp/V_2_2 == 1)
312 1 {
313 2 D1 = D1 + 0x04;
314 2 tmp = tmp%V_2_2;
315 2 }
316 1 else if (tmp/V_2_1 == 1)
317 1 {
318 2 D1 = D1 + 0x02;
319 2 tmp = tmp%V_2_1;
320 2 }
321 1 else if (tmp/V_2_0 == 1)
322 1 {
323 2 D1 = D1 + 0x01;
324 2 }
325 1
326 1 P1_0 = 1; // 使能开关控制信号输出
327 1
328 1 /* 写20位开关控制信号,D3取前4位 */
329 1 KAIGUAN1 = D1;
330 1 KAIGUAN2 = D2;
331 1 KAIGUAN3 = D3;
332 1
333 1 Time0Sel = 1;
334 1 /* Timer0 */
335 1 PT0 = 1;
336 1 TH0 = -500000/256; //500ms, 开关控制脉冲宽度
337 1 TL0 = -500000%256;
338 1 /* 启动定时器0,计算超时*/
339 1 ET0 = 1;
340 1 TR0 = 1;
341 1
342 1
343 1 // 延时几百毫秒
344 1 for (i=0;i++;i<1000)
345 1 for (j=0;j++;j<3000)
346 1 {
347 2 k=0;
348 2 }
349 1
350 1 SBUF = RECRIGHT; //回送接收正确响应字节
351 1 while ( TI ==0 );
352 1 TI =0 ;
353 1 }
354
355
356
357
358
359
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1889 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V7.02b MAIN 01/18/2005 21:41:19 PAGE 7
XDATA SIZE = 31 14
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -