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
0349 9508 RET
_main:
034A 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 */
034B E080 LDI R24,0
034C E091 LDI R25,1
034D 93900103 STS _OSTaskStkSize+1,R25
034F 93800102 STS _OSTaskStkSize,R24
(0084) OSTaskHardStkSize = OS_TASK_HARD_STK_SIZE; /* Setup the default hardware stack size */
0351 E480 LDI R24,0x40
0352 E090 LDI R25,0
0353 93900101 STS _OSTaskHardStkSize+1,R25
0355 93800100 STS _OSTaskHardStkSize,R24
(0085)
(0086) OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
0357 940E0745 CALL _OSInit
(0087)
(0088) /*---- Any initialization code before starting multitasking ---------------------------------------*/
(0089)
(0090) OSTaskStkSize = OS_TASK_START_STK_SIZE; /* Setup the total stack size */
0359 E080 LDI R24,0
035A E091 LDI R25,1
035B 93900103 STS _OSTaskStkSize+1,R25
035D 93800102 STS _OSTaskStkSize,R24
(0091) OSTaskHardStkSize = OS_TASK_START_HARD_STK_SIZE; /* Setup the hardware stack size */
035F E480 LDI R24,0x40
0360 E090 LDI R25,0
0361 93900101 STS _OSTaskHardStkSize+1,R25
0363 93800100 STS _OSTaskHardStkSize,R24
(0092) OSTaskCreate(AppTaskStart, (void *)0, (OS_STK *)&AppTaskStartStk[OSTaskStkSize - 1], 4);
0365 E084 LDI R24,4
0366 838A STD Y+2,R24
0367 E088 LDI R24,0x8
0368 E094 LDI R25,4
0369 91E00102 LDS R30,_OSTaskStkSize
036B 91F00103 LDS R31,_OSTaskStkSize+1
036D 9731 SBIW R30,1
036E 0FE8 ADD R30,R24
036F 1FF9 ADC R31,R25
0370 83F9 STD Y+1,R31
0371 83E8 STD Y+0,R30
0372 2722 CLR R18
0373 2733 CLR R19
0374 E902 LDI R16,0x92
0375 E010 LDI R17,0
0376 940E06CB CALL _OSTaskCreate
(0093)
(0094)
(0095) OSTaskStkSize = OS_TASK_3_STK_SIZE; /* Setup the default stack size */
0378 E080 LDI R24,0
0379 E091 LDI R25,1
037A 93900103 STS _OSTaskStkSize+1,R25
037C 93800102 STS _OSTaskStkSize,R24
(0096) OSTaskHardStkSize = OS_TASK_3_HARD_STK_SIZE; /* Setup the default hardware stack size */
037E E480 LDI R24,0x40
037F E090 LDI R25,0
0380 93900101 STS _OSTaskHardStkSize+1,R25
0382 93800100 STS _OSTaskHardStkSize,R24
(0097) OSTaskCreate(AppTask3, (void *)0, (OS_STK *)&AppTask3Stk[OSTaskStkSize - 1], 7);
0384 E087 LDI R24,7
0385 838A STD Y+2,R24
0386 E088 LDI R24,0x8
0387 E091 LDI R25,1
0388 91E00102 LDS R30,_OSTaskStkSize
038A 91F00103 LDS R31,_OSTaskStkSize+1
038C 9731 SBIW R30,1
038D 0FE8 ADD R30,R24
038E 1FF9 ADC R31,R25
038F 83F9 STD Y+1,R31
0390 83E8 STD Y+0,R30
0391 2722 CLR R18
0392 2733 CLR R19
0393 E900 LDI R16,0x90
0394 E010 LDI R17,0
0395 940E06CB 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 */
0397 D0C1 RCALL _OSTickISR_Init
(0104) AppIOInit();
0398 D0BC RCALL _AppIOInit
(0105) AppTaskCreate();
0399 D022 RCALL _AppTaskCreate
(0106)
(0107) testsem = OSSemCreate(1);
039A E001 LDI R16,1
039B E010 LDI R17,0
039C 940E05EE CALL _OSSemCreate
039E 93100107 STS _testsem+1,R17
03A0 93000106 STS _testsem,R16
(0108) testsem1= OSSemCreate(0);
03A2 2700 CLR R16
03A3 2711 CLR R17
03A4 940E05EE CALL _OSSemCreate
03A6 93100105 STS _testsem1+1,R17
03A8 93000104 STS _testsem1,R16
(0109)
(0110) OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
03AA 940E07E4 CALL _OSStart
03AC 9623 ADIW R28,3
03AD 9508 RET
_AppTaskStart:
p_arg --> R20
03AE 940E0C84 CALL push_gset1
03B0 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 */
03B1 C006 RJMP 0x03B8
(0130)
(0131) //OSTaskSuspend(5);
(0132) //OSTaskDel(4);
(0133) while (TRUE) { /* Task body, always written as an infinite loop. */
(0134) LED_Toggle(1);
03B2 E001 LDI R16,1
03B3 D0AF RCALL _LED_Toggle
(0135) OSTimeDly(OS_TICKS_PER_SEC / 50); //10
03B4 E001 LDI R16,1
03B5 E010 LDI R17,0
03B6 940E04EF CALL _OSTimeDly
03B8 CFF9 RJMP 0x03B2
03B9 940E0C87 CALL pop_gset1
03BB 9508 RET
_AppTaskCreate:
03BC 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 */
03BD E080 LDI R24,0
03BE E091 LDI R25,1
03BF 93900103 STS _OSTaskStkSize+1,R25
03C1 93800102 STS _OSTaskStkSize,R24
(0158) OSTaskHardStkSize = OS_TASK_1_HARD_STK_SIZE; /* Setup the default hardware stack size */
03C3 E480 LDI R24,0x40
03C4 E090 LDI R25,0
03C5 93900101 STS _OSTaskHardStkSize+1,R25
03C7 93800100 STS _OSTaskHardStkSize,R24
(0159) OSTaskCreate(AppTask1, (void *)0, (OS_STK *)&AppTask1Stk[OSTaskStkSize - 1], 5);
03C9 E085 LDI R24,5
03CA 838A STD Y+2,R24
03CB E088 LDI R24,0x8
03CC E093 LDI R25,3
03CD 91E00102 LDS R30,_OSTaskStkSize
03CF 91F00103 LDS R31,_OSTaskStkSize+1
03D1 9731 SBIW R30,1
03D2 0FE8 ADD R30,R24
03D3 1FF9 ADC R31,R25
03D4 83F9 STD Y+1,R31
03D5 83E8 STD Y+0,R30
03D6 2722 CLR R18
03D7 2733 CLR R19
03D8 E80E LDI R16,0x8E
03D9 E010 LDI R17,0
03DA 940E06CB CALL _OSTaskCreate
(0160)
(0161) OSTaskStkSize = OS_TASK_2_STK_SIZE; /* Setup the default stack size */
03DC E080 LDI R24,0
03DD E091 LDI R25,1
03DE 93900103 STS _OSTaskStkSize+1,R25
03E0 93800102 STS _OSTaskStkSize,R24
(0162) OSTaskHardStkSize = OS_TASK_2_HARD_STK_SIZE; /* Setup the default hardware stack size */
03E2 E480 LDI R24,0x40
03E3 E090 LDI R2
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?