c_main.lst

来自「433.92m无线模块的接收到有效数据后」· LST 代码 · 共 421 行 · 第 1/2 页

LST
421
字号
 197   1        uchar idata work_dat[16]={0}; 
 198   1        Read_Datato_E2RAM(16,0,work_dat);
 199   1        if(work_dat[0]==0x36)
 200   1          {
 201   2           count=work_dat[1];
 202   2           for(i=0;i<count+1;i++)
 203   2               {
 204   3                  num+=work_dat[1+i];
 205   3                }
 206   2           if(num==0) 
 207   2              { WorkMode=work_dat[3];
 208   3                //Load_x=work_dat[6];
 209   3                //Load_M=work_dat[7];
 210   3                //Load_S=work_dat[8];
 211   3                botelv=work_dat[8];
 212   3                Readnum=work_dat[13];    
 213   3                      return(0x01);}        
 214   2           else       return(0x00);
 215   2          }
 216   1        else  return(0x00);
 217   1      }
 218          //////////////////////////////////////////////////////////////////////////////////////////
 219          /////////////////////////////////////////////////////////////////////////////////////////
 220          /////////////////////////////////////////////////////////////////////////////////////////
 221          /////////////////////////////////////////////////////////////////////////////////////////
 222          void Wait_Code1(void)
 223          {
 224   1        uchar idata work_dat[16]={0}; 
 225   1        uchar i1,ki1,j1;
 226   1        LED_red=1;                   
 227   1        LED_green=0;
 228   1         KF=0;
 229   1         RFC=0;                       //无线接收状态控制位0为发送,1为接收状态
 230   1         uart2txd=0;                  //无线发射端
 231   1         delayms(100);
 232   1         KF=1;
 233   1         RFC=1;
 234   1        while(1){
 235   2                       while(1){
 236   3                           if(uart2read()==0x55)ki1++;
 237   3                                   else ki1=0;
 238   3                                   if(ki1>5)break;
 239   3                                  }
 240   2                           while(1){if(uart2read()==0x36)
 241   3                                       {work_dat[0]=0x36;break;}
C51 COMPILER V7.02b   C_MAIN                                                               08/06/2007 21:11:12 PAGE 5   

 242   3                                    }
 243   2                           ki1=uart2read();
 244   2                           work_dat[1]=ki1;
 245   2                       for(i1=0;i1<ki1;i1++)work_dat[i1+2]=uart2read();
 246   2                    j1=0;  
 247   2                    for(i1=1;i1<ki1+2;i1++)j1+=work_dat[i1];
 248   2                    if(j1==0)
 249   2                      {Write_Datato_E2RAM(16,0,work_dat);
 250   3                       botelv=work_dat[8];
 251   3                       for(i1=0;i1<botelv;i1++)
 252   3                          {
 253   4                           LED_red=!LED_red;
 254   4                           delayms(600);
 255   4                           LED_red=!LED_red;
 256   4                           delayms(600);
 257   4                           }
 258   3                        WorkMode=work_dat[3];
 259   3                         for(i1=0;i1<work_dat[3];i1++)
 260   3                          {
 261   4                           LED_green=!LED_green;
 262   4                           delayms(600);
 263   4                           LED_green=!LED_green;
 264   4                           delayms(600);
 265   4                           }
 266   3                        break;
 267   3                      }
 268   2                    
 269   2                  }     
 270   1      }
 271          /////////////////////////////////////////////////////////////////////////////////////////
 272          uchar Wait_Code2(void)
 273          {
 274   1        uchar idata work_dat[16]={0}; 
 275   1        uchar ki1;
 276   1        Time_S=0;
 277   1            while(Time_S<3){
 278   2                    if(uart2read()==0x55)ki1++;
 279   2                            else ki1=0;
 280   2                            if(ki1>5)break;
 281   2                            }
 282   1                 while(Time_S<4){
 283   2                              if(uart2read()==0xff)break;
 284   2                              }
 285   1                 while(Time_S<5){
 286   2                              if(uart2read()==0x35)
 287   2                                 {
 288   3                                  work_dat[0]=0x35;break;
 289   3                                  }
 290   2                             }
 291   1            ki1=uart2read();
 292   1            if(ki1==1)return(0x01);
 293   1            else      return(0x00);
 294   1                       
 295   1      }
 296          ////////////////////////////////////////////////////////////////////////////////////////
 297          void SendDatatowless_a()
 298          {uchar i_3,i;
 299   1           for(i_3=0;i_3<3;i_3++)
 300   1            {
 301   2             LED_red=!LED_red;
 302   2             delayms(600);
 303   2             LED_red=!LED_red;
C51 COMPILER V7.02b   C_MAIN                                                               08/06/2007 21:11:12 PAGE 6   

 304   2             uart2txd=0; RFC=0;
 305   2             delayms(10);
 306   2             for(i=0;i<10;i++)uart2send(0x55);
 307   2             for(i=0;i<2;i++)uart2send(0x00);
 308   2             uart2send(0x06);uart2send(ch);
 309   2             for(i=0;i<ch;i++){uart2send(ser_dat[i]);} 
 310   2             delayms(2); 
 311   2             uart2txd=0; RFC=1;
 312   2             delayms(15); 
 313   2            // if(Wait_Code2()==1)break; 
 314   2            }                     
 315   1      }
 316          
 317          /////////////////////////////////////////////////////////////////////////////////////////
 318          void SendDatatowless_b()
 319          {
 320   1        Time_S=0;Time_M=0;
 321   1        while(Time_S>1);
 322   1        LED_green=!LED_green;
 323   1        delayms(300);
 324   1        LED_green=!LED_green;
 325   1        SendDatatowless_a();
 326   1       // sendtoPCa();
 327   1        delayms(10);
 328   1        uart2txd=0; RFC=1;
 329   1        sendRQ=0;ch=0;                            // reset send request flag
 330   1      }
 331          /////////////////////////////////////////////////////////////////////////////////////////
 332          void Taking_overDataWelss(void)
 333          {
 334   1       uchar i; 
 335   1      // uchar xdata MTR_dat[60]={0}; 
 336   1       while(uart2read()!=0x06);
 337   1       ch=uart2read();
 338   1       for(i=0;i<ch;i++)ser_dat[i]=uart2read(); 
 339   1       LED_green=!LED_green;
 340   1       delayms(300);
 341   1       LED_green=!LED_green;
 342   1       sendtoPCa();
 343   1       delayms(10);
 344   1       uart2txd=0; RFC=1;
 345   1       sendRQ=0;ch=0;   
 346   1      }
 347          /////////////////////////////////////////////////////////////////////////////////////////
 348          /*-------------------------------------------------------------------------------------*/
 349          // main
 350          /*-------------------------------------------------------------------------------------*/
 351          main()
 352          {  uchar ki1,ip=50;
 353   1        // uchar data MRD[2]={0};
 354   1        // uchar data MRD_T[3]={0};
 355   1         //uchar data MRD1[2]={0};
 356   1        // uchar data MRD1_T[3]={0};
 357   1         Init_cpuio();
 358   1         InitTimer();
 359   1         Init_Serial();
 360   1         RTC_Init();
 361   1         while(1){
 362   2                  if(Int_System()==0x00)Wait_Code1();
 363   2                  else {
 364   3                         Init_Serial();
 365   3                         LED_red=0;                   
C51 COMPILER V7.02b   C_MAIN                                                               08/06/2007 21:11:12 PAGE 7   

 366   3                         LED_green=1;
 367   3                         uart2txd=0; RFC=1;
 368   3                         CTRL485=1;RI=0;
 369   3                         while(1)
 370   3                               { 
 371   4                                 if(key1==0){Write_Datato_00E2RAM (16,0 );break;}
 372   4                                 if (sendRQ)SendDatatowless_b();                                      // wait for command 'S'
 373   4                                  while(--ip){
 374   5                                              if(uart2read()==0x55)ki1++;
 375   5                                                      else ki1=0;
 376   5                                                      if(ki1>5)break;
 377   5                                                      }
 378   4                                         ip=50;
 379   4                                         if(ki1>5)Taking_overDataWelss();
 380   4                                }
 381   3                        }
 382   2                   }
 383   1      }
 384                                 
 385                                 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1096    ----
   CONSTANT SIZE    =     48    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     37      10
   IDATA SIZE       =     60      48
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?