?? user.lis
字號:
.module User.c
.area text(rom, con, rel)
0000 .dbfile C:\UCOS-II_AVR_ICC\RTOSIC~1\source\User.c
0000 .dbfunc e main _main fV
.even
0000 _main::
0000 2397 sbiw R28,3
0002 .dbline -1
0002 .dbline 74
0002 ; /*
0002 ; *************************************************************************************************************
0002 ; * uC/OS-II
0002 ; * The Real-Time Kernel
0002 ; *
0002 ; * ATmega128 Sample code
0002 ; *
0002 ; * File : APP.C
0002 ; * By : Jean J. Labrosse
0002 ; *************************************************************************************************************
0002 ; */
0002 ;
0002 ; #include <includes.h>
0002 ;
0002 ; /*
0002 ; **************************************************************************************************************
0002 ; * CONSTANTS
0002 ; *
0002 ; * Note(s) : 1) See OS_CFG.H for the default stack size: 'OS_TASK_STK_SIZE'
0002 ; **************************************************************************************************************
0002 ; */
0002 ;
0002 ; #define CPU_CLK_FREQ 3684000L
0002 ;
0002 ;
0002 ; #define OS_TASK_START_STK_SIZE OS_TASK_STK_SIZE
0002 ; #define OS_TASK_START_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
0002 ;
0002 ; #define OS_TASK_1_STK_SIZE OS_TASK_STK_SIZE
0002 ; #define OS_TASK_1_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
0002 ;
0002 ; #define OS_TASK_2_STK_SIZE OS_TASK_STK_SIZE
0002 ; #define OS_TASK_2_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
0002 ;
0002 ;
0002 ; /*
0002 ; **************************************************************************************************************
0002 ; * VARIABLES
0002 ; **************************************************************************************************************
0002 ; */
0002 ;
0002 ; OS_STK AppTaskStartStk[OS_TASK_START_STK_SIZE];
0002 ; OS_STK AppTask1Stk[OS_TASK_1_STK_SIZE];
0002 ; OS_STK AppTask2Stk[OS_TASK_2_STK_SIZE];
0002 ;
0002 ; /*
0002 ; **************************************************************************************************************
0002 ; * FUNCTION PROTOTYPES
0002 ; **************************************************************************************************************
0002 ; */
0002 ;
0002 ; void main(void);
0002 ;
0002 ; static void AppTaskStart(void *p_arg);
0002 ; static void AppTaskCreate(void);
0002 ; static void AppTask1(void *p_arg);
0002 ; static void AppTask2(void *p_arg);
0002 ;
0002 ; static void AppIOInit(void);
0002 ;
0002 ; static void LED_Toggle(INT8U led);
0002 ;
0002 ; /*
0002 ; **************************************************************************************************************
0002 ; * MAIN
0002 ; *
0002 ; * Note(s): 1) You SHOULD use OS_TASK_STK_SIZE (see OS_CFG.H) when setting OSTaskStkSize prior to calling
0002 ; * OSInit() because OS_TASK_IDLE_STK_SIZE and OS_TASK_STAT_STK_SIZE are set to this value in
0002 ; * OS_CFG.H.
0002 ; **************************************************************************************************************
0002 ; */
0002 ;
0002 ; void main (void)
0002 ; {
0002 .dbline 78
0002 ; /*---- Any initialization code prior to calling OSInit() goes HERE --------------------------------*/
0002 ;
0002 ; /* IMPORTANT: MUST be setup before calling 'OSInit()' */
0002 ; OSTaskStkSize = OS_TASK_STK_SIZE; /* Setup the default stack size */
0002 80E0 ldi R24,256
0004 91E0 ldi R25,1
0006 90930100 sts _OSTaskStkSize+1,R25
000A 80930000 sts _OSTaskStkSize,R24
000E .dbline 79
000E ; OSTaskHardStkSize = OS_TASK_HARD_STK_SIZE; /* Setup the default hardware stack size */
000E 80E4 ldi R24,64
0010 90E0 ldi R25,0
0012 90930100 sts _OSTaskHardStkSize+1,R25
0016 80930000 sts _OSTaskHardStkSize,R24
001A .dbline 81
001A ;
001A ; OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
001A 0E940000 xcall _OSInit
001E .dbline 85
001E ;
001E ; /*---- Any initialization code before starting multitasking ---------------------------------------*/
001E ;
001E ; OSTaskStkSize = OS_TASK_START_STK_SIZE; /* Setup the total stack size */
001E 80E0 ldi R24,256
0020 91E0 ldi R25,1
0022 90930100 sts _OSTaskStkSize+1,R25
0026 80930000 sts _OSTaskStkSize,R24
002A .dbline 86
002A ; OSTaskHardStkSize = OS_TASK_START_HARD_STK_SIZE; /* Setup the hardware stack size */
002A 80E4 ldi R24,64
002C 90E0 ldi R25,0
002E 90930100 sts _OSTaskHardStkSize+1,R25
0032 80930000 sts _OSTaskHardStkSize,R24
0036 .dbline 87
0036 ; OSTaskCreate(AppTaskStart, (void *)0, (OS_STK *)&AppTaskStartStk[OSTaskStkSize - 1], 0);
0036 2224 clr R2
0038 2A82 std y+2,R2
003A 80E0 ldi R24,<_AppTaskStartStk
003C 90E0 ldi R25,>_AppTaskStartStk
003E E0910000 lds R30,_OSTaskStkSize
0042 F0910100 lds R31,_OSTaskStkSize+1
0046 3197 sbiw R30,1
0048 E80F add R30,R24
004A F91F adc R31,R25
004C F983 std y+1,R31
004E E883 std y+0,R30
0050 2227 clr R18
0052 3327 clr R19
0054 00E0 ldi R16,<PL_AppTaskStart
0056 10E0 ldi R17,>PL_AppTaskStart
0058 0E940000 xcall _OSTaskCreate
005C .dbline 91
005C ;
005C ; /*---- Create any other task you want before we start multitasking --------------------------------*/
005C ;
005C ; OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
005C 0E940000 xcall _OSStart
0060 .dbline -2
0060 .dbline 92
0060 ; }
0060 L1:
0060 2396 adiw R28,3
0062 .dbline 0 ; func end
0062 0895 ret
0064 .dbend
0064 .dbfunc s AppTaskStart _AppTaskStart fV
0064 ; p_arg -> R20,R21
.even
0064 _AppTaskStart:
0064 0E940000 xcall push_gset1
0068 A801 movw R20,R16
006A .dbline -1
006A .dbline 109
006A ;
006A ; /*
006A ; *********************************************************************************************************
006A ; * STARTUP TASK
006A ; *
006A ; * Description : This is an example of a startup task. As mentioned in the book's text, you MUST
006A ; * initialize the ticker only once multitasking has started.
006A ; *
006A ; * Arguments : p_arg is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
006A ; *
006A ; * Notes : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
006A ; * used. The compiler should not generate any code for this statement.
006A ; *********************************************************************************************************
006A ; */
006A ;
006A ; static void AppTaskStart (void *p_arg)
006A ; {
006A .dbline 110
006A ; p_arg = p_arg; /* Prevent compiler warnings */
006A .dbline 112
006A ;
006A ; OSTickISR_Init(); /* Initialize the ticker */
006A 6ED0 xcall _OSTickISR_Init
006C .dbline 114
006C ;
006C ; AppIOInit(); /* Initialize the I/Os */
006C 69D0 xcall _AppIOInit
006E .dbline 116
006E ;
006E ; AppTaskCreate();
006E 0BD0 xcall _AppTaskCreate
0070 06C0 xjmp L4
0072 L3:
0072 .dbline 118
0072 .dbline 119
0072 01E0 ldi R16,1
0074 72D0 xcall _LED_Toggle
0076 .dbline 120
0076 05E0 ldi R16,5
0078 10E0 ldi R17,0
007A 0E940000 xcall _OSTimeDly
007E .dbline 121
007E L4:
007E .dbline 118
007E F9CF xjmp L3
0080 X0:
0080 .dbline -2
0080 .dbline 122
0080 ;
0080 ; while (TRUE) { /* Task body, always written as an infinite loop. */
0080 ; LED_Toggle(1);
0080 ; OSTimeDly(OS_TICKS_PER_SEC / 10);
0080 ; }
0080 ; }
0080 L2:
0080 0E940000 xcall pop_gset1
0084 .dbline 0 ; func end
0084 0895 ret
0086 .dbsym r p_arg 20 pV
0086 .dbend
0086 .dbfunc s AppTaskCreate _AppTaskCreate fV
.even
0086 _AppTaskCreate:
0086 2397 sbiw R28,3
0088 .dbline -1
0088 .dbline 139
0088 ;
0088 ;
0088 ; /*
0088 ; *********************************************************************************************************
0088 ; * CREATE APPLICATION TASKS
0088 ; *
0088 ; * Description : This function creates the application tasks.
0088 ; *
0088 ; * Arguments : p_arg is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
0088 ; *
0088 ; * Notes : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
0088 ; * used. The compiler should not generate any code for this statement.
0088 ; *********************************************************************************************************
0088 ; */
0088 ;
0088 ; static void AppTaskCreate (void)
0088 ; {
0088 .dbline 141
0088 ; /*---- Task initialization code goes HERE! --------------------------------------------------------*/
0088 ; OSTaskStkSize = OS_TASK_1_STK_SIZE; /* Setup the default stack size */
0088 80E0 ldi R24,256
008A 91E0 ldi R25,1
008C 90930100 sts _OSTaskStkSize+1,R25
0090 80930000 sts _OSTaskStkSize,R24
0094 .dbline 142
0094 ; OSTaskHardStkSize = OS_TASK_1_HARD_STK_SIZE; /* Setup the default hardware stack size */
0094 80E4 ldi R24,64
0096 90E0 ldi R25,0
0098 90930100 sts _OSTaskHardStkSize+1,R25
009C 80930000 sts _OSTaskHardStkSize,R24
00A0 .dbline 143
00A0 ; OSTaskCreate(AppTask1, (void *)0, (OS_STK *)&AppTask1Stk[OSTaskStkSize - 1], 1);
00A0 81E0 ldi R24,1
00A2 8A83 std y+2,R24
00A4 80E0 ldi R24,<_AppTask1Stk
00A6 90E0 ldi R25,>_AppTask1Stk
00A8 E0910000 lds R30,_OSTaskStkSize
00AC F0910100 lds R31,_OSTaskStkSize+1
00B0 3197 sbiw R30,1
00B2 E80F add R30,R24
00B4 F91F adc R31,R25
00B6 F983 std y+1,R31
00B8 E883 std y+0,R30
00BA 2227 clr R18
00BC 3327 clr R19
00BE 00E0 ldi R16,<PL_AppTask1
00C0 10E0 ldi R17,>PL_AppTask1
00C2 0E940000 xcall _OSTaskCreate
00C6 .dbline 145
00C6 ;
00C6 ; OSTaskStkSize = OS_TASK_2_STK_SIZE; /* Setup the default stack size */
00C6 80E0 ldi R24,256
00C8 91E0 ldi R25,1
00CA 90930100 sts _OSTaskStkSize+1,R25
00CE 80930000 sts _OSTaskStkSize,R24
00D2 .dbline 146
00D2 ; OSTaskHardStkSize = OS_TASK_2_HARD_STK_SIZE; /* Setup the default hardware stack size */
00D2 80E4 ldi R24,64
00D4 90E0 ldi R25,0
00D6 90930100 sts _OSTaskHardStkSize+1,R25
00DA 80930000 sts _OSTaskHardStkSize,R24
00DE .dbline 147
00DE ; OSTaskCreate(AppTask2, (void *)0, (OS_STK *)&AppTask2Stk[OSTaskStkSize - 1], 2);
00DE 82E0 ldi R24,2
00E0 8A83 std y+2,R24
00E2 80E0 ldi R24,<_AppTask2Stk
00E4 90E0 ldi R25,>_AppTask2Stk
00E6 E0910000 lds R30,_OSTaskStkSize
00EA F0910100 lds R31,_OSTaskStkSize+1
00EE 3197 sbiw R30,1
00F0 E80F add R30,R24
00F2 F91F adc R31,R25
00F4 F983 std y+1,R31
00F6 E883 std y+0,R30
00F8 2227 clr R18
00FA 3327 clr R19
00FC 00E0 ldi R16,<PL_AppTask2
00FE 10E0 ldi R17,>PL_AppTask2
0100 0E940000 xcall _OSTaskCreate
0104 .dbline -2
0104 .dbline 148
0104 ; }
0104 L6:
0104 2396 adiw R28,3
0106 .dbline 0 ; func end
0106 0895 ret
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -