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