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

📄 ucos.lst

📁 ucos移植到m64
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0483 910F      POP	R16
    0484 BF0F      OUT	0x3F,R16
    0485 9109      LD	R16,Y+
(0058) 
(0059) 	// the function address has an extra level of indirection. Fetch the
(0060)     // actual address.
(0061)     //    
(0062)     tmp = *(INT16U const *)task;
    0486 9508      RET
_OSTaskStkInit:
  stks                 --> R14
  tmp                  --> R12
  stk                  --> R10
  opt                  --> Y+8
  ptos                 --> Y+6
  pdata                --> R18
  task                 --> R16
    0487 940E0853  CALL	push_gset5x
(0063)    
(0064) 	// 36 Bytes
(0065)     *stks-- = (INT8U)tmp;	//Put task start address on top of hardware stack
    0489 80AE      LDD	R10,Y+6
    048A 80BF      LDD	R11,Y+7
    048B 01C5      MOVW	R24,R10
    048C 5484      SUBI	R24,0x44
(0066)     *stks-- = (INT8U)(tmp >> 8);
    048D 4090      SBCI	R25,0
    048E 01F8      MOVW	R30,R16
    048F 90C5      LPM	R12,Z+
    0490 90D4      LPM	R13,0(Z)
    0491 011C      MOVW	R2,R24
    0492 9701      SBIW	R24,1
    0493 01F1      MOVW	R30,R2
    0494 82C0      STD	Z+0,R12
(0067) 
(0068)     *stk-- = (INT8U)0x00;		// R0  = 0x00
    0495 011C      MOVW	R2,R24
    0496 9701      SBIW	R24,1
    0497 017C      MOVW	R14,R24
    0498 0126      MOVW	R4,R12
    0499 2C45      MOV	R4,R5
    049A 2455      CLR	R5
(0069)     *stk-- = (INT8U)0x01; 
    049B 01F1      MOVW	R30,R2
    049C 8240      STD	Z+0,R4
    049D 0115      MOVW	R2,R10
    049E 01C1      MOVW	R24,R2
    049F 9701      SBIW	R24,1
    04A0 2444      CLR	R4
(0070)     *stk-- = (INT8U)0x02;
    04A1 01F1      MOVW	R30,R2
    04A2 8240      STD	Z+0,R4
    04A3 011C      MOVW	R2,R24
    04A4 9701      SBIW	R24,1
    04A5 015C      MOVW	R10,R24
    04A6 E081      LDI	R24,1
    04A7 01F1      MOVW	R30,R2
(0071)     *stk-- = (INT8U)0x03;
    04A8 8380      STD	Z+0,R24
    04A9 0115      MOVW	R2,R10
    04AA 01C1      MOVW	R24,R2
    04AB 9701      SBIW	R24,1
    04AC 015C      MOVW	R10,R24
    04AD E082      LDI	R24,2
    04AE 01F1      MOVW	R30,R2
(0072)     *stk-- = (INT8U)0x04;
    04AF 8380      STD	Z+0,R24
    04B0 0115      MOVW	R2,R10
    04B1 01C1      MOVW	R24,R2
    04B2 9701      SBIW	R24,1
    04B3 015C      MOVW	R10,R24
    04B4 E083      LDI	R24,3
    04B5 01F1      MOVW	R30,R2
(0073)     *stk-- = (INT8U)0x05;
    04B6 8380      STD	Z+0,R24
    04B7 0115      MOVW	R2,R10
    04B8 01C1      MOVW	R24,R2
    04B9 9701      SBIW	R24,1
    04BA 015C      MOVW	R10,R24
    04BB E084      LDI	R24,4
    04BC 01F1      MOVW	R30,R2
(0074)     *stk-- = (INT8U)0x06;
    04BD 8380      STD	Z+0,R24
    04BE 0115      MOVW	R2,R10
    04BF 01C1      MOVW	R24,R2
    04C0 9701      SBIW	R24,1
    04C1 015C      MOVW	R10,R24
    04C2 E085      LDI	R24,5
    04C3 01F1      MOVW	R30,R2
(0075)     *stk-- = (INT8U)0x07;
    04C4 8380      STD	Z+0,R24
    04C5 0115      MOVW	R2,R10
    04C6 01C1      MOVW	R24,R2
    04C7 9701      SBIW	R24,1
    04C8 015C      MOVW	R10,R24
    04C9 E086      LDI	R24,6
    04CA 01F1      MOVW	R30,R2
(0076)     *stk-- = (INT8U)0x08;
    04CB 8380      STD	Z+0,R24
    04CC 0115      MOVW	R2,R10
    04CD 01C1      MOVW	R24,R2
    04CE 9701      SBIW	R24,1
    04CF 015C      MOVW	R10,R24
    04D0 E087      LDI	R24,7
    04D1 01F1      MOVW	R30,R2
(0077)     *stk-- = (INT8U)0x09;
    04D2 8380      STD	Z+0,R24
    04D3 0115      MOVW	R2,R10
    04D4 01C1      MOVW	R24,R2
    04D5 9701      SBIW	R24,1
    04D6 015C      MOVW	R10,R24
    04D7 E088      LDI	R24,0x8
    04D8 01F1      MOVW	R30,R2
(0078)     *stk-- = (INT8U)0x10;
    04D9 8380      STD	Z+0,R24
    04DA 0115      MOVW	R2,R10
    04DB 01C1      MOVW	R24,R2
    04DC 9701      SBIW	R24,1
    04DD 015C      MOVW	R10,R24
    04DE E089      LDI	R24,0x9
    04DF 01F1      MOVW	R30,R2
(0079)     *stk-- = (INT8U)0x11;
    04E0 8380      STD	Z+0,R24
    04E1 0115      MOVW	R2,R10
    04E2 01C1      MOVW	R24,R2
    04E3 9701      SBIW	R24,1
    04E4 015C      MOVW	R10,R24
    04E5 E180      LDI	R24,0x10
    04E6 01F1      MOVW	R30,R2
(0080)     *stk-- = (INT8U)0x12;
    04E7 8380      STD	Z+0,R24
    04E8 0115      MOVW	R2,R10
    04E9 01C1      MOVW	R24,R2
    04EA 9701      SBIW	R24,1
    04EB 015C      MOVW	R10,R24
    04EC E181      LDI	R24,0x11
    04ED 01F1      MOVW	R30,R2
(0081)     *stk-- = (INT8U)0x13;
    04EE 8380      STD	Z+0,R24
    04EF 0115      MOVW	R2,R10
    04F0 01C1      MOVW	R24,R2
    04F1 9701      SBIW	R24,1
    04F2 015C      MOVW	R10,R24
    04F3 E182      LDI	R24,0x12
    04F4 01F1      MOVW	R30,R2
(0082)     *stk-- = (INT8U)0x14;
    04F5 8380      STD	Z+0,R24
    04F6 0115      MOVW	R2,R10
    04F7 01C1      MOVW	R24,R2
    04F8 9701      SBIW	R24,1
    04F9 015C      MOVW	R10,R24
    04FA E183      LDI	R24,0x13
    04FB 01F1      MOVW	R30,R2
(0083)     *stk-- = (INT8U)0x15;
    04FC 8380      STD	Z+0,R24
    04FD 0115      MOVW	R2,R10
    04FE 01C1      MOVW	R24,R2
    04FF 9701      SBIW	R24,1
    0500 015C      MOVW	R10,R24
    0501 E184      LDI	R24,0x14
    0502 01F1      MOVW	R30,R2
(0084)     tmp    = (INT16U)pdata;
    0503 8380      STD	Z+0,R24
(0085)     *stk-- = (INT8U)tmp;	//Simulate call to function with argument
    0504 0115      MOVW	R2,R10
    0505 01C1      MOVW	R24,R2
    0506 9701      SBIW	R24,1
    0507 015C      MOVW	R10,R24
    0508 E185      LDI	R24,0x15
(0086)     *stk-- = (INT8U)(tmp >> 8);
    0509 01F1      MOVW	R30,R2
    050A 8380      STD	Z+0,R24
    050B 0169      MOVW	R12,R18
    050C 0115      MOVW	R2,R10
    050D 01C1      MOVW	R24,R2
    050E 9701      SBIW	R24,1
    050F 01F1      MOVW	R30,R2
(0087)     *stk-- = (INT8U)0x18;
    0510 82C0      STD	Z+0,R12
    0511 011C      MOVW	R2,R24
    0512 9701      SBIW	R24,1
    0513 0126      MOVW	R4,R12
    0514 2C45      MOV	R4,R5
    0515 2455      CLR	R5
(0088)     *stk-- = (INT8U)0x19;
    0516 01F1      MOVW	R30,R2
    0517 8240      STD	Z+0,R4
    0518 011C      MOVW	R2,R24
    0519 9701      SBIW	R24,1
    051A 015C      MOVW	R10,R24
    051B E188      LDI	R24,0x18
    051C 01F1      MOVW	R30,R2
(0089)     *stk-- = (INT8U)0x20;
    051D 8380      STD	Z+0,R24
    051E 0115      MOVW	R2,R10
    051F 01C1      MOVW	R24,R2
    0520 9701      SBIW	R24,1
    0521 015C      MOVW	R10,R24
    0522 E189      LDI	R24,0x19
    0523 01F1      MOVW	R30,R2
(0090)     *stk-- = (INT8U)0x21;
    0524 8380      STD	Z+0,R24
    0525 0115      MOVW	R2,R10
    0526 01C1      MOVW	R24,R2
    0527 9701      SBIW	R24,1
    0528 015C      MOVW	R10,R24
    0529 E280      LDI	R24,0x20
    052A 01F1      MOVW	R30,R2
(0091)     *stk-- = (INT8U)0x22;
    052B 8380      STD	Z+0,R24
    052C 0115      MOVW	R2,R10
    052D 01C1      MOVW	R24,R2
    052E 9701      SBIW	R24,1
    052F 015C      MOVW	R10,R24
    0530 E281      LDI	R24,0x21
    0531 01F1      MOVW	R30,R2
(0092)     *stk-- = (INT8U)0x23;
    0532 8380      STD	Z+0,R24
    0533 0115      MOVW	R2,R10
    0534 01C1      MOVW	R24,R2
    0535 9701      SBIW	R24,1
    0536 015C      MOVW	R10,R24
    0537 E282      LDI	R24,0x22
    0538 01F1      MOVW	R30,R2
(0093)     *stk-- = (INT8U)0x24;
    0539 8380      STD	Z+0,R24
    053A 0115      MOVW	R2,R10
    053B 01C1      MOVW	R24,R2
    053C 9701      SBIW	R24,1
    053D 015C      MOVW	R10,R24
    053E E283      LDI	R24,0x23
    053F 01F1      MOVW	R30,R2
(0094)     *stk-- = (INT8U)0x25;
    0540 8380      STD	Z+0,R24
    0541 0115      MOVW	R2,R10
    0542 01C1      MOVW	R24,R2
    0543 9701      SBIW	R24,1
    0544 015C      MOVW	R10,R24
    0545 E284      LDI	R24,0x24
    0546 01F1      MOVW	R30,R2
(0095)     *stk-- = (INT8U)0x26;
    0547 8380      STD	Z+0,R24
    0548 0115      MOVW	R2,R10
    0549 01C1      MOVW	R24,R2
    054A 9701      SBIW	R24,1
    054B 015C      MOVW	R10,R24
    054C E285      LDI	R24,0x25
    054D 01F1      MOVW	R30,R2
(0096)     *stk-- = (INT8U)0x27;
    054E 8380      STD	Z+0,R24
    054F 0115      MOVW	R2,R10
    0550 01C1      MOVW	R24,R2
    0551 9701      SBIW	R24,1
    0552 015C      MOVW	R10,R24
    0553 E286      LDI	R24,0x26
    0554 01F1      MOVW	R30,R2
(0097) 	// the heap pointer Y=R29:R28 will not be stored
(0098)     *stk-- = (INT8U)0x30;
    0555 8380      STD	Z+0,R24
    0556 0115      MOVW	R2,R10
    0557 01C1      MOVW	R24,R2
    0558 9701      SBIW	R24,1
    0559 015C      MOVW	R10,R24
    055A E287      LDI	R24,0x27
    055B 01F1      MOVW	R30,R2
(0099)     *stk-- = (INT8U)0x31;
    055C 8380      STD	Z+0,R24
    055D 0115      MOVW	R2,R10
    055E 01C1      MOVW	R24,R2
    055F 9701      SBIW	R24,1
    0560 015C      MOVW	R10,R24
    0561 E380      LDI	R24,0x30
    0562 01F1      MOVW	R30,R2
(0100) //    *stk-- = (INT8U)0x3B;
(0101)     *stk-- = (INT8U)0x80;	//SREG = Interrupts enabled
    0563 8380      STD	Z+0,R24
    0564 0115      MOVW	R2,R10
    0565 01C1      MOVW	R24,R2
    0566 9701      SBIW	R24,1
    0567 015C      MOVW	R10,R24
    0568 E381      LDI	R24,0x31
    0569 01F1      MOVW	R30,R2
(0102) 
(0103)     tmp    = (INT16U)(stks);
    056A 8380      STD	Z+0,R24
(0104)     *stk-- = (INT8U)(tmp >> 8);
    056B 0115      MOVW	R2,R10
    056C 01C1      MOVW	R24,R2
    056D 9701      SBIW	R24,1
    056E 015C      MOVW	R10,R24
    056F E880      LDI	R24,0x80
    0570 01F1      MOVW	R30,R2
    0571 8380      STD	Z+0,R24
    0572 0167      MOVW	R12,R14
    0573 0115      MOVW	R2,R10
(0105)     *stk   = (INT8U)(tmp);
    0574 01C1      MOVW	R24,R2
    0575 9701      SBIW	R24,1
(0106)     return ((void *)stk);
    0576 015C      MOVW	R10,R24
    0577 0126      MOVW	R4,R12
    0578 2C45      MOV	R4,R5
    0579 2455      CLR	R5
    057A 01F1      MOVW	R30,R2
    057B 8240      STD	Z+0,R4
    057C 01FC      MOVW	R30,R24
    057D 82C0      STD	Z+0,R12
    057E 018C      MOVW	R16,R24
    057F 940E0849  CALL	pop_gset5x
(0107) }
(0108) 
(0109) INT8U OSTaskCreate (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio)
(0110) {
(0111)     void   *psp;
(0112)     INT8U   err;
(0113) 
(0114) 
(0115)     if (prio > OS_LOWEST_PRIO) {             /* Make sure priority is within allowable range           */
    0581 9508      RET
_OSTaskCreate:
  psp                  --> R10
  err                  --> R10
  prio                 --> R12
  ptos                 --> Y+16
  pdata                --> R14
  task                 --> R10
    0582 940E0853  CALL	push_gset5x
(0116)         return (OS_PRIO_INVALID);
    0584 0179      MOVW	R14,R18
(0117)     }
(0118)     OS_ENTER_CRITICAL();
    0585 0158      MOVW	R10,R16
    0586 972A      SBIW	R28,0xA
    0587 88CA      LDD	R12,Y+18
    0588 E08F      LDI	R24,0xF
    0589 158C      CP	R24,R12
(0119)     if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { /* Make sure task doesn't already exist at this priority  */
    058A F410      BCC	0x058D
    058B E20A      LDI	R16,0x2A
    058C C070      RJMP	0x05FD
    058D 930A      ST	R16,-Y
    058E B70F      IN	R16,0x3F
    058F 94F8      BCLR	7
    0590 930F      PUSH	R16
    0591 9109      LD	R16,Y+
    0592 E082      LDI	R24,2
    0593 9D8C      MUL	R24,R12
    0594 01F0      MOVW	R30,

⌨️ 快捷键说明

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