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

📄 ucos.lst

📁 ucos在protus上得仿真试验
💻 LST
📖 第 1 页 / 共 5 页
字号:
    017C 2DEE      MOV	R30,R14
    017D 27FF      CLR	R31
    017E 0FE8      ADD	R30,R24
    017F 1FF9      ADC	R31,R25
    0180 8100      LDD	R16,0+Z
    0181 6E00      ORI	R16,0xE0
    0182 D507      RCALL	_write164
(0129) 		}
(0130) 		if(++i > 3) i = 0;
    0183 2D8E      MOV	R24,R14
    0184 5F8F      SUBI	R24,0xFF
    0185 2E28      MOV	R2,R24
    0186 2EE8      MOV	R14,R24
    0187 E083      LDI	R24,3
    0188 1582      CP	R24,R2
    0189 F408      BCC	0x018B
    018A 24EE      CLR	R14
(0131) //end  display		
(0132) 		OSTimeDly (2);
    018B E002      LDI	R16,2
    018C E010      LDI	R17,0
    018D D4C0      RCALL	_OSTimeDly
    018E CF6F      RJMP	0x00FE
    018F 9621      ADIW	R28,1
    0190 D65A      RCALL	pop_gset5x
    0191 9508      RET
_Task2:
  data                 --> R10
    0192 D65A      RCALL	push_gset3x
    0193 0158      MOVW	R10,R16
(0133) 	}
(0134) }
(0135) void Task2(void *data){
(0136)     data = data;
(0137) 	OSTimeDly(5);
    0194 E005      LDI	R16,5
    0195 E010      LDI	R17,0
    0196 D4B7      RCALL	_OSTimeDly
(0138) 	s = EEPROMread(1);
    0197 E001      LDI	R16,1
    0198 E010      LDI	R17,0
    0199 D672      RCALL	_EEPROMread
    019A 93000129  STS	_s,R16
(0139) 	m = EEPROMread(2);
    019C E002      LDI	R16,2
    019D E010      LDI	R17,0
    019E D66D      RCALL	_EEPROMread
    019F 9300012A  STS	_m,R16
(0140) 	for (;;){
(0141) 	    if(state == 1){
    01A1 91800128  LDS	R24,_state
    01A3 3081      CPI	R24,1
    01A4 F559      BNE	0x01D0
(0142) 	        if(++s == 60){
    01A5 91800129  LDS	R24,_s
    01A7 5F8F      SUBI	R24,0xFF
    01A8 2E28      MOV	R2,R24
    01A9 92200129  STS	_s,R2
    01AB 338C      CPI	R24,0x3C
    01AC F4C9      BNE	0x01C6
(0143) 		        s = 0;
    01AD 2422      CLR	R2
    01AE 92200129  STS	_s,R2
(0144) 			    if(++m == 60){
    01B0 9180012A  LDS	R24,_m
    01B2 5F8F      SUBI	R24,0xFF
    01B3 2E28      MOV	R2,R24
    01B4 9220012A  STS	_m,R2
    01B6 338C      CPI	R24,0x3C
    01B7 F471      BNE	0x01C6
(0145) 			        m = 0;
    01B8 2422      CLR	R2
    01B9 9220012A  STS	_m,R2
(0146) 				    if(++h == 24) h=0;
    01BB 9180012B  LDS	R24,_h
    01BD 5F8F      SUBI	R24,0xFF
    01BE 2E28      MOV	R2,R24
    01BF 9220012B  STS	_h,R2
    01C1 3188      CPI	R24,0x18
    01C2 F419      BNE	0x01C6
    01C3 2422      CLR	R2
    01C4 9220012B  STS	_h,R2
(0147) 			    }
(0148) 		    }
(0149) 			EEPROMwrite(1,s);
    01C6 91200129  LDS	R18,_s
    01C8 E001      LDI	R16,1
    01C9 E010      LDI	R17,0
    01CA D64A      RCALL	_EEPROMwrite
(0150) 			EEPROMwrite(2,m);
    01CB 9120012A  LDS	R18,_m
    01CD E002      LDI	R16,2
    01CE E010      LDI	R17,0
    01CF D645      RCALL	_EEPROMwrite
(0151) 		}
(0152) 		putchar('\n');
    01D0 E00A      LDI	R16,0xA
    01D1 D624      RCALL	_putchar
(0153) 		putchar(display[3]+'0');
    01D2 9100012F  LDS	R16,_display+3
    01D4 5D00      SUBI	R16,0xD0
    01D5 D620      RCALL	_putchar
(0154) 		putchar(display[2]+'0');
    01D6 9100012E  LDS	R16,_display+2
    01D8 5D00      SUBI	R16,0xD0
    01D9 D61C      RCALL	_putchar
(0155) 		putchar(':');
    01DA E30A      LDI	R16,0x3A
    01DB D61A      RCALL	_putchar
(0156) 		putchar(display[1]+'0');
    01DC 9100012D  LDS	R16,_display+1
    01DE 5D00      SUBI	R16,0xD0
    01DF D616      RCALL	_putchar
(0157) 		putchar(display[0]+'0');
    01E0 9100012C  LDS	R16,_display
    01E2 5D00      SUBI	R16,0xD0
    01E3 D612      RCALL	_putchar
(0158) 		OSTimeDly (500);
    01E4 EF04      LDI	R16,0xF4
    01E5 E011      LDI	R17,1
    01E6 D467      RCALL	_OSTimeDly
    01E7 CFB9      RJMP	0x01A1
    01E8 D5F4      RCALL	pop_gset3x
    01E9 9508      RET
_OSInit:
  i                    --> R10
    01EA D602      RCALL	push_gset3x
    01EB 9723      SBIW	R28,3
FILE: D:\job\avrtest\光盘\开发板\iccavr\source\os_core.c
(0001) 
(0002) #ifndef  OS_MASTER_FILE
(0003) #define  OS_GLOBALS
(0004) #include "includes.h"
(0005) #endif
(0006) 
(0007) /*
(0008) *********************************************************************************************************
(0009) *                                         LOCAL GLOBAL VARIABLES
(0010) *********************************************************************************************************
(0011) */
(0012)                                        
(0013) static  INT8U        OSIntExitY;               /* Variable used by 'OSIntExit' to prevent using locals */
(0014) static  OS_STK       OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE];       /* Idle       task stack              */
(0015) 
(0016) #if     OS_TASK_STAT_EN
(0017) static  OS_STK       OSTaskStatStk[OS_TASK_STAT_STK_SIZE];      /* Statistics task stack               */
(0018) #endif
(0019) 
(0020) static  OS_TCB       OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS];   /* Table of TCBs                       */
(0021) 
(0022) /*$PAGE*/
(0023) /*
(0024) *********************************************************************************************************
(0025) *                              MAPPING TABLE TO MAP BIT POSITION TO BIT MASK
(0026) *
(0027) * Note: Index into table is desired bit position, 0..7
(0028) *       Indexed value corresponds to bit mask
(0029) *********************************************************************************************************
(0030) */
(0031) 
(0032) INT8U const OSMapTbl[]   = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
(0033) 
(0034) /*
(0035) *********************************************************************************************************
(0036) *                                       PRIORITY RESOLUTION TABLE
(0037) *
(0038) * Note: Index into table is bit pattern to resolve highest priority
(0039) *       Indexed value corresponds to highest priority bit position (i.e. 0..7)
(0040) *********************************************************************************************************
(0041) */
(0042) 
(0043) INT8U const OSUnMapTbl[] = {
(0044)     0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0045)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0046)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0047)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0048)     6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0049)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0050)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0051)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0052)     7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0053)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0054)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0055)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0056)     6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0057)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0058)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0059)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
(0060) };
(0061) 
(0062) /*$PAGE*/
(0063) /*
(0064) *********************************************************************************************************
(0065) *                                             INITIALIZATION
(0066) *
(0067) * Description: This function is used to initialize the internals of uC/OS-II and MUST be called prior to
(0068) *              creating any uC/OS-II object and, prior to calling OSStart().
(0069) *
(0070) * Arguments  : none
(0071) *
(0072) * Returns    : none
(0073) *********************************************************************************************************
(0074) */
(0075) 
(0076) void OSInit (void)
(0077) {
(0078)     INT16U i;
(0079) 
(0080) 
(0081)     OSTime        = 0L;                                    /* Clear the 32-bit system clock            */
    01EC E080      LDI	R24,0
    01ED E090      LDI	R25,0
    01EE E0A0      LDI	R26,0
    01EF E0B0      LDI	R27,0
    01F0 939001EB  STS	_OSTime+1,R25
    01F2 938001EA  STS	_OSTime,R24
    01F4 93B001ED  STS	_OSTime+3,R27
    01F6 93A001EC  STS	_OSTime+2,R26
(0082)     OSIntNesting  = 0;                                     /* Clear the interrupt nesting counter      */
    01F8 2422      CLR	R2
    01F9 9220021E  STS	_OSIntNesting,R2
(0083)     OSLockNesting = 0;                                     /* Clear the scheduling lock counter        */
    01FB 9220021D  STS	_OSLockNesting,R2
(0084) #if OS_TASK_CREATE_EN  || OS_TASK_CREATE_EXT_EN || OS_TASK_DEL_EN
(0085)     OSTaskCtr     = 0;                                     /* Clear the number of tasks                */
    01FD 92200216  STS	_OSTaskCtr,R2
(0086) #endif
(0087)     OSRunning     = FALSE;                                 /* Indicate that multitasking not started   */
    01FF 92200217  STS	_OSRunning,R2
(0088)     OSIdleCtr     = 0L;                                    /* Clear the 32-bit idle counter            */
    0201 E080      LDI	R24,0
    0202 E090      LDI	R25,0
    0203 E0A0      LDI	R26,0
    0204 E0B0      LDI	R27,0
    0205 93900220  STS	_OSIdleCtr+1,R25
    0207 9380021F  STS	_OSIdleCtr,R24
    0209 93B00222  STS	_OSIdleCtr+3,R27
    020B 93A00221  STS	_OSIdleCtr+2,R26
(0089) 
(0090)     OSCtxSwCtr    = 0;                                     /* Clear the context switch counter         */
    020D E080      LDI	R24,0
    020E E090      LDI	R25,0
    020F E0A0      LDI	R26,0
    0210 E0B0      LDI	R27,0
    0211 93900236  STS	_OSCtxSwCtr+1,R25
    0213 93800235  STS	_OSCtxSwCtr,R24
    0215 93B00238  STS	_OSCtxSwCtr+3,R27
    0217 93A00237  STS	_OSCtxSwCtr+2,R26
(0091)     OSRdyGrp      = 0;                                     /* Clear the ready list                     */
    0219 9220021A  STS	_OSRdyGrp,R2
(0092)     for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
    021B 24AA      CLR	R10
    021C 24BB      CLR	R11
    021D C00A      RJMP	0x0228
(0093)         OSRdyTbl[i] = 0;
    021E E188      LDI	R24,0x18
    021F E092      LDI	R25,2
    0220 01F5      MOVW	R30,R10
    0221 0FE8      ADD	R30,R24
    0222 1FF9      ADC	R31,R25
    0223 2422      CLR	R2
    0224 8220      STD	R2,0+Z
    0225 01C5      MOVW	R24,R10
    0226 9601      ADIW	R24,1
    0227 015C      MOVW	R10,R24
    0228 01C5      MOVW	R24,R10
    0229 3082      CPI	R24,2
    022A E0E0      LDI	R30,0
    022B 079E      CPC	R25,R30
    022C F388      BCS	0x021E
(0094)     }
(0095)                 
(0096)     OSPrioCur     = 0;
    022D 2422      CLR	R2
    022E 9220021C  STS	_OSPrioCur,R2
(0097)     OSPrioHighRdy = 0;                                           
    0230 9220021B  STS	_OSPrioHighRdy,R2
(0098)     OSTCBHighRdy  = (OS_TCB *)0;                                 /* TCB Initialization                 */
    0232 2433      CLR	R3
    0233 92300211  STS	_OSTCBHighRdy+1,R3
    0235 92200210  STS	_OSTCBHighRdy,R2
(0099)     OSTCBCur      = (OS_TCB *)0;
    0237 92300215  STS	_OSTCBCur+1,R3
    0239 92200214  STS	_OSTCBCur,R2
(0100)     OSTCBList     = (OS_TCB *)0;
    023B 9230020F  STS	_OSTCBList+1,R3
    023D 9220020E  STS	_OSTCBList,R2
(0101)     for (i = 0; i < (OS_LOWEST_PRIO + 1); i++) {                 /* Clear the priority table           */
    023F 24AA      CLR	R10
    0240 24BB      CLR	R11
    0241 C010      RJMP	0x0252
(0102)         OSTCBPrioTbl[i] = (OS_TCB *)0;
    0242 E002      LDI	R16,2
    0243 E010      LDI	R17,0
    0244 0195      MOVW	R18,R10
    0245 D587      RCALL	empy16s
    0246 01F8      MOVW	R30,R16
    0247 EE8E      LDI	R24,0xEE
    0248 E091      LDI	R25,1
    0249 0FE8      ADD	R30,R24
    024A 1FF9      ADC	R31,R25
    024B 2422      CLR	R2
    024C 2433      CLR	R3
    024D 8220      STD	R2,0+Z
    024E 8231      STD	R3,1+Z
    024F 01C5      MOVW	R24,R10
    0250 9601      ADIW	R24,1
    0251 015C      MOVW	R10,R24
    0252 01C5      MOVW	R24,R10
    0253 3180      CPI	R24,0x10
    0254 E0E0      LDI	R30,0
    0255 079E      CPC	R25,R30
    0256 F358      BCS	0x0242
(0103)     }
(0104)     for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {  /* Init. list of free TCBs            */
    0257 24AA      CLR	R10
    0258 24BB      CLR	R11
    0259 C019      RJMP	0x0273
(0105)         OSTCBTbl[i].OSTCBNext = &OSTCBTbl[i + 1];
    025A 0195      MOVW	R18,R10
    025B 5F2F      SUBI	R18,0xFF
    025C 4F3F      SBCI	R19,0xFF
    025D E00E      LDI	R16,0xE
    025E E010      LDI	R17,0
    025F D56D      RCALL	empy16s
    0260 0118      MOVW	R2,R16
    0261 E381      LDI	R24,0x31
    0262 E091      LDI	R25,1
    0263 0E28      ADD	R2,R24
    0264 1E39      ADC	R3,R25
    0265 E00E      LDI	R16,0xE
    0266 E010      LDI	R17,0
    0267 0195      MOVW	R18,R10
    0268 D564      RCALL	empy16s
    0269 01F8      MOVW	R30,R16
    026A E383      LDI	R24,0x33
    026B E091      LDI	R25,1
    026C 0FE8      ADD	R30,R24
    026D 1FF9      ADC	R31,R25
    026E 8220      STD	R2,0+Z
    026F 8231      STD	R3,1+Z
    0270 01C5      MOVW	R24,R10
    0271 9601      ADIW	R24,1
    0272 015C      MOVW	R10,R24
    0273 01C5      MOVW	R24,R10
    0274 3085      CPI	R24,5
    0275 E0E0      LDI	R30,0
    0276 079E      CPC	R25,R30

⌨️ 快捷键说明

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