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

📄 task_switch.lst

📁 模仿ucos ii和RTX Tiny写的一个小操作系统
💻 LST
字号:
C51 COMPILER V8.08   TASK_SWITCH                                                           05/09/2008 17:57:19 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE TASK_SWITCH
NO OBJECT MODULE REQUESTED
COMPILER INVOKED BY: C:\Keil808\C51\BIN\C51.EXE task_switch.C ROM(COMPACT) DEBUG OBJECTEXTEND SRC(.\task_switch.SRC)

line level    source

   1          
   2          
   3          #include <AT89X52.H>
   4          
   5          #include "os_core.h"
   6          #include "main.h"
   7          #include "task_switch.h"
   8          #include "sem.h"
   9          #include "q.h"
  10          #include "uart.h"
  11          
  12          
  13          
  14          ///////////////////任务主动切换函数/////////////////////////////////
  15          void OSSched(void)
  16          {
  17   1          EA=0;                //关中断
  18   1      
  19   1          OS_TCB[OS_Current_ID].Task_SP=SP;     //保存当前堆栈指针
  20   1      
  21   1              Task_Int_List&=~OSMapTbl[OS_Current_ID];
  22   1       
  23   1              OS_Find_Next_Task();                                      
  24   1      
  25   1          SP=OS_TCB[OS_Current_ID].Task_SP;     //任务堆栈指针切换
  26   1      
  27   1          if(Task_Int_List&OSMapTbl[OS_Current_ID])
  28   1        {
  29   2          __asm POP 7           
  30   2          __asm POP 6                    //恢复任务寄存器
  31   2          __asm POP 5
  32   2          __asm POP 4
  33   2          __asm POP 3
  34   2          __asm POP 2
  35   2          __asm POP 1  
  36   2          __asm POP 0  
  37   2          __asm POP PSW
  38   2          __asm POP DPL
  39   2          __asm POP DPH
  40   2          __asm POP B
  41   2          __asm POP ACC
  42   2         }
  43   1          EA=1;
  44   1          __asm RETI
  45   1      
  46   1      }
  47          
  48          ///////////////////////////中断退出处理函数////////////////////////////////////
  49           void Exit_Int(void)
  50          {
  51   1      
  52   1             SP-=2; //去除因调用而入栈的PC 
  53   1      
  54   1           if(--Int_count==0) //最后一层
  55   1          { 
C51 COMPILER V8.08   TASK_SWITCH                                                           05/09/2008 17:57:19 PAGE 2   

  56   2                      OS_TCB[OS_Current_ID].Task_SP=SP;   /*保存当前堆栈指针*/
  57   2      
  58   2                      Task_Int_List|=OSMapTbl[OS_Current_ID];
  59   2                                                
  60   2                      OS_Find_Next_Task();
  61   2                        
  62   2              SP=OS_TCB[OS_Current_ID].Task_SP;     //任务堆栈指针切换
  63   2      
  64   2                 if(Task_Int_List&OSMapTbl[OS_Current_ID])
  65   2            {  
  66   3                      goto bb;
  67   3                }
  68   2                  EA=1;
  69   2              __asm RETI
  70   2              }
  71   1        bb:
  72   1              __asm POP 7           
  73   1              __asm POP 6                        //恢复任务寄存器
  74   1              __asm POP 5
  75   1              __asm POP 4
  76   1              __asm POP 3
  77   1              __asm POP 2
  78   1              __asm POP 1  
  79   1              __asm POP 0      
  80   1              __asm POP PSW
  81   1              __asm POP DPL
  82   1              __asm POP DPH
  83   1              __asm POP B
  84   1              __asm POP ACC 
  85   1       
  86   1              EA=1;
  87   1              __asm RETI
  88   1               
  89   1      }
  90          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    196    ----
   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 + -