⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 task_switch.lst

📁 本RTOS参考 usOS-II, ARM-RTX
💻 LST
字号:
A51 MACRO ASSEMBLER  TASK_SWITCH                                                          06/09/2008 17:17:41 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN task_switch.OBJ
ASSEMBLER INVOKED BY: D:\Program Files\Keil\C51\BIN\A51.EXE task_switch.a51 GEN SET(SMALL) DEBUG XREF EP

LOC  OBJ            LINE     SOURCE

                       1     
                       2     NAME    OS_TASK_SWITCH
                       3     
                       4       EXTRN   CODE (OSTimeTick)
                       5       EXTRN   CODE (OSIntExit)
                       6     
                       7     ?PR?OSTickISR?OS_TASK_SWITCH                    SEGMENT CODE 
                       8     ?DT?OSTickISR?OS_TASK_SWITCH                    SEGMENT DATA OVERLAYABLE 
                       9       ;---------------------------
                      10     
                      11             PUBLIC  OSTickISR
                      12             ;---------------------------
                      13             ;--------------------------------------------   
                      14             PUBLIC  STACK
                      15     ;--------------------------------------------
                      16     ;?STACK SEGMENT IDATA
                      17     
                      18     ?STACK      SEGMENT   IDATA
                      19     
----                  20             RSEG    ?STACK
0000                  21     STACK:                                          ;堆栈
0000                  22             DS  0
                      23     ;--------------------------------------------   
                      24     
----                  25             RSEG  ?DT?OSTickISR?OS_TASK_SWITCH
0000                  26     ?OSTickISR?BYTE:
0000                  27          IEtemp?350:   DS   1
                      28       
                      29       ;---------------------------
                      30     
----                  31     CSEG    AT      0000BH
000B 020000   F       32             LJMP    OSTickISR
                      33     ; //功能描述: 系统时钟中断服务函数
                      34     ; //#pragma disable  //禁止所有中断
                      35     ; void OSTickISR(void) interrupt 1  //OS_TIME_ISR
                      36     
----                  37             RSEG  ?PR?OSTickISR?OS_TASK_SWITCH
                      38             USING   0
0000                  39     OSTickISR:
                      40     ;--------------------------------
                      41     ;     IEtemp=IE;//保存中断
                      42                             ; SOURCE LINE # 202
0000 85A800   F       43             MOV     IEtemp?350,IE
                      44     ;     OS_AllIRQ_Unable(); //总中断禁止
                      45                             ; SOURCE LINE # 203
0003 C2AF             46             CLR     EA
                      47     ;--------------------------------
0005 C0E0             48             PUSH    ACC
0007 C0F0             49             PUSH    B
0009 C083             50             PUSH    DPH
000B C082             51             PUSH    DPL
000D C0D0             52             PUSH    PSW
000F 75D000           53             MOV     PSW,#00H
0012 C000             54             PUSH    AR0
0014 C001             55             PUSH    AR1
0016 C002             56             PUSH    AR2
0018 C003             57             PUSH    AR3
001A C004             58             PUSH    AR4
A51 MACRO ASSEMBLER  TASK_SWITCH                                                          06/09/2008 17:17:41 PAGE     2

001C C005             59             PUSH    AR5
001E C006             60             PUSH    AR6
0020 C007             61             PUSH    AR7
                      62             USING   0
                      63                             ; SOURCE LINE # 196
                      64     ; {uint8 data IEtemp;
                      65     ;     
                      66     ;-----------------------------------------
                      67     ;在后面先判断再设置
                      68     ;     TH0=T0H_COUNTER;
                      69                             ; SOURCE LINE # 199
                      70     ;---    MOV     TH0,#070H
                      71     ;     TL0=T0L_COUNTER;
                      72                             ; SOURCE LINE # 200
                      73     ;---    MOV     TL0,#00H
                      74     ;------------------------------------------
                      75     ;修改到前面--------------------------------     
                      76     ;     IEtemp=IE;//保存中断
                      77                             ; SOURCE LINE # 202
                      78     ;---    MOV     IEtemp?350,IE
                      79     ;     OS_AllIRQ_Unable(); //总中断禁止
                      80                             ; SOURCE LINE # 203
                      81     ;---    CLR     EA
                      82     ;--------------------------------
                      83     ;     //IE &= B0000_0000; //IE &= B0000_0001; //保留外部中断原来状态,屏蔽掉其他中断
                      84     ;     
                      85     ; 
                      86     ; //#if EN_TIMER_SHARING > 0
                      87     ;--------------------------------
                      88     ;     if(TH0==0)//==0说明是定时器溢出中断,!=0表示是软件设置的定时器中断
                      89                             ; SOURCE LINE # 211
0022 E58C             90             MOV     A,TH0
0024 7008             91             JNZ     ?C0011
                      92     ;     {
                      93                             ; SOURCE LINE # 212
                      94     ;        TH0=T0H_COUNTER;
                      95                             ; SOURCE LINE # 213
0026 758C70           96             MOV     TH0,#070H
                      97     ;        TL0=T0L_COUNTER;
                      98                             ; SOURCE LINE # 214
0029 F58A             99             MOV     TL0,A
                     100     ;        OSTimeTick();           //调用系统时钟处理函数
                     101                             ; SOURCE LINE # 215
002B 120000   F      102             LCALL   OSTimeTick
                     103     ;     }//
                     104                             ; SOURCE LINE # 216
002E                 105     ?C0011:
                     106     ;--------------------------------       
                     107     
                     108     ; //#else
                     109     ; //  OSIntSendSignal(TIME_ISR_TASK_ID); // 唤醒ID为TIME_ISR_TASK_ID的任务
                     110     ; //#endif
                     111     ;     
                     112     ;     
                     113     ;     OSIntExit();                       //在完全退出中断时,才进行任务切换
                     114                             ; SOURCE LINE # 215
002E 120000   F      115             LCALL   OSIntExit
                     116     ;修改到后面--------------------------------
                     117     ;     //OS_AllIRQ_Enable(); //总中断允许
                     118     ;     IE=IEtemp;  //恢复所有中断状态
                     119                             ; SOURCE LINE # 218
                     120     ;---    MOV     IE,IEtemp?350
                     121     ;--------------------------------
                     122     ; }
                     123                             ; SOURCE LINE # 219
0031 D007            124             POP     AR7
A51 MACRO ASSEMBLER  TASK_SWITCH                                                          06/09/2008 17:17:41 PAGE     3

0033 D006            125             POP     AR6
0035 D005            126             POP     AR5
0037 D004            127             POP     AR4
0039 D003            128             POP     AR3
003B D002            129             POP     AR2
003D D001            130             POP     AR1
003F D000            131             POP     AR0
0041 D0D0            132             POP     PSW
0043 D082            133             POP     DPL
0045 D083            134             POP     DPH
0047 D0F0            135             POP     B
0049 D0E0            136             POP     ACC
                     137     ;--------------------------------
                     138     ;     //OS_AllIRQ_Enable(); //总中断允许
                     139     ;     IE=IEtemp;  //恢复所有中断状态
                     140                             ; SOURCE LINE # 218
004B 8500A8   F      141             MOV     IE,IEtemp?350
                     142     ;--------------------------------
004E 32              143             RETI    
                     144     ; END OF OSTickISR
                     145     
                     146     
                     147       END
A51 MACRO ASSEMBLER  TASK_SWITCH                                                          06/09/2008 17:17:41 PAGE     4

XREF SYMBOL TABLE LISTING
---- ------ ----- -------


N A M E                       T Y P E  V A L U E   ATTRIBUTES / REFERENCES

?C0011 . . . . . . . . . . .  C ADDR   002EH   R   SEG=?PR?OSTICKISR?OS_TASK_SWITCH   91 105#
?DT?OSTICKISR?OS_TASK_SWITCH  D SEG    0001H       REL=UNIT   8# 25
?OSTICKISR?BYTE. . . . . . .  D ADDR   0000H   R   SEG=?DT?OSTICKISR?OS_TASK_SWITCH   26#
?PR?OSTICKISR?OS_TASK_SWITCH  C SEG    004FH       REL=UNIT   7# 37
?STACK . . . . . . . . . . .  I SEG    0000H       REL=UNIT   18# 20
ACC. . . . . . . . . . . . .  D ADDR   00E0H   A      48 136
AR0. . . . . . . . . . . . .  D ADDR   0000H   A      54 131
AR1. . . . . . . . . . . . .  D ADDR   0001H   A      55 130
AR2. . . . . . . . . . . . .  D ADDR   0002H   A      56 129
AR3. . . . . . . . . . . . .  D ADDR   0003H   A      57 128
AR4. . . . . . . . . . . . .  D ADDR   0004H   A      58 127
AR5. . . . . . . . . . . . .  D ADDR   0005H   A      59 126
AR6. . . . . . . . . . . . .  D ADDR   0006H   A      60 125
AR7. . . . . . . . . . . . .  D ADDR   0007H   A      61 124
B. . . . . . . . . . . . . .  D ADDR   00F0H   A      49 135
DPH. . . . . . . . . . . . .  D ADDR   0083H   A      50 134
DPL. . . . . . . . . . . . .  D ADDR   0082H   A      51 133
EA . . . . . . . . . . . . .  B ADDR   00A8H.7 A      46
IE . . . . . . . . . . . . .  D ADDR   00A8H   A      43 141
IETEMP?350 . . . . . . . . .  D ADDR   0000H   R   SEG=?DT?OSTICKISR?OS_TASK_SWITCH   27# 43 141
OSINTEXIT. . . . . . . . . .  C ADDR   -----       EXT   5# 115
OSTICKISR. . . . . . . . . .  C ADDR   0000H   R   SEG=?PR?OSTICKISR?OS_TASK_SWITCH   11 32 39#
OSTIMETICK . . . . . . . . .  C ADDR   -----       EXT   4# 102
OS_TASK_SWITCH . . . . . . .  N NUMB   -----          2
PSW. . . . . . . . . . . . .  D ADDR   00D0H   A      52 53 132
STACK. . . . . . . . . . . .  I ADDR   0000H   R   SEG=?STACK   14 21#
TH0. . . . . . . . . . . . .  D ADDR   008CH   A      90 96
TL0. . . . . . . . . . . . .  D ADDR   008AH   A      99


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -