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

📄 os_cpu_a.lst

📁 ucos在avr上的移植代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
    227    000000D4                              POPSP                         
                                       ; Restore stack pointer
    227.1  000000D4 0991                         LD      R16,Y+
    227.2  000000D6 0DBF                         OUT     SPL,R16
    227.3  000000D8 0991                         LD      R16,Y+
    227.4  000000DA 0EBF                         OUT     SPH,R16
    227.5  000000DC                              ENDM
    228    000000DC                              POPRS                         
                                       ; Restore all registers and the status
                                  register
    228.1  000000DC 0991                         LD      R16,Y+
    228.2  000000DE 0FBF                         OUT     SREG,R16
    228.3  000000E0 F991                         LD      R31,Y+
    228.4  000000E2 E991                         LD      R30,Y+
    228.5  000000E4 B991                         LD      R27,Y+
    228.6  000000E6 A991                         LD      R26,Y+
    228.7  000000E8 9991                         LD      R25,Y+
    228.8  000000EA 8991                         LD      R24,Y+
    228.9  000000EC 7991                         LD      R23,Y+
    228.10 000000EE 6991                         LD      R22,Y+
    228.11 000000F0 5991                         LD      R21,Y+
    228.12 000000F2 4991                         LD      R20,Y+
    228.13 000000F4 3991                         LD      R19,Y+
    228.14 000000F6 2991                         LD      R18,Y+
    228.15 000000F8 1991                         LD      R17,Y+
    228.16 000000FA 0991                         LD      R16,Y+
    228.17 000000FC F990                         LD      R15,Y+
    228.18 000000FE E990                         LD      R14,Y+
    228.19 00000100 D990                         LD      R13,Y+
    228.20 00000102 C990                         LD      R12,Y+
    228.21 00000104 B990                         LD      R11,Y+
    228.22 00000106 A990                         LD      R10,Y+
    228.23 00000108 9990                         LD      R9,Y+
    228.24 0000010A 8990                         LD      R8,Y+
    228.25 0000010C 7990                         LD      R7,Y+
    228.26 0000010E 6990                         LD      R6,Y+
    228.27 00000110 5990                         LD      R5,Y+
    228.28 00000112 4990                         LD      R4,Y+
    228.29 00000114 3990                         LD      R3,Y+
    228.30 00000116 2990                         LD      R2,Y+
    228.31 00000118 1990                         LD      R1,Y+
    228.32 0000011A 0990                         LD      R0,Y+
    228.33 0000011C                              ENDM
    229    0000011C 0895                         RET
    230    0000011E              
    231    0000011E              
    232    0000011E              ;*********************************************
                                 **********************************************
                                 **************
    233    0000011E              ;                                INTERRUPT
                                  LEVEL CONTEXT SWITCH
    234    0000011E              ;
    235    0000011E              ; Description : This function is called by
                                  OSIntExit() to perform a context switch to a
                                  task that has
    236    0000011E              ;               been made ready-to-run by an
                                  ISR.
    237    0000011E              ;
    238    0000011E              ; Note(s)     : 1) Upon entry,
    239    0000011E              ;                  OSTCBCur     points to the
                                  OS_TCB of the task to suspend
    240    0000011E              ;                  OSTCBHighRdy points to the
                                  OS_TCB of the task to resume
    241    0000011E              ;
    242    0000011E              ;               2) The stack frame of the task
                                  to suspend looks as follows:
    243    0000011E              ;
    244    0000011E              ;                                       SP+0
                                  --> LSB of return address of OSIntCtxSw()  
                                  (Low memory)
    245    0000011E              ;                                         +1  
                                    MSB of return address of OSIntCtxSw()
    246    0000011E              ;                                         +2  
                                    LSB of return address of OSIntExit()
    247    0000011E              ;                                         +3  
                                    MSB of return address of OSIntExit()
    248    0000011E              ;                                         +4  
                                    LSB of task code address
    249    0000011E              ;                                         +5  
                                    MSB of task code address               
                                  (High memory)
    250    0000011E              ;
    251    0000011E              ;               3) The saved context of the
                                  task to resume looks as follows:
    252    0000011E              ;
    253    0000011E              ;                  OSTCBHighRdy->OSTCBStkPtr
                                  --> LSB of (return) stack pointer          
                                  (Low memory)
    254    0000011E              ;                                             
                                    SPH of (return) stack pointer
    255    0000011E              ;                                             
                                    Flags to load in status register
    256    0000011E              ;                                             
                                    R31
    257    0000011E              ;                                             
                                    R30
    258    0000011E              ;                                             
                                    R7
    259    0000011E              ;                                             
                                    .
    260    0000011E              ;                                             
                                    .
    261    0000011E              ;                                             
                                    .
    262    0000011E              ;                                             
                                    R0                                     
                                  (High memory)
    263    0000011E              ;*********************************************
                                 **********************************************
                                 **************
    264    0000011E              
    265    0000011E EDB7         OSIntCtxSw:     IN      R30,SPL               
                                                                  ; Z =
                                                              SP
    266    00000120 FEB7                         IN      R31,SPH
    267    00000122              ;                ADIW    R30,4                
                                        ; (Uncomment if OS_CRITICAL_METHOD is
                                  1, see OS_CPU.H)
    268    00000122 3596                         ADIW    R30,5                 
                                                                   ; Adjust Z
                                                              to point to task
                                                              return address
    269    00000124 FA93                         ST      -Y,R31                
                                                                  ; Save
                                                             SP
    270    00000126 EA93                         ST      -Y,R30                
                                                                  ;
    271    00000128              
    272    00000128 E091....                     LDS     R30,OSTCBCur          
                                                                   ; Z =
                                                              OSTCBCur->OSTCBSt
                                                             kPtr
    273    0000012C F091....                     LDS     R31,OSTCBCur+1        
                                                                   ;
    274    00000130 C193                         ST      Z+,R28                
                                                                 ; Save Y
                                                            pointer
    275    00000132 D193                         ST      Z+,R29                
                                                                 ;
    276    00000134              
    277    00000134 ....                         RCALL   OSTaskSwHook          
       ; Call user defined task switch hook
    278    00000136              
    279    00000136 0091....                     LDS     R16,OSPrioHighRdy     
                                                                   ; OSPrioCur
                                                              = OSPrioHighRdy
    280    0000013A 0093....                     STS     OSPrioCur,R16         
                                                                        
                                                                    ;
    281    0000013E              
    282    0000013E E091....                     LDS     R30,OSTCBHighRdy      
                                                                   ; Z =
                                                              OSTCBHighRdy->OST
                                                             CBStkPtr
    283    00000142 F091....                     LDS     R31,OSTCBHighRdy+1    
                                                                   ;
    284    00000146 E093....                     STS     OSTCBCur,R30          
                                                                        ;
                                                                   OSTCBCur =
                                                                   OSTCBHighRdy
    285    0000014A F093....                     STS     OSTCBCur+1,R31        
                                                                       
                                                                   ;
    286    0000014E              
    287    0000014E C191                         LD      R28,Z+                
                                                                   ; Restore Y
                                                              pointer
    288    00000150 D191                         LD      R29,Z+                
                                                                   ;
    289    00000152                              POPSP                         
                                       ; Restore stack pointer
    289.1  00000152 0991                         LD      R16,Y+
    289.2  00000154 0DBF                         OUT     SPL,R16
    289.3  00000156 0991                         LD      R16,Y+
    289.4  00000158 0EBF                         OUT     SPH,R16
    289.5  0000015A                              ENDM
    290    0000015A                              POPRS                         
                                       ; Restore all registers and status
                                  register
    290.1  0000015A 0991                         LD      R16,Y+
    290.2  0000015C 0FBF                         OUT     SREG,R16
    290.3  0000015E F991                         LD      R31,Y+

⌨️ 快捷键说明

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