📄 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 84
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 7372800L
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 ; #define OS_TASK_3_STK_SIZE OS_TASK_STK_SIZE
0002 ; #define OS_TASK_3_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
0002 ;
0002 ; #define OS_TASK_4_STK_SIZE OS_TASK_STK_SIZE
0002 ; #define OS_TASK_4_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 ; OS_STK AppTask3Stk[OS_TASK_3_STK_SIZE];
0002 ; OS_STK AppTask4Stk[OS_TASK_4_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 ; static void AppTask3(void *p_arg);
0002 ; static void AppTask4(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 88
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 89
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 91
001A ;
001A ; OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
001A 0E940000 xcall _OSInit
001E .dbline 95
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 96
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 97
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 101
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 102
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 119
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 120
006A ; p_arg = p_arg; /* Prevent compiler warnings */
006A .dbline 122
006A ;
006A ; OSTickISR_Init(); /* Initialize the ticker */
006A D1D0 xcall _OSTickISR_Init
006C .dbline 124
006C ;
006C ; AppIOInit(); /* Initialize the I/Os */
006C C8D0 xcall _AppIOInit
006E .dbline 126
006E ;
006E ; AppTaskCreate();
006E 0BD0 xcall _AppTaskCreate
0070 06C0 xjmp L4
0072 L3:
0072 .dbline 128
0072 .dbline 129
0072 01E0 ldi R16,1
0074 D5D0 xcall _LED_Toggle
0076 .dbline 130
0076 02E3 ldi R16,50
0078 10E0 ldi R17,0
007A 0E940000 xcall _OSTimeDly
007E .dbline 131
007E L4:
007E .dbline 128
007E F9CF xjmp L3
0080 X0:
0080 .dbline -2
0080 .dbline 132
0080 ;
0080 ; while (TRUE) { /* Task body, always written as an infinite loop. */
0080 ; LED_Toggle(1);
0080 ; OSTimeDly(OS_TICKS_PER_SEC / 1);
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 149
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 151
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 152
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 153
00A0 ; OSTaskCreate(AppTask1, (void *)0, (OS_STK *)&AppTask1Stk[OSTaskStkSize - 1], 4);
00A0 84E0 ldi R24,4
00A2 8A83 std y+2,R24
00A4 80E0 ldi R24,<_AppTask1Stk
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -