📄 system.lst
字号:
462 2 while(AD0INT==0);
463 2 voltage_AD=(ADC0H & 0x0F)*256+ADC0L;
464 2 }
465 1 if(time==12)
466 1 {
467 2 AMX0SL=0; //电流通道
C51 COMPILER V7.07 SYSTEM 05/17/2003 11:52:25 PAGE 9
468 2 delay4us();
469 2 AD0INT=0;
470 2 AD0BUSY=1;//启动转换
471 2 while(AD0INT==0);
472 2 AD0INT=0;
473 2 current_AD=(ADC0H & 0x0F)*256+ADC0L;
474 2 //AMX0SL=2; //为发射率通道作准备
475 2 time=0;
476 2 }
477 1 time++;
478 1 //=======================================================================================================
-================================
479 1 //AI超时检测
480 1 //=======================================================================================================
-=================================
481 1 if(ES0)
482 1 {
483 2 AITIME++;
484 2 if(AITIME==40)
485 2 {
486 3 REN0=0;
487 3 ES0=0;
488 3 AIOVERFLG=1;
489 3 TIMEFLG=1;
490 3 }
491 2 }
492 1
493 1 }
494 //========================================================================================================
-======================================
495 //接收来自AI表的数据,此处有问题
496 //========================================================================================================
-=======================================
497 void UART0_INT() interrupt 4//串口0中断函数,主要是用来接收AI808P的数据的中断
498 {
499 1 RI0=0;
500 1 AIBUF[AIDATNUM]=SBUF0;
501 1 AIDATNUM++;
502 1 if(AIDATNUM==10)
503 1 {
504 2 AIDATNUM=0;
505 2 REN0=0;
506 2 ES0=0;
507 2 AIOVERFLG=1;
508 2 }
509 1 }
510 //========================================================================================================
-=======================================
511 //
512 //========================================================================================================
-=======================================
513 void AIWR(unsigned char dat)//向串口0写数据函数
514 {
515 1 SBUF0=dat;
516 1 while(!TI0){}
517 1 TI0=0;
518 1 }
519
520 //========================================================================================================
-=======================================
521 //
522 //========================================================================================================
C51 COMPILER V7.07 SYSTEM 05/17/2003 11:52:25 PAGE 10
-=======================================
523 unsigned int write_AI(unsigned char addr,unsigned int dat)//AI8080P写数据函数
524 {
525 1 unsigned int CRC;
526 1 ERRORNUM=0;
527 1 again:
528 1 CRC=AIADDR+0x43+addr*256+dat;
529 1 AIOVERFLG=0;
530 1 AITIME=0;
531 1 delay100us();
532 1 TR=1;
533 1 delay100us();
534 1 REN0=0;//暂时不能接收数据
535 1 RI0=0;
536 1 TI0=0;
537 1 ES0=0;
538 1 AIDATNUM=0;
539 1 TIMEFLG=0;
540 1 AIWR(AIADDR+0x80);
541 1 AIWR(AIADDR+0x80);//传2遍地址
542 1 AIWR(0x43);
543 1 AIWR(addr);
544 1 AIWR(dat%256);
545 1 AIWR(dat/256);//传数据
546 1 AIWR(CRC%256);
547 1 AIWR(CRC/256);//传CRC码
548 1 delay100us();
549 1 ES0=1;//开串口0的中断,准备接收数据
550 1 REN0=1;//允许接收数据
551 1 TR=0;
552 1 while(!AIOVERFLG){}
553 1 TR=1;
554 1 if(TIMEFLG)
555 1 {
556 2 ERRORNUM++;
557 2 if(ERRORNUM == 10)
558 2 {
559 3 //显示通信故障
560 3 statusbar.text=(unsigned char*)"通信错误";
561 3 set_statusbar_window(&statusbar);
562 3 languge_mode(English,no);
563 3 set_window_str(",");
564 3 languge_mode(Chinese,no);
565 3 set_window_str("请检查通讯电路是否正常");
566 3 languge_mode(English,no);
567 3 set_window_str("!");
568 3 }
569 2 goto again;
570 2 }
571 1 else
572 1 {
573 2 CRC=AIBUF[0]+AIBUF[1]*256+AIBUF[2]+AIBUF[3]*256+AIBUF[4]+AIBUF[5]*256+AIBUF[6]+AIBUF[7]*256+AIADDR;
574 2 if(CRC != (AIBUF[8]+AIBUF[9]*256))//如果校验错误则表有问题
575 2 {
576 3 ERRORNUM++;
577 3 if(ERRORNUM == 10)
578 3 {
579 4 //显示通信故障
580 4 statusbar.text=(unsigned char*)"通信错误";
581 4 set_statusbar_window(&statusbar);
582 4 languge_mode(English,no);
583 4 set_window_str(",");
C51 COMPILER V7.07 SYSTEM 05/17/2003 11:52:25 PAGE 11
584 4 languge_mode(Chinese,no);
585 4 set_window_str("请检查通讯电路是否正常");
586 4 languge_mode(English,no);
587 4 set_window_str("!");
588 4 }
589 3 goto again;
590 3 }
591 2 else
592 2 {
593 3
594 3 return(AIBUF[0]+AIBUF[1]*256);
595 3 }
596 2 }
597 1 }
598
599 //========================================================================================================
-========================================
600 //
601 //========================================================================================================
-========================================
602 unsigned int read_AI(unsigned char addr)//AI808P读数据函数
603 {
604 1 unsigned int CRC;
605 1 ERRORNUM=0;
606 1 again:
607 1 CRC=AIADDR+0x52+addr*256;
608 1 AIOVERFLG=0;
609 1 AITIME=0;
610 1 delay100us();
611 1 TR=1;
612 1 delay100us();
613 1 REN0=0;//暂时不能接收数据
614 1 RI0=0;
615 1 TI0=0;
616 1 ES0=0;
617 1 AIDATNUM=0;
618 1 TIMEFLG=0;
619 1 AIWR(AIADDR+0x80);
620 1 AIWR(AIADDR+0x80);//传2遍地址
621 1 AIWR(0x52);
622 1 AIWR(addr);
623 1 AIWR(0);
624 1 AIWR(0);//传数据
625 1 AIWR(CRC%256);
626 1 AIWR(CRC/256);//传CRC码
627 1 delay100us();
628 1 ES0=1;//开串口0的中断,准备接收数据
629 1 REN0=1;//允许接收数据
630 1 TR=0;
631 1 while(!AIOVERFLG){}
632 1 TR=1;
633 1 if(TIMEFLG)
634 1 {
635 2 ERRORNUM++;
636 2 if(ERRORNUM == 10)
637 2 {
638 3 //显示通信故障
639 3 statusbar.text=(unsigned char*)"通信错误";
640 3 set_statusbar_window(&statusbar);
641 3 languge_mode(English,no);
642 3 set_window_str(",");
643 3 languge_mode(Chinese,no);
C51 COMPILER V7.07 SYSTEM 05/17/2003 11:52:25 PAGE 12
644 3 set_window_str("请检查通讯电路是否正常");
645 3 languge_mode(English,no);
646 3 set_window_str("!");
647 3
648 3 }
649 2 goto again;
650 2 }
651 1 else
652 1 {
653 2 CRC=AIBUF[0]+AIBUF[1]*256+AIBUF[2]+AIBUF[3]*256+AIBUF[4]+AIBUF[5]*256+AIBUF[6]+AIBUF[7]*256+AIADDR;
654 2 if(CRC != (AIBUF[8]+AIBUF[9]*256))//如果校验错误则表有问题
655 2 {
656 3 ERRORNUM++;
657 3 if(ERRORNUM == 10)
658 3 {
659 4 //显示通信故障
660 4 statusbar.text=(unsigned char*)"通信错误";
661 4 set_statusbar_window(&statusbar);
662 4 languge_mode(English,no);
663 4 set_window_str(",");
664 4 languge_mode(Chinese,no);
665 4 set_window_str("请检查通讯电路是否正常");
666 4 languge_mode(English,no);
667 4 set_window_str("!");
668 4 }
669 3 goto again;
670 3 }
671 2 else
672 2 {
673 3 return(AIBUF[6]+AIBUF[7]*256);
674 3 }
675 2 }
676 1 }
677
678
679
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1699 ----
CONSTANT SIZE = 36 ----
XDATA SIZE = 13 ----
PDATA SIZE = ---- ----
DATA SIZE = 7 9
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -