?? os_tasksw.lst
字號(hào):
C51 COMPILER V7.06 OS_TASKSW 10/29/2004 20:20:38 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE OS_TASKSW
OBJECT MODULE PLACED IN OS_TaskSW.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE OS_TaskSW.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /* $$$$$$$$$$$$$$$$$$ Copyrigth (c) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
-
2 File name: OS_TaskSW.c
3 Function describe: task attemper;create task;delete task
4 Compiler: Keil uVision2
5 Version: 1.01
6 Programmer: Shawyoo
7 最后修改日期:20040729
8 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
9 #define OS_GLOBALS 1
10 #include "RTOS.h"
11 #include "OS_TaskSW.h"
12 ////////////////////////// osTask
13 struct
14 {
15 uchar Ready[MAX_TASK_ID_DIV8]; //
16 //uchar Running[MAX_TASK_ID_DIV8];
17 } osTask;
18 //////////////////////////////////////
19
20
21 /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
22 Function: delete all task
23 Entrance parameter:none
24 Exit parameter: none
25 Global parameter: osTask
26 Local parameter: 1 byte
27 Call function: none
28 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
29 void OSDeleteAllTask(void)
30 {
31 1 uchar i;
32 1 for(i=0;i<MAX_TASK_ID_DIV8;i++)
33 1 {
34 2 osTask.Ready[i]=0;
35 2 //osTask.Running[i]=0;
36 2 }
37 1 } // function end
38
39
40
41 /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
42 Function: create one task
43 Entrance parameter: task ID
44 Exit parameter: none
45 Global parameter: osTask
46 Local parameter:2 bytes
47 Call function: none
48 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
49 void OSCreateTask(uchar taskID)
50 {
51 1 uchar i;
52 1 i=0;
53 1 while(taskID>8) { taskID-=8; i++; }
54 1 if(i<MAX_TASK_ID_DIV8)
C51 COMPILER V7.06 OS_TASKSW 10/29/2004 20:20:38 PAGE 2
55 1 osTask.Ready[i]|=TaskFlagTab[taskID];
56 1
57 1 } // function end
58
59
60 /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
61 Function: delete one task
62 Entrance parameter: task ID
63 Exit parameter: none
64 Global parameter: osTask
65 Local parameter:2 bytes
66 Call function: none
67 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
68 void OSDeleteTask(uchar taskID)
69 {
70 1 uchar i;
71 1 i=0;
72 1 while(taskID>8) { taskID-=8; i++; }
73 1 if(i<MAX_TASK_ID_DIV8)
74 1 {
75 2 osTask.Ready[i]&=(~TaskFlagTab[taskID]);
76 2 //osTask.Running[i]&=(~TaskFlagTab[taskID]);
77 2 }
78 1 } // function end
79
80
81
82 /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
83 Function: Create periodicity excute task
84 Entrance parameter: None
85 Exit parameter: none
86 Global parameter: osTask,osTick
87 Local parameter: 4 bytes
88 Call function: none
89 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
90 void OSPeriodicityTask()
91 {
92 1 uchar i,j;
93 1 uint tick;
94 1 NOP(); NOP();
95 1 for(i=0;i<MAX_TASK_ID_DIV8;i++)
96 1 {
97 2 for(j=0;j<8;j++)
98 2 {
99 3 tick=CycleExcute[i][j];
100 3 if((tick!=0)&&(osTick%tick==0))
101 3 OSCreateTask(i*8+j); //
102 3 }
103 2 }
104 1 }
105
106
107
108
109 /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
110 Function: switch task,and excute the highest PRI task
111 Entrance parameter: NULL
112 Exit parameter: none
113 Global parameter: osTask
114 Local parameter:3 bytes
115 Call function: all task function and "TaskSwitchReturn";
116 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
C51 COMPILER V7.06 OS_TASKSW 10/29/2004 20:20:38 PAGE 3
117 ////////////////////////////
118 void OSTaskSwitch(void)
119 {
120 1 //static osDoneTaskID;
121 1 static uchar i,j,id,tc; // task ID,task counter,
122 1 static uchar run; // task running flag
123 1 NOP(); NOP();
124 1 NOP(); NOP();
125 1 /////////////////////////////////////////////////
126 1 OSPeriodicityTask();
127 1 NOP(); NOP();
128 1 for(tc=0,i=0;i<MAX_TASK_ID_DIV8;i++)
129 1 {
130 2 id=osTask.Ready[i];
131 2 if(id) tc++; // task counter
132 2 }
133 1 if((tc!=0)&&(run!=TASK_RUNNING)) //
134 1 {
135 2 for(i=0;i<MAX_TASK_ID_DIV8;i++)
136 2 {
137 3 id=osTask.Ready[i];
138 3 for(j=0;j<8;j++)
139 3 {
140 4 if(id&0x01)
141 4 {
142 5 NOP(); NOP();
143 5 NOP(); NOP();
144 5 run=TASK_RUNNING;
145 5 ResetWatchDog();
146 5 NOP(); NOP();
147 5 NOP(); NOP();
148 5 TaskEntrance[i][j](); // execute one task
149 5 NOP(); NOP();
150 5 NOP(); NOP();
151 5 OSDeleteTask(i*8+j); //
152 5 run=TASK_STOP;
153 5 }
154 4 id>>=1;
155 4 }
156 3 }
157 2 }
158 1 NOP(); NOP();
159 1 TaskSwitchReturn();
160 1 } // function end
161 /* File end $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
162 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
163
164
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 329 ----
CONSTANT SIZE = 48 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -