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

📄 demo.lst

📁 UCOSII2.85针对8051单片机的移植版本
💻 LST
📖 第 1 页 / 共 2 页
字号:
 185   1          TxBufputch(&ch);
 186   1          TxStart();
 187   1      }
 188          /*
 189          *************************************************************************************************
 190          */
 191          void PrintDec(INT16U dec) reentrant//十进制格式显示数据(16-bit)
 192          {
 193   1          INT8U a,b,c,d,e;
 194   1          a=dec%10;
 195   1          b=dec%100/10;
 196   1          c=dec%1000/100;
 197   1          d=dec%10000/1000;
 198   1          e=dec/10000;
 199   1          if(e!=0) PrintChar(e+'0');
 200   1          if(d!=0) PrintChar(d+'0');
 201   1          if(c!=0) PrintChar(c+'0');
 202   1          if(b!=0) PrintChar(b+'0');
 203   1          PrintChar(a+'0');
 204   1      }
 205          /*
 206          *************************************************************************************************
 207          */
 208          void PrintHex(INT8U hex) reentrant//十六进制格式显示数据(8-bit)
 209          {
 210   1          INT8U temp;
 211   1          temp=hex>>4;
 212   1          if(temp>=0&&temp<=9) temp=temp+'0';
 213   1          else temp=temp+'A'-10;
 214   1          PrintChar(temp);
 215   1          temp=hex&0x0F;
 216   1          if(temp>=0&&temp<=9) temp=temp+'0';
 217   1          else temp=temp+'A'-10;
 218   1          PrintChar(temp);
 219   1      }
 220          /*
 221          *************************************************************************************************
 222          */
 223          void PrintStr(INT8U *str) reentrant//显示字符串
 224          {
 225   1          INT8U temp;
 226   1          do {temp=SerialStatWord&0x0C;}//Delay till Tx-Buffer empty(very important)
 227   1          while(temp!=0x08);
 228   1          while(*str!='\0')
 229   1          {
 230   2              TxBufputch(str);
 231   2              str++;
 232   2          }
 233   1          TxStart();
 234   1      }
 235          /*
 236          *************************************************************************************************
 237          */
 238          void ClrScr() reentrant//清屏
 239          {        
 240   1          PrintStr("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
 241   1      }
C51 COMPILER V7.50   DEMO                                                                  12/14/2007 08:25:27 PAGE 5   

 242          /*
 243          *************************************************************************************************
 244          */
 245          #define TASK_STK_SIZE MaxStkSize//Maximum to 65535
 246          
 247          OS_STK MyTaskStk[TASK_STK_SIZE];
 248          
 249          void MyTask(void *ppdata) reentrant
 250          {
 251   1          ppdata=ppdata;
 252   1          while(1)
 253   1          {
 254   2              ClrScr();
 255   2              PrintStr("\t\t***********************************************************\n");
 256   2              PrintStr("\t\t*    (c) 2003 DRAGON JUBILATION ELECTRONICS Co., Ltd.     *\n");
 257   2              PrintStr("\t\t*                 All Rights Reserved                     *\n");
 258   2              PrintStr("\t\t*       THE DEMO OF 8051MCU SERIAL COMMUNICATIONS         *\n");
 259   2              PrintStr("\t\t*                    Ver 1.0(beta)                        *\n");
 260   2              PrintStr("\t\t*                                                         *\n");
 261   2              PrintStr("\t\t*      ###       ###            ###########   ########    *\n");
 262   2              PrintStr("\t\t*       ##       #########      ###   ##      ###    ##   *\n");
 263   2              PrintStr("\t\t*   ##########   ###            ###   ##      ###    ##   *\n");
 264   2              PrintStr("\t\t*     ##   #      #######       ### #####     ###    ##   *\n");
 265   2              PrintStr("\t\t*      #  #             ##      ### ##  ##    #########   *\n");
 266   2              PrintStr("\t\t*  ############  #########      ### ##  ##    ###         *\n");
 267   2              PrintStr("\t\t*    ########    ###            ###  #####    ###         *\n");
 268   2              PrintStr("\t\t*    ##     ##   ########       ###   ##      ###         *\n");
 269   2              PrintStr("\t\t*    #########   ###            ###   ##      ###     ##  *\n");
 270   2              PrintStr("\t\t*    ##     ##   ########        ##########    ########   *\n");
 271   2              PrintStr("\t\t*    #########   ###                                      *\n");
 272   2              PrintStr("\t\t*    ##     ##   ########        ##   ##     ##    ##     *\n");
 273   2              PrintStr("\t\t*    ##     ##   ###     ##     ###    ###    ###   ###   *\n");
 274   2              PrintStr("\t\t*    ##    ##     ########      ###    ###    ###   ####  *\n");
 275   2              PrintStr("\t\t*                                                         *\n");
 276   2              PrintStr("\t\t***********************************************************\n");
 277   2              PrintStr("\t\tSerialStatWord=");PrintHex(SerialStatWord);PrintChar('\n');
 278   2              OSTimeDly(0);
 279   2          }
 280   1      }
 281          
 282          OS_EVENT *idata SerialSem;
 283          
 284          OS_STK MyTaskStk_A[TASK_STK_SIZE];
 285          void MyTask_A(void *ppdata) reentrant
 286          {
 287   1              INT8U err = 0xff;
 288   1              OS_SEM_DATA SemData;
 289   1              ppdata=ppdata;
 290   1              while (1)
 291   1              {
 292   2                      OSSemQuery(SerialSem, &SemData);
 293   2                      printf("\n\rHello, world");
 294   2                      OSSemPend(SerialSem, 2*OS_TICKS_PER_SEC, &err);
 295   2                      if (err == OS_ERR_NONE)
 296   2                      {
 297   3                              PrintStr("\n\tOS_ERR_NONE I am MyTask_A");
 298   3              }
 299   2              else if (err == OS_ERR_TIMEOUT)
 300   2              {
 301   3                              PrintStr("\n\OS_ERR_TIMEOUT I am MyTask_A");
 302   3      
 303   3              }
C51 COMPILER V7.50   DEMO                                                                  12/14/2007 08:25:27 PAGE 6   

 304   2                      else
 305   2                      {
 306   3                              PrintStr("\n\I am MyTask_A");
 307   3                      }
 308   2              //OSTimeDly(1*OS_TICKS_PER_SEC);    
 309   2                      
 310   2              }
 311   1      }
 312          
 313          OS_STK MyTaskStk_B[TASK_STK_SIZE];
 314          void MyTask_B(void *ppdata) reentrant
 315          {
 316   1              ppdata=ppdata;
 317   1              while (1)
 318   1              {
 319   2                      OSTimeDly(8*OS_TICKS_PER_SEC);    
 320   2                      PrintStr("\n\t I am MyTask_B");
 321   2                      OSSemPost(SerialSem);
 322   2                      
 323   2              }
 324   1      }
 325          
 326          OS_STK MyTaskStk_C[TASK_STK_SIZE];
 327          void MyTask_C(void *ppdata) reentrant
 328          {
 329   1              INT8U err;
 330   1              ppdata=ppdata;
 331   1              while (1)
 332   1              {
 333   2                      OSSemPend(SerialSem, 0, &err);
 334   2                      //OSSemAccept(SerialSem);
 335   2                      PrintStr("\n\t I am MyTask_C");
 336   2              OSTimeDly(2*OS_TICKS_PER_SEC);    
 337   2              }
 338   1      }
 339          /*
 340          *************************************************************************************************
 341          */
 342          void InitTimer0(void) reentrant; // simon add
 343          
 344          
 345          main()
 346          {
 347   1          OSInit();
 348   1              
 349   1          InitTimer0(); //simon add
 350   1      
 351   1          SerialSem = OSSemCreate(0);
 352   1          SerialBufCreate();
 353   1          SerialInit(SERIAL_MODE0,SERIAL_BAUDRATE3);
 354   1          //OSTaskCreate(MyTask, (void *)0, &MyTaskStk[0],0);
 355   1              
 356   1              OSTaskCreate(MyTask_A, (void *)0, &MyTaskStk_A[0],4);
 357   1              OSTaskCreate(MyTask_B, (void *)0, &MyTaskStk_B[0],5);
 358   1              OSTaskCreate(MyTask_C, (void *)0, &MyTaskStk_C[0],6);
 359   1      
 360   1          OSStart();
 361   1      }
 362          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.50   DEMO                                                                  12/14/2007 08:25:27 PAGE 7   

   CODE SIZE        =   2115    ----
   CONSTANT SIZE    =   1426    ----
   XDATA SIZE       =   1008    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =      3    ----
   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 + -