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

📄 mega16pro.lst

📁 mega16 ucos操作系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
    00431 5041      SUBI	R20,1
    00432 4050      SBCI	R21,0
    00433 E184      LDI	R24,0x14
    00434 01F6      MOVW	R30,R12
    00435 8380      ST	Z,R24
(0217)     *psoft_stk-- = (INT8U)0x15;             /* R15   = 0x15                                             */
    00436 016A      MOVW	R12,R20
    00437 5041      SUBI	R20,1
    00438 4050      SBCI	R21,0
    00439 E185      LDI	R24,0x15
    0043A 01F6      MOVW	R30,R12
    0043B 8380      ST	Z,R24
(0218)     tmp          = (INT16U)p_arg;
    0043C 01B9      MOVW	R22,R18
(0219)     *psoft_stk-- = (INT8U)(tmp & 0xFF);     /* 'p_arg' passed in R17:R16                                */
    0043D 016A      MOVW	R12,R20
    0043E 5041      SUBI	R20,1
    0043F 4050      SBCI	R21,0
    00440 01CB      MOVW	R24,R22
    00441 7090      ANDI	R25,0
    00442 01F6      MOVW	R30,R12
    00443 8380      ST	Z,R24
(0220)     tmp        >>= 8;
    00444 2F67      MOV	R22,R23
    00445 2777      CLR	R23
(0221)     *psoft_stk-- = (INT8U)(tmp & 0xFF);
    00446 016A      MOVW	R12,R20
    00447 5041      SUBI	R20,1
    00448 4050      SBCI	R21,0
    00449 01CB      MOVW	R24,R22
    0044A 7090      ANDI	R25,0
    0044B 01F6      MOVW	R30,R12
    0044C 8380      ST	Z,R24
(0222)     *psoft_stk-- = (INT8U)0x18;             /* R18   = 0x18                                             */
    0044D 016A      MOVW	R12,R20
    0044E 5041      SUBI	R20,1
    0044F 4050      SBCI	R21,0
    00450 E188      LDI	R24,0x18
    00451 01F6      MOVW	R30,R12
    00452 8380      ST	Z,R24
(0223)     *psoft_stk-- = (INT8U)0x19;             /* R19   = 0x19                                             */
    00453 016A      MOVW	R12,R20
    00454 5041      SUBI	R20,1
    00455 4050      SBCI	R21,0
    00456 E189      LDI	R24,0x19
    00457 01F6      MOVW	R30,R12
    00458 8380      ST	Z,R24
(0224)     *psoft_stk-- = (INT8U)0x20;             /* R20   = 0x20                                             */
    00459 016A      MOVW	R12,R20
    0045A 5041      SUBI	R20,1
    0045B 4050      SBCI	R21,0
    0045C E280      LDI	R24,0x20
    0045D 01F6      MOVW	R30,R12
    0045E 8380      ST	Z,R24
(0225)     *psoft_stk-- = (INT8U)0x21;             /* R21   = 0x21                                             */
    0045F 016A      MOVW	R12,R20
    00460 5041      SUBI	R20,1
    00461 4050      SBCI	R21,0
    00462 E281      LDI	R24,0x21
    00463 01F6      MOVW	R30,R12
    00464 8380      ST	Z,R24
(0226)     *psoft_stk-- = (INT8U)0x22;             /* R22   = 0x22                                             */
    00465 016A      MOVW	R12,R20
    00466 5041      SUBI	R20,1
    00467 4050      SBCI	R21,0
    00468 E282      LDI	R24,0x22
    00469 01F6      MOVW	R30,R12
    0046A 8380      ST	Z,R24
(0227)     *psoft_stk-- = (INT8U)0x23;             /* R23   = 0x23                                             */
    0046B 016A      MOVW	R12,R20
    0046C 5041      SUBI	R20,1
    0046D 4050      SBCI	R21,0
    0046E E283      LDI	R24,0x23
    0046F 01F6      MOVW	R30,R12
    00470 8380      ST	Z,R24
(0228)     *psoft_stk-- = (INT8U)0x24;             /* R24   = 0x24                                             */
    00471 016A      MOVW	R12,R20
    00472 5041      SUBI	R20,1
    00473 4050      SBCI	R21,0
    00474 E284      LDI	R24,0x24
    00475 01F6      MOVW	R30,R12
    00476 8380      ST	Z,R24
(0229)     *psoft_stk-- = (INT8U)0x25;             /* R25   = 0x25                                             */
    00477 016A      MOVW	R12,R20
    00478 5041      SUBI	R20,1
    00479 4050      SBCI	R21,0
    0047A E285      LDI	R24,0x25
    0047B 01F6      MOVW	R30,R12
    0047C 8380      ST	Z,R24
(0230)     *psoft_stk-- = (INT8U)0x26;             /* R26   = 0x26                                             */
    0047D 016A      MOVW	R12,R20
    0047E 5041      SUBI	R20,1
    0047F 4050      SBCI	R21,0
    00480 E286      LDI	R24,0x26
    00481 01F6      MOVW	R30,R12
    00482 8380      ST	Z,R24
(0231)     *psoft_stk-- = (INT8U)0x27;             /* R27   = 0x27                                             */
    00483 016A      MOVW	R12,R20
    00484 5041      SUBI	R20,1
    00485 4050      SBCI	R21,0
    00486 E287      LDI	R24,0x27
    00487 01F6      MOVW	R30,R12
    00488 8380      ST	Z,R24
(0232)                                             /* R28     R29:R28 is the software stack which gets ...     */
(0233)                                             /* R29     ... stored in the task's OS_TCB.                 */
(0234)     *psoft_stk-- = (INT8U)0x30;             /* R30   = 0x30                                             */
    00489 016A      MOVW	R12,R20
    0048A 5041      SUBI	R20,1
    0048B 4050      SBCI	R21,0
    0048C E380      LDI	R24,0x30
    0048D 01F6      MOVW	R30,R12
    0048E 8380      ST	Z,R24
(0235)     *psoft_stk-- = (INT8U)0x31;             /* R31   = 0x31                                             */ 
    0048F 016A      MOVW	R12,R20
    00490 5041      SUBI	R20,1
    00491 4050      SBCI	R21,0
    00492 E381      LDI	R24,0x31
    00493 01F6      MOVW	R30,R12
    00494 8380      ST	Z,R24
(0236) 	
(0237)     *psoft_stk-- = (INT8U)0x80;             /* SREG  = Interrupts enabled                               */
    00495 016A      MOVW	R12,R20
    00496 5041      SUBI	R20,1
    00497 4050      SBCI	R21,0
    00498 E880      LDI	R24,0x80
    00499 01F6      MOVW	R30,R12
    0049A 8380      ST	Z,R24
(0238)     
(0239) 	 tmp          = (INT16U)phard_stk;
    0049B 01B5      MOVW	R22,R10
(0240)     *psoft_stk-- = (INT8U)(tmp >> 8);       /* SPH                                                      */
    0049C 015A      MOVW	R10,R20
    0049D 5041      SUBI	R20,1
    0049E 4050      SBCI	R21,0
    0049F 011B      MOVW	R2,R22
    004A0 2C23      MOV	R2,R3
    004A1 2433      CLR	R3
    004A2 01F5      MOVW	R30,R10
    004A3 8220      ST	Z,R2
(0241)     *psoft_stk   = (INT8U) tmp;             /* SPL                                                      */
    004A4 01FA      MOVW	R30,R20
    004A5 8360      ST	Z,R22
(0242)     return ((OS_STK *)psoft_stk);
    004A6 018F      MOVW	R16,R30
    004A7 940C 0F2A JMP	pop_xgsetF03C
(0243) }
(0244) 
(0245) 
(0246) 
(0247) /*
(0248) *********************************************************************************************************
(0249) *                                           TASK SWITCH HOOK
(0250) *
(0251) * Description: This function is called when a task switch is performed.  This allows you to perform other
(0252) *              operations during a context switch.
(0253) *
(0254) * Arguments  : none
(0255) *
(0256) * Note(s)    : 1) Interrupts are disabled during this call.
(0257) *              2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB of the task that
(0258) *                 will be 'switched in' (i.e. the highest priority task) and, 'OSTCBCur' points to the 
(0259) *                 task being switched out (i.e. the preempted task).
(0260) *********************************************************************************************************
(0261) */
(0262) #if (OS_CPU_HOOKS_EN > 0) && (OS_TASK_SW_HOOK_EN > 0)
(0263) void  OSTaskSwHook (void)
(0264) {
_OSTaskSwHook:
    004A9 9508      RET
(0265)    
(0266) }
(0267) #endif
(0268) 
(0269) 
(0270) /*
(0271) *********************************************************************************************************
(0272) *                                           OS_TCBInit() HOOK
(0273) *
(0274) * Description: This function is called by OS_TCBInit() after setting up most of the TCB.
(0275) *
(0276) * Arguments  : ptcb    is a pointer to the TCB of the task being created.
(0277) *
(0278) * Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
(0279) *********************************************************************************************************
(0280) */
(0281) #if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
(0282) void  OSTCBInitHook (OS_TCB *ptcb)
(0283) {
(0284)     ptcb = ptcb;                                           /* Prevent Compiler warning                 */
_OSTCBInitHook:
  ptcb                 --> Y,+0
    004AA 9508      RET
(0285) }
(0286) #endif
(0287) 
(0288) /*
(0289) *********************************************************************************************************
(0290) *                                               TICK HOOK
(0291) *
(0292) * Description: This function is called every tick.
(0293) *
(0294) * Arguments  : none
(0295) *
(0296) * Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
(0297) *********************************************************************************************************
(0298) */
(0299) #if (OS_CPU_HOOKS_EN > 0) && (OS_TIME_TICK_HOOK_EN > 0)
(0300) void  OSTimeTickHook (void)
(0301) {
(0302) 
(0303) #if OS_VERSION >= 281 && OS_TMR_EN > 0
(0304)     OSTmrCtr++;
(0305)     if (OSTmrCtr >= (OS_TICKS_PER_SEC / OS_TMR_CFG_TICKS_PER_SEC)) {
(0306)         OSTmrCtr = 0;
(0307)         OSTmrSignal();
(0308)     }
(0309) #endif
(0310)     WDR();
_OSTimeTickHook:
    004AB 95A8      WDR
    004AC 9508      RET
(0311) }
(0312) #endif
(0313) 
(0314) 
(0315) /*
(0316) *********************************************************************************************************
(0317) *                                     HANDLE THE TICK INTERRUPT
(0318) *
(0319) * Note(s): 1) No need to clear the interrupt source since we use output compare mode for Timer #0 and
(0320) *             the interrupt is automatically cleard in hardware when the ISR runs.
(0321) *********************************************************************************************************
(0322) */
(0323) 
(0324) void  OSTickISR_Handler (void)
(0325) {
(0326)     OSTimeTick();
_OSTickISR_Handler:
    004AD 940C 0643 JMP	_OSTimeTick
_OS_CPU_SR_Save:
    004AF B70F      IN	R16,0x3F
    004B0 94F8      BCLR	7
    004B1 9508      RET
_OS_CPU_SR_Restore:
    004B2 BF0F      OUT	0x3F,R16
    004B3 9508      RET
_OSStartHighRdy:
    004B4 940E 04A9 CALL	_OSTaskSwHook
    004B6 9100 07F8 LDS	R16,OSRunning
    004B8 9503      INC	R16
    004B9 9300 07F8 STS	OSRunning,R16
    004BB 91E0 0789 LDS	R30,OSTCBHighRdy
    004BD 91F0 078A LDS	R31,OSTCBHighRdy+1
    004BF 91C1      LD	R28,Z+
    004C0 91D1      LD	R29,Z+
    004C1 9109      LD	R16,Y+
    004C2 BF0D      OUT	0x3D,R16
    004C3 9109      LD	R16,Y+
    004C4 BF0E      OUT	0x3E,R16
    004C5 9109      LD	R16,Y+
    004C6 770F      ANDI	R16,0x7F
    004C7 BF0F      OUT	0x3F,R16
    004C8 91F9      LD	R31,Y+
    004C9 91E9      LD	R30,Y+
    004CA 91B9      LD	R27,Y+
    004CB 91A9      LD	R26,Y+
    004CC 9199      LD	R25,Y+
    004CD 9189      LD	R24,Y+
    004CE 9179      LD	R23,Y+
    004CF 9169      LD	R22,Y+
    004D0 9159      LD	R21,Y+
    004D1 9149      LD	R20,Y+
    004D2 9139      LD	R19,Y+
    004D3 9129      LD	R18,Y+
    004D4 9119      LD	R17,Y+
    004D5 9109      LD	R16,Y+
    004D6 90F9      LD	R15,Y+
    004D7 90E9      LD	R14,Y+
    004D8 90D9      LD	R13,Y+
    004D9 90C9      LD	R12,Y+
    004DA 90B9      LD	R11,Y+
    004DB 90A9      LD	R10,Y+
    004DC 9099      LD	R9,Y+
    004DD 9089      LD	R8,Y+
    004DE 9079      LD	R7,Y+
    004DF 9069      LD	R6,Y+
    004E0 9059      LD	R5,Y+
    004E1 9049      LD	R4,Y+
    004E2 9039      LD	R3,Y+
    004E3 9029      LD	R2,Y+
    004E4 9019      LD	R1,Y+
    004E5 9009      LD	R0,Y+
    004E6 9518      RETI
_OSCtxSw:
    004E7 920A      ST	-Y,R0
    004E8 921A      ST	-Y,R1
    004E9 922A      ST	-Y,R2
    004EA 923A      ST	-Y,R3
    004EB 924A      ST	-Y,R4
    004EC 925A      ST	-Y,R5
    004ED 926A      ST	-Y,R6
    004EE 927A      ST	-Y,R7
    004EF 928A      ST	-Y,R8
    004F0 929A      ST	-Y,R9
    004F1 92AA      ST	-Y,R10
    004F2 92BA      ST	-Y,R11
    004F3 92CA      ST	-Y,R12
    004F4 92DA      ST	-Y,R13

⌨️ 快捷键说明

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