📄 app.lis
字号:
.module app.c
.area vector(rom, abs)
.org 64
0040 0C940000 jmp _OSTickISR
.area text(rom, con, rel)
0000 .dbfile E:\ypt050912\XIAZAI\xinzai\UCOSAVR128\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 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 ; #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 ; **************************************************************************************************************
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 ; /*
0002 ; **************************************************************************************************************
0002 ; * FUNCTION PROTOTYPES
0002 ; **************************************************************************************************************
0002 ; */
0002 ;
0002 ; //void main(void);
0002 ; #pragma interrupt_handler OSTickISR:17
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 ;
0002 ; static void AppIOInit(void);
0002 ;
0002 ; static void LED_Toggle(INT8U led);
0002 ;
0002 ; OS_EVENT *testsem;
0002 ; OS_EVENT *testsem1;
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 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], 4);
0036 84E0 ldi R24,4
0038 8A83 std y+2,R24
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 95
005C ;
005C ;
005C ; OSTaskStkSize = OS_TASK_3_STK_SIZE; /* Setup the default stack size */
005C 80E0 ldi R24,256
005E 91E0 ldi R25,1
0060 90930100 sts _OSTaskStkSize+1,R25
0064 80930000 sts _OSTaskStkSize,R24
0068 .dbline 96
0068 ; OSTaskHardStkSize = OS_TASK_3_HARD_STK_SIZE; /* Setup the default hardware stack size */
0068 80E4 ldi R24,64
006A 90E0 ldi R25,0
006C 90930100 sts _OSTaskHardStkSize+1,R25
0070 80930000 sts _OSTaskHardStkSize,R24
0074 .dbline 97
0074 ; OSTaskCreate(AppTask3, (void *)0, (OS_STK *)&AppTask3Stk[OSTaskStkSize - 1], 7);
0074 87E0 ldi R24,7
0076 8A83 std y+2,R24
0078 80E0 ldi R24,<_AppTask3Stk
007A 90E0 ldi R25,>_AppTask3Stk
007C E0910000 lds R30,_OSTaskStkSize
0080 F0910100 lds R31,_OSTaskStkSize+1
0084 3197 sbiw R30,1
0086 E80F add R30,R24
0088 F91F adc R31,R25
008A F983 std y+1,R31
008C E883 std y+0,R30
008E 2227 clr R18
0090 3327 clr R19
0092 00E0 ldi R16,<PL_AppTask3
0094 10E0 ldi R17,>PL_AppTask3
0096 0E940000 xcall _OSTaskCreate
009A .dbline 103
009A ; //OSTaskCreate(AppTask3,(void *)0,(OS_STK *)&AppTask3Stk[OS_TASK_3_STK_SIZE-1],7);
009A ; /*---- Create any other task you want before we start multitasking --------------------------------*/
009A ;
009A ; /* Initialize the I/Os */
009A ;
009A ; OSTickISR_Init(); /* Initialize the ticker */
009A C1D0 xcall _OSTickISR_Init
009C .dbline 104
009C ; AppIOInit();
009C BCD0 xcall _AppIOInit
009E .dbline 105
009E ; AppTaskCreate();
009E 22D0 xcall _AppTaskCreate
00A0 .dbline 107
00A0 ;
00A0 ; testsem = OSSemCreate(1);
00A0 01E0 ldi R16,1
00A2 10E0 ldi R17,0
00A4 0E940000 xcall _OSSemCreate
00A8 10930300 sts _testsem+1,R17
00AC 00930200 sts _testsem,R16
00B0 .dbline 108
00B0 ; testsem1= OSSemCreate(0);
00B0 0027 clr R16
00B2 1127 clr R17
00B4 0E940000 xcall _OSSemCreate
00B8 10930100 sts _testsem1+1,R17
00BC 00930000 sts _testsem1,R16
00C0 .dbline 110
00C0 ;
00C0 ; OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
00C0 0E940000 xcall _OSStart
00C4 .dbline -2
00C4 L1:
00C4 2396 adiw R28,3
00C6 .dbline 0 ; func end
00C6 0895 ret
00C8 .dbend
00C8 .dbfunc s AppTaskStart _AppTaskStart fV
00C8 ; p_arg -> R20,R21
.even
00C8 _AppTaskStart:
00C8 0E940000 xcall push_gset1
00CC A801 movw R20,R16
00CE .dbline -1
00CE .dbline 128
00CE ; }
00CE ;
00CE ; /*
00CE ; *********************************************************************************************************
00CE ; * STARTUP TASK
00CE ; *
00CE ; * Description : This is an example of a startup task. As mentioned in the book's text, you MUST
00CE ; * initialize the ticker only once multitasking has started.
00CE ; *
00CE ; * Arguments : p_arg is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
00CE ; *
00CE ; * Notes : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
00CE ; * used. The compiler should not generate any code for this statement.
00CE ; *********************************************************************************************************
00CE ; */
00CE ;
00CE ; static void AppTaskStart (void *p_arg)
00CE ; {
00CE .dbline 129
00CE ; p_arg = p_arg; /* Prevent compiler warnings */
00CE 06C0 xjmp L4
00D0 L3:
00D0 .dbline 133
00D0 .dbline 134
00D0 01E0 ldi R16,1
00D2 AFD0 xcall _LED_Toggle
00D4 .dbline 135
00D4 01E0 ldi R16,1
00D6 10E0 ldi R17,0
00D8 0E940000 xcall _OSTimeDly
00DC .dbline 137
00DC L4:
00DC .dbline 133
00DC F9CF xjmp L3
00DE X0:
00DE .dbline -2
00DE L2:
00DE 0E940000 xcall pop_gset1
00E2 .dbline 0 ; func end
00E2 0895 ret
00E4 .dbsym r p_arg 20 pV
00E4 .dbend
00E4 .dbfunc s AppTaskCreate _AppTaskCreate fV
.even
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -