bms_asm.lis

来自「mega16 ucos操作系统」· LIS 代码 · 共 621 行 · 第 1/3 页

LIS
621
字号
 01AA BA93                      ST      -Y,R27
 01AC EA93                      ST      -Y,R30
 01AE FA93                      ST      -Y,R31               
 01B0 0FB7                      IN      R16,SREG                    ; Save the SREG but with interrupts enabled
 01B2 0068                      SBR     R16,BIT07                    
 01B4 0A93                      ST      -Y,R16
 01B6 0EB7                      IN      R16,SPH
 01B8 0A93                      ST      -Y,R16
 01BA 0DB7                      IN      R16,SPL
 01BC 0A93                      ST      -Y,R16
 01BE           
 01BE 00910000                  LDS     R16,_OSIntNesting           ; Notify uC/OS-II of ISR
 01C2 0395                      INC     R16                         ;
 01C4 00930000                  STS     _OSIntNesting,R16           ;
 01C8           
 01C8 0130                      CPI     R16,1                       ; if (OSIntNesting == 1) {
 01CA 31F4                      BRNE    OSBms_RxISR_1
 01CC           
 01CC E0910000                  LDS     R30,_OSTCBCur               ;     OSTCBCur->OSTCBStkPtr = Y
 01D0 F0910100                  LDS     R31,_OSTCBCur+1
 01D4 C193                      ST      Z+,R28
 01D6 D193                      ST      Z+,R29                      ; }
 01D8           
 01D8           OSBms_RxISR_1:
 01D8           
 01D8 0E940000                  CALL    _OSBms_RxISRHandler        ; Call uC/OS-Bms's Rx ISR Handler
 01DC 0E940000                  CALL    _OSIntExit                  ; Notify uC/OS-II about end of ISR
 01E0           
 01E0 0991                      LD      R16,Y+
 01E2 0DBF                      OUT     SPL,R16
 01E4 0991                      LD      R16,Y+
 01E6 0EBF                      OUT     SPH,R16
 01E8 0991                      LD      R16,Y+
 01EA 0F77                                      CBR     R16,BIT07
 01EC 0FBF                      OUT     SREG,R16
 01EE F991                      LD      R31,Y+
 01F0 E991                      LD      R30,Y+
 01F2 B991                      LD      R27,Y+
 01F4 A991                      LD      R26,Y+
 01F6 9991                      LD      R25,Y+
 01F8 8991                      LD      R24,Y+
 01FA 7991                      LD      R23,Y+
 01FC 6991                      LD      R22,Y+
 01FE 5991                      LD      R21,Y+
 0200 4991                      LD      R20,Y+
 0202 3991                      LD      R19,Y+
 0204 2991                      LD      R18,Y+
 0206 1991                      LD      R17,Y+
 0208 0991                      LD      R16,Y+
 020A F990                      LD      R15,Y+
 020C E990                      LD      R14,Y+
 020E D990                      LD      R13,Y+
 0210 C990                      LD      R12,Y+
 0212 B990                      LD      R11,Y+
 0214 A990                      LD      R10,Y+
 0216 9990                      LD      R9,Y+
 0218 8990                      LD      R8,Y+
 021A 7990                      LD      R7,Y+
 021C 6990                      LD      R6,Y+
 021E 5990                      LD      R5,Y+
 0220 4990                      LD      R4,Y+
 0222 3990                      LD      R3,Y+
 0224 2990                      LD      R2,Y+
 0226 1990                      LD      R1,Y+
 0228 0990                      LD      R0,Y+
 022A           
 022A 1895                      RETI
 022C           
 022C           
 022C           
 022C           ;**********************************************************************************************
 022C           ;*                                  uC/OS-Bms COM Tx ISR
 022C           ;*                                 void OSBms_UDREISR(void)
 022C           ;*
 022C           ;* Description: This function is invoked when a character has been transmitted to the serial port
 022C           ;*
 022C           ;* Arguments  : none
 022C           ;*
 022C           ;* Note(s)    : 1) Pseudo code:
 022C           ;*
 022C           ;*                 Save all registers
 022C           ;*                 OSIntNesting++
 022C           ;*                 if (OSIntNesting == 1) {
 022C           ;*                     OSTCBCur->OSTCBStkPtr = SP
 022C           ;*                 }
 022C           ;*                 OSView_TxHandler();
 022C           ;*                 OSIntExit();
 022C           ;*                 Restore all registers
 022C           ;*                 Return from interrupt;
 022C           ;**********************************************************************************************
 022C           
 022C           _OSBms_UDREISR::
 022C           
 022C 0A92                      ST      -Y,R0   
 022E 1A92                      ST      -Y,R1
 0230 2A92                      ST      -Y,R2
 0232 3A92                      ST      -Y,R3
 0234 4A92                      ST      -Y,R4
 0236 5A92                      ST      -Y,R5
 0238 6A92                      ST      -Y,R6
 023A 7A92                      ST      -Y,R7
 023C 8A92                      ST      -Y,R8
 023E 9A92                      ST      -Y,R9
 0240 AA92                      ST      -Y,R10
 0242 BA92                      ST      -Y,R11
 0244 CA92                      ST      -Y,R12
 0246 DA92                      ST      -Y,R13
 0248 EA92                      ST      -Y,R14
 024A FA92                      ST      -Y,R15
 024C 0A93                      ST      -Y,R16
 024E 1A93                      ST      -Y,R17
 0250 2A93                      ST      -Y,R18
 0252 3A93                      ST      -Y,R19
 0254 4A93                      ST      -Y,R20
 0256 5A93                      ST      -Y,R21
 0258 6A93                      ST      -Y,R22
 025A 7A93                      ST      -Y,R23
 025C 8A93                      ST      -Y,R24
 025E 9A93                      ST      -Y,R25
 0260 AA93                      ST      -Y,R26
 0262 BA93                      ST      -Y,R27
 0264 EA93                      ST      -Y,R30
 0266 FA93                      ST      -Y,R31               
 0268 0FB7                      IN      R16,SREG                    ; Save the SREG but with interrupts enabled
 026A 0068                      SBR     R16,BIT07                    
 026C 0A93                      ST      -Y,R16
 026E 0EB7                      IN      R16,SPH
 0270 0A93                      ST      -Y,R16
 0272 0DB7                      IN      R16,SPL
 0274 0A93                      ST      -Y,R16
 0276           
 0276 00910000                  LDS     R16,_OSIntNesting           ; Notify uC/OS-II of ISR
 027A 0395                      INC     R16                         ;
 027C 00930000                  STS     _OSIntNesting,R16           ;
 0280           
 0280 0130                      CPI     R16,1                       ; if (OSIntNesting == 1) {
 0282 31F4                      BRNE    OSBms_UDREISR_1
 0284           
 0284 E0910000                  LDS     R30,_OSTCBCur               ;     OSTCBCur->OSTCBStkPtr = Y
 0288 F0910100                  LDS     R31,_OSTCBCur+1
 028C C193                      ST      Z+,R28
 028E D193                      ST      Z+,R29                      ; }
 0290           
 0290           OSBms_UDREISR_1:
 0290           
 0290 0E940000                  CALL    _OSBms_UDREISRHandler        ; Call uC/OS-Bms's UDR empty ISR Handler
 0294 0E940000                  CALL    _OSIntExit                  ; Notify uC/OS-II about end of ISR
 0298           
 0298 0991                      LD      R16,Y+
 029A 0DBF                      OUT     SPL,R16
 029C 0991                      LD      R16,Y+
 029E 0EBF                      OUT     SPH,R16
 02A0 0991                      LD      R16,Y+
 02A2 0F77                                      CBR     R16,BIT07
 02A4 0FBF                      OUT     SREG,R16
 02A6 F991                      LD      R31,Y+
 02A8 E991                      LD      R30,Y+
 02AA B991                      LD      R27,Y+
 02AC A991                      LD      R26,Y+
 02AE 9991                      LD      R25,Y+
 02B0 8991                      LD      R24,Y+
 02B2 7991                      LD      R23,Y+
 02B4 6991                      LD      R22,Y+
 02B6 5991                      LD      R21,Y+
 02B8 4991                      LD      R20,Y+
 02BA 3991                      LD      R19,Y+
 02BC 2991                      LD      R18,Y+
 02BE 1991                      LD      R17,Y+
 02C0 0991                      LD      R16,Y+
 02C2 F990                      LD      R15,Y+
 02C4 E990                      LD      R14,Y+
 02C6 D990                      LD      R13,Y+
 02C8 C990                      LD      R12,Y+
 02CA B990                      LD      R11,Y+
 02CC A990                      LD      R10,Y+
 02CE 9990                      LD      R9,Y+
 02D0 8990                      LD      R8,Y+
 02D2 7990                      LD      R7,Y+
 02D4 6990                      LD      R6,Y+
 02D6 5990                      LD      R5,Y+
 02D8 4990                      LD      R4,Y+
 02DA 3990                      LD      R3,Y+
 02DC 2990                      LD      R2,Y+
 02DE 1990                      LD      R1,Y+
 02E0 0990                      LD      R0,Y+
 02E2           
 02E2 1895                      RETI
 02E4           
 02E4           ;**********************************************************************************************
 02E4           ;*                                  INTERRUPT VECTOR TABLE
 02E4           ;**********************************************************************************************
 02E4           
                                .area   OSBms_ISR_Vectors(abs)
                                                .org    9*4                         ;Timer0 ISR
 0024 0C940000                                  JMP     _OSTickISR
 0028                                            
                                .org    14*4                        ;ADC ISR
 0038 0C945E00                                  JMP     _OSBms_AdcISR
 003C                           
                                                .org    11*4                        ; Rx ISR, Assume UART 
 002C 0C94BA00                  JMP     _OSBms_RxISR
 0030           
                                .org    13*4
 0034 0C941601                                  JMP     _OSBms_UDREISR              ;UDR empty ,assume uart
 0038                                           
 0038                                           

⌨️ 快捷键说明

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