⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 control.lst

📁 基于Keil RTX51Tiny的远程监控采集系统从设备开发
💻 LST
📖 第 1 页 / 共 2 页
字号:
 174   1        config();
 175   1        os_create_task (POLLED); 
 176   1        os_create_task (CLOCK);             /* start clock task                     */
 177   1        os_create_task (WAITFRAME); 
 178   1        
 179   1        
C51 COMPILER V7.02b   CONTROL                                                              01/18/2005 21:45:44 PAGE 4   

 180   1        os_delete_task (INIT);              /* stop init task (no longer needed)    */
 181   1      }
 182          /******************************************************************************/
 183          /*        Task 2 'clock'                                                      */
 184          /******************************************************************************/
 185          void Getstate (void) 
 186          {    
 187   1              AreaState[0]=state0;
 188   1              AreaState[1]=state1;
 189   1              AreaState[2]=state2;
 190   1              AreaState[3]=state3;
 191   1              AreaState[4]=state4;
 192   1              AreaState[5]=state5;
 193   1              AreaState[6]=state6;
 194   1              AreaState[7]=state7;
 195   1      }
 196          void clock (void)  _task_ CLOCK  
 197          {
 198   1        unsigned int count;
 199   1        count=0;
 200   1        while (1)  
 201   1        {            
 202   2              if(count%INTEVAL_GETSTATE==0)   
 203   2              {
 204   3                      Getstate();
 205   3              lrun=!lrun;
 206   3              }
 207   2              
 208   2              /*
 209   2              if(count%INTEVAL_GETANALOG==0)
 210   2              {
 211   2                      os_send_signal (GETANALOG); 
 212   2              }
 213   2              */
 214   2              
 215   2              os_wait (K_TMO, INTEVAL_TICK, 0); 
 216   2              count++;
 217   2          
 218   2        }
 219   1      }
 220          
 221          void waitframe (void)  _task_ WAITFRAME  
 222          {
 223   1        while (1)  
 224   1        { 
 225   2              if(istart==iend)
 226   2              { 
 227   3                      os_wait (K_TMO, INTEVAL_TICK*4, 0); 
 228   3                      if(istart==iend)
 229   3                      {
 230   4                              os_send_signal (POLLED);
 231   4                              os_wait (K_SIG,0,0);
 232   4                      }
 233   3                      else
 234   3                              istart=iend;
 235   3              }
 236   2              else
 237   2              {
 238   3                      istart=iend;
 239   3              }
 240   2              
 241   2        }
C51 COMPILER V7.02b   CONTROL                                                              01/18/2005 21:45:44 PAGE 5   

 242   1      }
 243          /******************************************************************************/
 244          /*        Task 1 'command': command processor */
 245          /******************************************************************************/
 246          void SendError(unsigned char ErrCode)
 247          {
 248   1              
 249   1              switch(ErrCode)
 250   1              {
 251   2                      case 1:
 252   2                              break;
 253   2                      case 2:
 254   2                              break;
 255   2                      default:
 256   2                              ;
 257   2              }
 258   1              
 259   1      }
 260          void SendGetState(void)
 261          {
 262   1              unsigned char i,j;
 263   1              unsigned short crcResult;
 264   1              i=0;    
 265   1              
 266   1              if((RegStart+RegNum>LEN_STATE_AREA)||(RegNum==0))
 267   1                      SendError(1);
 268   1              else
 269   1              {
 270   2                      frameSend[i++]=Address;
 271   2                      frameSend[i++]=FUN_GetState_S2M;
 272   2                      frameSend[i++]=RegNum;
 273   2      
 274   2                      for(j=0;j<RegNum;j++)
 275   2                              frameSend[i++]=AreaState[RegStart+j];
 276   2                      crcResult=crc(frameSend,i);
 277   2                      frameSend[i++]=crcResult/256;
 278   2                      frameSend[i++]=crcResult%256;
 279   2      
 280   2                      //putchar(i);
 281   2                      for(j=0;j<i;j++)
 282   2                      {
 283   3                              putchar(frameSend[j]);  
 284   3                      }
 285   2              }
 286   1              
 287   1      }
 288          void polled (void) _task_ POLLED  {
 289   1        unsigned char i=0;
 290   1        unsigned short crcResult;
 291   1        while (1)  {  
 292   2          os_wait (K_SIG,0,0);
 293   2              i=0;
 294   2              frameRecv[i]=(unsigned char) _getkey();
 295   2              if(frameRecv[i]==Address)
 296   2              {
 297   3                      
 298   3                      frameRecv[++i]=(unsigned char) _getkey();
 299   3                      switch(frameRecv[i])
 300   3                      {
 301   4                              case FUN_GetState_M2S:
 302   4                                      SysFun=FUN_GetState_M2S;
 303   4      
C51 COMPILER V7.02b   CONTROL                                                              01/18/2005 21:45:44 PAGE 6   

 304   4                                      frameRecv[++i]=(unsigned char) _getkey();
 305   4                                      RegStart=frameRecv[i]*256;
 306   4                                      frameRecv[++i]=(unsigned char) _getkey();
 307   4                                      RegStart+=frameRecv[i];
 308   4                                      
 309   4                                      
 310   4                                      frameRecv[++i]=(unsigned char) _getkey();
 311   4      
 312   4                                      RegNum=frameRecv[i]*256;
 313   4                                      frameRecv[++i]=(unsigned char) _getkey();
 314   4                                      RegNum+=frameRecv[i];
 315   4                                      frameRecv[++i]=(unsigned char) _getkey();//crc high
 316   4                                      frameRecv[++i]=(unsigned char) _getkey();//crc low
 317   4      
 318   4                                      i++;
 319   4      
 320   4                                      
 321   4      
 322   4                                      crcResult=crc(frameRecv,i);//crc 校验
 323   4                                      if(crcResult==0)
 324   4                                      {
 325   5                                              Send485();
 326   5                                              SendGetState();//如果成功,发送数据
 327   5                                              os_wait (K_TMO,50, 0); 
 328   5                                              Recv485();
 329   5                                      }
 330   4                                      break;
 331   4                      }       
 332   3              }
 333   2              os_send_signal (WAITFRAME);
 334   2        }
 335   1      }
 336          
 337          
 338          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    818    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     46       9
   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 + -