test.lst
来自「将本站的UCOSFORAVR128V276版本升级到了280版」· LST 代码 · 共 1,505 行 · 第 1/5 页
LST
1,505 行
(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 */
_OSTCBInitHook:
ptcb --> R16
0345 9508 RET
_main:
0346 9723 SBIW R28,3
FILE: E:\ypt050912\XIAZAI\xinzai\UCOSAVR128\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)
(0025)
(0026) #define OS_TASK_START_STK_SIZE OS_TASK_STK_SIZE
(0027) #define OS_TASK_START_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
(0028)
(0029) #define OS_TASK_1_STK_SIZE OS_TASK_STK_SIZE
(0030) #define OS_TASK_1_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
(0031)
(0032) #define OS_TASK_2_STK_SIZE OS_TASK_STK_SIZE
(0033) #define OS_TASK_2_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
(0034)
(0035) #define OS_TASK_3_STK_SIZE OS_TASK_STK_SIZE
(0036) #define OS_TASK_3_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
(0037) /*
(0038) **************************************************************************************************************
(0039) * VARIABLES
(0040) **************************************************************************************************************
(0041) */
(0042)
(0043) OS_STK AppTaskStartStk[OS_TASK_START_STK_SIZE];
(0044) OS_STK AppTask1Stk[OS_TASK_1_STK_SIZE];
(0045) OS_STK AppTask2Stk[OS_TASK_2_STK_SIZE];
(0046) OS_STK AppTask3Stk[OS_TASK_3_STK_SIZE];
(0047) /*
(0048) **************************************************************************************************************
(0049) * FUNCTION PROTOTYPES
(0050) **************************************************************************************************************
(0051) */
(0052)
(0053) //void main(void);
(0054) #pragma interrupt_handler OSTickISR:17
(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) static void AppTask3(void *p_arg);
(0061)
(0062) static void AppIOInit(void);
(0063)
(0064) static void LED_Toggle(INT8U led);
(0065)
(0066) OS_EVENT *testsem;
(0067) OS_EVENT *testsem1;
(0068) /*
(0069) **************************************************************************************************************
(0070) * MAIN
(0071) *
(0072) * Note(s): 1) You SHOULD use OS_TASK_STK_SIZE (see OS_CFG.H) when setting OSTaskStkSize prior to calling
(0073) * OSInit() because OS_TASK_IDLE_STK_SIZE and OS_TASK_STAT_STK_SIZE are set to this value in
(0074) * OS_CFG.H.
(0075) **************************************************************************************************************
(0076) */
(0077)
(0078) void main (void)
(0079) {
(0080) /*---- Any initialization code prior to calling OSInit() goes HERE --------------------------------*/
(0081)
(0082) /* IMPORTANT: MUST be setup before calling 'OSInit()' */
(0083) OSTaskStkSize = OS_TASK_STK_SIZE; /* Setup the default stack size */
0347 E080 LDI R24,0
0348 E091 LDI R25,1
0349 93900103 STS _OSTaskStkSize+1,R25
034B 93800102 STS _OSTaskStkSize,R24
(0084) OSTaskHardStkSize = OS_TASK_HARD_STK_SIZE; /* Setup the default hardware stack size */
034D E480 LDI R24,0x40
034E E090 LDI R25,0
034F 93900101 STS _OSTaskHardStkSize+1,R25
0351 93800100 STS _OSTaskHardStkSize,R24
(0085)
(0086) OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
0353 940E09CC CALL _OSInit
(0087)
(0088) /*---- Any initialization code before starting multitasking ---------------------------------------*/
(0089)
(0090) OSTaskStkSize = OS_TASK_START_STK_SIZE; /* Setup the total stack size */
0355 E080 LDI R24,0
0356 E091 LDI R25,1
0357 93900103 STS _OSTaskStkSize+1,R25
0359 93800102 STS _OSTaskStkSize,R24
(0091) OSTaskHardStkSize = OS_TASK_START_HARD_STK_SIZE; /* Setup the hardware stack size */
035B E480 LDI R24,0x40
035C E090 LDI R25,0
035D 93900101 STS _OSTaskHardStkSize+1,R25
035F 93800100 STS _OSTaskHardStkSize,R24
(0092) OSTaskCreate(AppTaskStart, (void *)0, (OS_STK *)&AppTaskStartStk[OSTaskStkSize - 1], 4);
0361 E084 LDI R24,4
0362 838A STD Y+2,R24
0363 E088 LDI R24,0x8
0364 E094 LDI R25,4
0365 91E00102 LDS R30,_OSTaskStkSize
0367 91F00103 LDS R31,_OSTaskStkSize+1
0369 9731 SBIW R30,1
036A 0FE8 ADD R30,R24
036B 1FF9 ADC R31,R25
036C 83F9 STD Y+1,R31
036D 83E8 STD Y+0,R30
036E 2722 CLR R18
036F 2733 CLR R19
0370 E902 LDI R16,0x92
0371 E010 LDI R17,0
0372 940E0833 CALL _OSTaskCreate
(0093)
(0094)
(0095) OSTaskStkSize = OS_TASK_3_STK_SIZE; /* Setup the default stack size */
0374 E080 LDI R24,0
0375 E091 LDI R25,1
0376 93900103 STS _OSTaskStkSize+1,R25
0378 93800102 STS _OSTaskStkSize,R24
(0096) OSTaskHardStkSize = OS_TASK_3_HARD_STK_SIZE; /* Setup the default hardware stack size */
037A E480 LDI R24,0x40
037B E090 LDI R25,0
037C 93900101 STS _OSTaskHardStkSize+1,R25
037E 93800100 STS _OSTaskHardStkSize,R24
(0097) OSTaskCreate(AppTask3, (void *)0, (OS_STK *)&AppTask3Stk[OSTaskStkSize - 1], 7);
0380 E087 LDI R24,7
0381 838A STD Y+2,R24
0382 E088 LDI R24,0x8
0383 E091 LDI R25,1
0384 91E00102 LDS R30,_OSTaskStkSize
0386 91F00103 LDS R31,_OSTaskStkSize+1
0388 9731 SBIW R30,1
0389 0FE8 ADD R30,R24
038A 1FF9 ADC R31,R25
038B 83F9 STD Y+1,R31
038C 83E8 STD Y+0,R30
038D 2722 CLR R18
038E 2733 CLR R19
038F E900 LDI R16,0x90
0390 E010 LDI R17,0
0391 940E0833 CALL _OSTaskCreate
(0098) //OSTaskCreate(AppTask3,(void *)0,(OS_STK *)&AppTask3Stk[OS_TASK_3_STK_SIZE-1],7);
(0099) /*---- Create any other task you want before we start multitasking --------------------------------*/
(0100)
(0101) /* Initialize the I/Os */
(0102)
(0103) OSTickISR_Init(); /* Initialize the ticker */
0393 D0C1 RCALL _OSTickISR_Init
(0104) AppIOInit();
0394 D0BC RCALL _AppIOInit
(0105) AppTaskCreate();
0395 D022 RCALL _AppTaskCreate
(0106)
(0107) testsem = OSSemCreate(1);
0396 E001 LDI R16,1
0397 E010 LDI R17,0
0398 940E0658 CALL _OSSemCreate
039A 93100107 STS _testsem+1,R17
039C 93000106 STS _testsem,R16
(0108) testsem1= OSSemCreate(0);
039E 2700 CLR R16
039F 2711 CLR R17
03A0 940E0658 CALL _OSSemCreate
03A2 93100105 STS _testsem1+1,R17
03A4 93000104 STS _testsem1,R16
(0109)
(0110) OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
03A6 940E0A77 CALL _OSStart
03A8 9623 ADIW R28,3
03A9 9508 RET
_AppTaskStart:
p_arg --> R20
03AA 940E0F11 CALL push_gset1
03AC 01A8 MOVW R20,R16
(0111) }
(0112)
(0113) /*
(0114) *********************************************************************************************************
(0115) * STARTUP TASK
(0116) *
(0117) * Description : This is an example of a startup task. As mentioned in the book's text, you MUST
(0118) * initialize the ticker only once multitasking has started.
(0119) *
(0120) * Arguments : p_arg is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
(0121) *
(0122) * Notes : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
(0123) * used. The compiler should not generate any code for this statement.
(0124) *********************************************************************************************************
(0125) */
(0126)
(0127) static void AppTaskStart (void *p_arg)
(0128) {
(0129) p_arg = p_arg; /* Prevent compiler warnings */
03AD C006 RJMP 0x03B4
(0130)
(0131) //OSTaskSuspend(5);
(0132) //OSTaskDel(4);
(0133) while (TRUE) { /* Task body, always written as an infinite loop. */
(0134) LED_Toggle(1);
03AE E001 LDI R16,1
03AF D0AF RCALL _LED_Toggle
(0135) OSTimeDly(OS_TICKS_PER_SEC / 50); //10
03B0 E001 LDI R16,1
03B1 E010 LDI R17,0
03B2 940E04EB CALL _OSTimeDly
03B4 CFF9 RJMP 0x03AE
03B5 940E0F14 CALL pop_gset1
03B7 9508 RET
_AppTaskCreate:
03B8 9723 SBIW R28,3
(0136)
(0137) }
(0138) }
(0139)
(0140)
(0141) /*
(0142) *********************************************************************************************************
(0143) * CREATE APPLICATION TASKS
(0144) *
(0145) * Description : This function creates the application tasks.
(0146) *
(0147) * Arguments : p_arg is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
(0148) *
(0149) * Notes : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
(0150) * used. The compiler should not generate any code for this statement.
(0151) *********************************************************************************************************
(0152) */
(0153)
(0154) static void AppTaskCreate (void)
(0155) {
(0156) /*---- Task initialization code goes HERE! --------------------------------------------------------*/
(0157) OSTaskStkSize = OS_TASK_1_STK_SIZE; /* Setup the default stack size */
03B9 E080 LDI R24,0
03BA E091 LDI R25,1
03BB 93900103 STS _OSTaskStkSize+1,R25
03BD 93800102 STS _OSTaskStkSize,R24
(0158) OSTaskHardStkSize = OS_TASK_1_HARD_STK_SIZE; /* Setup the default hardware stack size */
03BF E480 LDI R24,0x40
03C0 E090 LDI R25,0
03C1 93900101 STS _OSTaskHardStkSize+1,R25
03C3 93800100 STS _OSTaskHardStkSize,R24
(0159) OSTaskCreate(AppTask1, (void *)0, (OS_STK *)&AppTask1Stk[OSTaskStkSize - 1], 5);
03C5 E085 LDI R24,5
03C6 838A STD Y+2,R24
03C7 E088 LDI R24,0x8
03C8 E093 LDI R25,3
03C9 91E00102 LDS R30,_OSTaskStkSize
03CB 91F00103 LDS R31,_OSTaskStkSize+1
03CD 9731 SBIW R30,1
03CE 0FE8 ADD R30,R24
03CF 1FF9 ADC R31,R25
03D0 83F9 STD Y+1,R31
03D1 83E8 STD Y+0,R30
03D2 2722 CLR R18
03D3 2733 CLR R19
03D4 E80E LDI R16,0x8E
03D5 E010 LDI R17,0
03D6 940E0833 CALL _OSTaskCreate
(0160)
(0161) OSTaskStkSize = OS_TASK_2_STK_SIZE; /* Setup the default stack size */
03D8 E080 LDI R24,0
03D9 E091 LDI R25,1
03DA 93900103 STS _OSTaskStkSize+1,R25
03DC 93800102 STS _OSTaskStkSize,R24
(0162) OSTaskHardStkSize = OS_TASK_2_HARD_STK_SIZE; /* Setup the default hardware stack size */
03DE E480 LDI R24,0x40
03DF E090 LD
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?