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

📄 test.lst

📁 这是一个UC/OS-II的多任务实例
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   TEST                                                                  03/06/2007 22:39:42 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE test.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\DeBug\test.lst) SRC(.\DeBug\
                    -test.SRC)

line level    source

   1          /*
   2          *********************************************************************************************************
   3          *                                               uC/OS-II
   4          *                                         The Real-Time Kernel
   5          *
   6          *                                             Author:陈是知
   7          *                                          All Rights Reserved
   8          *                                                 v0.1
   9          *                                             密码器包协议
  10          *********************************************************************************************************
  11          */
  12          
  13          #include <includes.h>
  14          /*
  15          *********************************************************************************************************
  16          *                                              CONSTANTS
  17          *********************************************************************************************************
  18          */
  19          
  20          #define          TASKSTART_ID        4                /* 任务的ID                                      */
  21          #define          RxTASK_ID           5
  22          #define          TxTASK_ID           6
  23          #define          OETASK_ID           7
  24          
  25          #define          TASKSTART_PRIO      4                /* 任务的优先级                                  */
  26          #define          RxTASK_PRIO         5
  27          #define          TxTASK_PRIO         6
  28          #define          OETASK_PRIO         7
  29          
  30          /*
  31          *********************************************************************************************************
  32          *                                         LOCAL GLOBAL VARIABLES
  33          *********************************************************************************************************
  34          */
  35          
  36          INT8U RESFlag=0x00;
  37          INT8U OEFlag =0x00;
  38          INT8U InBuf[130];
  39          INT8U OutBuf[256];
  40          INT8U TICKS;
  41          
  42          /*
  43          *********************************************************************************************************
  44          *                                              VARIABLES
  45          *********************************************************************************************************
  46          */
  47          OS_STK        TaskStartStk[TASK_STK_SIZE];             /* 声明启动任务堆栈                              */
  48          OS_STK        RxTASKStk[TASK_STK_SIZE];                /* 声明接收任务堆栈                              */
  49          OS_STK        TxTASKStk[TASK_STK_SIZE];                /* 声明发送任务堆栈                              */
  50          OS_STK        OETASKStk[TASK_STK_SIZE];                /* 声明加/解密任务堆栈                           */
  51          
  52          /*
  53          *********************************************************************************************************
  54          *                                         FUNCTION PROTOTYPESZ
C51 COMPILER V7.50   TEST                                                                  03/06/2007 22:39:42 PAGE 2   

  55          *********************************************************************************************************
  56          */
  57          void  TaskStart(void *cszdata) reentrant;              /* 声明任务原型                                   *
             -/
  58          void  RxTASK(void *cszdata) reentrant; 
  59          void  TxTASK(void *cszdata) reentrant;
  60          void  OETASK(void *cszdata) reentrant;
  61          void  TaskCreate(void);
  62          
  63          /*
  64          *********************************************************************************************************
  65          *                                                  MAIN
  66          *********************************************************************************************************
  67          */
  68          void main(void)
  69          {  
  70   1          OS_STK *ptos;
  71   1          OS_STK *pbos;
  72   1          INT32U  size;
  73   1      
  74   1          OSInit();                                         /* 初始化uC/OS-II                                 */
  75   1          InitTimer0();                                     /* 初始化定时器0                                  */
  76   1          CommBufInit();                                    /* 初始化串口缓冲区                               */
  77   1          CommInit();                                       /* 初始化串口                                     */
  78   1      
  79   1          ptos        = &TaskStartStk[0];                   /* 51的堆栈是从下向上递增的,所以栈顶为最低地址   */
             -     
  80   1          pbos        = &TaskStartStk[TASK_STK_SIZE - 1];
  81   1          size        = TASK_STK_SIZE;
  82   1                                                            /* 建立TaskStart任务                              */
  83   1          OSTaskCreateExt(TaskStart,                                               
  84   1                         (void *)0,   
  85   1                         ptos,
  86   1                         TASKSTART_PRIO,
  87   1                         TASKSTART_ID,
  88   1                         pbos,
  89   1                         size,
  90   1                         (void *)0,
  91   1                         OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
  92   1      
  93   1          OSStart();                                        /* 开始执行                                       */
  94   1      }
  95          
  96          /*
  97          *********************************************************************************************************
  98          *                                               STARTUP TASK
  99          *********************************************************************************************************
 100          */
 101          void  TaskStart (void *cszdata) reentrant
 102          {  
 103   1         INT16U i=0;
 104   1         INT16U j=0;
 105   1         INT16U CRC;
 106   1         /*
 107   1         命令表如下,用户可以通过虚拟接受来实现脱离实际开发环境的程序调试。
 108   1         CMD1: 1B 03 01 F6 E0
 109   1         RES1: 1B 0C 01 01 01 01 01 01 01 01 01 01 2C 1F
 110   1      
 111   1         CMD2: 1B 07 02 01 02 03 04 FD 95
 112   1         RES2: 1B 0B 02 XX XX XX XX 01 02 03 04 XX XX
 113   1      
 114   1         CMD3: 1B 0A 03 O1 02 03 04 01 02 03 3E CC
C51 COMPILER V7.50   TEST                                                                  03/06/2007 22:39:42 PAGE 3   

 115   1         RES3: 1B OD 03 XX XX XX XX 01 02 03 01 02 03 XX XX
 116   1         */
 117   1         INT8U  Puts[64]={0x1B,0x0A,0x03,0x01,0x02,0x03,0x04,0x01,0x02,0x03}; //这里填上需要虚拟接受的命令包内容
 118   1         extern INT8U  TICKS;
 119   1      
 120   1          cszdata = cszdata;                                     /* 防止编译警告                             */
 121   1          
 122   1          //注意!在最高优先级任务循环前打开定时器中断,以满足在OSStart()前不产生中断的要求。
 123   1          //在系统调用OSInit()时会自动创建一个优先级最低的系统任务,创建过程中会调用OS_EXIT_CRITICAL()打开EA
             -。
 124   1          //若在InitTimer0()里打开T0中断,则违反了在OSStart()前不产生中断的要求。
 125   1          //切记将ET0=1;放在最高优先级任务里,OSStart()将调用OSStartHighRdy()第一个运行最高优先级任务,这样ET0=1
             -总能被第一个执行。
 126   1          ET0=1;
 127   1      
 128   1              //如果需要虚拟接受命令包,将下面的代码加入编译,如果命令包正确,程序运行后会发出响应包
 129   1          /*
 130   1          CRC = cal_crc(Puts,(Puts[1]));
 131   1          j=(INT16U)Puts[1];
 132   1          Puts[j+1]=(INT8U)CRC;
 133   1          Puts[j]=(INT8U)(CRC>>8);             
 134   1          j=j+2;
 135   1          
 136   1          for(i=0;i<j;i++)
 137   1          {CommPutRxChar(Puts[i]);}  
 138   1          */
 139   1                                    
 140   1          TaskCreate();                                          /* 创建任务                                 */
 141   1      
 142   1          for(;;)
 143   1          {   
 144   2               TICKS++;
 145   2           OSTimeDly(OS_TICKS_PER_SEC);                           /* 延时一秒                                 */
             -   
 146   2          }
 147   1      }
*** WARNING C280 IN LINE 105 OF TEST.C: 'CRC': unreferenced local variable
 148          /*
 149          *********************************************************************************************************
 150          *                                             CREATE TASKS
 151          *********************************************************************************************************
 152          */
 153          void  TaskCreate (void)
 154          {
 155   1      
 156   1          OSTaskCreateExt(RxTASK,
 157   1                         (void *)0,
 158   1                         &RxTASKStk[0],
 159   1                         RxTASK_PRIO,
 160   1                         RxTASK_ID,
 161   1                         &RxTASKStk[TASK_STK_SIZE - 1],
 162   1                         TASK_STK_SIZE,
 163   1                         (void *)0,
 164   1                         OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
 165   1      
 166   1          OSTaskCreateExt(TxTASK,
 167   1                         (void *)0,
 168   1                         &TxTASKStk[0],
 169   1                         TxTASK_PRIO,
 170   1                         TxTASK_ID,
 171   1                         &TxTASKStk[TASK_STK_SIZE - 1],
 172   1                         TASK_STK_SIZE,
C51 COMPILER V7.50   TEST                                                                  03/06/2007 22:39:42 PAGE 4   

 173   1                         (void *)0,
 174   1                         OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
 175   1      
 176   1          OSTaskCreateExt(OETASK,
 177   1                         (void *)0,
 178   1                         &OETASKStk[0],
 179   1                         OETASK_PRIO,
 180   1                         OETASK_ID,
 181   1                         &OETASKStk[TASK_STK_SIZE-1],
 182   1                         TASK_STK_SIZE,
 183   1                         (void *)0,
 184   1                         OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
 185   1      

⌨️ 快捷键说明

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