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

📄 app.lis

📁 将本站的UCOSFORAVR128V276版本升级到了280版
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .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 + -