📄 rs485.lst
字号:
246 5 }
247 4 else
248 4 {
249 5 disp_color((self_newscount+pub_newscount-wink_offset)%rowcharacter);
250 5 }
251 4 }
252 3 i=0;
253 3 }
254 2
255 2 else if((i==exit)&&(self_newscount+pub_newscount!=0))
256 2 {
257 3 EnWork_bit=FALSE;
258 3 i=0;
259 3 }
260 2
261 2 else if((i==confirm)&&(self_newscount+pub_newscount!=0))
262 2 {
263 3 Clr_Display();
264 3 disp_main();
265 3 i=0;
266 3 while ((timeout2<0x3e8)&&(i!=pagedown)&&(i!=cancel))
267 3 {
268 4 if(Rx_bit)
269 4 {
270 5 i=check_page_command();
271 5 if(((i==cancel)&&(kindBYTE))||(i==pagedown))
272 5 {
273 6 Clr_Display();
274 6 Inqire_Frame();
275 6 }
276 5 }
277 4 }
278 3 i=0;
279 3 while ((timeout2<0x3e8)&&(i!=confirm)&&(i!=pageup))
280 3 {
281 4 if(Rx_bit)
282 4 {
283 5 i=check_page_command();
284 5 Clr_Display();
285 5 disp_detail();
286 5 }
287 4 }
288 3 i=0;
289 3 }
290 2 //------------------------------------------------------------------
291 2 else
292 2 {
293 3 i=0;
294 3 }
295 2 }
296 1 CNTRL=FALSE; //USED TO RELAY
297 1 clr_timer2();
298 1
299 1 Enwork_bit=0;
300 1 Clr_Display();
301 1 }
302 /*-----------------------------------------*/
C51 COMPILER V7.02b RS485 06/20/2006 18:46:34 PAGE 6
303 void answer_comm() /*主机发数据到分机,填好数据,检测是否空闲,发出*/
304 {
305 1
306 1 uchar data m;
307 1
308 1 Tx_buffer[0]=MSNCMMD;
309 1 Tx_sum=Tx_sum+Tx_buffer[0];
310 1
311 1 if(kindBYTE)
312 1 {
313 2 Tx_buffer[1]=0xf0;
314 2 }
315 1 else
316 1 {
317 2 Tx_buffer[1]=0x00;
318 2 }
319 1 Tx_sum=Tx_sum+Tx_buffer[1];
320 1
321 1 Tx_buffer[2]=lounumH;
322 1 Tx_sum=Tx_sum+Tx_buffer[2];
323 1
324 1 Tx_buffer[3]=lounumL;
325 1 Tx_sum=Tx_sum+Tx_buffer[3];
326 1
327 1 Tx_buffer[4]=myaddr;
328 1 Tx_sum=Tx_sum+Tx_buffer[4];
329 1
330 1 Tx_buffer[5]=valid;
331 1 Tx_sum=Tx_sum+Tx_buffer[5];
332 1
333 1 for(m=6;m<11;m++)
334 1 {
335 2 Tx_buffer[m]=0;
336 2 }
337 1
338 1 if(Rxrun_bit)
339 1 {
340 2 delays60ms();
341 2 }
342 1 txstart();
343 1 delays60ms();
344 1 }
345 /*-------------------------------------------*/
346 /*
347
348
349 */
350 /*-------------------------------------------*/
351 void RS_int() interrupt 4
352 {
353 1
354 1 unsigned char data Rxdata=0;
355 1 if(RI)
356 1 {
357 2 RI=0;
358 2 Rxdata=SBUF;
359 2
360 2 if(Rx_count==0)
361 2 {
362 3 init_timer0();
363 3 if((Rxdata==SENDSTART)||(Rxdata==RESEIVESTART))
364 3 {
C51 COMPILER V7.02b RS485 06/20/2006 18:46:34 PAGE 7
365 4 *info_buffer=Rxdata;
366 4 Rx_count++;
367 4 Rx_sum=Rxdata;
368 4 Rxrun_bit=1;
369 4 }
370 3 }
371 2
372 2 else if((Rx_count==0x07)&&(Rx_sum==Rxdata))
373 2 {
374 3 if(*info_buffer==RESEIVESTART)
375 3 {
376 4 Rx_bit=1;
377 4 Rxrun_bit=0;
378 4 TR0=0; //not used T0 timer
379 4 }
380 3 }
381 2
382 2 else if((Rx_count==15)&&(Rx_sum==Rxdata))
383 2 {
384 3 if(*info_buffer==SENDSTART)
385 3 {
386 4 Rx_bit=1;
387 4 Rxrun_bit=0;
388 4 TR0=0; //not used T0 timer
389 4 }
390 3 }
391 2
392 2 else if(Rx_count>15)
393 2 {
394 3 if((Rx_count==(*(info_buffer+5)+6))&&(Rx_sum==Rxdata)&&(*info_buffer==SENDSTART))
395 3 {
396 4 Rx_bit=1;
397 4 Rxrun_bit=0;
398 4 TR0=0; //not used T0 timer
399 4 }
400 3 else if(Rx_count<(*(info_buffer+5)+6))
401 3 {
402 4 *(info_buffer+Rx_count)=Rxdata;
403 4 Rx_count++;
404 4 Rx_sum+=Rxdata;
405 4 }
406 3 else
407 3 {
408 4 if(!Rx_bit)
409 4 {
410 5 Clr_Rx();
411 5 }
412 4 }
413 3 }
414 2
415 2 else
416 2 {
417 3 *(info_buffer+Rx_count)=Rxdata;
418 3 Rx_count++;
419 3 Rx_sum+=Rxdata;
420 3 }
421 2 }
422 1
423 1 if(TI)
424 1 {
425 2 TI=0;
426 2 if(Tx_count<14)
C51 COMPILER V7.02b RS485 06/20/2006 18:46:34 PAGE 8
427 2 {
428 3 SBUF=Tx_buffer[Tx_count];
429 3 Tx_sum=Tx_buffer[Tx_count]+Tx_sum;
430 3 Tx_count++;
431 3 }
432 2
433 2 else if(Tx_count==14)
434 2 {
435 3 SBUF=Tx_sum;
436 3 Tx_count++;
437 3 }
438 2 else
439 2 {
440 3 Tx_bit=0;
441 3 mRs485G=1;
442 3 Tx_count=0;
443 3 }
444 2 }
445 1 }
446
447
448
449 //这是备用功能,作为删除信息时候的功能
450 /*
451 else if(i==delete)
452 {
453 Clr_Display();
454 Inqire_Frame();
455 i=0;
456 while ((timeout2<0x2ee)&&(i!=confirm)&&(i!=cancel))
457 {
458 if(Rxrun_bit)
459 {
460 init_timer0();
461 }
462 if(Rx_bit)
463 {
464 i=check_page_command();
465 if(((i==cancel)&&(kindBYTE))||(i==pagedown))
466 {
467 Clr_Display();
468 Inqire_Frame();
469 }
470 }
471 }
472 i=0;
473 while((timeout2<0x2ee)&&(i!=confirm)&&(i!=pageup))
474 {
475 if(Rx_bit)
476 {
477 i=check_page_command();
478 Clr_Display();
479 disp_detail();
480 }
481 }
482 i=0;
483 }
484 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1168 ----
C51 COMPILER V7.02b RS485 06/20/2006 18:46:34 PAGE 9
CONSTANT SIZE = ---- ----
XDATA SIZE = 215 ----
PDATA SIZE = ---- ----
DATA SIZE = 22 2
IDATA SIZE = 42 ----
BIT SIZE = 5 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -