📄 task_switch.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 + -