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

📄 main.lst

📁 1. UC/OS 8051中完全应用。 2. 显示各个任务的执行时间, 执行时间占总时间百分比, tick计数器 3.任务中信号量,消息以及消息队列的使用。 我自己仔细测试过了
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  08/19/2008 10:59:07 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\obj\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Source\main.c LARGE OBJECTADVANCED BROWSE DEBUG PRINT(.\lst\main.lst) OBJEC
                    -T(.\obj\main.obj)

line level    source

   1          /*
   2          *********************************************************************************************************
   3          *                                                uC/OS-II
   4          *   OSTaskStatHook                                          Applation Funtion 
   5          *                                            
   6          *
   7          * File : main.c                         
   8          * By   : Tj                                       
   9          * Time : 2008.8.8
  10          * 
  11          * 
  12          *********************************************************************************************************
  13          */
  14          //#pragma  warning( disable: C196 ) 
  15          
  16          #define  Reentrant reentrant    
  17          #include "includes.h"
  18          #include "..\driver\lcd\lcd.h"
  19          #include "..\driver\c51.h"
  20          extern unsigned char Os_Enter_Sum;
  21          
  22          
  23          #define          TASK_STK_SIZE     MaxStkSize   
  24          #define          TASK_START_ID       0                /* Application tasks IDs                         */
  25          #define          TASK_CLK_ID         1
  26          #define          TASK_1_ID           2
  27          #define          TASK_2_ID           3
  28          #define          TASK_3_ID           4
  29          #define          TASK_4_ID           5
  30          #define          TASK_5_ID           6
  31          
  32          #define          TASK_START_PRIO    10                /* Application tasks priorities                  */
  33          #define          TASK_CLK_PRIO      11
  34          #define          TASK_1_PRIO        12
  35          #define          TASK_2_PRIO        13
  36          #define          TASK_3_PRIO        14
  37          #define          TASK_4_PRIO        15
  38          #define          TASK_5_PRIO        16
  39          #define          MSG_QUEUE_SIZE     20  
  40          
  41          
  42          
  43          
  44          
  45          
  46          OS_EVENT       *MsgQueue;                             /* Message queue pointer                         */
  47          void           *MsgQueueTbl[20];                      /* Storage for messages                          */
  48          
  49          OS_STK        TaskStartStk[TASK_STK_SIZE];            /* Startup    task stack                         */
  50          OS_STK        TaskClkStk[TASK_STK_SIZE];              /* Clock      task stack                         */
  51          OS_STK        Task1Stk[TASK_STK_SIZE];                /* Task #1    task stack                         */
  52          OS_STK        Task2Stk[TASK_STK_SIZE];                /* Task #2    task stack                         */
  53          OS_STK        Task3Stk[TASK_STK_SIZE];                /* Task #3    task stack                         */
  54          OS_STK        Task4Stk[TASK_STK_SIZE];                /* Task #4    task stack                         */
C51 COMPILER V8.08   MAIN                                                                  08/19/2008 10:59:07 PAGE 2   

  55          OS_STK        Task5Stk[TASK_STK_SIZE];                /* Task #5    task stack                         */
  56          
  57          OS_EVENT     *AckMbox;                                /* Message mailboxes for Tasks #4 and #5         */
  58          OS_EVENT     *TxMbox;
  59          
  60          OS_EVENT     *pPrintSem;
  61          OS_EVENT     *pPutSem;
  62          
  63          TASK_USER_DATA  TaskUserData[7];
  64          
  65          
  66          
  67                  void  TaskStart(void *ppdata) Reentrant;                  /* Function prototypes of tasks         
             -         */
  68          static  void  TaskStartCreateTasks(void)Reentrant;
  69          static  void  TaskStartDispInit(void)Reentrant;
  70          static  void  TaskStartDisp(void)Reentrant;
  71                  void  TaskClk(void *ppdata)Reentrant;
  72                  void  Task1(void *ppdata)Reentrant;
  73                  void  Task2(void *ppdata)Reentrant;
  74                  void  Task3(void *ppdata)Reentrant;
  75                  void  Task4(void *ppdata)Reentrant;
  76                  void  Task5(void *ppdata)Reentrant;
  77          void InitSerial() 
  78          {
  79   1      
  80   1              SCON = 0x2; /* SM0 SM1 =0 SM2 0 REN=0 TB8=0 RB8=0 TI=1 RI=0 */
  81   1              TI=1;
  82   1      
  83   1      }
  84          
  85          void main(void)
  86          {
  87   1          INT8U i;
  88   1          Os_Enter_Sum=0;
  89   1          InitHardware();
  90   1          InitSerial();
  91   1              lcd_init();
  92   1          lcd_clr(0x0);
  93   1      /*      for(i=0;i<128;i++)
  94   1              {
  95   1              LCD_ClrLine(0,29,i);
  96   1          }   */
  97   1              C51_ElapsedInit(); 
  98   1              OSInit();
  99   1              strcpy(TaskUserData[TASK_START_ID].TaskName, "TkStart");
 100   1          OSTaskCreateExt(TaskStart,
 101   1                         (void *)0,
 102   1                         &TaskStartStk[0],
 103   1                         TASK_START_PRIO,
 104   1                         TASK_START_ID,
 105   1                         &TaskStartStk[TASK_STK_SIZE - 1],
 106   1                         TASK_STK_SIZE,
 107   1                         &TaskUserData[TASK_START_ID],
 108   1                         0); 
 109   1      
 110   1          OSStart();
 111   1      }
*** WARNING C280 IN LINE 87 OF SOURCE\MAIN.C: 'i': unreferenced local variable
 112          
 113          
 114          void Taskstart(void *ppdata) Reentrant
C51 COMPILER V8.08   MAIN                                                                  08/19/2008 10:59:07 PAGE 3   

 115          {
 116   1          ppdata=ppdata; 
 117   1              ET0=1;      
 118   1          TR0=1;
 119   1              TR1  = 1;
 120   1              ET1=1;
 121   1              EA=1;
 122   1          OSStatInit();
 123   1              pPrintSem = OSSemCreate(1);
 124   1              pPutSem   = OSSemCreate(1); 
 125   1              TaskStartDispInit();
 126   1          MsgQueue = OSQCreate(&MsgQueueTbl[0], MSG_QUEUE_SIZE);
 127   1              TaskStartCreateTasks();
 128   1          for(;;){
 129   2                  LCD_Print(8,13,0,"%2d ",(int)OSTaskCtr);
 130   2                  LCD_Print(25,13,0,"%3d%% ",(int)OSCPUUsage);
 131   2                      LCD_Print(12,15,0,"%3d ",(int)OSCtxSwCtr);
 132   2                      OSTimeDly(100);
 133   2                      OSCtxSwCtr = 0;                                    /* Clear the context switch counter         */
 134   2             // OSTimeDly(OS_TICKS_PER_SEC);                       /* Wait one second                          *
             -/
 135   2                 
 136   2          }    
 137   1      }
 138          
 139          
 140          static  void  TaskStartCreateTasks (void) Reentrant
 141          {
 142   1          strcpy(TaskUserData[TASK_CLK_ID].TaskName, "Clock");
 143   1          OSTaskCreateExt(TaskClk,
 144   1                         (void *)0,
 145   1                                         &TaskClkStk[0],
 146   1                         TASK_CLK_PRIO,
 147   1                         TASK_CLK_ID,
 148   1                                         &TaskClkStk[TASK_STK_SIZE - 1],
 149   1                        TASK_STK_SIZE,
 150   1                        &TaskUserData[TASK_CLK_ID],
 151   1                         0);
 152   1      
 153   1          
 154   1              strcpy(TaskUserData[TASK_1_ID].TaskName, "MQ Rx");
 155   1              OSTaskCreateExt(Task1,
 156   1                         (void *)0,
 157   1                          &Task1Stk[0],
 158   1                         TASK_1_PRIO,
 159   1                         TASK_1_ID,
 160   1                         &Task1Stk[TASK_STK_SIZE - 1],
 161   1                         TASK_STK_SIZE,
 162   1                         &TaskUserData[TASK_1_ID],
 163   1                         0);
 164   1      
 165   1          
 166   1              strcpy(TaskUserData[TASK_2_ID].TaskName, "MQ Tx#2");
 167   1              OSTaskCreateExt(Task2,
 168   1                         (void *)0,
 169   1                         &Task2Stk[0],
 170   1                         TASK_2_PRIO,
 171   1                         TASK_2_ID,
 172   1                         &Task2Stk[TASK_STK_SIZE - 1],
 173   1                         TASK_STK_SIZE,
 174   1                         &TaskUserData[TASK_2_ID],
 175   1                         0);
C51 COMPILER V8.08   MAIN                                                                  08/19/2008 10:59:07 PAGE 4   

 176   1      
 177   1          strcpy(TaskUserData[TASK_3_ID].TaskName, "MQ Tx#3");
 178   1              OSTaskCreateExt(Task3,
 179   1                         (void *)0,
 180   1                         &Task3Stk[0],
 181   1                         TASK_3_PRIO,
 182   1                         TASK_3_ID,
 183   1                         &Task3Stk[TASK_STK_SIZE - 1],
 184   1                         TASK_STK_SIZE,
 185   1                         &TaskUserData[TASK_3_ID],
 186   1                         0);
 187   1      
 188   1          strcpy(TaskUserData[TASK_4_ID].TaskName, "MQ Tx#4");
 189   1              OSTaskCreateExt(Task4,
 190   1                         (void *)0,
 191   1                         &Task4Stk[0],
 192   1                         TASK_4_PRIO,
 193   1                         TASK_4_ID,
 194   1                         &Task4Stk[TASK_STK_SIZE-1],
 195   1                         TASK_STK_SIZE,
 196   1                         &TaskUserData[TASK_4_ID],
 197   1                         0);
 198   1      
 199   1          strcpy(TaskUserData[TASK_5_ID].TaskName, "DlyTask");
 200   1              OSTaskCreateExt(Task5,
 201   1                         (void *)0,
 202   1                         &Task5Stk[0],
 203   1                         TASK_5_PRIO,
 204   1                         TASK_5_ID,
 205   1                         &Task5Stk[TASK_STK_SIZE-1],
 206   1                         TASK_STK_SIZE,
 207   1                         &TaskUserData[TASK_5_ID],
 208   1                         0);
 209   1      }  
 210          
 211          static  void  TaskStartDispInit (void)  Reentrant
 212          {
 213   1              LCD_Print(0,0,0,"-------UC/OS Example #3-------");
 214   1              LCD_Print(0,1,0,"-------Designed by Tj  -------");
 215   1              LCD_Print(0,3,0,"Task    Cnt   ExeT  ToT   %%Tot");
 216   1      
 217   1              LCD_Print(0,13,0,"tasks:");
 218   1              LCD_Print(20,13,0,"cpu:");
 219   1          LCD_Print(0,15,0,"Task sw/sec:");
 220   1          LCD_Print(24,15,0,"V%1d.%02d", OSVersion() / 100, OSVersion() % 100);
 221   1      
 222   1      }
 223          
 224          static  void  TaskStartDisp (void)      Reentrant
 225          {
 226   1        
 227   1      }
 228          
 229          
 230          void  Task1 (void *ppdata) Reentrant
 231          {
 232   1        char  *msg;
 233   1          INT8U  err;
 234   1      
 235   1      
 236   1          ppdata = ppdata;
 237   1          for (;;) {
C51 COMPILER V8.08   MAIN                                                                  08/19/2008 10:59:07 PAGE 5   

 238   2              msg = (char *)OSQPend(MsgQueue, 0, &err);
 239   2              LCD_PutStr(20,12,1, msg);
 240   2       //       OSTimeDlyHMSM(0, 0, 0,500);
 241   2          }
 242   1      }
 243          
 244          
 245          void  Task2 (void *ppdata) Reentrant
 246          {
 247   1          char  msg[20];
 248   1      
 249   1          ppdata = ppdata;
 250   1          strcpy(&msg[0], "Task 2");
 251   1          for (;;) {
 252   2              OSQPost(MsgQueue, (void *)&msg[0]);
 253   2              OSTimeDlyHMSM(0, 0, 2,0);
 254   2          }
 255   1      }
 256          
 257          void  Task3 (void *ppdata) Reentrant
 258          {
 259   1      
 260   1          char  msg[20];
 261   1      
 262   1      
 263   1          ppdata = ppdata;
 264   1          strcpy(&msg[0], "Task 3");
 265   1          for (;;) {
 266   2                  OSTimeDlyHMSM(0, 0, 0, 500);
 267   2              OSQPost(MsgQueue, (void *)&msg[0]);
 268   2                      OSTimeDlyHMSM(0, 0, 1, 500);
 269   2              
 270   2          }
 271   1      }
 272          
 273          
 274          void  Task4 (void *ppdata) Reentrant
 275          {
 276   1           char  msg[20];
 277   1      
 278   1      
 279   1          ppdata = ppdata;
 280   1          strcpy(&msg[0], "Task 4");
 281   1          for (;;) {
 282   2                  OSTimeDlyHMSM(0, 0, 1, 0);
 283   2              OSQPost(MsgQueue, (void *)&msg[0]);
 284   2              OSTimeDlyHMSM(0, 0, 1, 0);
 285   2          }
 286   1      }
 287          
 288          
 289          void  Task5 (void *ppdata) Reentrant
 290          {
 291   1          char  msg[20];
 292   1      
 293   1      
 294   1          ppdata = ppdata;
 295   1          strcpy(&msg[0], "Task 5");
 296   1          for (;;) {
 297   2                   OSTimeDlyHMSM(0, 0, 1, 500);
 298   2              OSQPost(MsgQueue, (void *)&msg[0]);
 299   2              OSTimeDlyHMSM(0, 0, 0, 500);
C51 COMPILER V8.08   MAIN                                                                  08/19/2008 10:59:07 PAGE 6   

 300   2          }
 301   1      }
 302          
 303          void  TaskClk (void *ppdata) Reentrant
 304          {
 305   1          ppdata = ppdata;
 306   1          for (;;) {
 307   2              OSTimeDly(OS_TICKS_PER_SEC);
 308   2                      OSTimeDly(OS_TICKS_PER_SEC);
 309   2          }
 310   1      }
 311          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2423    ----
   CONSTANT SIZE    =    226    ----
   XDATA SIZE       =   3827       1
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
   EDATA SIZE       =   ----    ----
   HDATA SIZE       =   ----    ----
   XDATA CONST SIZE =   ----    ----
   FAR CONST SIZE   =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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