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
    0345 9508      RET
_main:
    0346 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                        */
    0347 E080      LDI	R24,0
    0348 E091      LDI	R25,1
    0349 93900103  STS	_OSTaskStkSize+1,R25
    034B 93800102  STS	_OSTaskStkSize,R24
(0084)     OSTaskHardStkSize = OS_TASK_HARD_STK_SIZE;  /* Setup the default hardware stack size               */
    034D E480      LDI	R24,0x40
    034E E090      LDI	R25,0
    034F 93900101  STS	_OSTaskHardStkSize+1,R25
    0351 93800100  STS	_OSTaskHardStkSize,R24
(0085) 
(0086)     OSInit();                                   /* Initialize "uC/OS-II, The Real-Time Kernel"         */
    0353 940E09CC  CALL	_OSInit
(0087) 
(0088)     /*---- Any initialization code before starting multitasking ---------------------------------------*/
(0089) 
(0090)     OSTaskStkSize     = OS_TASK_START_STK_SIZE;       /* Setup the total stack size                    */
    0355 E080      LDI	R24,0
    0356 E091      LDI	R25,1
    0357 93900103  STS	_OSTaskStkSize+1,R25
    0359 93800102  STS	_OSTaskStkSize,R24
(0091)     OSTaskHardStkSize = OS_TASK_START_HARD_STK_SIZE;  /* Setup the hardware stack size                 */
    035B E480      LDI	R24,0x40
    035C E090      LDI	R25,0
    035D 93900101  STS	_OSTaskHardStkSize+1,R25
    035F 93800100  STS	_OSTaskHardStkSize,R24
(0092)     OSTaskCreate(AppTaskStart, (void *)0, (OS_STK *)&AppTaskStartStk[OSTaskStkSize - 1], 4);
    0361 E084      LDI	R24,4
    0362 838A      STD	Y+2,R24
    0363 E088      LDI	R24,0x8
    0364 E094      LDI	R25,4
    0365 91E00102  LDS	R30,_OSTaskStkSize
    0367 91F00103  LDS	R31,_OSTaskStkSize+1
    0369 9731      SBIW	R30,1
    036A 0FE8      ADD	R30,R24
    036B 1FF9      ADC	R31,R25
    036C 83F9      STD	Y+1,R31
    036D 83E8      STD	Y+0,R30
    036E 2722      CLR	R18
    036F 2733      CLR	R19
    0370 E902      LDI	R16,0x92
    0371 E010      LDI	R17,0
    0372 940E0833  CALL	_OSTaskCreate
(0093) 
(0094) 	
(0095) 	OSTaskStkSize     = OS_TASK_3_STK_SIZE;        /* Setup the default stack size                     */
    0374 E080      LDI	R24,0
    0375 E091      LDI	R25,1
    0376 93900103  STS	_OSTaskStkSize+1,R25
    0378 93800102  STS	_OSTaskStkSize,R24
(0096)     OSTaskHardStkSize = OS_TASK_3_HARD_STK_SIZE;   /* Setup the default hardware stack size            */
    037A E480      LDI	R24,0x40
    037B E090      LDI	R25,0
    037C 93900101  STS	_OSTaskHardStkSize+1,R25
    037E 93800100  STS	_OSTaskHardStkSize,R24
(0097)     OSTaskCreate(AppTask3, (void *)0, (OS_STK *)&AppTask3Stk[OSTaskStkSize - 1], 7);
    0380 E087      LDI	R24,7
    0381 838A      STD	Y+2,R24
    0382 E088      LDI	R24,0x8
    0383 E091      LDI	R25,1
    0384 91E00102  LDS	R30,_OSTaskStkSize
    0386 91F00103  LDS	R31,_OSTaskStkSize+1
    0388 9731      SBIW	R30,1
    0389 0FE8      ADD	R30,R24
    038A 1FF9      ADC	R31,R25
    038B 83F9      STD	Y+1,R31
    038C 83E8      STD	Y+0,R30
    038D 2722      CLR	R18
    038E 2733      CLR	R19
    038F E900      LDI	R16,0x90
    0390 E010      LDI	R17,0
    0391 940E0833  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                              */
    0393 D0C1      RCALL	_OSTickISR_Init
(0104)     AppIOInit(); 
    0394 D0BC      RCALL	_AppIOInit
(0105)     AppTaskCreate();  
    0395 D022      RCALL	_AppTaskCreate
(0106) 
(0107) 	testsem = OSSemCreate(1);
    0396 E001      LDI	R16,1
    0397 E010      LDI	R17,0
    0398 940E0658  CALL	_OSSemCreate
    039A 93100107  STS	_testsem+1,R17
    039C 93000106  STS	_testsem,R16
(0108) 	testsem1= OSSemCreate(0);
    039E 2700      CLR	R16
    039F 2711      CLR	R17
    03A0 940E0658  CALL	_OSSemCreate
    03A2 93100105  STS	_testsem1+1,R17
    03A4 93000104  STS	_testsem1,R16
(0109) 	
(0110)     OSStart();                                  /* Start multitasking (i.e. give control to uC/OS-II)  */
    03A6 940E0A77  CALL	_OSStart
    03A8 9623      ADIW	R28,3
    03A9 9508      RET
_AppTaskStart:
  p_arg                --> R20
    03AA 940E0F11  CALL	push_gset1
    03AC 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                          */
    03AD C006      RJMP	0x03B4
(0130)     
(0131) 	//OSTaskSuspend(5);
(0132)     //OSTaskDel(4);
(0133)     while (TRUE) {                               /* Task body, always written as an infinite loop.     */
(0134)         LED_Toggle(1);
    03AE E001      LDI	R16,1
    03AF D0AF      RCALL	_LED_Toggle
(0135)         OSTimeDly(OS_TICKS_PER_SEC / 50);   //10
    03B0 E001      LDI	R16,1
    03B1 E010      LDI	R17,0
    03B2 940E04EB  CALL	_OSTimeDly
    03B4 CFF9      RJMP	0x03AE
    03B5 940E0F14  CALL	pop_gset1
    03B7 9508      RET
_AppTaskCreate:
    03B8 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                     */
    03B9 E080      LDI	R24,0
    03BA E091      LDI	R25,1
    03BB 93900103  STS	_OSTaskStkSize+1,R25
    03BD 93800102  STS	_OSTaskStkSize,R24
(0158)     OSTaskHardStkSize = OS_TASK_1_HARD_STK_SIZE;   /* Setup the default hardware stack size            */
    03BF E480      LDI	R24,0x40
    03C0 E090      LDI	R25,0
    03C1 93900101  STS	_OSTaskHardStkSize+1,R25
    03C3 93800100  STS	_OSTaskHardStkSize,R24
(0159)     OSTaskCreate(AppTask1, (void *)0, (OS_STK *)&AppTask1Stk[OSTaskStkSize - 1], 5);
    03C5 E085      LDI	R24,5
    03C6 838A      STD	Y+2,R24
    03C7 E088      LDI	R24,0x8
    03C8 E093      LDI	R25,3
    03C9 91E00102  LDS	R30,_OSTaskStkSize
    03CB 91F00103  LDS	R31,_OSTaskStkSize+1
    03CD 9731      SBIW	R30,1
    03CE 0FE8      ADD	R30,R24
    03CF 1FF9      ADC	R31,R25
    03D0 83F9      STD	Y+1,R31
    03D1 83E8      STD	Y+0,R30
    03D2 2722      CLR	R18
    03D3 2733      CLR	R19
    03D4 E80E      LDI	R16,0x8E
    03D5 E010      LDI	R17,0
    03D6 940E0833  CALL	_OSTaskCreate
(0160) 
(0161)     OSTaskStkSize     = OS_TASK_2_STK_SIZE;        /* Setup the default stack size                     */
    03D8 E080      LDI	R24,0
    03D9 E091      LDI	R25,1
    03DA 93900103  STS	_OSTaskStkSize+1,R25
    03DC 93800102  STS	_OSTaskStkSize,R24
(0162)     OSTaskHardStkSize = OS_TASK_2_HARD_STK_SIZE;   /* Setup the default hardware stack size            */
    03DE E480      LDI	R24,0x40
    03DF E090      LD

⌨️ 快捷键说明

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