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

📄 os_cpu_a.lis

📁 AVR megal128下的ucos_ii
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01A6           ;               OSIntExit();                          Notify uC/OS-II about end of ISR
 01A6           ;               Restore all registers that were save on the current task's stack:
 01A6           ;                      Use the POP_SP macro to restore the task's hardware stack pointer
 01A6           ;                      Use the POP_SREG macro to restore the SREG register
 01A6           ;                      Use the POP_ALL macro to restore the remaining registers
 01A6           ;               Return (DO NOT use a RETI instruction);
 01A6           ;********************************************************************************************************
 01A6           
 01A6           _OSTickISR::
 01A6 0A92                      ST      -Y,R0
 01A8 1A92                      ST      -Y,R1
 01AA 2A92                      ST      -Y,R2
 01AC 3A92                      ST      -Y,R3
 01AE 4A92                      ST      -Y,R4
 01B0 5A92                      ST      -Y,R5
 01B2 6A92                      ST      -Y,R6
 01B4 7A92                      ST      -Y,R7
 01B6 8A92                      ST      -Y,R8
 01B8 9A92                      ST      -Y,R9
 01BA AA92                      ST      -Y,R10
 01BC BA92                      ST      -Y,R11
 01BE CA92                      ST      -Y,R12
 01C0 DA92                      ST      -Y,R13
 01C2 EA92                      ST      -Y,R14
 01C4 FA92                      ST      -Y,R15
 01C6 0A93                      ST      -Y,R16
 01C8 1A93                      ST      -Y,R17
 01CA 2A93                      ST      -Y,R18
 01CC 3A93                      ST      -Y,R19
 01CE 4A93                      ST      -Y,R20
 01D0 5A93                      ST      -Y,R21
 01D2 6A93                      ST      -Y,R22
 01D4 7A93                      ST      -Y,R23
 01D6 8A93                      ST      -Y,R24
 01D8 9A93                      ST      -Y,R25
 01DA AA93                      ST      -Y,R26
 01DC BA93                      ST      -Y,R27
 01DE EA93                      ST      -Y,R30
 01E0 FA93                      ST      -Y,R31
 01E2 0BB7                      IN      R16,RAMPZ
 01E4 0A93                      ST      -Y,R16
 01E6 0FB7                      IN      R16,SREG                    ; Save the SREG but with interrupts enabled
 01E8 0068                      SBR     R16,BIT07                    
 01EA 0A93                      ST      -Y,R16
 01EC 0EB7                      IN      R16,SPH
 01EE 0A93                      ST      -Y,R16
 01F0 0DB7                      IN      R16,SPL
 01F2 0A93                      ST      -Y,R16
 01F4           
 01F4 00910000                  LDS     R16,_OSIntNesting           ; Notify uC/OS-II of ISR
 01F8 0395                      INC     R16                         ;
 01FA 00930000                  STS     _OSIntNesting,R16           ;
 01FE           
 01FE 0130                      CPI     R16,1                       ; if (OSIntNesting == 1) {
 0200 31F4                      BRNE    OSTickISR_1
 0202           
 0202 E0910000                  LDS     R30,_OSTCBCur               ;     OSTCBCur->OSTCBStkPtr = Y
 0206 F0910100                  LDS     R31,_OSTCBCur+1
 020A C193                      ST      Z+,R28
 020C D193                      ST      Z+,R29                      ; }
 020E           
 020E           OSTickISR_1:
 020E 0E940000                  CALL    _OSTickISR_Handler          ; Handle the tick ISR
 0212           
 0212 0E940000                  CALL    _OSIntExit                  ; Notify uC/OS-II about end of ISR
 0216           
 0216 0991                      LD      R16,Y+
 0218 0DBF                      OUT     SPL,R16
 021A 0991                      LD      R16,Y+
 021C 0EBF                      OUT     SPH,R16
 021E 0991                      LD      R16,Y+
 0220 0FBF                      OUT     SREG,R16
 0222 0991                      LD      R16,Y+
 0224 0BBF                      OUT     RAMPZ,R16
 0226 F991                      LD      R31,Y+
 0228 E991                      LD      R30,Y+
 022A B991                      LD      R27,Y+
 022C A991                      LD      R26,Y+
 022E 9991                      LD      R25,Y+
 0230 8991                      LD      R24,Y+
 0232 7991                      LD      R23,Y+
 0234 6991                      LD      R22,Y+
 0236 5991                      LD      R21,Y+
 0238 4991                      LD      R20,Y+
 023A 3991                      LD      R19,Y+
 023C 2991                      LD      R18,Y+
 023E 1991                      LD      R17,Y+
 0240 0991                      LD      R16,Y+
 0242 F990                      LD      R15,Y+
 0244 E990                      LD      R14,Y+
 0246 D990                      LD      R13,Y+
 0248 C990                      LD      R12,Y+
 024A B990                      LD      R11,Y+
 024C A990                      LD      R10,Y+
 024E 9990                      LD      R9,Y+
 0250 8990                      LD      R8,Y+
 0252 7990                      LD      R7,Y+
 0254 6990                      LD      R6,Y+
 0256 5990                      LD      R5,Y+
 0258 4990                      LD      R4,Y+
 025A 3990                      LD      R3,Y+
 025C 2990                      LD      R2,Y+
 025E 1990                      LD      R1,Y+
 0260 0990                      LD      R0,Y+
 0262           
 0262 0895                      RET                                 ; Note: RET instead of RETI
 0264           ;/*$PAGE*/.
 0264           ;********************************************************************************************************
 0264           ;                                              Uart0  rx ISR
 0264           ;
 0264           ; Description : This function is the ISR used to notify uC/OS-II that a system tick has occurred.
 0264           ;
 0264           ;               The following C-like pseudo-code describe the operation being performed in the code below.
 0264           ;
 0264           ;               Save all registers on the current task's stack:
 0264           ;                      Use the PUSH_ALL macro
 0264           ;                      Get the SREG, set Bit #7 and save onto the task's stack using -Y addressing
 0264           ;                      Use the PUSH_SP macro to save the task's hardware stack pointer onto the current task's stack
 0264           ;               OSIntNesting++;
 0264           ;               if (OSIntNesting == 1) {
 0264           ;                  OSTCBCur->OSTCBStkPtr = SP
 0264           ;               }
 0264           ;               Clear the interrupt;                  Not needed for the timer we used.
 0264           ;                                          Notify uC/OS-II that a tick has occured
 0264           ;                                          Notify uC/OS-II about end of ISR
 0264           ;               Restore all registers that were save on the current task's stack:
 0264           ;                      Use the POP_SP macro to restore the task's hardware stack pointer
 0264           ;                      Use the POP_SREG macro to restore the SREG register
 0264           ;                      Use the POP_ALL macro to restore the remaining registers
 0264           ;               Return (DO NOT use a RETI instruction);
 0264           ;********************************************************************************************************
 0264           
 0264           _uart0_rx_isr::
 0264 0A92                      ST      -Y,R0
 0266 1A92                      ST      -Y,R1
 0268 2A92                      ST      -Y,R2
 026A 3A92                      ST      -Y,R3
 026C 4A92                      ST      -Y,R4
 026E 5A92                      ST      -Y,R5
 0270 6A92                      ST      -Y,R6
 0272 7A92                      ST      -Y,R7
 0274 8A92                      ST      -Y,R8
 0276 9A92                      ST      -Y,R9
 0278 AA92                      ST      -Y,R10
 027A BA92                      ST      -Y,R11
 027C CA92                      ST      -Y,R12
 027E DA92                      ST      -Y,R13
 0280 EA92                      ST      -Y,R14
 0282 FA92                      ST      -Y,R15
 0284 0A93                      ST      -Y,R16
 0286 1A93                      ST      -Y,R17
 0288 2A93                      ST      -Y,R18
 028A 3A93                      ST      -Y,R19
 028C 4A93                      ST      -Y,R20
 028E 5A93                      ST      -Y,R21
 0290 6A93                      ST      -Y,R22
 0292 7A93                      ST      -Y,R23
 0294 8A93                      ST      -Y,R24
 0296 9A93                      ST      -Y,R25
 0298 AA93                      ST      -Y,R26
 029A BA93                      ST      -Y,R27
 029C EA93                      ST      -Y,R30
 029E FA93                      ST      -Y,R31
 02A0 0BB7                      IN      R16,RAMPZ
 02A2 0A93                      ST      -Y,R16
 02A4 0FB7                      IN      R16,SREG                    ; Save the SREG but with interrupts enabled
 02A6 0068                      SBR     R16,BIT07                    
 02A8 0A93                      ST      -Y,R16
 02AA 0EB7                      IN      R16,SPH
 02AC 0A93                      ST      -Y,R16
 02AE 0DB7                      IN      R16,SPL
 02B0 0A93                      ST      -Y,R16
 02B2           
 02B2 00910000                  LDS     R16,_OSIntNesting           ; Notify uC/OS-II of ISR
 02B6 0395                      INC     R16                         ;
 02B8 00930000                  STS     _OSIntNesting,R16           ;
 02BC           
 02BC 0130                      CPI     R16,1                       ; if (OSIntNesting == 1) {
 02BE 31F4                      BRNE    uart0_rx_isr_1
 02C0           
 02C0 E0910000                  LDS     R30,_OSTCBCur               ;     OSTCBCur->OSTCBStkPtr = Y
 02C4 F0910100                  LDS     R31,_OSTCBCur+1
 02C8 C193                      ST      Z+,R28
 02CA D193                      ST      Z+,R29                      ; }
 02CC           
 02CC           uart0_rx_isr_1:
 02CC                           //CALL    _Uart0Rx_Handler          ; Handle the tick ISR
 02CC           
 02CC 0E940000                  CALL    _OSIntExit                  ; Notify uC/OS-II about end of ISR
 02D0           
 02D0 0991                      LD      R16,Y+
 02D2 0DBF                      OUT     SPL,R16
 02D4 0991                      LD      R16,Y+
 02D6 0EBF                      OUT     SPH,R16
 02D8 0991                      LD      R16,Y+
 02DA 0FBF                      OUT     SREG,R16
 02DC 0991                      LD      R16,Y+
 02DE 0BBF                      OUT     RAMPZ,R16
 02E0 F991                      LD      R31,Y+
 02E2 E991                      LD      R30,Y+
 02E4 B991                      LD      R27,Y+
 02E6 A991                      LD      R26,Y+
 02E8 9991                      LD      R25,Y+
 02EA 8991                      LD      R24,Y+
 02EC 7991                      LD      R23,Y+
 02EE 6991                      LD      R22,Y+
 02F0 5991                      LD      R21,Y+
 02F2 4991                      LD      R20,Y+
 02F4 3991                      LD      R19,Y+
 02F6 2991                      LD      R18,Y+
 02F8 1991                      LD      R17,Y+
 02FA 0991                      LD      R16,Y+
 02FC F990                      LD      R15,Y+
 02FE E990                      LD      R14,Y+
 0300 D990                      LD      R13,Y+
 0302 C990                      LD      R12,Y+
 0304 B990                      LD      R11,Y+
 0306 A990                      LD      R10,Y+
 0308 9990                      LD      R9,Y+
 030A 8990                      LD      R8,Y+
 030C 7990                      LD      R7,Y+
 030E 6990                      LD      R6,Y+
 0310 5990                      LD      R5,Y+
 0312 4990                      LD      R4,Y+
 0314 3990                      LD      R3,Y+
 0316 2990                      LD      R2,Y+
 0318 1990                      LD      R1,Y+
 031A 0990                      LD      R0,Y+
 031C           
 031C 0895                      RET                                 ; Note: RET instead of RETI
 031E                           
 031E                         

⌨️ 快捷键说明

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