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

📄 ucos.lst

📁 ucos在avr mega128上的移植
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    00FC EFCF      LDI	R28,0xFF
    00FD E1D0      LDI	R29,0x10
    00FE BFCD      OUT	0x3D,R28
    00FF BFDE      OUT	0x3E,R29
    0100 51C0      SUBI	R28,0x10
    0101 40D0      SBCI	R29,0
    0102 EA0A      LDI	R16,0xAA
    0103 8308      STD	Y+0,R16
    0104 2400      CLR	R0
    0105 E0E0      LDI	R30,0
    0106 E0F1      LDI	R31,1
    0107 E014      LDI	R17,4
    0108 31E6      CPI	R30,0x16
    0109 07F1      CPC	R31,R17
    010A F011      BEQ	0x010D
    010B 9201      ST	R0,Z+
    010C CFFB      RJMP	0x0108
    010D 8300      STD	Z+0,R16
    010E EFE8      LDI	R30,0xF8
    010F E0F1      LDI	R31,1
    0110 E0A0      LDI	R26,0
    0111 E0B1      LDI	R27,1
    0112 E011      LDI	R17,1
    0113 3FE8      CPI	R30,0xF8
    0114 07F1      CPC	R31,R17
    0115 F021      BEQ	0x011A
    0116 95C8      LPM
    0117 9631      ADIW	R30,1
    0118 920D      ST	R0,X+
    0119 CFF9      RJMP	0x0113
    011A 940E0900  CALL	_main
_exit:
    011C CFFF      RJMP	_exit
_TaskS:
    011D 940E09D3  CALL	push_gset1
    011F 01A8      MOVW	R20,R16
    0120 9723      SBIW	R28,3
    0121 D05F      RCALL	_OSTickISR_Init
    0122 D049      RCALL	_io_init
    0123 E081      LDI	R24,1
    0124 838A      STD	Y+2,R24
    0125 EF8F      LDI	R24,0xFF
    0126 E091      LDI	R25,1
    0127 8399      STD	Y+1,R25
    0128 8388      STD	Y+0,R24
    0129 2722      CLR	R18
    012A 2733      CLR	R19
    012B E80E      LDI	R16,0x8E
    012C E010      LDI	R17,0
    012D 940E0525  CALL	_OSTaskCreate
    012F E082      LDI	R24,2
    0130 838A      STD	Y+2,R24
_AppTaskStart:
  p_arg                --> R20
    0131 E78F      LDI	R24,0x7F
    0132 E091      LDI	R25,1
    0133 8399      STD	Y+1,R25
    0134 8388      STD	Y+0,R24
    0135 2722      CLR	R18
    0136 2733      CLR	R19
    0137 E80C      LDI	R16,0x8C
    0138 E010      LDI	R17,0
    0139 940E0525  CALL	_OSTaskCreate
    013B C00B      RJMP	0x0147
    013C E880      LDI	R24,0x80
    013D E090      LDI	R25,0
    013E B228      IN	R2,0x18
    013F 2433      CLR	R3
    0140 2628      EOR	R2,R24
    0141 2639      EOR	R3,R25
_AppTaskCreate:
    0142 BA28      OUT	0x18,R2
    0143 E00A      LDI	R16,0xA
    0144 E010      LDI	R17,0
    0145 940E059D  CALL	_OSTimeDly
    0147 CFF4      RJMP	0x013C
    0148 9623      ADIW	R28,3
    0149 940E09D6  CALL	pop_gset1
    014B 9508      RET
_Task1:
    014C 940E09D3  CALL	push_gset1
    014E 01A8      MOVW	R20,R16
    014F C008      RJMP	0x0158
    0150 E081      LDI	R24,1
    0151 B228      IN	R2,0x18
    0152 2628      EOR	R2,R24
    0153 BA28      OUT	0x18,R2
    0154 E104      LDI	R16,0x14
    0155 E010      LDI	R17,0
    0156 940E059D  CALL	_OSTimeDly
    0158 CFF7      RJMP	0x0150
    0159 940E09D6  CALL	pop_gset1
    015B 9508      RET
_Task2:
    015C 940E09D3  CALL	push_gset1
    015E 01A8      MOVW	R20,R16
    015F C008      RJMP	0x0168
    0160 E082      LDI	R24,2
    0161 B228      IN	R2,0x18
    0162 2628      EOR	R2,R24
    0163 BA28      OUT	0x18,R2
    0164 E10E      LDI	R16,0x1E
    0165 E010      LDI	R17,0
    0166 940E059D  CALL	_OSTimeDly
    0168 CFF7      RJMP	0x0160
    0169 940E09D6  CALL	pop_gset1
    016B 9508      RET
_io_init:
    016C 2422      CLR	R2
    016D BA2A      OUT	0x1A,R2
    016E EF8F      LDI	R24,0xFF
    016F BB8B      OUT	0x1B,R24
    0170 BB87      OUT	0x17,R24
    0171 BB88      OUT	0x18,R24
    0172 BA24      OUT	0x14,R2
    0173 BB85      OUT	0x15,R24
    0174 BA21      OUT	0x11,R2
    0175 BB82      OUT	0x12,R24
    0176 B822      OUT	0x02,R2
    0177 B983      OUT	0x03,R24
    0178 92200061  STS	0x61,R2
    017A 93800062  STS	0x62,R24
    017C 92200064  STS	0x64,R2
    017E 93800065  STS	0x65,R24
    0180 9508      RET
_OSTickISR_Init:
_AppTask1:
  p_arg                --> R20
    0181 E087      LDI	R24,7
    0182 BF83      OUT	0x33,R24
    0183 E081      LDI	R24,1
    0184 BF87      OUT	0x37,R24
    0185 9508      RET
_OSTickISR_Handler:
    0186 ED8C      LDI	R24,0xDC
    0187 BF82      OUT	0x32,R24
    0188 940E02AD  CALL	_OSTimeTick
    018A 9508      RET
_OSInit:
    018B 940E0806  CALL	_OSInitHookBegin
    018D D17F      RCALL	0x030D
    018E D1A4      RCALL	0x0333
_AppTask2:
  p_arg                --> R20
    018F D1CE      RCALL	0x035E
    0190 D17B      RCALL	0x030C
    0191 D1BE      RCALL	0x0350
    0192 940E0807  CALL	_OSInitHookEnd
    0194 D4E4      RCALL	_OSDebugInit
    0195 9508      RET
_OSIntEnter:
    0196 91800406  LDS	R24,OSRunning
    0198 3081      CPI	R24,1
    0199 F439      BNE	0x01A1
    019A 9180040D  LDS	R24,OSIntNesting
    019C 3F8F      CPI	R24,0xFF
_AppIOInit:
    019D F418      BCC	0x01A1
    019E 5F8F      SUBI	R24,0xFF
    019F 9380040D  STS	OSIntNesting,R24
    01A1 9508      RET
_OSIntExit:
  y                    --> R12
  cpu_sr               --> R10
    01A2 940E09CD  CALL	push_gset4
    01A4 24AA      CLR	R10
    01A5 91800406  LDS	R24,OSRunning
    01A7 3081      CPI	R24,1
    01A8 F009      BEQ	0x01AA
    01A9 C07B      RJMP	0x0225
    01AA 940E06D4  CALL	_OS_CPU_SR_Save
    01AC 2EA0      MOV	R10,R16
    01AD 2422      CLR	R2
    01AE 9030040D  LDS	R3,OSIntNesting
    01B0 1423      CP	R2,R3
    01B1 F420      BCC	0x01B6
    01B2 2D83      MOV	R24,R3
    01B3 5081      SUBI	R24,1
    01B4 9380040D  STS	OSIntNesting,R24
    01B6 9020040D  LDS	R2,OSIntNesting
    01B8 2022      TST	R2
    01B9 F009      BEQ	0x01BB
    01BA C067      RJMP	0x0222
    01BB 9020040C  LDS	R2,OSLockNesting
    01BD 2022      TST	R2
    01BE F009      BEQ	0x01C0
    01BF C062      RJMP	0x0222
    01C0 E98C      LDI	R24,0x9C
    01C1 E090      LDI	R25,0
    01C2 91E00409  LDS	R30,OSRdyGrp
    01C4 27FF      CLR	R31
    01C5 0FE8      ADD	R30,R24
    01C6 1FF9      ADC	R31,R25
    01C7 90C4      LPM	R12,0(Z)
    01C8 E087      LDI	R24,7
    01C9 E094      LDI	R25,4
    01CA 2DEC      MOV	R30,R12
    01CB 27FF      CLR	R31
    01CC 0FE8      ADD	R30,R24
    01CD 1FF9      ADC	R31,R25
    01CE 81E0      LDD	R30,Z+0
    01CF 27FF      CLR	R31
    01D0 E98C      LDI	R24,0x9C
    01D1 E090      LDI	R25,0
    01D2 0FE8      ADD	R30,R24
    01D3 1FF9      ADC	R31,R25
    01D4 9024      LPM	R2,0(Z)
    01D5 2433      CLR	R3
    01D6 2C4C      MOV	R4,R12
    01D7 2455      CLR	R5
    01D8 0C44      LSL	R4
    01D9 1C55      ROL	R5
    01DA 0C44      LSL	R4
    01DB 1C55      ROL	R5
    01DC 0C44      LSL	R4
    01DD 1C55      ROL	R5
    01DE 0C42      ADD	R4,R2
FILE: ucosii\os_core.c
(0001) /*
(0002) *********************************************************************************************************
(0003) *                                                uC/OS-II
(0004) *                                          The Real-Time Kernel
(0005) *                                             CORE FUNCTIONS
(0006) *
(0007) *                          (c) Copyright 1992-2003, Jean J. Labrosse, Weston, FL
(0008) *                                           All Rights Reserved
(0009) *
(0010) * File    : OS_CORE.C
(0011) * By      : Jean J. Labrosse
(0012) * Version : V2.76
(0013) *********************************************************************************************************
(0014) */
(0015) 
(0016) #ifndef  OS_MASTER_FILE
(0017) #define  OS_GLOBALS
(0018) #include <ucos_ii.h>
(0019) #endif
(0020) 
(0021) /*
(0022) *********************************************************************************************************
(0023) *                              MAPPING TABLE TO MAP BIT POSITION TO BIT MASK
(0024) *
(0025) * Note: Index into table is desired bit position, 0..7
(0026) *       Indexed value corresponds to bit mask
(0027) *********************************************************************************************************
(0028) */
(0029) 
(0030) INT8U  const  OSMapTbl[8]   = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
(0031) 
(0032) /*
(0033) *********************************************************************************************************
(0034) *                                       PRIORITY RESOLUTION TABLE
(0035) *
(0036) * Note: Index into table is bit pattern to resolve highest priority
(0037) *       Indexed value corresponds to highest priority bit position (i.e. 0..7)
(0038) *********************************************************************************************************
(0039) */
(0040) 
(0041) INT8U  const  OSUnMapTbl[256] = {
(0042)     0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x00 to 0x0F                             */
(0043)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x10 to 0x1F                             */
(0044)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x20 to 0x2F                             */
(0045)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x30 to 0x3F                             */
(0046)     6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x40 to 0x4F                             */
(0047)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x50 to 0x5F                             */
(0048)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x60 to 0x6F                             */
(0049)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x70 to 0x7F                             */
(0050)     7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x80 to 0x8F                             */
(0051)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0x90 to 0x9F                             */
(0052)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xA0 to 0xAF                             */
(0053)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xB0 to 0xBF                             */
(0054)     6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xC0 to 0xCF                             */
(0055)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xD0 to 0xDF                             */
(0056)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,       /* 0xE0 to 0xEF                             */
(0057)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0        /* 0xF0 to 0xFF                             */
(0058) };
(0059) 
(0060) /*$PAGE*/
(0061) /*
(0062) *********************************************************************************************************
(0063) *                                       FUNCTION PROTOTYPES
(0064) *********************************************************************************************************
(0065) */
(0066) static  void  OS_InitEventList(void);
(0067) static  void  OS_InitMisc(void);
(0068) static  void  OS_InitRdyList(void);
(0069) static  void  OS_InitTaskIdle(void);
(0070) #if OS_TASK_STAT_EN > 0
(0071) static  void  OS_InitTaskStat(void);
(0072) #endif
(0073) static  void  OS_InitTCBList(void);
(0074)   
(0075) /*$PAGE*/
(0076) /*
(0077) *********************************************************************************************************
(0078) *                         GET THE NAME OF A SEMAPHORE, MUTEX, MAILBOX or QUEUE
(0079) *
(0080) * Description: This function is used to obtain the name assigned to a semaphore, mutex, mailbox or queue.
(0081) *
(0082) * Arguments  : pevent    is a pointer to the event group.  'pevent' can point either to a semaphore,
(0083) *                        a mutex, a mailbox or a queue.  Where this function is concerned, the actual
(0084) *                        type is irrelevant.
(0085) *
(0086) *              pname     is a pointer to an ASCII string that will receive the name of the semaphore,
(0087) *                        mutex, mailbox or queue.  The string must be able to hold at least 
(0088) *                        OS_EVENT_NAME_SIZE characters.
(0089) *
(0090) *              err       is a pointer to an error code that can contain one of the following values:
(0091) *
(0092) *                        OS_NO_ERR                  if the name was copied to 'pname'
(0093) *                        OS_ERR_EVENT_TYPE          if 'pevent' is not pointing to the proper event 
(0094) *                                                   control block type.
(0095) *                        OS_ERR_PNAME_NULL          You passed a NULL pointer for 'pname'
(0096) *                        OS_ERR_PEVENT_NULL         if you passed a NULL pointer for 'pevent'

⌨️ 快捷键说明

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