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

📄 test.lst

📁 ucos在mage128上的应用
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0283 9508      RET
    0284 D5CB      RCALL	_OSTaskSwHook
    0285 9100030D  LDS	R16,_OSRunning
    0287 9503      INC	R16
(0705)     if (OSRdyTbl[y] == 0x00) {                   
    0288 9300030D  STS	_OSRunning,R16
    028A 940E0B20  CALL	0xB20
    028C 91C1      LD	R28,Z+
(0706)         OSRdyGrp &= ~OSTCBCur->OSTCBBitY;        /* Clear event grp bit if this was only task pending  */
    028D 91D1      LD	R29,Z+
    028E 9109      LD	R16,Y+
    028F BF0D      OUT	0x3D,R16
    0290 9109      LD	R16,Y+
    0291 BF0E      OUT	0x3E,R16
    0292 9109      LD	R16,Y+
    0293 BF0F      OUT	0x3F,R16
    0294 9109      LD	R16,Y+
    0295 BF0B      OUT	0x3B,R16
    0296 91F9      LD	R31,Y+
    0297 91E9      LD	R30,Y+
    0298 940E0ABA  CALL	0xABA
(0707)     }
(0708)     pevent->OSEventTbl[OSTCBCur->OSTCBY] |= OSTCBCur->OSTCBBitX;          /* Put task in waiting list  */
    029A 9179      LD	R23,Y+
    029B 9169      LD	R22,Y+
    029C 9159      LD	R21,Y+
    029D 9149      LD	R20,Y+
    029E 9139      LD	R19,Y+
    029F 9129      LD	R18,Y+
    02A0 9119      LD	R17,Y+
    02A1 9109      LD	R16,Y+
    02A2 90F9      LD	R15,Y+
    02A3 90E9      LD	R14,Y+
    02A4 90D9      LD	R13,Y+
    02A5 940E0AAA  CALL	0xAAA
(0709)     pevent->OSEventGrp                   |= OSTCBCur->OSTCBBitY;
    02A7 9069      LD	R6,Y+
    02A8 9059      LD	R5,Y+
    02A9 9049      LD	R4,Y+
    02AA 9039      LD	R3,Y+
    02AB 9029      LD	R2,Y+
    02AC 9019      LD	R1,Y+
    02AD 9009      LD	R0,Y+
    02AE 9508      RET
    02AF 920A      ST	R0,-Y
(0710) }
    02B0 921A      ST	R1,-Y
    02B1 922A      ST	R2,-Y
    02B2 923A      ST	R3,-Y
_OS_EventTO:
  y                    --> R20
  pevent               --> R16
    02B3 924A      ST	R4,-Y
    02B4 925A      ST	R5,-Y
(0711) #endif
(0712) /*$PAGE*/
(0713) /*
(0714) *********************************************************************************************************
(0715) *                              MAKE TASK READY TO RUN BASED ON EVENT TIMEOUT
(0716) *
(0717) * Description: This function is called by other uC/OS-II services to make a task ready to run because a
(0718) *              timeout occurred.
(0719) *
(0720) * Arguments  : pevent   is a pointer to the event control block which is readying a task.
(0721) *
(0722) * Returns    : none
(0723) *
(0724) * Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
(0725) *********************************************************************************************************
(0726) */
(0727) #if OS_EVENT_EN > 0
(0728) void  OS_EventTO (OS_EVENT *pevent)
(0729) {
(0730)     INT8U  y;
(0731) 
(0732) 
(0733)     y                      = OSTCBCur->OSTCBY;
    02B5 926A      ST	R6,-Y
    02B6 927A      ST	R7,-Y
    02B7 928A      ST	R8,-Y
    02B8 929A      ST	R9,-Y
    02B9 92AA      ST	R10,-Y
(0734)     pevent->OSEventTbl[y] &= ~OSTCBCur->OSTCBBitX;
    02BA 92BA      ST	R11,-Y
    02BB 92CA      ST	R12,-Y
    02BC 92DA      ST	R13,-Y
    02BD 92EA      ST	R14,-Y
    02BE 92FA      ST	R15,-Y
    02BF 930A      ST	R16,-Y
    02C0 931A      ST	R17,-Y
    02C1 932A      ST	R18,-Y
    02C2 933A      ST	R19,-Y
    02C3 934A      ST	R20,-Y
    02C4 935A      ST	R21,-Y
    02C5 936A      ST	R22,-Y
    02C6 937A      ST	R23,-Y
    02C7 938A      ST	R24,-Y
    02C8 939A      ST	R25,-Y
    02C9 93AA      ST	R26,-Y
(0735)     if (pevent->OSEventTbl[y] == 0x00) {
    02CA 93BA      ST	R27,-Y
    02CB 93EA      ST	R30,-Y
    02CC 93FA      ST	R31,-Y
    02CD B70B      IN	R16,0x3B
    02CE 930A      ST	R16,-Y
    02CF B70F      IN	R16,0x3F
    02D0 940E0B37  CALL	0xB37
    02D2 940E0A6F  CALL	0xA6F
(0736)         pevent->OSEventGrp &= ~OSTCBCur->OSTCBBitY;
    02D4 93C1      ST	R28,Z+
    02D5 93D1      ST	R29,Z+
    02D6 D579      RCALL	_OSTaskSwHook
    02D7 91000311  LDS	R16,_OSPrioHighRdy
(0737)     }
(0738)     OSTCBCur->OSTCBStat     = OS_STAT_RDY;       /* Set status to ready                                */
    02D9 93000312  STS	_OSPrioCur,R16
    02DB 940E0B20  CALL	0xB20
(0739)     OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0;     /* No longer waiting for event                        */
    02DD 93E00206  STS	_OSTCBCur,R30
    02DF 93F00207  STS	_OSTCBCur+1,R31
    02E1 91C1      LD	R28,Z+
    02E2 91D1      LD	R29,Z+
    02E3 9109      LD	R16,Y+
(0740) }
    02E4 BF0D      OUT	0x3D,R16
    02E5 9109      LD	R16,Y+
    02E6 BF0E      OUT	0x3E,R16
_OS_EventWaitListInit:
  ptbl                 --> R20
  pevent               --> R16
    02E7 9109      LD	R16,Y+
    02E8 BF0F      OUT	0x3F,R16
(0741) #endif
(0742) /*$PAGE*/
(0743) /*
(0744) *********************************************************************************************************
(0745) *                                 INITIALIZE EVENT CONTROL BLOCK'S WAIT LIST
(0746) *
(0747) * Description: This function is called by other uC/OS-II services to initialize the event wait list.
(0748) *
(0749) * Arguments  : pevent    is a pointer to the event control block allocated to the event.
(0750) *
(0751) * Returns    : none
(0752) *
(0753) * Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
(0754) *********************************************************************************************************
(0755) */
(0756) #if OS_EVENT_EN > 0
(0757) void  OS_EventWaitListInit (OS_EVENT *pevent)
(0758) {
(0759)     INT8U  *ptbl;
(0760) 
(0761) 
(0762)     pevent->OSEventGrp = 0x00;                   /* No task waiting on event                           */
    02E9 9109      LD	R16,Y+
    02EA BF0B      OUT	0x3B,R16
    02EB 91F9      LD	R31,Y+
(0763)     ptbl               = &pevent->OSEventTbl[0];
    02EC 91E9      LD	R30,Y+
    02ED 940E0ABA  CALL	0xABA
(0764) 
(0765) #if OS_EVENT_TBL_SIZE > 0
(0766)     *ptbl++            = 0x00;
(0767) #endif
(0768) 
(0769) #if OS_EVENT_TBL_SIZE > 1
(0770)     *ptbl++            = 0x00;
    02EF 9179      LD	R23,Y+
    02F0 9169      LD	R22,Y+
(0771) #endif
(0772) 
(0773) #if OS_EVENT_TBL_SIZE > 2
(0774)     *ptbl++            = 0x00;
(0775) #endif
(0776) 
(0777) #if OS_EVENT_TBL_SIZE > 3
(0778)     *ptbl++            = 0x00;
(0779) #endif
(0780) 
(0781) #if OS_EVENT_TBL_SIZE > 4
(0782)     *ptbl++            = 0x00;
(0783) #endif
(0784) 
(0785) #if OS_EVENT_TBL_SIZE > 5
(0786)     *ptbl++            = 0x00;
(0787) #endif
(0788) 
(0789) #if OS_EVENT_TBL_SIZE > 6
(0790)     *ptbl++            = 0x00;
(0791) #endif
(0792) 
(0793) #if OS_EVENT_TBL_SIZE > 7
(0794)     *ptbl              = 0x00;
(0795) #endif
(0796) }
    02F1 9159      LD	R21,Y+
    02F2 9149      LD	R20,Y+
    02F3 9139      LD	R19,Y+
_OS_InitEventList:
  pevent2              --> R20
  i                    --> R22
  pevent1              --> R10
    02F4 9129      LD	R18,Y+
    02F5 9119      LD	R17,Y+
(0797) #endif
(0798) /*$PAGE*/
(0799) /*
(0800) *********************************************************************************************************
(0801) *                                             INITIALIZATION
(0802) *                           INITIALIZE THE FREE LIST OF EVENT CONTROL BLOCKS
(0803) *
(0804) * Description: This function is called by OSInit() to initialize the free list of event control blocks.
(0805) *
(0806) * Arguments  : none
(0807) *
(0808) * Returns    : none
(0809) *********************************************************************************************************
(0810) */
(0811) 
(0812) static  void  OS_InitEventList (void)
(0813) {
(0814) #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
(0815) #if (OS_MAX_EVENTS > 1)
(0816)     INT16U     i;
(0817)     OS_EVENT  *pevent1;
(0818)     OS_EVENT  *pevent2;
(0819) 
(0820) 
(0821)     OS_MemClr((INT8U *)&OSEventTbl[0], sizeof(OSEventTbl));      /* Clear the event table                    */
    02F6 9109      LD	R16,Y+
    02F7 90F9      LD	R15,Y+
    02F8 90E9      LD	R14,Y+
    02F9 90D9      LD	R13,Y+
    02FA 940E0AAA  CALL	0xAAA
(0822)     pevent1 = &OSEventTbl[0];
(0823)     pevent2 = &OSEventTbl[1];
(0824)     for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {                  /* Init. list of free EVENT control blocks  */
    02FC 9069      LD	R6,Y+
    02FD 9059      LD	R5,Y+
    02FE 9049      LD	R4,Y+
(0825)         pevent1->OSEventType    = OS_EVENT_TYPE_UNUSED;
    02FF 9039      LD	R3,Y+
    0300 9029      LD	R2,Y+
    0301 9019      LD	R1,Y+
(0826)         pevent1->OSEventPtr     = pevent2;
    0302 9009      LD	R0,Y+
    0303 9508      RET
(0827) #if OS_EVENT_NAME_SIZE > 1
(0828)         pevent1->OSEventName[0] = '?';                           /* Unknown name                             */
(0829)         pevent1->OSEventName[1] = OS_ASCII_NUL;
(0830) #endif
(0831)         pevent1++;
    0304 D54B      RCALL	_OSTaskSwHook
    0305 91000311  LDS	R16,_OSPrioHighRdy
(0832)         pevent2++;
    0307 93000312  STS	_OSPrioCur,R16
    0309 940E0B20  CALL	0xB20
    030B 93E00206  STS	_OSTCBCur,R30
(0833)     }
(0834)     pevent1->OSEventType            = OS_EVENT_TYPE_UNUSED;
    030D 93F00207  STS	_OSTCBCur+1,R31
(0835)     pevent1->OSEventPtr             = (OS_EVENT *)0;
    030F 91C1      LD	R28,Z+
    0310 91D1      LD	R29,Z+
    0311 9109      LD	R16,Y+
(0836) #if OS_EVENT_NAME_SIZE > 1
(0837)     pevent1->OSEventName[0]         = '?';                       
(0838)     pevent1->OSEventName[1]         = OS_ASCII_NUL;
(0839) #endif
(0840)     OSEventFreeList                 = &OSEventTbl[0];
    0312 BF0D      OUT	0x3D,R16
    0313 9109      LD	R16,Y+
    0314 BF0E      OUT	0x3E,R16
    0315 9109      LD	R16,Y+
    0316 BF0F      OUT	0x3F,R16
    0317 9109      LD	R16,Y+
(0841) #else
(0842)     OSEventFreeList                 = &OSEventTbl[0];            /* Only have ONE event control block        */
(0843)     OSEventFreeList->OSEventType    = OS_EVENT_TYPE_UNUSED;
(0844)     OSEventFreeList->OSEventPtr     = (OS_EVENT *)0;
(0845) #if OS_EVENT_NAME_SIZE > 1
(0846)     OSEventFreeList->OSEventName[0] = '?';                       /* Unknown name                             */
(0847)     OSEventFreeList->OSEventName[1] = OS_ASCII_NUL;
(0848) #endif
(0849) #endif
(0850) #endif
(0851) }
    0318 BF0B      OUT	0x3B,R16
    0319 91F9      LD	R31,Y+
    031A 91E9      LD	R30,Y+
_OS_InitMisc:
    031B 940E0ABA  CALL	0xABA
(0852) /*$PAGE*/
(0853) /*
(0854) *********************************************************************************************************
(0855) *                                             INITIALIZATION
(0856) *                                    INITIALIZE MISCELLANEOUS VARIABLES
(0857) *
(0858) * Description: This function is called by OSInit() to initialize miscellaneous variables.
(0859) *
(0860) * Arguments  : none
(0861) *
(0862) * Returns    : none
(0863) *********************************************************************************************************
(0864) */
(0865) 
(0866) static  void  OS_InitMisc (void)
(0867) {
(0868) #if OS_TIME_GET_SET_EN > 0   
(0869)     OSTime        = 0L;                                          /* Clear the 32-bit system clock            */
(0870) #endif
(0871) 
(0872)     OSIntNesting  = 0;                                           /* Clear the interrupt nesting counter      */
    031D 9179      LD	R23,Y+
(0873)     OSLockNesting = 0;                                           /* Clear the scheduling lock counter        */
    031E 9169      LD	R22,Y+
    031F 9159      LD	R21,Y+
(0874) 
(0875)     OSTaskCtr     = 0;                                           /* Clear the number of tasks                */
    0320 9149      LD	R20,Y+
    0321 9139      LD	R19,Y+
(0876) 
(0877)     OSRunning     = FALSE;                                       /* Indicate that multitasking not started   */
  

⌨️ 快捷键说明

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