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

📄 os_cpu.lst

📁 一个用在51单片机上的调度器 后续版本将出现可占先式调度
💻 LST
字号:
C51 COMPILER V8.08   OS_CPU                                                                02/04/2008 22:01:36 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE OS_CPU
OBJECT MODULE PLACED IN .\OS_CPU.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\CPU\8051\OS_CPU.c BROWSE DEBUG OBJECTEXTEND PRINT(.\OS_CPU.lst) OBJECT(.
                    -\OS_CPU.obj)

line level    source

   1          
   2          /*--------------------------------------------------------------------------------*-
   3           *                                                                 ck/OS
   4           *                                                       微处理器硬件相关文件
   5           *                                                      ------------------------------- 
   6           *
   7           *文件名称:OS_CPU.c
   8           *
   9           *作    者:冯耿超
  10           *版    本:V1.1.2                                      
  11           *创建日期:2008年01月31日
  12           *
  13           *文件描述:OS_CPU.c文件主要包括三个内核函数:OS_Updata_Init()、OS_Tick_Updata()、
  14           *                      OS_Start()、分别为系统时标刷新初始化,时钟节拍更新,系统开始。本文件
  15           *                      与MCU的硬件紧密相关。
  16          -*--------------------------------------------------------------------------------*/
  17          #include "..\INC\OS_cfg.h"
  18          #include "..\INC\OS_CPU.h"
  19          #include "..\INC\OS_CORE.h"
  20          
  21          //定义任务结构数组
  22          extern sTask OS_TCB[OS_MAX_TASK];                               
  23          
  24          /*--------------------------------------------------------------------------------*-
  25           *函数原型:OS_Updata_Init(void)
  26           *
  27           *输入参数:无
  28           *
  29           *输出参数:无
  30           *
  31           *返 回 值:无
  32           *
  33           *描    述:系统初始化,删除所有的任务并设置时标长度
  34          -*--------------------------------------------------------------------------------*/
  35          void OS_Updata_Init(void)
  36          {
  37   1      
  38   1              TMOD &= 0xf0;//模式1,16位定时器
  39   1      
  40   1              TMOD |= 0x01;//模式1,16位定时器
  41   1      
  42   1              RELOAD_T0(TickH,TickL);
  43   1      
  44   1              ET0   = 1;
  45   1      
  46   1              TR0   = 1;
  47   1      }
  48          
  49          /*--------------------------------------------------------------------------------*-
  50           *函数原型:OS_Tick_Updata(void)
  51           *
  52           *输入参数:无
  53           *
  54           *输出参数:无
C51 COMPILER V8.08   OS_CPU                                                                02/04/2008 22:01:36 PAGE 2   

  55           *
  56           *返 回 值:无
  57           *
  58           *描    述:系统时标更新服务程序,使用定时计数器T0的中断服务程序ISR产生时钟节拍,
  59           *                      每更新一次时钟节拍时遍历一次任务,如果有任务就绪则将任务运行标志位
  60           *                      置位,中断返回后执行该任务(必须在前一任务执行完交出CPU使用权时,该
  61           *                      任务才被执行)
  62          -*--------------------------------------------------------------------------------*/
  63          void OS_Tick_Updata(void) interrupt 1 using 1
  64          {
  65   1              tByte Index;
  66   1      
  67   1              RELOAD_T0(TickH,TickL);//重装T0初值
  68   1      
  69   1              for(Index = 0;Index < OS_MAX_TASK;Index++)//遍历任务
  70   1              {
  71   2                      if(OS_TCB[Index].aTask)//是否存在任务
  72   2                      {
  73   3                              if(OS_TCB[Index].Delay == 0)//如果延迟时间为0开始执行一次任务
  74   3                              {
  75   4                                      OS_TCB[Index].RunMe += 1;
  76   4      
  77   4                                      if(OS_TCB[Index].Period)//如果周期非0,将周期付给延迟时间初值
  78   4                                      {
  79   5                                              OS_TCB[Index].Delay = OS_TCB[Index].Period;
  80   5                                      }
  81   4                              }
  82   3                              else//延迟时间还没到,延迟初值减1
  83   3                              {
  84   4                                      OS_TCB[Index].Delay -=1;        
  85   4                              }
  86   3                      }
  87   2              }
  88   1      }
  89          
  90          /*--------------------------------------------------------------------------------*-
  91           *函数原型:OS_Start(void)
  92           *
  93           *输入参数:无
  94           *
  95           *输出参数:无
  96           *
  97           *返 回 值:无
  98           *
  99           *描    述:系统任务开始运行,开中断
 100          -*--------------------------------------------------------------------------------*/
 101          void OS_Start(void)//任务开始
 102          {
 103   1              EA = 1;
 104   1              while(1)
 105   1              {
 106   2                      OS_Assign_Task();
 107   2              }
 108   1      
 109   1      }
 110          
 111          /*--------------------------------------------------------------------------------*-
 112          -*-------------------------------End of file--------------------------------------*-
 113          -*--------------------------------------------------------------------------------*/
 114          


C51 COMPILER V8.08   OS_CPU                                                                02/04/2008 22:01:36 PAGE 3   

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    145    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   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 + -