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

📄 os_cpu_a.lis

📁 uCOS-II工程文件,使用ICC编译。
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 012C           ;                                                SPH of (return) stack pointer
 012C           ;                                                Flags to load in status register
 012C           ;                                                R31
 012C           ;                                                R30
 012C           ;                                                R27
 012C           ;                                                .
 012C           ;                                                .
 012C           ;                                                R0
 012C           ;                                                PCH
 012C           ;                                                PCL                                     (High memory)
 012C           ;*********************************************************************************************************
 012C           
 012C           _OSIntCtxSw::
 012C 0E940000                  CALL    _OSTaskSwHook               ; Call user defined task switch hook
 0130           
 0130 00910000                  LDS     R16,_OSPrioHighRdy          ; OSPrioCur = OSPrioHighRdy
 0134 00930000                  STS     _OSPrioCur,R16              ;
 0138           
 0138 E0910000                  LDS     R30,_OSTCBHighRdy           ; Z = OSTCBHighRdy->OSTCBStkPtr
 013C F0910100                  LDS     R31,_OSTCBHighRdy+1         ;
 0140 E0930000                  STS     _OSTCBCur,R30               ; OSTCBCur = OSTCBHighRdy
 0144 F0930100                  STS     _OSTCBCur+1,R31             ;
 0148           
 0148 C191                      LD      R28,Z+                      ; Restore Y pointer
 014A D191                      LD      R29,Z+                      ;
 014C           
 014C 0991                      LD      R16,Y+
 014E 0DBF                      OUT     SPL,R16
 0150 0991                      LD      R16,Y+
 0152 0EBF                      OUT     SPH,R16
 0154 0991                      LD      R16,Y+
 0156 0FBF                      OUT     SREG,R16
 0158 F991                      LD      R31,Y+
 015A E991                      LD      R30,Y+
 015C B991                      LD      R27,Y+
 015E A991                      LD      R26,Y+
 0160 9991                      LD      R25,Y+
 0162 8991                      LD      R24,Y+
 0164 7991                      LD      R23,Y+
 0166 6991                      LD      R22,Y+
 0168 5991                      LD      R21,Y+
 016A 4991                      LD      R20,Y+
 016C 3991                      LD      R19,Y+
 016E 2991                      LD      R18,Y+
 0170 1991                      LD      R17,Y+
 0172 0991                      LD      R16,Y+
 0174 F990                      LD      R15,Y+
 0176 E990                      LD      R14,Y+
 0178 D990                      LD      R13,Y+
 017A C990                      LD      R12,Y+
 017C B990                      LD      R11,Y+
 017E A990                      LD      R10,Y+
 0180 9990                      LD      R9,Y+
 0182 8990                      LD      R8,Y+
 0184 7990                      LD      R7,Y+
 0186 6990                      LD      R6,Y+
 0188 5990                      LD      R5,Y+
 018A 4990                      LD      R4,Y+
 018C 3990                      LD      R3,Y+
 018E 2990                      LD      R2,Y+
 0190 1990                      LD      R1,Y+
 0192 0990                      LD      R0,Y+
 0194 0895                      RET
 0196           
 0196           ;/*$PAGE*/.
 0196           ;********************************************************************************************************
 0196           ;                                           SYSTEM TICK ISR
 0196           ;
 0196           ; Description : This function is the ISR used to notify uC/OS-II that a system tick has occurred.
 0196           ;
 0196           ;               The following C-like pseudo-code describe the operation being performed in the code below.
 0196           ;
 0196           ;               Save all registers on the current task's stack:
 0196           ;                      Use the PUSH_ALL macro
 0196           ;                      Get the SREG, set Bit #7 and save onto the task's stack using -Y addressing
 0196           ;                      Use the PUSH_SP macro to save the task's hardware stack pointer onto the current task's stack
 0196           ;               OSIntNesting++;
 0196           ;               if (OSIntNesting == 1) {
 0196           ;                  OSTCBCur->OSTCBStkPtr = SP
 0196           ;               }
 0196           ;               Clear the interrupt;                  Not needed for the timer we used.
 0196           ;               OSTimeTick();                         Notify uC/OS-II that a tick has occured
 0196           ;               OSIntExit();                          Notify uC/OS-II about end of ISR
 0196           ;               Restore all registers that were save on the current task's stack:
 0196           ;                      Use the POP_SP macro to restore the task's hardware stack pointer
 0196           ;                      Use the POP_SREG macro to restore the SREG register
 0196           ;                      Use the POP_ALL macro to restore the remaining registers
 0196           ;               Return (DO NOT use a RETI instruction);
 0196           ;********************************************************************************************************
 0196           
 0196           _OSTickISR::
 0196 0A92                      ST      -Y,R0
 0198 1A92                      ST      -Y,R1
 019A 2A92                      ST      -Y,R2
 019C 3A92                      ST      -Y,R3
 019E 4A92                      ST      -Y,R4
 01A0 5A92                      ST      -Y,R5
 01A2 6A92                      ST      -Y,R6
 01A4 7A92                      ST      -Y,R7
 01A6 8A92                      ST      -Y,R8
 01A8 9A92                      ST      -Y,R9
 01AA AA92                      ST      -Y,R10
 01AC BA92                      ST      -Y,R11
 01AE CA92                      ST      -Y,R12
 01B0 DA92                      ST      -Y,R13
 01B2 EA92                      ST      -Y,R14
 01B4 FA92                      ST      -Y,R15
 01B6 0A93                      ST      -Y,R16
 01B8 1A93                      ST      -Y,R17
 01BA 2A93                      ST      -Y,R18
 01BC 3A93                      ST      -Y,R19
 01BE 4A93                      ST      -Y,R20
 01C0 5A93                      ST      -Y,R21
 01C2 6A93                      ST      -Y,R22
 01C4 7A93                      ST      -Y,R23
 01C6 8A93                      ST      -Y,R24
 01C8 9A93                      ST      -Y,R25
 01CA AA93                      ST      -Y,R26
 01CC BA93                      ST      -Y,R27
 01CE EA93                      ST      -Y,R30
 01D0 FA93                      ST      -Y,R31
 01D2 0FB7                      IN      R16,SREG                    ; Save the SREG but with interrupts enabled
 01D4 0068                      SBR     R16,BIT07                    
 01D6 0A93                      ST      -Y,R16
 01D8 0EB7                      IN      R16,SPH
 01DA 0A93                      ST      -Y,R16
 01DC 0DB7                      IN      R16,SPL
 01DE 0A93                      ST      -Y,R16
 01E0           
 01E0 00910000                  LDS     R16,_OSIntNesting           ; Notify uC/OS-II of ISR
 01E4 0395                      INC     R16                         ;
 01E6 00930000                  STS     _OSIntNesting,R16           ;
 01EA           
 01EA 0130                      CPI     R16,1                       ; if (OSIntNesting == 1) {
 01EC 31F4                      BRNE    OSTickISR_1
 01EE           
 01EE E0910000                  LDS     R30,_OSTCBCur               ;     OSTCBCur->OSTCBStkPtr = Y
 01F2 F0910100                  LDS     R31,_OSTCBCur+1
 01F6 C193                      ST      Z+,R28
 01F8 D193                      ST      Z+,R29                      ; }
 01FA           
 01FA           OSTickISR_1:
 01FA 0E940000                  CALL    _OSTickISR_Handler          ; Handle the tick ISR
 01FE           
 01FE 0E940000                  CALL    _OSIntExit                  ; Notify uC/OS-II about end of ISR
 0202           
 0202 0991                      LD      R16,Y+
 0204 0DBF                      OUT     SPL,R16
 0206 0991                      LD      R16,Y+
 0208 0EBF                      OUT     SPH,R16
 020A 0991                      LD      R16,Y+
 020C 0FBF                      OUT     SREG,R16
 020E F991                      LD      R31,Y+
 0210 E991                      LD      R30,Y+
 0212 B991                      LD      R27,Y+
 0214 A991                      LD      R26,Y+
 0216 9991                      LD      R25,Y+
 0218 8991                      LD      R24,Y+
 021A 7991                      LD      R23,Y+
 021C 6991                      LD      R22,Y+
 021E 5991                      LD      R21,Y+
 0220 4991                      LD      R20,Y+
 0222 3991                      LD      R19,Y+
 0224 2991                      LD      R18,Y+
 0226 1991                      LD      R17,Y+
 0228 0991                      LD      R16,Y+
 022A F990                      LD      R15,Y+
 022C E990                      LD      R14,Y+
 022E D990                      LD      R13,Y+
 0230 C990                      LD      R12,Y+
 0232 B990                      LD      R11,Y+
 0234 A990                      LD      R10,Y+
 0236 9990                      LD      R9,Y+
 0238 8990                      LD      R8,Y+
 023A 7990                      LD      R7,Y+
 023C 6990                      LD      R6,Y+
 023E 5990                      LD      R5,Y+
 0240 4990                      LD      R4,Y+
 0242 3990                      LD      R3,Y+
 0244 2990                      LD      R2,Y+
 0246 1990                      LD      R1,Y+
 0248 0990                      LD      R0,Y+
 024A           
 024A 0895                      RET                                 ; Note: RET instead of RETI

⌨️ 快捷键说明

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