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

📄 app.lis

📁 基于mega128的ucos参考源码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module app.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\MYDOCU~1\doc_ucosii_data_m128_iccavr_by_zhifeng\app.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           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           ; *********************************************************************************************************
 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 73D0              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           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           ;     while (TRUE) {                               /* Task body, always written as an infinite loop.     */
 0088           ;         LED_Toggle(1);
 0088           ;         OSTimeDly(OS_TICKS_PER_SEC / 10);
 0088           ;     }
 0088           ; }
 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           L6:
 0104 2396              adiw R28,3
 0106                   .dbline 0 ; func end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -