⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.lis

📁 ucos在mage128上的应用
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -