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

📄 test.lst

📁 ucos在mage128上的应用
💻 LST
📖 第 1 页 / 共 5 页
字号:
     31A 84A5      LDD	R10,Z+13
     31B 24BB      CLR	R11
     31C 0EA8      ADD	R10,R24
     31D 1EB9      ADC	R11,R25
     31E 8426      LDD	R2,Z+14
     31F 01F5      MOVW	R30,R10
     320 8030      LDD	R3,Z+0
     321 2832      OR	R3,R2
     322 8230      STD	Z+0,R3
(0709)     pevent->OSEventGrp                   |= OSTCBCur->OSTCBBitY;
     323 01A8      MOVW	R20,R16
     324 5F4F      SUBI	R20,0xFF
     325 4F5F      SBCI	R21,0xFF
     326 91E0 0A36 LDS	R30,OSTCBCur
     328 91F0 0A37 LDS	R31,OSTCBCur+1
     32A 8427      LDD	R2,Z+15
     32B 01FA      MOVW	R30,R20
     32C 8030      LDD	R3,Z+0
     32D 2832      OR	R3,R2
     32E 8230      STD	Z+0,R3
     32F 940C 0F9D JMP	pop_xgset300C
_OS_EventTO:
  y                    --> R10
  pevent               --> R16
     331 92AA      ST	R10,-Y
(0710) }
(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;
     332 91E0 0A36 LDS	R30,OSTCBCur
     334 91F0 0A37 LDS	R31,OSTCBCur+1
     336 84A5      LDD	R10,Z+13
(0734)     pevent->OSEventTbl[y] &= ~OSTCBCur->OSTCBBitX;
     337 01C8      MOVW	R24,R16
     338 9606      ADIW	R24,6
     339 2C2A      MOV	R2,R10
     33A 2433      CLR	R3
     33B 0E28      ADD	R2,R24
     33C 1E39      ADC	R3,R25
     33D 0121      MOVW	R4,R2
     33E 8426      LDD	R2,Z+14
     33F 9420      COM	R2
     340 01F2      MOVW	R30,R4
     341 8030      LDD	R3,Z+0
     342 2032      AND	R3,R2
     343 8230      STD	Z+0,R3
(0735)     if (pevent->OSEventTbl[y] == 0x00) {
     344 01C8      MOVW	R24,R16
     345 9606      ADIW	R24,6
     346 2DEA      MOV	R30,R10
     347 27FF      CLR	R31
     348 0FE8      ADD	R30,R24
     349 1FF9      ADC	R31,R25
     34A 8020      LDD	R2,Z+0
     34B 2022      TST	R2
     34C F461      BNE	0x0359
(0736)         pevent->OSEventGrp &= ~OSTCBCur->OSTCBBitY;
     34D 01C8      MOVW	R24,R16
     34E 9601      ADIW	R24,1
     34F 91E0 0A36 LDS	R30,OSTCBCur
     351 91F0 0A37 LDS	R31,OSTCBCur+1
     353 8427      LDD	R2,Z+15
     354 9420      COM	R2
     355 01FC      MOVW	R30,R24
     356 8030      LDD	R3,Z+0
     357 2032      AND	R3,R2
     358 8230      STD	Z+0,R3
(0737)     }
(0738)     OSTCBCur->OSTCBStat     = OS_STAT_RDY;       /* Set status to ready                                */
     359 2422      CLR	R2
     35A 91E0 0A36 LDS	R30,OSTCBCur
     35C 91F0 0A37 LDS	R31,OSTCBCur+1
     35E 8622      STD	Z+10,R2
(0739)     OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0;     /* No longer waiting for event                        */
     35F 2433      CLR	R3
     360 91E0 0A36 LDS	R30,OSTCBCur
     362 91F0 0A37 LDS	R31,OSTCBCur+1
     364 8237      STD	Z+7,R3
     365 8226      STD	Z+6,R2
     366 90A9      LD	R10,Y+
     367 9508      RET
_OS_EventWaitListInit:
  ptbl                 --> R20
  pevent               --> R16
     368 934A      ST	R20,-Y
     369 935A      ST	R21,-Y
(0740) }
(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                           */
     36A 2422      CLR	R2
     36B 01F8      MOVW	R30,R16
     36C 8221      STD	Z+1,R2
(0763)     ptbl               = &pevent->OSEventTbl[0];
     36D 01AF      MOVW	R20,R30
     36E 5F4A      SUBI	R20,0xFA
     36F 4F5F      SBCI	R21,0xFF
(0764) 
(0765) #if OS_EVENT_TBL_SIZE > 0
(0766)     *ptbl++            = 0x00;
     370 01FA      MOVW	R30,R20
     371 9221      ST	R2,Z+
(0767) #endif
(0768) 
(0769) #if OS_EVENT_TBL_SIZE > 1
(0770)     *ptbl++            = 0x00;
     372 9221      ST	R2,Z+
(0771) #endif
(0772) 
(0773) #if OS_EVENT_TBL_SIZE > 2
(0774)     *ptbl++            = 0x00;
     373 9221      ST	R2,Z+
(0775) #endif
(0776) 
(0777) #if OS_EVENT_TBL_SIZE > 3
(0778)     *ptbl++            = 0x00;
     374 9221      ST	R2,Z+
(0779) #endif
(0780) 
(0781) #if OS_EVENT_TBL_SIZE > 4
(0782)     *ptbl++            = 0x00;
     375 9221      ST	R2,Z+
(0783) #endif
(0784) 
(0785) #if OS_EVENT_TBL_SIZE > 5
(0786)     *ptbl++            = 0x00;
     376 9221      ST	R2,Z+
(0787) #endif
(0788) 
(0789) #if OS_EVENT_TBL_SIZE > 6
(0790)     *ptbl++            = 0x00;
     377 9221      ST	R2,Z+
     378 01AF      MOVW	R20,R30
(0791) #endif
(0792) 
(0793) #if OS_EVENT_TBL_SIZE > 7
(0794)     *ptbl              = 0x00;
     379 8220      STD	Z+0,R2
     37A 9159      LD	R21,Y+
     37B 9149      LD	R20,Y+
     37C 9508      RET
os_core.c:OS_InitEventList:
_OS_InitEventList:
  pevent2              --> R22
  i                    --> R10
  pevent1              --> R20
     37D 940E 0FAC CALL	push_xgsetF00C
(0795) #endif
(0796) }
(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                    */
     37F E426      LDI	R18,0x46
     380 E030      LDI	R19,0
     381 E40C      LDI	R16,0x4C
     382 E01B      LDI	R17,0xB
     383 D0A5      RCALL	_OS_MemClr
(0822)     pevent1 = &OSEventTbl[0];
     384 E44C      LDI	R20,0x4C
     385 E05B      LDI	R21,0xB
(0823)     pevent2 = &OSEventTbl[1];
     386 E56A      LDI	R22,0x5A
     387 E07B      LDI	R23,0xB
(0824)     for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {                  /* Init. list of free EVENT control blocks  */
     388 24AA      CLR	R10
     389 24BB      CLR	R11
     38A C00C      RJMP	0x0397
(0825)         pevent1->OSEventType    = OS_EVENT_TYPE_UNUSED;
     38B 2422      CLR	R2
     38C 01FA      MOVW	R30,R20
     38D 8220      STD	Z+0,R2
(0826)         pevent1->OSEventPtr     = pevent2;
     38E 8375      STD	Z+5,R23
     38F 8364      STD	Z+4,R22
(0827) #if OS_EVENT_NAME_SIZE > 1
(0828)         pevent1->OSEventName[0] = '?';                           /* Unknown name                             */
(0829)         pevent1->OSEventName[1] = OS_ASCII_NUL;
(0830) #endif
(0831)         pevent1++;
     390 5F42      SUBI	R20,0xF2
     391 4F5F      SBCI	R21,0xFF
(0832)         pevent2++;
     392 5F62      SUBI	R22,0xF2
     393 4F7F      SBCI	R23,0xFF
     394 01C5      MOVW	R24,R10
     395 9601      ADIW	R24,1
     396 015C      MOVW	R10,R24
     397 01C5      MOVW	R24,R10
     398 3084      CPI	R24,4
     399 E0E0      LDI	R30,0
     39A 079E      CPC	R25,R30
     39B F378      BCS	0x038B
(0833)     }
(0834)     pevent1->OSEventType            = OS_EVENT_TYPE_UNUSED;
     39C 2422      CLR	R2
     39D 01FA      MOVW	R30,R20
     39E 8220      STD	Z+0,R2
(0835)     pevent1->OSEventPtr             = (OS_EVENT *)0;
     39F 2433      CLR	R3
     3A0 8235      STD	Z+5,R3
     3A1 8224      STD	Z+4,R2
(0836) #if OS_EVENT_NAME_SIZE > 1
(0837)     pevent1->OSEventName[0]         = '?';                       
(0838)     pevent1->OSEventName[1]         = OS_ASCII_NUL;
(0839) #endif
(0840)     OSEventFreeList                 = &OSEventTbl[0];
     3A2 E48C      LDI	R24,0x4C
     3A3 E09B      LDI	R25,0xB
     3A4 9390 0B93 STS	OSEventFreeList+1,R25
     3A6 9380 0B92 STS	OSEventFreeList,R24
     3A8 940C 0FB3 JMP	pop_xgsetF00C
(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) }
(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      */
os_core.c:OS_InitMisc:
_OS_InitMisc:
     3AA 2422      CLR	R2
     3AB 9220 0B4B STS	OSIntNesting,R2
(0873)     OSLockNesting = 0;                                           /* Clear the scheduling lock counter        */
     3AD 9220 0B49 STS	OSLockNesting,R2
(0874) 
(0875)     OSTaskCtr     = 0;                                   

⌨️ 快捷键说明

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