📄 taskisr.lst
字号:
C51 COMPILER V8.02 TASKISR 11/05/2004 10:43:36 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TASKISR
OBJECT MODULE PLACED IN TASKISR.OBJ
COMPILER INVOKED BY: D:\C51\BIN\C51.EXE TASKISR.C BROWSE DEBUG OBJECTEXTEND SRC(.\TASKISR.SRC)
line level source
1 /********************************************
2 嵌入式系统 小型操作系统
3 作者:汪普宏
4 制作日期:2006.9
5 *********************************************/
6
7 #include "os.h"
8 #include"OS_Mail.h"
9 #include "OS_Memory.h"
10 /****************************************
11 模块功能:任务级任务调度
12 模块接口:当前任务优先级,任务挂起延迟时间
13 调用者:任务
14 返回值: 无
15 *****************************************/
16
17 void OSTask_TimeDal(uchar TimeDal) //任务级任务切换函数
18 {
19 1 ISR_num++;
20 1 #pragma ASM
21 1 PUSH ACC
22 1 PUSH B
23 1 PUSH DPH
24 1 PUSH DPL
25 1 PUSH PSW
26 1 MOV PSW, 0
27 1 PUSH AR0
28 1 PUSH AR1
29 1 PUSH AR2
30 1 PUSH AR3
31 1 PUSH AR4
32 1 PUSH AR5
33 1 PUSH AR6
34 1 PUSH AR7
35 1 #pragma ENDASM
36 1 OSPCB[Prio].timedal=TimeDal;
37 1 if(Prio!=FREE_TASK)
38 1 {
39 2 if(TimeDal>0)
40 2 {
41 3 OSPCB[Prio].flg=WAIT_TIME; //任务因时间延迟挂起
42 3 }
43 2 else
44 2 {
45 3 OSPCB[Prio].flg=WAIT_MSG; //非空闲任务应因等待消息挂起
46 3 }
47 2 if((OSRdyTab[Prio>>3]&=~OSMapTab[Prio&0x07])==0) //从就绪表中删除该任务
48 2 {
49 3 OSRdyGrp&=~OSMapTab[Prio>>3];
50 3 }
51 2 OSISR_Task_Sched();
52 2 }
53 1 #pragma ASM
54 1 POP AR7
55 1 POP AR6
C51 COMPILER V8.02 TASKISR 11/05/2004 10:43:36 PAGE 2
56 1 POP AR5
57 1 POP AR4
58 1 POP AR3
59 1 POP AR2
60 1 POP AR1
61 1 POP AR0
62 1 POP PSW
63 1 POP DPL
64 1 POP DPH
65 1 POP B
66 1 POP ACC
67 1 DEC ISR_num
68 1 RETI
69 1 #pragma ENDASM
70 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 185 ----
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 + -