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

📄 test.lst

📁 这是一个UC/OS-II的多任务实例
💻 LST
📖 第 1 页 / 共 2 页
字号:
 186   1      }
 187          
 188          
 189          
 190          /*
 191          *********************************************************************************************************
 192          *                                             RxTASK
 193          *********************************************************************************************************
 194          */
 195          
 196          void RxTASK(void *cszdata) reentrant
 197          {   
 198   1          INT8U  ch;
 199   1          INT8U  err;
 200   1          INT8U  Flag=0x00;
 201   1          INT8U  CRCLEN;
 202   1          INT8U  H,L;
 203   1          INT8U  CMD;
 204   1          INT16U LENCtr=0;
 205   1          INT16U i=2;
 206   1          INT16U CRC,k;
 207   1          extern INT8U InBuf[130];
 208   1              extern INT8U RESFlag;
 209   1              extern INT8U OEFlag;
 210   1      
 211   1          cszdata=cszdata;
 212   1      
 213   1          for (;;) 
 214   1          {
 215   2           ch=CommGetChar(OS_TICKS_PER_SEC,&err);
 216   2           if(err==COMM_NO_ERR)
 217   2           {
 218   3            if(ch==0x1B)
 219   3            {Flag=0x01;InBuf[0]=0x1B;}
 220   3            else
 221   3            {
 222   4             if(Flag==0x01)
 223   4             {LENCtr=(INT16U)ch;Flag=0x02;InBuf[1]=ch;}
 224   4             else
 225   4             {
 226   5              if(LENCtr>0)
 227   5              {InBuf[i]=ch;i++;LENCtr--;
 228   6               if(LENCtr==0)
 229   6               {Flag=0x00;CRCLEN=InBuf[1];k=(INT16U)InBuf[1];
 230   7                CRC=cal_crc(InBuf,CRCLEN);
 231   7                L=(INT8U)CRC;H=(INT8U)(CRC>>8);
 232   7                if(H==InBuf[k] && L==InBuf[k+1])
 233   7                {CMD=InBuf[2];
 234   8                 switch(CMD)
C51 COMPILER V7.50   TEST                                                                  03/06/2007 22:39:42 PAGE 5   

 235   8                 {
 236   9                  case 0x01:RESFlag=0x01;break;
 237   9                  case 0x02:OEFlag =0x01;break;
 238   9                  case 0x03:OEFlag =0x02;break;
 239   9                 }
 240   8                }
 241   7               }
 242   6              }
 243   5             }
 244   4            }
 245   3               }
 246   2           OSTimeDly(2);
 247   2              }        
 248   1      }
 249          
 250          /*
 251          *********************************************************************************************************
 252          *                                             TxTASK
 253          *********************************************************************************************************
 254          */
 255          
 256          void TxTASK(void *cszdata) reentrant
 257          {   
 258   1      
 259   1              INT8U  RES1[14]={0x1B,0x0C,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00};
 260   1          INT8U  H,L;
 261   1              INT8U  CRCLEN;
 262   1              INT16U i,j;
 263   1              INT16U CRC;
 264   1              extern INT8U OutBuf[256];
 265   1              extern INT8U RESFlag;
 266   1          cszdata=cszdata;
 267   1      
 268   1          for (;;) 
 269   1                  {
 270   2               switch(RESFlag)
 271   2                       {
 272   3                        case 0x01:CRCLEN=0x0C;
 273   3                                  CRC=cal_crc(RES1,CRCLEN);
 274   3                                              RES1[13]=(INT8U)CRC;
 275   3                                              RES1[12]=(INT8U)(CRC>>8);
 276   3                                  for(i=0;i<14;i++)
 277   3                                  {CommPutChar(RES1[i],OS_TICKS_PER_SEC);}
 278   3                                              RESFlag=0x00;break;
 279   3      
 280   3                        case 0x02:CRCLEN=OutBuf[1];
 281   3                                  CRC=cal_crc(&OutBuf[0],CRCLEN);
 282   3                                              j=(INT16U)OutBuf[1];
 283   3                                              for(i=0;i<j;i++)
 284   3                                              {CommPutChar(OutBuf[i],OS_TICKS_PER_SEC);}
 285   3                                              L=(INT8U)CRC;H=(INT8U)(CRC>>8);
 286   3                                              CommPutChar(H,OS_TICKS_PER_SEC);
 287   3                                              CommPutChar(L,OS_TICKS_PER_SEC);
 288   3                                              RESFlag=0x00;break;
 289   3      
 290   3                        case 0x03:CRCLEN=OutBuf[1];
 291   3                                  CRC=cal_crc(&OutBuf[0],CRCLEN);
 292   3                                              j=(INT16U)OutBuf[1];
 293   3                                              for(i=0;i<j;i++)
 294   3                                              {CommPutChar(OutBuf[i],OS_TICKS_PER_SEC);}
 295   3                                              L=(INT8U)CRC;H=(INT8U)(CRC>>8);
 296   3                                              CommPutChar(H,OS_TICKS_PER_SEC);
C51 COMPILER V7.50   TEST                                                                  03/06/2007 22:39:42 PAGE 6   

 297   3                                              CommPutChar(L,OS_TICKS_PER_SEC);
 298   3                                              RESFlag=0x00;break;
 299   3               }
 300   2               OSTimeDly(2);
 301   2              }
 302   1      
 303   1      }
 304          
 305          /*
 306          *********************************************************************************************************
 307          *                                             OETASK
 308          *********************************************************************************************************
 309          */
 310          
 311          void OETASK(void *cszdata) reentrant
 312          {   
 313   1          INT8U  H2,H1,L2,L1;
 314   1              INT16U  k;
 315   1              INT16U i,j;
 316   1          extern INT8U OutBuf[256];
 317   1              extern INT8U InBuf[130];
 318   1      
 319   1          cszdata=cszdata;
 320   1      
 321   1          for (;;) 
 322   1                  {
 323   2                       srand(TICKS);
 324   2                       switch(OEFlag)
 325   2                       {
 326   3                        case 0x01:OutBuf[0]=0x1B;
 327   3                                  OutBuf[1]=InBuf[1]+0x04;
 328   3                                              OutBuf[2]=0x02;
 329   3                                              j=(INT16U)OutBuf[1];
 330   3                                              H2=rand();
 331   3                                              H1=rand();
 332   3                                              L2=rand();
 333   3                                              L1=rand();
 334   3                                              OutBuf[3]=H2;
 335   3                                              OutBuf[4]=H1;
 336   3                                              OutBuf[5]=L2;
 337   3                                              OutBuf[6]=L1;
 338   3                                              for(i=7;i<j;i++)
 339   3                                              {
 340   4                                               OutBuf[i]=InBuf[i-4];
 341   4                                              }
 342   3                                              RESFlag=0x02;OEFlag=0x00;break;
 343   3                case 0x02:OutBuf[0]=0x1B;
 344   3                                              OutBuf[1]=InBuf[1];
 345   3                                              OutBuf[2]=0x03;
 346   3                                  j=(INT16U)InBuf[1];k=0;
 347   3                                              H2=rand();
 348   3                                              H1=rand();
 349   3                                              L2=rand();
 350   3                                              L1=rand();
 351   3                                              OutBuf[3]=H2;
 352   3                                              OutBuf[4]=H1;
 353   3                                              OutBuf[5]=L2;
 354   3                                              OutBuf[6]=L1;
 355   3                                              for(i=7;i<j;i++)
 356   3                                              {OutBuf[i]=InBuf[i];k++;}
 357   3                                              OutBuf[1]=OutBuf[1]+(INT8U)k;
 358   3                                              for(i=j;i<j+k;i++)
C51 COMPILER V7.50   TEST                                                                  03/06/2007 22:39:42 PAGE 7   

 359   3                                              {OutBuf[i]=InBuf[i-k];}
 360   3                                              RESFlag=0x03;OEFlag=0x00;break;
 361   3               }
 362   2             
 363   2                OSTimeDly(2);
 364   2              }
 365   1      
 366   1      }
 367          
 368          
 369                    
 370          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2270    ----
   CONSTANT SIZE    =     78    ----
   XDATA SIZE       =   2437       6
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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