📄 process.lst
字号:
748 2 R_block(WPAGE3,RPAGE3,i2c_addr,&cr_cd[0][0],110);
749 2 }
750 1 cr_cd[0][0]&=0x7f;
751 1
752 1 SenBuf[5]=(RecBuf[5]|0x80);
753 1
754 1 SenBuf[6]=0;
755 1
756 1 for(i=0;i<11;i++)
757 1 {
758 2 if((cr_cd[i][5]==0x00)&&(cr_cd[i][6]==0x00)&&(cr_cd[i][7]==0x00)
759 2 &&(cr_cd[i][8]==0x00)&&(cr_cd[i][9]==0x00))
760 2 {
761 3 continue;
762 3 }
763 2 else
764 2 {
765 3 for(j=0;j<10;j++)
766 3 {
767 4 SenBuf[9+j+10*k]=cr_cd[i][j];
768 4 }
769 3 k++;
770 3 SenBuf[6]+=10;
771 3 }
772 2 }
773 1
774 1 SenBuf[7]=(char)(k/10)+0x30;
775 1 SenBuf[8]=(char)(k%10)+0x30;
776 1 SenBuf[6]+=2;
777 1
778 1 for(i=0;i<SenBuf[6]+7;i++)
779 1 cs+=SenBuf[i];
780 1
781 1 SenBuf[SenBuf[6]+7]=cs;
782 1 SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
783 1 Senlen=SenBuf[6]+9;
784 1
785 1 return 1;
786 1 }
787
788
789
790
791 /*******************************************************************
792 初始化配置函数
793 函数原型:
794 功 能:
795
796 ********************************************************************/
797 char Wr_i2c(void)
798 {
799 1 unsigned char i;
C51 COMPILER V7.50 PROCESS 10/08/2006 08:51:41 PAGE 14
800 1 unsigned char xdata init[128];
801 1 unsigned char page;
802 1
803 1 for(i=0;i<sizeof(init);i++)
804 1 {
805 2 init[i]=0xff;
806 2 }
807 1
808 1 switch(RecBuf[7])
809 1 {
810 2 case 0 : page=WPAGE0;break;
811 2 case 1 : page=WPAGE1;break;
812 2 case 2 : page=WPAGE2;break;
813 2 case 3 : page=WPAGE3;break;
814 2 case 4 : page=WPAGE4;break;
815 2 case 5 : page=WPAGE5;break;
816 2 case 6 : page=WPAGE6;break;
817 2 case 7 : page=WPAGE7;break;
818 2
819 2 }
820 1 W_block(page,i2c_addr_rainfall,init,sizeof(init));
821 1
822 1 cl_ack_ct(RecBuf[5],RecBuf[3],1);
823 1 return 1;
824 1 }
825
826
827
828 /*******************************************************************
829 读配置函数
830 函数原型:
831 功 能:
832
833 ********************************************************************/
834 char Rd_i2c(void)
835 {
836 1 uchar i;
837 1 unsigned char wpage,rpage;
838 1 unsigned char xdata init[128];
839 1
840 1 switch(RecBuf[7])
841 1 {
842 2 case 0 : wpage=WPAGE0;rpage=RPAGE0;break;
843 2 case 1 : wpage=WPAGE1;rpage=RPAGE1;break;
844 2 case 2 : wpage=WPAGE2;rpage=RPAGE2;break;
845 2 case 3 : wpage=WPAGE3;rpage=RPAGE3;break;
846 2 case 4 : wpage=WPAGE4;rpage=RPAGE4;break;
847 2 case 5 : wpage=WPAGE5;rpage=RPAGE5;break;
848 2 case 6 : wpage=WPAGE6;rpage=RPAGE6;break;
849 2 case 7 : wpage=WPAGE7;rpage=RPAGE7;break;
850 2 }
851 1
852 1 R_block(wpage,rpage,i2c_addr_rainfall,init,sizeof(init));
853 1
854 1 for(i=0;i<sizeof(init);i++)
855 1 {
856 2 SenBuf[i]=init[i];
857 2 }
858 1
859 1 Senlen=sizeof(init);
860 1
861 1 return 1;
C51 COMPILER V7.50 PROCESS 10/08/2006 08:51:41 PAGE 15
862 1 }
863
864 /*******************************************************************
865 时间同步函数
866 函数原型: char Set_time(void)
867 功 能:
868
869 ********************************************************************/
870 char Set_time(void)
871 {
872 1 unsigned int set_time;
873 1 unsigned char i;
874 1
875 1 if((RecBuf[7]>=0x30)&&(RecBuf[7]<0x33)&&
876 1 (RecBuf[8]>=0x30)&&(RecBuf[8]<=0x39)&&
877 1 (RecBuf[9]>=0x30)&&(RecBuf[9]<=0x39))
878 1 {
879 2 set_time=CHAR_TO_INT(&RecBuf[7],3);
880 2
881 2 level_1min=(set_time%60)*50; //水位采集上报秒间隔定时20ms
882 2 rain_1min=(set_time%60)*50; //雨量采集上报秒间隔
883 2
884 2 r_time=set_time/60; //雨量采集上报间隔
885 2 l_time=set_time/60; //水位采集上报间隔
886 2
887 2 rfcd_1min=(set_time%60)*1000; //雨量秒间隔
888 2
889 2 save_time=set_time/60; //雨量存储间隔
890 2
891 2 for(i=0;i<11;i++)
892 2 rfcd_time[i]=set_time/60;//雨量采集加报间隔定时1ms
893 2
894 2 cl_ack_ct(RecBuf[5],RecBuf[3],1);
895 2 }
896 1 else
897 1 {
898 2 cl_ack_ct(RecBuf[5],RecBuf[3],0);
899 2 }
900 1 return 1;
901 1 }
902
903
904 /*******************************************************************
905 处理函数
906 函数原型: void process(void)
907 功 能:
908
909 ********************************************************************/
910 char process(void)
911 {
912 1 char flag=0;
913 1
914 1 if(r_end)
915 1 {
916 2 cs=0;
917 2 SenBuf[0]=FRAME_START_CHAR;
918 2 SenBuf[1]=add[0];
919 2 SenBuf[2]=add[1];
920 2 SenBuf[4]=FRAME_START_CHAR;
921 2
922 2 switch(fc_flag)
923 2 {
C51 COMPILER V7.50 PROCESS 10/08/2006 08:51:41 PAGE 16
924 3 case 0x02 :
925 3 flag=Rd_collect();
926 3 break;
927 3
928 3 case 0x04 :
929 3 flag=Wr_cfg();
930 3 break;
931 3
932 3 case 0x05 :
933 3 flag=Rd_cfg();
934 3 break;
935 3
936 3 case 0x06 :
937 3 flag=Wr_Conditions();
938 3 break;
939 3
940 3 case 0x07 :
941 3 flag=Rd_Conditions();
942 3 break;
943 3
944 3 case 0x0a :
945 3 flag=config_basic_waterlevel();
946 3 break;
947 3
948 3 case 0x0b :
949 3 flag=Set_time();
950 3 break;
951 3
952 3 case 0x0c :
953 3 flag=config_Multiplier_rainfall();
954 3 break;
955 3
956 3 case 0x00 :
957 3 flag=Wr_i2c();
958 3 break;
959 3
960 3 case 0x01 :
961 3 flag=Rd_i2c();
962 3 break;
963 3
964 3 default:
965 3 break;
966 3 }
967 2 rec_lamp=!rec_lamp;
968 2 }
969 1
970 1 if(flag)
971 1 {
972 2 r_end=0;
973 2 s_end=0;
974 2 p_end=1;
975 2 con_485=S_CON;
976 2 TI=1;
977 2 send_lamp=!send_lamp;
978 2 return 1 ;
979 2 }
980 1
981 1 return 0 ;
982 1 }
983
984
C51 COMPILER V7.50 PROCESS 10/08/2006 08:51:41 PAGE 17
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 4994 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 270 633
PDATA SIZE = ---- ----
DATA SIZE = 12 42
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -