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

📄 ucosii.lst

📁 atmel128L
💻 LST
📖 第 1 页 / 共 5 页
字号:
    01BD E189      LDI	R24,0x19
    01BE 01F1      MOVW	R30,R2
    01BF 8380      STD	Z+0,R24
(0205)     *psoft_stk-- = (INT8U)0x20;             /* R20   = 0x20                                             */
    01C0 011A      MOVW	R2,R20
    01C1 5041      SUBI	R20,1
    01C2 4050      SBCI	R21,0
    01C3 E280      LDI	R24,0x20
    01C4 01F1      MOVW	R30,R2
    01C5 8380      STD	Z+0,R24
(0206)     *psoft_stk-- = (INT8U)0x21;             /* R21   = 0x21                                             */
    01C6 011A      MOVW	R2,R20
    01C7 5041      SUBI	R20,1
    01C8 4050      SBCI	R21,0
    01C9 E281      LDI	R24,0x21
    01CA 01F1      MOVW	R30,R2
    01CB 8380      STD	Z+0,R24
(0207)     *psoft_stk-- = (INT8U)0x22;             /* R22   = 0x22                                             */
    01CC 011A      MOVW	R2,R20
    01CD 5041      SUBI	R20,1
    01CE 4050      SBCI	R21,0
    01CF E282      LDI	R24,0x22
    01D0 01F1      MOVW	R30,R2
    01D1 8380      STD	Z+0,R24
(0208)     *psoft_stk-- = (INT8U)0x23;             /* R23   = 0x23                                             */
    01D2 011A      MOVW	R2,R20
    01D3 5041      SUBI	R20,1
    01D4 4050      SBCI	R21,0
    01D5 E283      LDI	R24,0x23
    01D6 01F1      MOVW	R30,R2
    01D7 8380      STD	Z+0,R24
(0209)     *psoft_stk-- = (INT8U)0x24;             /* R24   = 0x24                                             */
    01D8 011A      MOVW	R2,R20
    01D9 5041      SUBI	R20,1
    01DA 4050      SBCI	R21,0
    01DB E284      LDI	R24,0x24
    01DC 01F1      MOVW	R30,R2
    01DD 8380      STD	Z+0,R24
(0210)     *psoft_stk-- = (INT8U)0x25;             /* R25   = 0x25                                             */
    01DE 011A      MOVW	R2,R20
    01DF 5041      SUBI	R20,1
    01E0 4050      SBCI	R21,0
    01E1 E285      LDI	R24,0x25
    01E2 01F1      MOVW	R30,R2
    01E3 8380      STD	Z+0,R24
(0211)     *psoft_stk-- = (INT8U)0x26;             /* R26   = 0x26                                             */
    01E4 011A      MOVW	R2,R20
    01E5 5041      SUBI	R20,1
    01E6 4050      SBCI	R21,0
    01E7 E286      LDI	R24,0x26
    01E8 01F1      MOVW	R30,R2
    01E9 8380      STD	Z+0,R24
(0212)     *psoft_stk-- = (INT8U)0x27;             /* R27   = 0x27                                             */
    01EA 011A      MOVW	R2,R20
    01EB 5041      SUBI	R20,1
    01EC 4050      SBCI	R21,0
    01ED E287      LDI	R24,0x27
    01EE 01F1      MOVW	R30,R2
    01EF 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                                             */
    01F0 011A      MOVW	R2,R20
    01F1 5041      SUBI	R20,1
    01F2 4050      SBCI	R21,0
    01F3 E380      LDI	R24,0x30
    01F4 01F1      MOVW	R30,R2
    01F5 8380      STD	Z+0,R24
(0216)     *psoft_stk-- = (INT8U)0x31;             /* R31   = 0x31                                             */
    01F6 011A      MOVW	R2,R20
    01F7 5041      SUBI	R20,1
    01F8 4050      SBCI	R21,0
    01F9 E381      LDI	R24,0x31
    01FA 01F1      MOVW	R30,R2
    01FB 8380      STD	Z+0,R24
(0217)     *psoft_stk-- = (INT8U)0x00;             /* RAMPZ = 0x00                                             */
    01FC 011A      MOVW	R2,R20
    01FD 5041      SUBI	R20,1
    01FE 4050      SBCI	R21,0
    01FF 2444      CLR	R4
    0200 01F1      MOVW	R30,R2
    0201 8240      STD	Z+0,R4
(0218)     *psoft_stk-- = (INT8U)0x80;             /* SREG  = Interrupts enabled                               */
    0202 011A      MOVW	R2,R20
    0203 5041      SUBI	R20,1
    0204 4050      SBCI	R21,0
    0205 E880      LDI	R24,0x80
    0206 01F1      MOVW	R30,R2
    0207 8380      STD	Z+0,R24
(0219)     tmp          = (INT16U)phard_stk;
    0208 01B5      MOVW	R22,R10
(0220)     *psoft_stk-- = (INT8U)(tmp >> 8);       /* SPH                                                      */
    0209 011A      MOVW	R2,R20
    020A 5041      SUBI	R20,1
    020B 4050      SBCI	R21,0
    020C 012B      MOVW	R4,R22
    020D 2C45      MOV	R4,R5
    020E 2455      CLR	R5
    020F 01F1      MOVW	R30,R2
    0210 8240      STD	Z+0,R4
(0221)     *psoft_stk   = (INT8U) tmp;             /* SPL                                                      */
    0211 01FA      MOVW	R30,R20
    0212 8360      STD	Z+0,R22
(0222)     return ((void *)psoft_stk);
    0213 018F      MOVW	R16,R30
    0214 940E0E37  CALL	pop_gset3
    0216 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:
    0217 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
    0218 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:
    0219 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

⌨️ 快捷键说明

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