📄 c_main.lst
字号:
318 {
319 1 unsigned char xdata i;
320 1 for (i = 0; i < 32; i++)
321 1 {
322 2 XBYTE[M_NET1] = i;
323 2 XBYTE[M_NET2] = 0x83;
324 2 }
325 1 }
326
327 void delay_time(unsigned int subtime)
328 {
329 1 unsigned int i;
330 1 while(subtime)
331 1 {
332 2 subtime--;
333 2 i = (subtime * 2) / 2;
334 2 }
335 1 }
336 void val_init()
337 {
338 1 unsigned char xdata temp;
339 1 XBYTE[M_NET2] = 0x15;
340 1 no_sound(0xcb);
341 1 MS_MT9041 = 1;
342 1 rv0_flag = 0;
343 1 trk_e1_led = 0xf3;
344 1 trk = 0;
345 1 tone_set = 0x97;
346 1 send_count = 0;
347 1 time_route = 0;
348 1 time_flag = 1;
349 1 time_counter = 0;
350 1 second = 0;
351 1 t50_flag = 0;
352 1 t100_flag = 0;
353 1 voltage_low_flag = 0;
354 1 ID_num_length = 0;
355 1 for(temp = 0;temp < 16;temp++)
356 1 {
357 2 p_data[temp] = IDLE;
358 2 id_call[temp] = IDLE;
359 2 }
C51 COMPILER V3.96, SN-83203013 C_MAIN 03/06/04 11:31:46 PAGE 7
360 1 iii = 0;
361 1 for(temp = 0;temp < TRK_MAX;temp++)
362 1 {
363 2 sys_temp[temp] = IDLE;
364 2 }
365 1 }
366 watchdag() interrupt 0 using 0
367 {
368 1 // goto LOOP;
369 1 }
370
371 time_0() interrupt 1 using 1
372 {
373 1 TH0 = -(50000 / 256);
374 1 TL0 = -(50000 % 256);
375 1 t50_flag = 1;
376 1 }
377 voltage_low() interrupt 2 using 2
378 {
379 1 voltage_low_flag = 1;
380 1 }
381 serial() interrupt 4 using 3//串口接收和发送
382 {
383 1 unsigned char idata temp;
384 1 EA = 0;
385 1 if(TI)
386 1 {
387 2 TI = 0;
388 2 if(send_data_start < send_data_length)
389 2 {
390 3 SBUF = send_frame[send_data_start];
391 3 send_data_start++;
392 3 }
393 2 else
394 2 {
395 3 send_count = 1;
396 3 }
397 2 }
398 1 if(RI)
399 1 {
400 2 rvbuf[rvbh] = temp = SBUF;
401 2 RI = 0;
402 2 switch(rv_state)
403 2 {
404 3 case 0:
405 3 {
406 4 if(temp == 0x7e)
407 4 {
408 5 rv_state = 1;
409 5 }
410 4 }
411 3 break;
412 3 case 1:
413 3 {
414 4 if(temp = 0x7e)
415 4 {
416 5 rv_state = 2;
417 5 }
418 4 else
419 4 {
420 5 rv_state = 0;
421 5 }
C51 COMPILER V3.96, SN-83203013 C_MAIN 03/06/04 11:31:46 PAGE 8
422 4 }
423 3 break;
424 3 case 2:
425 3 {
426 4 rv_ctrl_byte = temp;
427 4 if((rv_ctrl_byte & 1) == 0)
428 4 {
429 5 rv_start = rvbh;
430 5 rv_state = 3;
431 5 }
432 4 else
433 4 {
434 5 rv_state = 5;
435 5 }
436 4 }
437 3 break;
438 3 case 3:
439 3 {
440 4 if(temp == 0x77)
441 4 {
442 5 rv_state = 4;
443 5 }
444 4 else
445 4 {
446 5 rv0_flag = 0;
447 5 }
448 4 }
449 3 break;
450 3 case 4:
451 3 {
452 4 if(temp == 0x77)
453 4 {
454 5 decode_flag = 1;
455 5 if(rv0_flag)
456 5 {
457 6 rv_end = (rvbh - 3) & 0x7ff;
458 6 }
459 5 else
460 5 {
461 6 rv_end = (rvbh - 2) & 0x7ff;
462 6 }
463 5 rv_state = 0;
464 5 }
465 4 else if(temp == 0)
466 4 {
467 5 rv0_flag = 1;
468 5 rv_state = 3;
469 5 }
470 4 else
471 4 {
472 5 rv_err = 1;
473 5 rv_state = 3;
474 5 }
475 4 }
476 3 break;
477 3 case 5:
478 3 {
479 4 if(temp != rv_ctrl_byte)
480 4 {
481 5 rv_err = 1;
482 5 }
483 4 rv_state = 6;
C51 COMPILER V3.96, SN-83203013 C_MAIN 03/06/04 11:31:46 PAGE 9
484 4 }
485 3 break;
486 3 case 6:
487 3 {
488 4 if(temp == 0x77)
489 4 {
490 5 rv_state = 7;
491 5 }
492 4 }
493 3 break;
494 3 case 7:
495 3 {
496 4 if(temp == 0x77)
497 4 {
498 5 decode_flag = 1;
499 5 rv_state = 0;
500 5 }
501 4 else
502 4 {
503 5 rv_state = 6;
504 5 }
505 4 }
506 3 break;
507 3 default:
508 3 {
509 4 rv_state = 0;
510 4 }
511 3 break;
512 3 }
513 2 rvbh = (rvbh + 1) & 0x7ff;
514 2 }
515 1 EA = 1;
516 1 }
517
518 main()
519 {
520 1 unsigned char xdata temp;
521 1 LED = 1;
522 1 EA = 0;
523 1 IP = 0x10;
524 1 SCON = 0x50;
525 1 PCON = PCON | 0x80;
526 1 TMOD = 0x21;
527 1 TH0 = -(50000 / 256);
528 1 TL0 = -(50000 % 256);
529 1
530 1 #ifdef ICD51_MODE
PCON = PCON & 0x7f;
TH1 = 0xfa;
TL1 = 0xfa;
#else
535 1 PCON = PCON | 0x80;
536 1 TH1 = 0xf3;
537 1 TL1 = 0xf3;
538 1 #endif
539 1 TCON = 0x50;
540 1 IE = 0x12;
541 1 LED = 0;
542 1 val_init();
543 1 init_back();
544 1 i_comm(); //通信初始化
545 1 i_net(); //初始化为无音
C51 COMPILER V3.96, SN-83203013 C_MAIN 03/06/04 11:31:46 PAGE 10
546 1 hdlc_init(); //HDLC初始化
547 1 user_e1_init();//数字中继用户初始化
548 1 noise_ctrl();
549 1 chat_common_init();
550 1 chat_private_init();
551 1 dtmf_init();
552 1 yukong_init();
553 1 interface_init();//系统自检
554 1 clear_DS21554();
555 1 i_mfc();
556 1 mfc_init();
557 1 EA = 1;
558 1 init_DS21554();
559 1 delay_time(200);
560 1 WDI = !WDI;
561 1 IE = 0x97;
562 1 while(1)
563 1 {
564 2 if(voltage_low_flag)//电压过低检测
565 2 {
566 3 voltage_low_flag = 0;
567 3 command(2,1,1,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE);
568 3 }
569 2 if(time_counter >= 20)//1秒时间检测
570 2 {
571 3 second++;
572 3 time_counter = time_counter - 20;
573 3 read_warn_1s();
574 3 if(second >= 60)
575 3 {
576 4 read_warn();
577 4 second = 0;
578 4 }
579 3 }
580 2 EA = 0;
581 2 if(t50_flag)
582 2 {
583 3 EA = 1;
584 3 time_counter++;
585 3 t50_flag = 0;
586 3 LED = !LED;
587 3 read_signalling();
588 3 mfc_read();
589 3 trk_out_ctrl();
590 3 trk_in_ctrl();
591 3 audio_scan_50ms();
592 3 if(t100_flag)
593 3 {
594 4 t100_flag = 0;
595 4 WDI = !WDI;
596 4 mfc_test100();
597 4 dtmf_test100();
598 4 audio_manage_100ms();
599 4 }
600 3 else
601 3 {
602 4 t100_flag = 1;
603 4 if(decode_flag)
604 4 {
605 5 decode_flag = 0;
606 5 decode_hdlc_frame();
607 5 send_count = 0;
C51 COMPILER V3.96, SN-83203013 C_MAIN 03/06/04 11:31:46 PAGE 11
608 5 SBUF = send_frame[send_data_start];
609 5 send_data_start++;
610 5 }
611 4 }
612 3 }
613 2 EA = 1;
614 2 }
615 1 }
C51 COMPILER V3.96, SN-83203013 C_MAIN 03/06/04 11:31:46 PAGE 12
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION interface_init (BEGIN)
; SOURCE LINE # 42
; SOURCE LINE # 43
; SOURCE LINE # 46
0000 E4 CLR A
0001 900000 R MOV DPTR,#audio_dtmf_count
0004 F0 MOVX @DPTR,A
; SOURCE LINE # 47
0005 900000 R MOV DPTR,#yukong_count
0008 F0 MOVX @DPTR,A
; SOURCE LINE # 48
0009 900000 R MOV DPTR,#i
000C F0 MOVX @DPTR,A
000D ?C0001:
000D 900000 R MOV DPTR,#i
0010 E0 MOVX A,@DPTR
0011 FB MOV R3,A
0012 C3 CLR C
0013 940C SUBB A,#0CH
0015 4003 JC $ + 5H
0017 020000 R LJMP ?C0002
; SOURCE LINE # 49
; SOURCE LINE # 50
001A EB MOV A,R3
001B 7F00 MOV R7,#00H
001D FE MOV R6,A
001E EF MOV A,R7
001F 2404 ADD A,#04H
0021 F582 MOV DPL,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -