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

📄 ucosii.lst

📁 atmel128L
💻 LST
📖 第 1 页 / 共 5 页
字号:
    01BD 8380      STD	Z+0,R24
(0205)     *psoft_stk-- = (INT8U)0x20;             /* R20   = 0x20                                             */
    01BE 011A      MOVW	R2,R20
    01BF 5041      SUBI	R20,1
    01C0 4050      SBCI	R21,0
    01C1 E280      LDI	R24,0x20
    01C2 01F1      MOVW	R30,R2
    01C3 8380      STD	Z+0,R24
(0206)     *psoft_stk-- = (INT8U)0x21;             /* R21   = 0x21                                             */
    01C4 011A      MOVW	R2,R20
    01C5 5041      SUBI	R20,1
    01C6 4050      SBCI	R21,0
    01C7 E281      LDI	R24,0x21
    01C8 01F1      MOVW	R30,R2
    01C9 8380      STD	Z+0,R24
(0207)     *psoft_stk-- = (INT8U)0x22;             /* R22   = 0x22                                             */
    01CA 011A      MOVW	R2,R20
    01CB 5041      SUBI	R20,1
    01CC 4050      SBCI	R21,0
    01CD E282      LDI	R24,0x22
    01CE 01F1      MOVW	R30,R2
    01CF 8380      STD	Z+0,R24
(0208)     *psoft_stk-- = (INT8U)0x23;             /* R23   = 0x23                                             */
    01D0 011A      MOVW	R2,R20
    01D1 5041      SUBI	R20,1
    01D2 4050      SBCI	R21,0
    01D3 E283      LDI	R24,0x23
    01D4 01F1      MOVW	R30,R2
    01D5 8380      STD	Z+0,R24
(0209)     *psoft_stk-- = (INT8U)0x24;             /* R24   = 0x24                                             */
    01D6 011A      MOVW	R2,R20
    01D7 5041      SUBI	R20,1
    01D8 4050      SBCI	R21,0
    01D9 E284      LDI	R24,0x24
    01DA 01F1      MOVW	R30,R2
    01DB 8380      STD	Z+0,R24
(0210)     *psoft_stk-- = (INT8U)0x25;             /* R25   = 0x25                                             */
    01DC 011A      MOVW	R2,R20
    01DD 5041      SUBI	R20,1
    01DE 4050      SBCI	R21,0
    01DF E285      LDI	R24,0x25
    01E0 01F1      MOVW	R30,R2
    01E1 8380      STD	Z+0,R24
(0211)     *psoft_stk-- = (INT8U)0x26;             /* R26   = 0x26                                             */
    01E2 011A      MOVW	R2,R20
    01E3 5041      SUBI	R20,1
    01E4 4050      SBCI	R21,0
    01E5 E286      LDI	R24,0x26
    01E6 01F1      MOVW	R30,R2
    01E7 8380      STD	Z+0,R24
(0212)     *psoft_stk-- = (INT8U)0x27;             /* R27   = 0x27                                             */
    01E8 011A      MOVW	R2,R20
    01E9 5041      SUBI	R20,1
    01EA 4050      SBCI	R21,0
    01EB E287      LDI	R24,0x27
    01EC 01F1      MOVW	R30,R2
    01ED 8380      STD	Z+0,R24
(0213)                                             /* R28     R29:R28 is the software stack which gets ...     */
(0214)                                             /* R29     ... stored in the task's OS_TCB.                 */
(0215)     *psoft_stk-- = (INT8U)0x30;             /* R30   = 0x30                                             */
    01EE 011A      MOVW	R2,R20
    01EF 5041      SUBI	R20,1
    01F0 4050      SBCI	R21,0
    01F1 E380      LDI	R24,0x30
    01F2 01F1      MOVW	R30,R2
    01F3 8380      STD	Z+0,R24
(0216)     *psoft_stk-- = (INT8U)0x31;             /* R31   = 0x31                                             */
    01F4 011A      MOVW	R2,R20
    01F5 5041      SUBI	R20,1
    01F6 4050      SBCI	R21,0
    01F7 E381      LDI	R24,0x31
    01F8 01F1      MOVW	R30,R2
    01F9 8380      STD	Z+0,R24
(0217)     *psoft_stk-- = (INT8U)0x00;             /* RAMPZ = 0x00                                             */
    01FA 011A      MOVW	R2,R20
    01FB 5041      SUBI	R20,1
    01FC 4050      SBCI	R21,0
    01FD 2444      CLR	R4
    01FE 01F1      MOVW	R30,R2
    01FF 8240      STD	Z+0,R4
(0218)     *psoft_stk-- = (INT8U)0x80;             /* SREG  = Interrupts enabled                               */
    0200 011A      MOVW	R2,R20
    0201 5041      SUBI	R20,1
    0202 4050      SBCI	R21,0
    0203 E880      LDI	R24,0x80
    0204 01F1      MOVW	R30,R2
    0205 8380      STD	Z+0,R24
(0219)     tmp          = (INT16U)phard_stk;
    0206 01B5      MOVW	R22,R10
(0220)     *psoft_stk-- = (INT8U)(tmp >> 8);       /* SPH                                                      */
    0207 011A      MOVW	R2,R20
    0208 5041      SUBI	R20,1
    0209 4050      SBCI	R21,0
    020A 012B      MOVW	R4,R22
    020B 2C45      MOV	R4,R5
    020C 2455      CLR	R5
    020D 01F1      MOVW	R30,R2
    020E 8240      STD	Z+0,R4
(0221)     *psoft_stk   = (INT8U) tmp;             /* SPL                                                      */
    020F 01FA      MOVW	R30,R20
    0210 8360      STD	Z+0,R22
(0222)     return ((void *)psoft_stk);
    0211 018F      MOVW	R16,R30
    0212 940E0DCA  CALL	pop_gset3
    0214 9508      RET
(0223) }
(0224) 
(0225) /*$PAGE*/
(0226) /*
(0227) *********************************************************************************************************
(0228) *                                           TASK SWITCH HOOK
(0229) *
(0230) * Description: This function is called when a task switch is performed.  This allows you to perform other
(0231) *              operations during a context switch.
(0232) *
(0233) * Arguments  : none
(0234) *
(0235) * Note(s)    : 1) Interrupts are disabled during this call.
(0236) *              2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB of the task that
(0237) *                 will be 'switched in' (i.e. the highest priority task) and, 'OSTCBCur' points to the 
(0238) *                 task being switched out (i.e. the preempted task).
(0239) *********************************************************************************************************
(0240) */
(0241) #if (OS_CPU_HOOKS_EN > 0) && (OS_TASK_SW_HOOK_EN > 0)
(0242) void  OSTaskSwHook (void)
(0243) {
(0244) #ifdef OS_VIEW_MODULE
(0245)     OSView_TaskSwHook();
(0246) #endif
(0247) }
_OSTaskSwHook:
    0215 9508      RET
(0248) #endif
(0249) 
(0250) /*
(0251) *********************************************************************************************************
(0252) *                                           OS_TCBInit() HOOK
(0253) *
(0254) * Description: This function is called by OS_TCBInit() after setting up most of the TCB.
(0255) *
(0256) * Arguments  : ptcb    is a pointer to the TCB of the task being created.
(0257) *
(0258) * Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
(0259) *********************************************************************************************************
(0260) */
(0261) #if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
(0262) void  OSTCBInitHook (OS_TCB *ptcb)
(0263) {
(0264)     ptcb = ptcb;                                           /* Prevent Compiler warning                 */
(0265) }
_OSTCBInitHook:
  ptcb                 --> R16
    0216 9508      RET
(0266) #endif
(0267) 
(0268) 
(0269) /*
(0270) *********************************************************************************************************
(0271) *                                               TICK HOOK
(0272) *
(0273) * Description: This function is called every tick.
(0274) *
(0275) * Arguments  : none
(0276) *
(0277) * Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
(0278) *********************************************************************************************************
(0279) */
(0280) #if (OS_CPU_HOOKS_EN > 0) && (OS_TIME_TICK_HOOK_EN > 0)
(0281) void  OSTimeTickHook (void)
(0282) {
(0283) #ifdef OS_VIEW_MODULE
(0284)     OSView_TickHook();
(0285) #endif
(0286) }
_OSTimeTickHook:
    0217 9508      RET
FILE: C:\UCOS-II_AVR_ICC\RTOSIC~1\source\os_cpu_a.s
(0001) ;********************************************************************************************************
(0002) ;                                               uC/OS-II
(0003) ;                                         The Real-Time Kernel
(0004) ;
(0005) ;                                       ATmega128  Specific code
(0006) ;
(0007) ;
(0008) ; File     : OS_CPU_A.S
(0009) ; By       : Ole Saether
(0010) ;            Jean J. Labrosse
(0011) ;********************************************************************************************************
(0012) ;                                           I/O PORT ADDRESSES
(0013) ;********************************************************************************************************
(0014) 
(0015) BIT00   = 0x01
(0016) BIT01   = 0x02
(0017) BIT02   = 0x04
(0018) BIT03   = 0x08
(0019) BIT04   = 0x10
(0020) BIT05   = 0x20
(0021) BIT06   = 0x40
(0022) BIT07   = 0x80
(0023) 
(0024) SREG    = 0x3F
(0025) SPH     = 0x3E
(0026) SPL     = 0x3D
(0027) RAMPZ   = 0x3B
(0028) 
(0029) ;********************************************************************************************************
(0030) ;                                         MACROS
(0031) ;********************************************************************************************************
(0032) 
(0033)                 .macro  PUSH_ALL                            ; Save all registers
(0034)                 ST      -Y,R0
(0035)                 ST      -Y,R1
(0036)                 ST      -Y,R2
(0037)                 ST      -Y,R3
(0038)                 ST      -Y,R4
(0039)                 ST      -Y,R5
(0040)                 ST      -Y,R6
(0041)                 ST      -Y,R7
(0042)                 ST      -Y,R8
(0043)                 ST      -Y,R9
(0044)                 ST      -Y,R10
(0045)                 ST      -Y,R11
(0046)                 ST      -Y,R12
(0047)                 ST      -Y,R13
(0048)                 ST      -Y,R14
(0049)                 ST      -Y,R15
(0050)                 ST      -Y,R16
(0051)                 ST      -Y,R17
(0052)                 ST      -Y,R18
(0053)                 ST      -Y,R19
(0054)                 ST      -Y,R20
(0055)                 ST      -Y,R21
(0056)                 ST      -Y,R22
(0057)                 ST      -Y,R23
(0058)                 ST      -Y,R24
(0059)                 ST      -Y,R25
(0060)                 ST      -Y,R26
(0061)                 ST      -Y,R27
(0062)                 ST      -Y,R30
(0063)                 ST      -Y,R31
(0064)                 IN      R16,RAMPZ
(0065)                 ST      -Y,R16
(0066)                 .endmacro
(0067) 
(0068)                 .macro  POP_ALL                             ; Restore all registers
(0069)                 LD      R16,Y+
(0070)                 OUT     RAMPZ,R16
(0071)                 LD      R31,Y+
(0072)                 LD      R30,Y+
(0073)                 LD      R27,Y+
(0074)                 LD      R26,Y+
(0075)                 LD      R25,Y+
(0076)                 LD      R24,Y+
(0077)                 LD      R23,Y+
(0078)                 LD      R22,Y+
(0079)                 LD      R21,Y+
(0080)                 LD      R20,Y+
(0081)                 LD      R19,Y+
(0082)                 LD      R18,Y+
(0083)                 LD      R17,Y+
(0084)                 LD      R16,Y+
(0085)                 LD      R15,Y+
(0086)                 LD      R14,Y+
(0087)                 LD      R13,Y+
(0088)                 LD      R12,Y+
(0089)                 LD      R11,Y+
(0090)                 LD      R10,Y+
(0091)                 LD      R9,Y+
(0092)                 LD      R8,Y+
(0093)                 LD      R7,Y+
(0094)                 LD      R6,Y+
(0095)                 LD      R5,Y+
(0096)                 LD      R4,Y+
(0097)                 LD      R3,Y+
(0098)                 LD      R2,Y+
(0099)                 LD      R1,Y+
(0100)                 LD      R0,Y+
(0101)                 .endmacro
(0102) 
(0103)                 .macro  PUSH_SP                             ; Save stack pointer
(0104)                 IN      R16,SPH
(0105)                 ST      -Y,R16
(0106)                 IN      R16,SPL
(0107)                 ST      -Y,R16
(0108)                 .endmacro
(0109) 
(0110)                 .macro  POP_SP                              ; Restore stack pointer
(0111)                 LD      R16,Y+
(0112)                 OUT     SPL,R16
(0113)                 LD      R16,Y+
(0114)                 OUT     SPH,R16
(0115)                 .endmacro
(0116) 
(0117)                 .macro  PUSH_SREG                           ; Save status register
(0118)                 IN      R16,SREG
(0119)                 ST      -Y,R16
(0120)                 .endmacro
(0121) 
(0122)                 .macro  POP_SREG                            ; Restore status registers
(0123)                 LD      R16,Y+
(0124)                 OUT     SREG,R16
(0125)                 .endmacro
(0126) 
(0127)                 .area   text(rel)
(0128) 
(0129) ;/*$PAGE*/.
(0130) ;********************************************************************************************************
(0131) ;                            DISABLE/ENABLE INTERRUPTS USING OS_CRITICAL_METHOD #3
(0132) ;
(0133) ; Description : These functions are used to disable and enable interrupts using OS_CRITICAL_METHOD #3.
(0134) ;
(0135) ;               OS_CPU_SR  OSCPUSaveSR (void)
(0136) ;                     Get current value of SREG
(0137) ;                     Disable interrupts
(0138) ;                     Return original value of SREG

⌨️ 快捷键说明

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