📄 ucosii.lst
字号:
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 + -