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

📄 os_cpu_c.lst

📁 一个通过方向判别芯片进行角度计算的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   OS_CPU_C                                                             03/10/2007 13:05:44 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE OS_CPU_C
OBJECT MODULE PLACED IN .\Os_cpu_c.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\keilc51\Os_cpu_c.c ROM(SMALL) DEBUG OBJECTEXTEND PRINT(.\Os_cpu_c.lst) O
                    -BJECT(.\Os_cpu_c.obj)

line level    source

   1          /*********************************************************************************************************
   2          **                                                             Small RTOS 51
   3          **                                   The Real-Time Kernel For Keil c51
   4          **
   5          **                                  (c) Copyright 2002-2003, chenmingji
   6          **                                           All Rights Reserved
   7          **
   8          **                                                  V1.20.2
   9          **
  10          **
  11          **--------------文件信息--------------------------------------------------------------------------------
  12          **文   件   名: OS_CPU_C.C
  13          **创   建   人: 陈明计
  14          **最后修改日期:  2004年4月22日
  15          **描        述: Small RTOS 51与CPU(既8051系列)相关的C语言代码
  16          **
  17          **--------------历史版本信息----------------------------------------------------------------------------
  18          ** 创建人: 陈明计
  19          ** 版  本: V0.50~v1.00
  20          ** 日 期: 2002年2月22日~2002年6月20日
  21          ** 描 述: 基本完成
  22          **
  23          **------------------------------------------------------------------------------------------------------
  24          ** 修改人: 陈明计
  25          ** 版  本: V1.10~V1.12.0
  26          ** 日 期: 2002年9月1日~002年12月30日
  27          ** 描 述: 完善代码
  28          **
  29          **------------------------------------------------------------------------------------------------------
  30          ** 修改人: 陈明计
  31          ** 版  本: V1.20.0
  32          ** 日 期: 2003年8月17日
  33          ** 描 述: 根据新版本需要增减了函数
  34          **
  35          **------------------------------------------------------------------------------------------------------
  36          ** 修改人: 陈明计
  37          ** 版  本: V1.20.2
  38          ** 日 期: 2004年4月22日
  39          ** 描 述: 修正任务删除时的一个BUG
  40          **
  41          **--------------当前版本修订------------------------------------------------------------------------------
  42          ** 修改人:
  43          ** 日 期:
  44          ** 描 述:
  45          **
  46          **------------------------------------------------------------------------------------------------------
  47          ********************************************************************************************************/
  48          
  49          #define  IN_OS_CPU_C
  50          #include "CONFIG.h"
  51          
  52          extern idata uint8 STACK[1];                    /* 堆栈起始位置,在OS_CPU_A定义 */
  53          uint8 idata * data OSTsakStackBotton[OS_MAX_TASKS + 2];/* 任务堆栈底部位置            */
  54          
C51 COMPILER V8.05a   OS_CPU_C                                                             03/10/2007 13:05:44 PAGE 2   

  55          #if EN_SP2 > 0
              uint8 idata  Sp2[Sp2Space];                     /* 高级中断堆栈           */
              #endif
  58          
  59          #if OS_MAX_TASKS < 9            
  60          uint8 data OSFastSwap[1];                        /* 任务是否可以快速切换 */
  61          #else
              uint8 data OSFastSwap[2];
              #endif
  64          
  65          extern data uint16 C_XBP;
  66          
  67          void TaskIdle(void)   small;
  68          /*********************************************************************************************************
  69          ** 函数名称: OSCPUInit
  70          ** 功能描述: Small RTOS 与系统相关的初始化
  71          ** 输 入: 无
  72          ** 输 出 : 无
  73          ** 全局变量: OSTaskID,OSTsakStackBotton,SP
  74          ** 调用模块: LoadCtx
  75          ** 
  76          ** 作 者: 陈明计
  77          ** 日 期: 2002年2月22日
  78          **-------------------------------------------------------------------------------------------------------
  79          ** 修改人:
  80          ** 日 期:
  81          **-------------------------------------------------------------------------------------------------------
  82          ********************************************************************************************************/
  83                  void OSCPUInit(void)  small
  84          {
  85   1          uint8 i;
  86   1      
  87   1          for (i = 0; i < OS_MAX_TASKS + 1; i++)
  88   1          {
  89   2              OSTsakStackBotton[i] = STACK;
  90   2          }
  91   1          OSTsakStackBotton[OS_MAX_TASKS + 1] = (uint8 idata *)(IDATA_RAM_SIZE % 256);
  92   1          
  93   1      }
  94          
  95          /*********************************************************************************************************
  96          ** 函数名称: OSTaskStkInit
  97          ** 功能描述: 任务堆栈初始化
  98          ** 输 入: 无
  99          ** 输 出 : 无
 100          ** 全局变量: OSTaskID,OSTsakStackBotton,SP
 101          ** 调用模块: LoadCtx
 102          ** 
 103          ** 作 者: 陈明计
 104          ** 日 期: 2002年2月22日
 105          **-------------------------------------------------------------------------------------------------------
 106          ** 修改人:
 107          ** 日 期:
 108          **-------------------------------------------------------------------------------------------------------
 109          ********************************************************************************************************/
 110          /*
 111          #if EN_REENTRANT > 0
 112          #define SP_ADD_BYTE  5
 113          #else
 114          #define SP_ADD_BYTE  3
 115          #endif
 116          
C51 COMPILER V8.05a   OS_CPU_C                                                             03/10/2007 13:05:44 PAGE 3   

 117          
 118                  void OSTaskStkInit(void (code * task)(void), void xdata *ptos, uint8 TaskID) small
 119          {
 120              uint8 i;
 121              uint8 idata * cp;
 122              uint8 idata * cp1;
 123              
 124          #if OS_MAX_TASKS < 9
 125                  OSFastSwap[1] |= OSMapTbl[TaskID];
 126          #else
 127                  if (TaskID < 8)
 128                  {
 129                      OSFastSwap[1] |= OSMapTbl[TaskID];
 130                  }
 131                  else
 132                  {
 133                      OSFastSwap[0] |= OSMapTbl[TaskID & 0x07];
 134                  }
 135          #endif
 136              
 137              if (TaskID < OSRunningTaskID())
 138              {
 139                  i =  OSRunningTaskID() - TaskID;
 140                  cp = (uint8 idata *)(&(OSTsakStackBotton[TaskID + 1]));
 141                  
 142                  do
 143                  {
 144                      *cp += SP_ADD_BYTE;
 145                      cp++;
 146                  } while (--i != 0);
 147                  
 148                  cp1 = (uint8 idata *)SP;
 149                  SP = SP + SP_ADD_BYTE;
 150                  i = SP - (uint8)(OSTsakStackBotton[TaskID + 1]);
 151                  cp = (uint8 idata *)SP;
 152                  do
 153                  {
 154                      *cp-- = *cp1--;
 155                  } while (--i != 0);
 156              }
 157              else
 158              {
 159                  cp1 = (uint8 idata *)(&(OSTsakStackBotton[OSRunningTaskID() + 1]));
 160                  
 161                  i = TaskID - OSRunningTaskID();
 162                  
 163                  do
 164                  {
 165                      *cp1 -= SP_ADD_BYTE;
 166                      cp1++;
 167                  } while (--i != 0);
 168                  
 169                  cp = OSTsakStackBotton[OSRunningTaskID() + 1];
 170                  i = OSTsakStackBotton[TaskID] - cp - SP_ADD_BYTE;
 171                  cp1 = cp - SP_ADD_BYTE;
 172                  do
 173                  {
 174                      *cp1++ = *cp++;
 175                  } while (--i != 0);
 176              }
 177              cp = OSTsakStackBotton[TaskID];
 178              *cp++ = (uint16)task % 256;
C51 COMPILER V8.05a   OS_CPU_C                                                             03/10/2007 13:05:44 PAGE 4   

⌨️ 快捷键说明

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