📄 app.lis
字号:
.module app.c
.area text(rom, con, rel)
0000 .dbfile D:\MICRIUM\app.c
0000 .dbfunc e main _main fV
.even
0000 _main::
0000 2397 sbiw R28,3
0002 .dbline -1
0002 .dbline 79
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 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 ; /*
0002 ; #pragma interrupt_handler timer0_ovf_isr:17
0002 ; void timer0_ovf_isr(void)
0002 ; {
0002 ; OSTickISR();
0002 ; }
0002 ; */
0002 ;
0002 ; void main (void)
0002 ; {
0002 .dbline 83
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 84
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 86
001A ;
001A ; OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
001A 0E940000 xcall _OSInit
001E .dbline 90
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 91
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 92
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 96
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 L1:
0060 .dbline 0 ; func end
0060 2396 adiw R28,3
0062 0895 ret
0064 .dbend
0064 .dbfunc s AppTaskStart _AppTaskStart fV
0064 ; p_arg -> <dead>
.even
0064 _AppTaskStart:
0064 1A93 st -y,r17
0066 0A93 st -y,r16
0068 .dbline -1
0068 .dbline 114
0068 ; }
0068 ;
0068 ; /*
0068 ; *********************************************************************************************************
0068 ; * STARTUP TASK
0068 ; *
0068 ; * Description : This is an example of a startup task. As mentioned in the book's text, you MUST
0068 ; * initialize the ticker only once multitasking has started.
0068 ; *
0068 ; * Arguments : p_arg is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
0068 ; *
0068 ; * Notes : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
0068 ; * used. The compiler should not generate any code for this statement.
0068 ; *********************************************************************************************************
0068 ; */
0068 ;
0068 ; static void AppTaskStart (void *p_arg)
0068 ; {
0068 .dbline 115
0068 ; p_arg = p_arg; /* Prevent compiler warnings */
0068 .dbline 117
0068 ;
0068 ; OSTickISR_Init(); /* Initialize the ticker */
0068 0E940000 xcall _OSTickISR_Init
006C .dbline 119
006C ;
006C ; AppIOInit(); /* Initialize the I/Os */
006C 64D0 xcall _AppIOInit
006E .dbline 121
006E ;
006E ; AppTaskCreate();
006E 0AD0 xcall _AppTaskCreate
0070 06C0 xjmp L4
0072 L3:
0072 .dbline 123
0072 ;
0072 ; while (TRUE) { /* Task body, always written as an infinite loop. */
0072 .dbline 124
0072 ; LED_Toggle(1);
0072 01E0 ldi R16,1
0074 64D0 xcall _LED_Toggle
0076 .dbline 125
0076 ; OSTimeDly(OS_TICKS_PER_SEC / 10);
0076 05E0 ldi R16,5
0078 10E0 ldi R17,0
007A 0E940000 xcall _OSTimeDly
007E .dbline 126
007E ; }
007E L4:
007E .dbline 123
007E F9CF xjmp L3
0080 X0:
0080 .dbline -2
0080 L2:
0080 .dbline 0 ; func end
0080 2296 adiw R28,2
0082 0895 ret
0084 .dbsym l p_arg 0 pV
0084 .dbend
0084 .dbfunc s AppTaskCreate _AppTaskCreate fV
.even
0084 _AppTaskCreate:
0084 2397 sbiw R28,3
0086 .dbline -1
0086 .dbline 144
0086 ; }
0086 ;
0086 ;
0086 ; /*
0086 ; *********************************************************************************************************
0086 ; * CREATE APPLICATION TASKS
0086 ; *
0086 ; * Description : This function creates the application tasks.
0086 ; *
0086 ; * Arguments : p_arg is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
0086 ; *
0086 ; * Notes : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
0086 ; * used. The compiler should not generate any code for this statement.
0086 ; *********************************************************************************************************
0086 ; */
0086 ;
0086 ; static void AppTaskCreate (void)
0086 ; {
0086 .dbline 146
0086 ; /*---- Task initialization code goes HERE! --------------------------------------------------------*/
0086 ; OSTaskStkSize = OS_TASK_1_STK_SIZE; /* Setup the default stack size */
0086 80E0 ldi R24,256
0088 91E0 ldi R25,1
008A 90930100 sts _OSTaskStkSize+1,R25
008E 80930000 sts _OSTaskStkSize,R24
0092 .dbline 147
0092 ; OSTaskHardStkSize = OS_TASK_1_HARD_STK_SIZE; /* Setup the default hardware stack size */
0092 80E4 ldi R24,64
0094 90E0 ldi R25,0
0096 90930100 sts _OSTaskHardStkSize+1,R25
009A 80930000 sts _OSTaskHardStkSize,R24
009E .dbline 148
009E ; OSTaskCreate(AppTask1, (void *)0, (OS_STK *)&AppTask1Stk[OSTaskStkSize - 1], 1);
009E 81E0 ldi R24,1
00A0 8A83 std y+2,R24
00A2 80E0 ldi R24,<_AppTask1Stk
00A4 90E0 ldi R25,>_AppTask1Stk
00A6 E0910000 lds R30,_OSTaskStkSize
00AA F0910100 lds R31,_OSTaskStkSize+1
00AE 3197 sbiw R30,1
00B0 E80F add R30,R24
00B2 F91F adc R31,R25
00B4 F983 std y+1,R31
00B6 E883 std y+0,R30
00B8 2227 clr R18
00BA 3327 clr R19
00BC 00E0 ldi R16,<PL_AppTask1
00BE 10E0 ldi R17,>PL_AppTask1
00C0 0E940000 xcall _OSTaskCreate
00C4 .dbline 150
00C4 ;
00C4 ; OSTaskStkSize = OS_TASK_2_STK_SIZE; /* Setup the default stack size */
00C4 80E0 ldi R24,256
00C6 91E0 ldi R25,1
00C8 90930100 sts _OSTaskStkSize+1,R25
00CC 80930000 sts _OSTaskStkSize,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -