test.lst

来自「将本站的UCOSFORAVR128V276版本升级到了280版」· LST 代码 · 共 1,505 行 · 第 1/5 页

LST
1,505
字号
(0250) /*
(0251) *********************************************************************************************************
(0252) *                                           OS_TCBInit() HOOK
(0253) *
(0254) * Description: This function is called by OS_TCBInit() after setting up most of the TCB.
(0255) *
(0256) * Arguments  : ptcb    is a pointer to the TCB of the task being created.
(0257) *
(0258) * Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
(0259) *********************************************************************************************************
(0260) */
(0261) #if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
(0262) void  OSTCBInitHook (OS_TCB *ptcb)
(0263) {
(0264)     ptcb = ptcb;                                           /* Prevent Compiler warning                 */
_OSTCBInitHook:
  ptcb                 --> R16
    0349 9508      RET
_main:
    034A 9723      SBIW	R28,3
FILE: E:\ypt050912\XIAZAI\xinzai\UCOSAVR128\app.c
(0001) /*
(0002) *************************************************************************************************************
(0003) *                                                uC/OS-II
(0004) *                                          The Real-Time Kernel
(0005) *
(0006) *                                         ATmega128  Sample code
(0007) *
(0008) * File : APP.C
(0009) * By   : Jean J. Labrosse
(0010) *************************************************************************************************************
(0011) */
(0012) 
(0013) #include  <includes.h>
(0014) 
(0015) /*
(0016) **************************************************************************************************************
(0017) *                                               CONSTANTS
(0018) *
(0019) * Note(s) : 1) See OS_CFG.H for the default stack size: 'OS_TASK_STK_SIZE'
(0020) **************************************************************************************************************
(0021) */
(0022) 
(0023) #define  CPU_CLK_FREQ                  3684000L
(0024) 
(0025) 
(0026) #define  OS_TASK_START_STK_SIZE        OS_TASK_STK_SIZE
(0027) #define  OS_TASK_START_HARD_STK_SIZE   OS_TASK_HARD_STK_SIZE
(0028) 
(0029) #define  OS_TASK_1_STK_SIZE            OS_TASK_STK_SIZE
(0030) #define  OS_TASK_1_HARD_STK_SIZE       OS_TASK_HARD_STK_SIZE
(0031) 
(0032) #define  OS_TASK_2_STK_SIZE            OS_TASK_STK_SIZE
(0033) #define  OS_TASK_2_HARD_STK_SIZE       OS_TASK_HARD_STK_SIZE
(0034) 
(0035) #define  OS_TASK_3_STK_SIZE            OS_TASK_STK_SIZE
(0036) #define  OS_TASK_3_HARD_STK_SIZE       OS_TASK_HARD_STK_SIZE
(0037) /*
(0038) **************************************************************************************************************
(0039) *                                               VARIABLES
(0040) **************************************************************************************************************
(0041) */
(0042) 
(0043) OS_STK  AppTaskStartStk[OS_TASK_START_STK_SIZE];
(0044) OS_STK  AppTask1Stk[OS_TASK_1_STK_SIZE];
(0045) OS_STK  AppTask2Stk[OS_TASK_2_STK_SIZE];
(0046) OS_STK  AppTask3Stk[OS_TASK_3_STK_SIZE];
(0047) /*
(0048) **************************************************************************************************************
(0049) *                                           FUNCTION PROTOTYPES
(0050) **************************************************************************************************************
(0051) */
(0052) 
(0053) //void  main(void);
(0054) #pragma interrupt_handler OSTickISR:17
(0055)    
(0056) static void  AppTaskStart(void *p_arg);
(0057) static void  AppTaskCreate(void);
(0058) static void  AppTask1(void *p_arg);
(0059) static void  AppTask2(void *p_arg);
(0060) static void  AppTask3(void *p_arg);
(0061) 
(0062) static void  AppIOInit(void);
(0063) 
(0064) static void  LED_Toggle(INT8U led);
(0065) 
(0066) OS_EVENT *testsem;
(0067) OS_EVENT *testsem1;
(0068) /*
(0069) **************************************************************************************************************
(0070) *                                                MAIN
(0071) *
(0072) * Note(s): 1) You SHOULD use OS_TASK_STK_SIZE (see OS_CFG.H) when setting OSTaskStkSize prior to calling 
(0073) *             OSInit() because OS_TASK_IDLE_STK_SIZE and OS_TASK_STAT_STK_SIZE are set to this value in
(0074) *             OS_CFG.H.
(0075) **************************************************************************************************************
(0076) */
(0077) 
(0078) void  main (void)
(0079) {
(0080)     /*---- Any initialization code prior to calling OSInit() goes HERE --------------------------------*/
(0081) 
(0082)                                                 /* IMPORTANT: MUST be setup before calling 'OSInit()'  */
(0083)     OSTaskStkSize     = OS_TASK_STK_SIZE;       /* Setup the default stack size                        */
    034B E080      LDI	R24,0
    034C E091      LDI	R25,1
    034D 93900103  STS	_OSTaskStkSize+1,R25
    034F 93800102  STS	_OSTaskStkSize,R24
(0084)     OSTaskHardStkSize = OS_TASK_HARD_STK_SIZE;  /* Setup the default hardware stack size               */
    0351 E480      LDI	R24,0x40
    0352 E090      LDI	R25,0
    0353 93900101  STS	_OSTaskHardStkSize+1,R25
    0355 93800100  STS	_OSTaskHardStkSize,R24
(0085) 
(0086)     OSInit();                                   /* Initialize "uC/OS-II, The Real-Time Kernel"         */
    0357 940E0745  CALL	_OSInit
(0087) 
(0088)     /*---- Any initialization code before starting multitasking ---------------------------------------*/
(0089) 
(0090)     OSTaskStkSize     = OS_TASK_START_STK_SIZE;       /* Setup the total stack size                    */
    0359 E080      LDI	R24,0
    035A E091      LDI	R25,1
    035B 93900103  STS	_OSTaskStkSize+1,R25
    035D 93800102  STS	_OSTaskStkSize,R24
(0091)     OSTaskHardStkSize = OS_TASK_START_HARD_STK_SIZE;  /* Setup the hardware stack size                 */
    035F E480      LDI	R24,0x40
    0360 E090      LDI	R25,0
    0361 93900101  STS	_OSTaskHardStkSize+1,R25
    0363 93800100  STS	_OSTaskHardStkSize,R24
(0092)     OSTaskCreate(AppTaskStart, (void *)0, (OS_STK *)&AppTaskStartStk[OSTaskStkSize - 1], 4);
    0365 E084      LDI	R24,4
    0366 838A      STD	Y+2,R24
    0367 E088      LDI	R24,0x8
    0368 E094      LDI	R25,4
    0369 91E00102  LDS	R30,_OSTaskStkSize
    036B 91F00103  LDS	R31,_OSTaskStkSize+1
    036D 9731      SBIW	R30,1
    036E 0FE8      ADD	R30,R24
    036F 1FF9      ADC	R31,R25
    0370 83F9      STD	Y+1,R31
    0371 83E8      STD	Y+0,R30
    0372 2722      CLR	R18
    0373 2733      CLR	R19
    0374 E902      LDI	R16,0x92
    0375 E010      LDI	R17,0
    0376 940E06CB  CALL	_OSTaskCreate
(0093) 
(0094) 	
(0095) 	OSTaskStkSize     = OS_TASK_3_STK_SIZE;        /* Setup the default stack size                     */
    0378 E080      LDI	R24,0
    0379 E091      LDI	R25,1
    037A 93900103  STS	_OSTaskStkSize+1,R25
    037C 93800102  STS	_OSTaskStkSize,R24
(0096)     OSTaskHardStkSize = OS_TASK_3_HARD_STK_SIZE;   /* Setup the default hardware stack size            */
    037E E480      LDI	R24,0x40
    037F E090      LDI	R25,0
    0380 93900101  STS	_OSTaskHardStkSize+1,R25
    0382 93800100  STS	_OSTaskHardStkSize,R24
(0097)     OSTaskCreate(AppTask3, (void *)0, (OS_STK *)&AppTask3Stk[OSTaskStkSize - 1], 7);
    0384 E087      LDI	R24,7
    0385 838A      STD	Y+2,R24
    0386 E088      LDI	R24,0x8
    0387 E091      LDI	R25,1
    0388 91E00102  LDS	R30,_OSTaskStkSize
    038A 91F00103  LDS	R31,_OSTaskStkSize+1
    038C 9731      SBIW	R30,1
    038D 0FE8      ADD	R30,R24
    038E 1FF9      ADC	R31,R25
    038F 83F9      STD	Y+1,R31
    0390 83E8      STD	Y+0,R30
    0391 2722      CLR	R18
    0392 2733      CLR	R19
    0393 E900      LDI	R16,0x90
    0394 E010      LDI	R17,0
    0395 940E06CB  CALL	_OSTaskCreate
(0098) 	//OSTaskCreate(AppTask3,(void *)0,(OS_STK *)&AppTask3Stk[OS_TASK_3_STK_SIZE-1],7);
(0099)     /*---- Create any other task you want before we start multitasking --------------------------------*/
(0100) 	
(0101)                                /* Initialize the I/Os                                */
(0102)  
(0103)     OSTickISR_Init();                            /* Initialize the ticker                              */
    0397 D0C1      RCALL	_OSTickISR_Init
(0104)     AppIOInit(); 
    0398 D0BC      RCALL	_AppIOInit
(0105)     AppTaskCreate();  
    0399 D022      RCALL	_AppTaskCreate
(0106) 
(0107) 	testsem = OSSemCreate(1);
    039A E001      LDI	R16,1
    039B E010      LDI	R17,0
    039C 940E05EE  CALL	_OSSemCreate
    039E 93100107  STS	_testsem+1,R17
    03A0 93000106  STS	_testsem,R16
(0108) 	testsem1= OSSemCreate(0);
    03A2 2700      CLR	R16
    03A3 2711      CLR	R17
    03A4 940E05EE  CALL	_OSSemCreate
    03A6 93100105  STS	_testsem1+1,R17
    03A8 93000104  STS	_testsem1,R16
(0109) 	
(0110)     OSStart();                                  /* Start multitasking (i.e. give control to uC/OS-II)  */
    03AA 940E07E4  CALL	_OSStart
    03AC 9623      ADIW	R28,3
    03AD 9508      RET
_AppTaskStart:
  p_arg                --> R20
    03AE 940E0C84  CALL	push_gset1
    03B0 01A8      MOVW	R20,R16
(0111) }
(0112) 
(0113) /*
(0114) *********************************************************************************************************
(0115) *                                          STARTUP TASK
(0116) *
(0117) * Description : This is an example of a startup task.  As mentioned in the book's text, you MUST
(0118) *               initialize the ticker only once multitasking has started.
(0119) *
(0120) * Arguments   : p_arg   is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
(0121) *
(0122) * Notes       : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
(0123) *                  used.  The compiler should not generate any code for this statement.
(0124) *********************************************************************************************************
(0125) */
(0126) 
(0127) static void  AppTaskStart (void *p_arg)
(0128) {
(0129)     p_arg = p_arg;                               /* Prevent compiler warnings                          */
    03B1 C006      RJMP	0x03B8
(0130)     
(0131) 	//OSTaskSuspend(5);
(0132)     //OSTaskDel(4);
(0133)     while (TRUE) {                               /* Task body, always written as an infinite loop.     */
(0134)         LED_Toggle(1);
    03B2 E001      LDI	R16,1
    03B3 D0AF      RCALL	_LED_Toggle
(0135)         OSTimeDly(OS_TICKS_PER_SEC / 50);   //10
    03B4 E001      LDI	R16,1
    03B5 E010      LDI	R17,0
    03B6 940E04EF  CALL	_OSTimeDly
    03B8 CFF9      RJMP	0x03B2
    03B9 940E0C87  CALL	pop_gset1
    03BB 9508      RET
_AppTaskCreate:
    03BC 9723      SBIW	R28,3
(0136) 		
(0137)     }
(0138) }
(0139) 
(0140) 
(0141) /*
(0142) *********************************************************************************************************
(0143) *                                    CREATE APPLICATION TASKS
(0144) *
(0145) * Description : This function creates the application tasks.
(0146) *
(0147) * Arguments   : p_arg   is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
(0148) *
(0149) * Notes       : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
(0150) *                  used.  The compiler should not generate any code for this statement.
(0151) *********************************************************************************************************
(0152) */
(0153) 
(0154) static  void  AppTaskCreate (void)
(0155) {
(0156)     /*---- Task initialization code goes HERE! --------------------------------------------------------*/
(0157)     OSTaskStkSize     = OS_TASK_1_STK_SIZE;        /* Setup the default stack size                     */
    03BD E080      LDI	R24,0
    03BE E091      LDI	R25,1
    03BF 93900103  STS	_OSTaskStkSize+1,R25
    03C1 93800102  STS	_OSTaskStkSize,R24
(0158)     OSTaskHardStkSize = OS_TASK_1_HARD_STK_SIZE;   /* Setup the default hardware stack size            */
    03C3 E480      LDI	R24,0x40
    03C4 E090      LDI	R25,0
    03C5 93900101  STS	_OSTaskHardStkSize+1,R25
    03C7 93800100  STS	_OSTaskHardStkSize,R24
(0159)     OSTaskCreate(AppTask1, (void *)0, (OS_STK *)&AppTask1Stk[OSTaskStkSize - 1], 5);
    03C9 E085      LDI	R24,5
    03CA 838A      STD	Y+2,R24
    03CB E088      LDI	R24,0x8
    03CC E093      LDI	R25,3
    03CD 91E00102  LDS	R30,_OSTaskStkSize
    03CF 91F00103  LDS	R31,_OSTaskStkSize+1
    03D1 9731      SBIW	R30,1
    03D2 0FE8      ADD	R30,R24
    03D3 1FF9      ADC	R31,R25
    03D4 83F9      STD	Y+1,R31
    03D5 83E8      STD	Y+0,R30
    03D6 2722      CLR	R18
    03D7 2733      CLR	R19
    03D8 E80E      LDI	R16,0x8E
    03D9 E010      LDI	R17,0
    03DA 940E06CB  CALL	_OSTaskCreate
(0160) 
(0161)     OSTaskStkSize     = OS_TASK_2_STK_SIZE;        /* Setup the default stack size                     */
    03DC E080      LDI	R24,0
    03DD E091      LDI	R25,1
    03DE 93900103  STS	_OSTaskStkSize+1,R25
    03E0 93800102  STS	_OSTaskStkSize,R24
(0162)     OSTaskHardStkSize = OS_TASK_2_HARD_STK_SIZE;   /* Setup the default hardware stack size            */
    03E2 E480      LDI	R24,0x40
    03E3 E090      LDI	R2

⌨️ 快捷键说明

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