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

📄 os_cpu_a.lst

📁 ATMEL ucos transplant of AVR
💻 LST
📖 第 1 页 / 共 4 页
字号:
                                                                   ; Restore Y
                                                              pointer
    253    000000DE 91D1                         LD      R29,Z+                
                                                                   ;
    254    000000E0                              POPSP                         
                                       ; Restore stack pointer
    254.1  000000E0 9109                         LD      R16,Y+
    254.2  000000E2 BF0D                         OUT     SPL,R16
    254.3  000000E4 9109                         LD      R16,Y+
    254.4  000000E6 BF0E                         OUT     SPH,R16
    254.5  000000E8                              ENDM
    255    000000E8                              POPSREG                       
                                       ; Restore status register
    255.1  000000E8 9109                         LD      R16,Y+
    255.2  000000EA BF0F                         OUT     SREG,R16
    255.3  000000EC                              ENDM
    256    000000EC                              POPRS                         
                                       ; Restore all registers
    256.1  000000EC 9109                         LD      R16,Y+
    256.2  000000EE BF0B                         OUT     RAMPZ,R16
    256.3  000000F0 91F9                         LD      R31,Y+
    256.4  000000F2 91E9                         LD      R30,Y+
    256.5  000000F4 91B9                         LD      R27,Y+
    256.6  000000F6 91A9                         LD      R26,Y+
    256.7  000000F8 9199                         LD      R25,Y+
    256.8  000000FA 9189                         LD      R24,Y+
    256.9  000000FC 9179                         LD      R23,Y+
    256.10 000000FE 9169                         LD      R22,Y+
    256.11 00000100 9159                         LD      R21,Y+
    256.12 00000102 9149                         LD      R20,Y+
    256.13 00000104 9139                         LD      R19,Y+
    256.14 00000106 9129                         LD      R18,Y+
    256.15 00000108 9119                         LD      R17,Y+
    256.16 0000010A 9109                         LD      R16,Y+
    256.17 0000010C 90F9                         LD      R15,Y+
    256.18 0000010E 90E9                         LD      R14,Y+
    256.19 00000110 90D9                         LD      R13,Y+
    256.20 00000112 90C9                         LD      R12,Y+
    256.21 00000114 90B9                         LD      R11,Y+
    256.22 00000116 90A9                         LD      R10,Y+
    256.23 00000118 9099                         LD      R9,Y+
    256.24 0000011A 9089                         LD      R8,Y+
    256.25 0000011C 9079                         LD      R7,Y+
    256.26 0000011E 9069                         LD      R6,Y+
    256.27 00000120 9059                         LD      R5,Y+
    256.28 00000122 9049                         LD      R4,Y+
    256.29 00000124 9039                         LD      R3,Y+
    256.30 00000126 9029                         LD      R2,Y+
    256.31 00000128 9019                         LD      R1,Y+
    256.32 0000012A 9009                         LD      R0,Y+
    256.33 0000012C                              ENDM
    257    0000012C 9508                         RET
    258    0000012E              
    259    0000012E              
    260    0000012E              ;*********************************************
                                 **********************************************
                                 **************
    261    0000012E              ;                                INTERRUPT
                                  LEVEL CONTEXT SWITCH
    262    0000012E              ;
    263    0000012E              ; Description : This function is called by
                                  OSIntExit() to perform a context switch to a
                                  task that has
    264    0000012E              ;               been made ready-to-run by an
                                  ISR.
    265    0000012E              ;
    266    0000012E              ; Note(s)     : 1) Upon entry,
    267    0000012E              ;                  OSTCBCur     points to the
                                  OS_TCB of the task to suspend
    268    0000012E              ;                  OSTCBHighRdy points to the
                                  OS_TCB of the task to resume
    269    0000012E              ;
    270    0000012E              ;               2) The stack frame of the task
                                  to suspend looks as follows:
    271    0000012E              ;
    272    0000012E              ;                                       SP+0
                                  --> LSB of return address of OSIntCtxSw()  
                                  (Low memory)
    273    0000012E              ;                                         +1  
                                    MSB of return address of OSIntCtxSw()
    274    0000012E              ;                                         +2  
                                    LSB of return address of OSIntExit()
    275    0000012E              ;                                         +3  
                                    MSB of return address of OSIntExit()
    276    0000012E              ;                                         +4  
                                    LSB of task code address
    277    0000012E              ;                                         +5  
                                    MSB of task code address               
                                  (High memory)
    278    0000012E              ;
    279    0000012E              ;               3) The saved context of the
                                  task to resume looks as follows:
    280    0000012E              ;
    281    0000012E              ;                  OSTCBHighRdy->OSTCBStkPtr
                                  --> LSB of (return) stack pointer          
                                  (Low memory)
    282    0000012E              ;                                             
                                    SPH of (return) stack pointer
    283    0000012E              ;                                             
                                    Flags to load in status register
    284    0000012E              ;                                             
                                    R31
    285    0000012E              ;                                             
                                    R30
    286    0000012E              ;                                             
                                    R7
    287    0000012E              ;                                             
                                    .
    288    0000012E              ;                                             
                                    .
    289    0000012E              ;                                             
                                    .
    290    0000012E              ;                                             
                                    R0                                     
                                  (High memory)
    291    0000012E              ;*********************************************
                                 **********************************************
                                 **************
    292    0000012E              
    293    0000012E B7ED         OSIntCtxSw:     IN      R30,SPL               
                                                                  ; Z =
                                                              SP
    294    00000130 B7FE                         IN      R31,SPH
    295    00000132              ;                ADIW    R30,4                
                                        ; (Uncomment if OS_CRITICAL_METHOD is
                                  1, see OS_CPU.H)
    296    00000132 9635                         ADIW    R30,5                 
                                                                   ; Adjust Z
                                                              to point to task
                                                              return address
    297    00000134 93FA                         ST      -Y,R31                
                                                                  ; Save
                                                             SP
    298    00000136 93EA                         ST      -Y,R30                
                                                                  ;
    299    00000138              
    300    00000138 91E0....                     LDS     R30,OSTCBCur          
                                                                   ; Z =
                                                              OSTCBCur->OSTCBSt
                                                             kPtr
    301    0000013C 91F0....                     LDS     R31,OSTCBCur+1        
                                                                   ;
    302    00000140 93C1                         ST      Z+,R28                
                                                                 ; Save Y
                                                            pointer
    303    00000142 93D1                         ST      Z+,R29                
                                                                 ;
    304    00000144              
    305    00000144 ........                     CALL    OSTaskSwHook          
       ; Call user defined task switch hook
    306    00000148              
    307    00000148 9100....                     LDS     R16,OSPrioHighRdy     
                                                                   ; OSPrioCur
                                                              = OSPrioHighRdy
    308    0000014C 9300....                     STS     OSPrioCur,R16         
                                                                        
                                                                    ;
    309    00000150              
    310    00000150 91E0....                     LDS     R30,OSTCBHighRdy      
                                                                   ; Z =
                                                              OSTCBHighRdy->OST
                                                             CBStkPtr
    311    00000154 91F0....                     LDS     R31,OSTCBHighRdy+1    
                                                                   ;
    312    00000158 93E0....                     STS     OSTCBCur,R30          
                                                                        ;
                                                                   OSTCBCur =
                                                                   OSTCBHighRdy
    313    0000015C 93F0....                     STS     OSTCBCur+1,R31        
                                                                       
                                                                   ;
    314    00000160              
    315    00000160 91C1                         LD      R28,Z+                
                                                                   ; Restore Y
                                                              pointer
    316    00000162 91D1                         LD      R29,Z+                
                                                                   ;
    317    00000164                              POPSP                         
                                       ; Restore stack pointer
    317.1  00000164 9109                         LD      R16,Y+
    317.2  00000166 BF0D                         OUT     SPL,R16
    317.3  00000168 9109                         LD      R16,Y+
    317.4  0000016A BF0E                         OUT     SPH,R16
    317.5  0000016C                              ENDM
    318    0000016C                              POPSREG                       
                                       ; Restore status register
    318.1  0000016C 9109                         LD      R16,Y+
    318.2  0000016E BF0F                         OUT     SREG,R16
    318.3  00000170                              ENDM
    319    00000170                              POPRS                         
                                       ; Restore all registers
    319.1  00000170 9109                         LD      R16,Y+
    319.2  00000172 BF0B                         OUT     RAMPZ,R16
    319.3  00000174 91F9                         LD      R31,Y+

⌨️ 快捷键说明

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