📄 main.lst
字号:
632 3 lcd_prt_char(26,'w');
633 3 lcd_prt_letter(28,0x18,0);
634 3 lcd_prt_letter(29,0x1f,0);
635 3 lcd_prt_char(48,'W');//“本地端口”
636 3 lcd_prt_char(50,'X');
637 3 lcd_prt_char(52,'Y');
638 3 lcd_prt_char(54,'T');
639 3 lcd_prt_char(60,'Z');//“远程端口”
640 3 lcd_prt_char(62,'w');
641 3 lcd_prt_char(64,'Y');
642 3 lcd_prt_char(66,'T');
643 3 lcd_prt_char(72,'j');//“退出”
644 3 lcd_prt_char(74,'k');//
645 3 lcd_prt_char(79,'v');//“→”
646 3 lcd_prt_letter(86,0x30,0);//“+_”
647 3 lcd_prt_char(92,'G');//“配置”
648 3 lcd_prt_char(94,'H');
649 3 }
650 2 else
651 2 {
652 3 //终端号
653 3 lcd_prt_letter(6,(gprsres[8]>>4)&0x0f,gprsturner==6);
654 3 lcd_prt_letter(7,gprsres[8]&0x0f,gprsturner==7);
655 3 lcd_prt_letter(8,(gprsres[9]>>4)&0x0f,gprsturner==8);
656 3 lcd_prt_letter(9,gprsres[9]&0x0f,gprsturner==9);
657 3 //远程IP
658 3 num=gprsres[0];
659 3 adisplaygprs(30-1,num,1);//留出千位,,位置内部自加一
660 3 lcd_prt_letter(33,0x2f,0);
661 3 num=gprsres[1];
662 3 adisplaygprs(34-1,num,1);
663 3 lcd_prt_letter(37,0x2f,0);
664 3 num=gprsres[2];
665 3 adisplaygprs(38-1,num,1);
666 3 lcd_prt_letter(41,0x2f,0);
667 3 num=gprsres[3];
668 3 adisplaygprs(42-1,num,1);
669 3 //本地端口
670 3 num=(gprsres[6]*256+gprsres[7]);
671 3 adisplaygprs(56,num,0);
672 3 //远程端口
673 3 num=(gprsres[4]*256+gprsres[5]);
674 3 adisplaygprs(68,num,0);
675 3 }
C51 COMPILER V8.02 MAIN 09/16/2008 10:53:22 PAGE 12
676 2 }
677 1 else
678 1 {
679 2 if(gprsturner==100)
680 2 {
681 3 gprsturner=133;
682 3 clrscr(0);clrscr(1);clrscr(2);
683 3 lcd_prt_char(0,'Z'+1);//“显示IP”
684 3 lcd_prt_char(2,'Z'+2);
685 3 lcd_prt_letter(4,0x18,0);
686 3 lcd_prt_letter(5,0x1f,0);
687 3 lcd_prt_char(24,'I');//“心跳时间”
688 3 lcd_prt_char(26,'J');
689 3 lcd_prt_char(28,'K');
690 3 lcd_prt_char(30,'L');
691 3 lcd_prt_char(72,'j');//“退出”
692 3 lcd_prt_char(74,'k');//
693 3 lcd_prt_char(79,'v');//“→”
694 3 lcd_prt_letter(86,0x30,0);//“+_”
695 3 lcd_prt_char(92,'G');//“配置”
696 3 lcd_prt_char(94,'H');
697 3 }
698 2 else
699 2 {
700 3 //显示IP
701 3 num=gprsres[10];
702 3 adisplaygprs(6-1,num,1);//留出千位,,位置内部自加一
703 3 lcd_prt_letter(9,0x2f,0);
704 3 num=gprsres[11];
705 3 adisplaygprs(10-1,num,1);
706 3 lcd_prt_letter(13,0x2f,0);
707 3 num=gprsres[12];
708 3 adisplaygprs(14-1,num,1);
709 3 lcd_prt_letter(17,0x2f,0);
710 3 num=gprsres[13];
711 3 adisplaygprs(18-1,num,1);
712 3 //心跳时间
713 3 num=gprsres[15]*5;
714 3 adisplaygprs(32,num,0);
715 3 }
716 2 }
717 1
718 1 }
719 /************************************定时器0********************************/
720 //定时器0初始化,,用于时间机制
721 void time0_init(void)
722 {
723 1 TMOD&=0xf0;
724 1 TMOD|=0x01;//T0工作方式1
725 1
726 1 TL0=0x00;//初值28672
727 1 TH0=0x70;
728 1
729 1 TR0=1;
730 1 }
731
732 /************************************时间机制*******************************/
733 void time_manager(void)
734 {
735 1 //uchar *ptr;
736 1 //重设定时值
737 1 TF0=0;
C51 COMPILER V8.02 MAIN 09/16/2008 10:53:22 PAGE 13
738 1 TL0+=0x00;
739 1 TH0+=0x70;
740 1
741 1 //下面是时间处理,,24h为一个循环
742 1 timer++;
743 1 if(timer==50)
744 1 {
745 2 timer=0;
746 2 second++;
747 2 if(second==60)
748 2 {
749 3 second=0;
750 3 minute++;
751 3 if(minute==60)
752 3 {
753 4 minute=0;
754 4 hour++;
755 4 if(hour==24)
756 4 {
757 5 second=0;
758 5 minute=0;
759 5 hour=0;
760 5 }
761 4 }
762 3 }
763 2 }
764 1 //下面开始检测
765 1 //gprs回复检测
766 1 if(gprscarryf)
767 1 {
768 2 if((signed char)(second-gprssendtime)>3||(signed char)(gprssendtime-second)>3)
769 2 {gprscarryf=0;gprslostf=1;}
770 2 }
771 1 //数据接收检测
772 1 if(slimitf)//间隔小于一秒的数据将被认为是同一串数据
773 1 {
774 2
775 2 if((signed char)(second-secondcopy)>1||(signed char)(secondcopy-second)>1)
776 2 {
777 3 slimitf=0;//解除秒检测
778 3 temp[datacounter++]=0xee;//写结束码,,这里要求收到数据小于253,,不然会出错
779 3 temp[datacounter++]=0xee;
780 3 temp[datacounter++]=0xee;
781 3
782 3 if(gprscarryf)
783 3 {
784 4
785 4 storegprsnews();
786 4 datacounter=0;//计数复位,,准备接收新数据
787 4 gprscarryf=0;gprsresf=1;//
788 4
789 4
790 4 }
791 3 else
792 3 {
793 4 newnewsf=1;//设置收到数据标志
794 4 storenews();//内部标志了newnewsf0或者newnewsf1或者newnewsf2
795 4 datacounter=0;//计数复位,,准备接收新数据
796 4 scrfreshf=1;
797 4 }
798 3
799 3 //usemark++;
C51 COMPILER V8.02 MAIN 09/16/2008 10:53:22 PAGE 14
800 3 //if(usemark==3)usemark=0;
801 3 }
802 2 }
803 1 //消息显示检测
804 1 if(mlimitf)
805 1 {
806 2 if((signed char)(minute-minutecopy)>1||(signed char)(minutecopy-minute)>1)
807 2 {mlimitf=0;state=0x00;oldnewsf=1;scrfreshf=1;}//解除分检测
808 2 }
809 1 }
810
811
812 /**********************************设备初始化*******************************/
813 //所有设备初始化
814 void device_init(void)
815 {
816 1 WDT_CONTR=0x3f;//开启看门狗
817 1 time0_init();
818 1 lcd_init();//液显初始化
819 1 serial_init();//串口初始化
820 1 }
821 /************************************纠错程序*******************************/
822 //纠错程序
823 /*void rectify(void)
824 {
825 //标志位
826
827 lcd_prt_letter(0,ti,0);
828 }*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 8898 ----
CONSTANT SIZE = 2529 ----
XDATA SIZE = 256 ----
PDATA SIZE = ---- ----
DATA SIZE = 18 41
IDATA SIZE = 125 ----
BIT SIZE = 20 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -