bms_asm.lis
来自「mega16 ucos操作系统」· LIS 代码 · 共 621 行 · 第 1/3 页
LIS
621 行
0000 ;*******************************************************************************************************
0000
0000 *
0000 ; uC/OS-Bms
0000 ;
0000 ; (c) Copyright 2006, Micrium, Inc., Weston, FL
0000 ; All Rights Reserved
0000 ;
0000 ; Atmel AVR
0000 ; ATmega128
0000 ;
0000 ; File : OS_Bms_a.ASM
0000 ; By : Jean J. Labrosse
0000 ; Version : GX_EVBMS_S_V1.0
0000 ;*******************************************************************************************************
0000
0000 *
0000
0001 BIT00 = 0x01
0002 BIT01 = 0x02
0004 BIT02 = 0x04
0008 BIT03 = 0x08
0010 BIT04 = 0x10
0020 BIT05 = 0x20
0040 BIT06 = 0x40
0080 BIT07 = 0x80
0000 ;*******************************************************************************
0000 ; I/O PORT ADDRESSES
0000 ;*******************************************************************************
0000
0000
003F SREG = 0x3F
003E SPH = 0x3E
003D SPL = 0x3D
0032 TCNT0 = 0x32
0000
0000
0000 ;*******************************************************************************
0000 ; MACROS
0000 ;*******************************************************************************
0000
0000 ; Push registers
0000 .macro PUSHRS
0000 ST -Y,R0
0000 ST -Y,R1
0000 ST -Y,R2
0000 ST -Y,R3
0000 ST -Y,R4
0000 ST -Y,R5
0000 ST -Y,R6
0000 ST -Y,R7
0000 ST -Y,R8
0000 ST -Y,R9
0000 ST -Y,R10
0000 ST -Y,R11
0000 ST -Y,R12
0000 ST -Y,R13
0000 ST -Y,R14
0000 ST -Y,R15
0000 ST -Y,R16
0000 ST -Y,R17
0000 ST -Y,R18
0000 ST -Y,R19
0000 ST -Y,R20
0000 ST -Y,R21
0000 ST -Y,R22
0000 ST -Y,R23
0000 ST -Y,R24
0000 ST -Y,R25
0000 ST -Y,R26
0000 ST -Y,R27
0000 ST -Y,R30
0000 ST -Y,R31
0000 .macro POPRS
0000 LD R31,Y+
0000 LD R30,Y+
0000 LD R27,Y+
0000 LD R26,Y+
0000 LD R25,Y+
0000 LD R24,Y+
0000 LD R23,Y+
0000 LD R22,Y+
0000 LD R21,Y+
0000 LD R20,Y+
0000 LD R19,Y+
0000 LD R18,Y+
0000 LD R17,Y+
0000 LD R16,Y+
0000 LD R15,Y+
0000 LD R14,Y+
0000 LD R13,Y+
0000 LD R12,Y+
0000 LD R11,Y+
0000 LD R10,Y+
0000 LD R9,Y+
0000 LD R8,Y+
0000 LD R7,Y+
0000 LD R6,Y+
0000 LD R5,Y+
0000 LD R4,Y+
0000 LD R3,Y+
0000 LD R2,Y+
0000 LD R1,Y+
0000 LD R0,Y+
0000 .macro PUSHSP
0000 IN R16,SPH
0000 ST -Y,R16
0000 IN R16,SPL
0000 ST -Y,R16
0000 .macro POPSP
0000 LD R16,Y+
0000 OUT SPL,R16
0000 LD R16,Y+
0000 OUT SPH,R16
0000 .macro PUSHSREG
0000 IN R16,SREG
0000 ST -Y,R16
0000 .macro POPSREG
0000 LD R16,Y+
0000 CBR R16,BIT07
0000 OUT SREG,R16
.area text(rel)
;******************************************************************************
; SYSTEM TICK ISR
;
; Description: This function is the ISR used to notify uC/OS-II that a system
; tick has occurred.
;
;
;*******************************************************************************
;
0000 _OSTickISR::
0000 0A92 ST -Y,R0
0002 1A92 ST -Y,R1
0004 2A92 ST -Y,R2
0006 3A92 ST -Y,R3
0008 4A92 ST -Y,R4
000A 5A92 ST -Y,R5
000C 6A92 ST -Y,R6
000E 7A92 ST -Y,R7
0010 8A92 ST -Y,R8
0012 9A92 ST -Y,R9
0014 AA92 ST -Y,R10
0016 BA92 ST -Y,R11
0018 CA92 ST -Y,R12
001A DA92 ST -Y,R13
001C EA92 ST -Y,R14
001E FA92 ST -Y,R15
0020 0A93 ST -Y,R16
0022 1A93 ST -Y,R17
0024 2A93 ST -Y,R18
0026 3A93 ST -Y,R19
0028 4A93 ST -Y,R20
002A 5A93 ST -Y,R21
002C 6A93 ST -Y,R22
002E 7A93 ST -Y,R23
0030 8A93 ST -Y,R24
0032 9A93 ST -Y,R25
0034 AA93 ST -Y,R26
0036 BA93 ST -Y,R27
0038 EA93 ST -Y,R30
003A FA93 ST -Y,R31
003C 0FB7 IN R16, SREG
003E 0068 SBR R16, 0x80 ; bei Aufruf dieser ISR geloeschtes I-Flag setzen
0040 0A93 ST -Y, R16
0042 0EB7 IN R16,SPH
0044 0A93 ST -Y,R16
0046 0DB7 IN R16,SPL
0048 0A93 ST -Y,R16
004A
004A 05E0 LDI R16,0x05 ; Reload TC0, 0.5ms/4MHz/8
004C 02BF OUT TCNT0,R16
004E
004E 00910000 LDS R16,_OSIntNesting ; Notify uC/OS-II of ISR
0052 0395 INC R16 ;
0054 00930000 STS _OSIntNesting,R16 ;
0058
0058 0130 CPI R16,1 ;if(OSIntNesting==1){
005A 31F4 BRNE OSTickISR_1
005C
005C E0910000 LDS R30,_OSTCBCur
0060 F0910100 LDS R31,_OSTCBCur+1 ;OSTCBCur->OSTCBStkPtr=Y;
0064 C193 ST Z+,R28
0066 D193 ST Z+,R29 ;}
0068
0068 OSTickISR_1:
0068 0E940000 CALL _OSTickISR_Handler ; Call uC/OS-II's tick updating function
006C 0E940000 CALL _OSIntExit ; Notify uC/OS-II about end of ISR
0070
0070 0991 LD R16,Y+
0072 0DBF OUT SPL,R16
0074 0991 LD R16,Y+
0076 0EBF OUT SPH,R16
0078 0991 LD R16,Y+
007A 0F77 CBR R16,BIT07
007C 0FBF OUT SREG,R16
007E F991 LD R31,Y+
0080 E991 LD R30,Y+
0082 B991 LD R27,Y+
0084 A991 LD R26,Y+
0086 9991 LD R25,Y+
0088 8991 LD R24,Y+
008A 7991 LD R23,Y+
008C 6991 LD R22,Y+
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?