?? os_core.lst
字號:
178 /*********************************************************************************************************
179 ** 函數名稱: OSSendSignal
180 ** 功能描述: 任務中給指定任務發送信號,既使指定任務就緒
181 ** 輸 入: TaskId : 任務ID
182 ** 輸 出: 無
183 ** 全局變量: 無
184 ** 調用模塊: OSSched,OSIntSendSignal
185 **
186 ** 作 者: 陳明計
187 ** 日 期: 2002年6月20日
188 **-------------------------------------------------------------------------------------------------------
189 ** 修改人: 陳明計
190 ** 日 期: 2002年9月1日
191 **-------------------------------------------------------------------------------------------------------
192 ** 修改人:
193 ** 日 期:
194 **-------------------------------------------------------------------------------------------------------
195 ********************************************************************************************************/
196 void OSSendSignal(uint8 TaskId)
197
198 {
199 1 OSIntSendSignal(TaskId);
200 1 OSSched(); //開始任務切換
201 1 }
202
203 /*********************************************************************************************************
204 ** 函數名稱: OSClearSignal
205 ** 功能描述: 清除指定任務信號,既使指定任務休眠
206 ** 輸 入: TaskId : 任務ID
207 ** 輸 出: 無
208 ** 全局變量: OSTaskRuning
209 ** 調用模塊: 無
210 **
211 ** 作 者: 陳明計
212 ** 日 期: 2002年6月20日
213 **-------------------------------------------------------------------------------------------------------
214 ** 修改人: 陳明計
215 ** 日 期: 2002年9月1日
216 **-------------------------------------------------------------------------------------------------------
217 ** 修改人: 陳明計
218 ** 日 期: 2002年9月4日
219 **------------------------------------------------------------------------------------------------------
220 ** 修改人: 陳明計
221 ** 日 期: 2002年12月30日
222 **------------------------------------------------------------------------------------------------------
223 ** 修改人:
224 ** 日 期:
225 **-------------------------------------------------------------------------------------------------------
226 ********************************************************************************************************/
227
228 void OSClearSignal(uint8 TaskId)
229 {
230 1 if (TaskId < OS_MAX_TASKS)
231 1 {
232 2 OS_ENTER_CRITICAL();
*** ERROR C202 IN LINE 232 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
233 2 #if OS_MAX_TASKS < 9
OSTaskRuning &= ~OSMapTbl[TaskId];
#else
236 2 if (TaskId < 8)
C51 COMPILER V7.01 OS_CORE 03/06/2003 10:20:02 PAGE 5
237 2 {
238 3 ((uint8 *)(&OSTaskRuning))[LOW_BYTE] &= ~OSMapTbl[TaskId];
*** ERROR C193 IN LINE 238 OF ..\OS\OS_CORE.C: '~': bad operand type
239 3 }
240 2 else
241 2 {
242 3 ((uint8 *)(&OSTaskRuning))[HIGH_BYTE] &= ~OSMapTbl[TaskId & 0x07];
*** ERROR C193 IN LINE 242 OF ..\OS\OS_CORE.C: '~': bad operand type
243 3 }
244 2 #endif
245 2 OS_EXIT_CRITICAL();
*** ERROR C202 IN LINE 245 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
246 2 }
247 1 }
248
249 /*********************************************************************************************************
250 ** 函數名稱: OSIntExit
251 ** 功能描述: 中斷退出處理函數,在此進行中斷后的任務切換
252 ** 輸 入: 無
253 ** 輸 出: 無
254 ** 全局變量: OSIntNesting,OSNextTaskID
255 ** 調用模塊: OSIntCtxSw
256 **
257 ** 作 者: 陳明計
258 ** 日 期: 2002年6月20日
259 **-------------------------------------------------------------------------------------------------------
260 ** 修改人: 陳明計
261 ** 日 期: 2002年9月1日
262 **-------------------------------------------------------------------------------------------------------
263 ** 修改人: 陳明計
264 ** 日 期: 2002年9月4日
265 **------------------------------------------------------------------------------------------------------
266 ** 修改人: 陳明計
267 ** 日 期: 2002年10月19日
268 **------------------------------------------------------------------------------------------------------
269 ** 修改人: 陳明計
270 ** 日 期: 2002年12月2日
271 **------------------------------------------------------------------------------------------------------
272 ** 修改人: 陳明計
273 ** 日 期: 2002年12月30日
274 **------------------------------------------------------------------------------------------------------
275 ** 修改人:
276 ** 日 期:
277 **------------------------------------------------------------------------------------------------------
278 ********************************************************************************************************/
279 void OSIntExit(void)
280
281 {
282 1 uint8 temp;
283 1
284 1 OS_ENTER_CRITICAL();
*** ERROR C202 IN LINE 284 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
285 1 /* 中斷嵌套處理 */
286 1 #if EN_OS_INT_ENTER > 0
287 1 if (OSIntNesting > 0)
288 1 {
289 2 OSIntNesting--;
290 2 }
291 1 if (OSIntNesting == 0)
292 1 {
293 2 #endif
294 2
C51 COMPILER V7.01 OS_CORE 03/06/2003 10:20:02 PAGE 6
295 2 Os_Enter_Sum = 0; /* 因為在中斷中,所以關中斷計數器為0 */
296 2 #if OS_MAX_TASKS < 9
/* 查找處于就緒狀態的任務中優先級最高的任務 */
temp = OSTaskRuning;
for (OSNextTaskID = 0; OSNextTaskID < OS_MAX_TASKS; OSNextTaskID++)
{
if ((temp & 0x01) != 0)
{
break;
}
temp = temp >> 1;
}
OSIntCtxSw(); /* 進行任務調度 */
#else
309 2 /* 查找處于就緒狀態的任務中優先級最高的任務 */
310 2 temp = OSTaskRuning % 256;
311 2 for (OSNextTaskID = 0; OSNextTaskID < 8; OSNextTaskID++)
312 2 {
313 3 if ((temp & 0x01) != 0)
314 3 {
315 4 goto TaskSw;
316 4 }
317 3 temp = temp >> 1;
318 3 }
319 2
320 2 temp = OSTaskRuning / 256;
321 2 for (; OSNextTaskID < OS_MAX_TASKS; OSNextTaskID++)
322 2 {
323 3 if ((temp & 0x01) != 0)
324 3 {
325 4 break;
326 4 }
327 3 temp = temp >> 1;
328 3 }
329 2 TaskSw:
330 2 OSIntCtxSw(); /* 進行任務調度 */
331 2 #endif
332 2
333 2 #if EN_OS_INT_ENTER >0
334 2 }
335 1 #endif
336 1 OS_EXIT_CRITICAL();
*** ERROR C202 IN LINE 336 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
337 1 }
338
339 /*********************************************************************************************************
340 ** 函數名稱: OSSched
341 ** 功能描述: 非中斷的任務切換函數
342 ** 輸 入: 無
343 ** 輸 出: 無
344 ** 全局變量: OSIntNesting,OSNextTaskID
345 ** 調用模塊: OS_TASK_SW
346 **
347 ** 作 者: 陳明計
348 ** 日 期: 2002年6月20日
349 **-------------------------------------------------------------------------------------------------------
350 ** 修改人: 陳明計
351 ** 日 期: 2002年9月1日
352 **-------------------------------------------------------------------------------------------------------
353 ** 修改人: 陳明計
354 ** 日 期: 2002年9月4日
355 **------------------------------------------------------------------------------------------------------
C51 COMPILER V7.01 OS_CORE 03/06/2003 10:20:02 PAGE 7
356 ** 修改人: 陳明計
357 ** 日 期: 2002年10月19日
358 **------------------------------------------------------------------------------------------------------
359 ** 修改人: 陳明計
360 ** 日 期: 2002年12月2日
361 **------------------------------------------------------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -