📄 project.lst
字号:
0212 8380 STD Z+0,R24
(0204) *psoft_stk-- = (INT8U)0x19; /* R19 = 0x19 */
0213 011A MOVW R2,R20
0214 5041 SUBI R20,1
0215 4050 SBCI R21,0
0216 E189 LDI R24,0x19
0217 01F1 MOVW R30,R2
0218 8380 STD Z+0,R24
(0205) *psoft_stk-- = (INT8U)0x20; /* R20 = 0x20 */
0219 011A MOVW R2,R20
021A 5041 SUBI R20,1
021B 4050 SBCI R21,0
021C E280 LDI R24,0x20
021D 01F1 MOVW R30,R2
021E 8380 STD Z+0,R24
(0206) *psoft_stk-- = (INT8U)0x21; /* R21 = 0x21 */
021F 011A MOVW R2,R20
0220 5041 SUBI R20,1
0221 4050 SBCI R21,0
0222 E281 LDI R24,0x21
0223 01F1 MOVW R30,R2
0224 8380 STD Z+0,R24
(0207) *psoft_stk-- = (INT8U)0x22; /* R22 = 0x22 */
0225 011A MOVW R2,R20
0226 5041 SUBI R20,1
0227 4050 SBCI R21,0
0228 E282 LDI R24,0x22
0229 01F1 MOVW R30,R2
022A 8380 STD Z+0,R24
(0208) *psoft_stk-- = (INT8U)0x23; /* R23 = 0x23 */
022B 011A MOVW R2,R20
022C 5041 SUBI R20,1
022D 4050 SBCI R21,0
022E E283 LDI R24,0x23
022F 01F1 MOVW R30,R2
0230 8380 STD Z+0,R24
(0209) *psoft_stk-- = (INT8U)0x24; /* R24 = 0x24 */
0231 011A MOVW R2,R20
0232 5041 SUBI R20,1
0233 4050 SBCI R21,0
0234 E284 LDI R24,0x24
0235 01F1 MOVW R30,R2
0236 8380 STD Z+0,R24
(0210) *psoft_stk-- = (INT8U)0x25; /* R25 = 0x25 */
0237 011A MOVW R2,R20
0238 5041 SUBI R20,1
0239 4050 SBCI R21,0
023A E285 LDI R24,0x25
023B 01F1 MOVW R30,R2
023C 8380 STD Z+0,R24
(0211) *psoft_stk-- = (INT8U)0x26; /* R26 = 0x26 */
023D 011A MOVW R2,R20
023E 5041 SUBI R20,1
023F 4050 SBCI R21,0
0240 E286 LDI R24,0x26
0241 01F1 MOVW R30,R2
0242 8380 STD Z+0,R24
(0212) *psoft_stk-- = (INT8U)0x27; /* R27 = 0x27 */
0243 011A MOVW R2,R20
0244 5041 SUBI R20,1
0245 4050 SBCI R21,0
0246 E287 LDI R24,0x27
0247 01F1 MOVW R30,R2
0248 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 */
0249 011A MOVW R2,R20
024A 5041 SUBI R20,1
024B 4050 SBCI R21,0
024C E380 LDI R24,0x30
024D 01F1 MOVW R30,R2
024E 8380 STD Z+0,R24
(0216) *psoft_stk-- = (INT8U)0x31; /* R31 = 0x31 */
024F 011A MOVW R2,R20
0250 5041 SUBI R20,1
0251 4050 SBCI R21,0
0252 E381 LDI R24,0x31
0253 01F1 MOVW R30,R2
0254 8380 STD Z+0,R24
(0217) *psoft_stk-- = (INT8U)0x00; /* RAMPZ = 0x00 */
0255 011A MOVW R2,R20
0256 5041 SUBI R20,1
0257 4050 SBCI R21,0
0258 2444 CLR R4
0259 01F1 MOVW R30,R2
025A 8240 STD Z+0,R4
(0218) *psoft_stk-- = (INT8U)0x80; /* SREG = Interrupts enabled */
025B 011A MOVW R2,R20
025C 5041 SUBI R20,1
025D 4050 SBCI R21,0
025E E880 LDI R24,0x80
025F 01F1 MOVW R30,R2
0260 8380 STD Z+0,R24
(0219) tmp = (INT16U)phard_stk;
0261 01B5 MOVW R22,R10
(0220) *psoft_stk-- = (INT8U)(tmp >> 8); /* SPH */
0262 011A MOVW R2,R20
0263 5041 SUBI R20,1
0264 4050 SBCI R21,0
0265 012B MOVW R4,R22
0266 2C45 MOV R4,R5
0267 2455 CLR R5
0268 01F1 MOVW R30,R2
0269 8240 STD Z+0,R4
(0221) *psoft_stk = (INT8U) tmp; /* SPL */
026A 01FA MOVW R30,R20
026B 8360 STD Z+0,R22
(0222) return ((void *)psoft_stk);
026C 018F MOVW R16,R30
026D 940E0E55 CALL pop_gset3
026F 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:
0270 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
0271 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:
0272 9508 RET
_main:
0273 9723 SBIW R28,3
FILE: C:\MICRIUM\Software\EvalBoards\Atmel\STK500\ATmega128\ICC\Ex1\app.c
(0001) /*
(0002) *************************************************************************************************************
(0003) * uC/OS-II
(0004) * The Real-Time Kernel
(0005) *
(0006) * ATmega128 Sample code
(0007) *
(0008) * File : APP.C
(0009) * By : Jean J. Labrosse
(0010) *************************************************************************************************************
(0011) */
(0012)
(0013) #include <includes.h>
(0014)
(0015) /*
(0016) **************************************************************************************************************
(0017) * CONSTANTS
(0018) *
(0019) * Note(s) : 1) See OS_CFG.H for the default stack size: 'OS_TASK_STK_SIZE'
(0020) **************************************************************************************************************
(0021) */
(0022)
(0023) #define CPU_CLK_FREQ 3684000L
(0024) #define OS_TASK_STK_SIZE 256 /* Default size for each task stack (Total stack size) */
(0025) #define OS_TASK_HARD_STK_SIZE 64 /* Default size for the hardware stack */
(0026)
(0027)
(0028) #define OS_TASK_START_STK_SIZE OS_TASK_STK_SIZE
(0029) #define OS_TASK_START_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
(0030)
(0031) #define OS_TASK_1_STK_SIZE OS_TASK_STK_SIZE
(0032) #define OS_TASK_1_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
(0033)
(0034) #define OS_TASK_2_STK_SIZE OS_TASK_STK_SIZE
(0035) #define OS_TASK_2_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
(0036)
(0037)
(0038) /*
(0039) **************************************************************************************************************
(0040) * VARIABLES
(0041) **************************************************************************************************************
(0042) */
(0043)
(0044) OS_STK AppTaskStartStk[OS_TASK_START_STK_SIZE];
(0045) OS_STK AppTask1Stk[OS_TASK_1_STK_SIZE];
(0046) OS_STK AppTask2Stk[OS_TASK_2_STK_SIZE];
(0047)
(0048) /*
(0049) **************************************************************************************************************
(0050) * FUNCTION PROTOTYPES
(0051) **************************************************************************************************************
(0052) */
(0053)
(0054) void main(void);
(0055)
(0056) static void AppTaskStart(void *p_arg);
(0057) static void AppTaskCreate(void);
(0058) static void AppTask1(void *p_arg);
(0059) static void AppTask2(void *p_arg);
(0060)
(0061) static void AppIOInit(void);
(0062)
(0063) static void LED_Toggle(INT8U led);
(0064)
(0065) /*
(0066) **************************************************************************************************************
(0067) * MAIN
(0068) *
(0069) * Note(s): 1) You SHOULD use OS_TASK_STK_SIZE (see OS_CFG.H) when setting OSTaskStkSize prior to calling
(0070) * OSInit() because OS_TASK_IDLE_STK_SIZE and OS_TASK_STAT_STK_SIZE are set to this value in
(0071) * OS_CFG.H.
(0072) **************************************************************************************************************
(0073) */
(0074)
(0075) void main (void)
(0076) {
(0077) /*---- Any initialization code prior to calling OSInit() goes HERE --------------------------------*/
(0078)
(0079) /* IMPORTANT: MUST be setup before calling 'OSInit()' */
(0080) OSTaskStkSize = OS_TASK_STK_SIZE; /* Setup the default stack size */
0274 E080 LDI R24,0
0275 E091 LDI R25,1
0276 93900103 STS _OSTaskStkSize+1,R25
0278 93800102 STS _OSTaskStkSize,R24
(0081) OSTaskHardStkSize = OS_TASK_HARD_STK_SIZE; /* Setup the default hardware stack size */
027A E480 LDI R24,0x40
027B E090 LDI R25,0
027C 93900101 STS _OSTaskHardStkSize+1,R25
027E 93800100 STS _OSTaskHardStkSize,R24
(0082)
(0083) OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
0280 940E042E CALL _OSInit
(0084)
(0085) /*---- Any initialization code before starting multitasking ---------------------------------------*/
(0086)
(0087) OSTaskStkSize = OS_TASK_START_STK_SIZE; /* Setup the total stack size */
0282 E080 LDI R24,0
0283 E091 LDI R25,1
0284 93900103 STS _OSTaskStkSize+1,R25
0286 93800102 STS _OSTaskStkSize,R24
(0088) OSTaskHardStkSize = OS_TASK_START_HARD_STK_SIZE; /* Setup the hardware stack size */
0288 E480 LDI R24,0x40
0289 E090 LDI R25,0
028A 93900101 STS _OSTaskHardStkSize+1,R25
028C 93800100 STS _OSTaskHardStkSize,R24
(0089) OSTaskCreate(AppTaskStart, (void *)0, (OS_STK *)&AppTaskStartStk[OSTaskStkSize - 1], 0);
028E 2422 CLR R2
028F 822A STD Y+2,R2
0290 E084 LDI R24,4
0291 E093 LDI R25,3
0292 91E00102 LDS R30,_OSTaskStkSize
0294 91F00103 LDS R31,_OSTaskStkSize+1
0296 9731 SBIW R30,1
0297 0FE8 ADD R30,R24
0298 1FF9 ADC R31,R25
0299 83F9 STD Y+1,R31
029A 83E8 STD Y+0,R30
029B 2722 CLR R18
029C 2733 CLR R19
029D E900 LDI R16,0x90
029E E010 LDI R17,0
029F 940E0C05 CALL _OSTaskCreate
(0090)
(0091) /*---- Create any other task you want before we start multitasking --------------------------------*/
(0092)
(0093) OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
02A1 940E050D CALL _OSStart
(0094) }
02A3 9623 ADIW R28,3
02A4 9508 RET
_AppTaskStart:
p_arg --> R20
02A5 940E0E5E CALL push_gset1
02A7 01A8 MOVW R20,R16
(0095)
(0096) /*
(0097) *********************************************************************************************************
(0098) * STARTUP TASK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -