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

📄 ucos.lst

📁 使用mega8和iccavr编译器的一段ucos操作系统程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    018B D523      RCALL	_write164
    018C C009      RJMP	0x0196
(0127) 		    case  3:  write164(display[i] | 0xE0);  break;
    018D E483      LDI	R24,0x43
    018E E091      LDI	R25,1
    018F 2DEE      MOV	R30,R14
    0190 27FF      CLR	R31
    0191 0FE8      ADD	R30,R24
    0192 1FF9      ADC	R31,R25
    0193 8100      LDD	R16,Z+0
    0194 6E00      ORI	R16,0xE0
    0195 D519      RCALL	_write164
(0128) 		}
(0129) 		if(++i > 3) i = 0;
    0196 2D8E      MOV	R24,R14
    0197 5F8F      SUBI	R24,0xFF
    0198 2EE8      MOV	R14,R24
    0199 E083      LDI	R24,3
    019A 158E      CP	R24,R14
    019B F408      BCC	0x019D
    019C 24EE      CLR	R14
(0130) //end  display		
(0131) 		OSTimeDly (5);
    019D E005      LDI	R16,5
    019E E010      LDI	R17,0
    019F D4CF      RCALL	_OSTimeDly
    01A0 CF70      RJMP	0x0111
    01A1 9621      ADIW	R28,1
    01A2 D671      RCALL	pop_gset5x
    01A3 9508      RET
_Task2:
  data                 --> R10
    01A4 D671      RCALL	push_gset3x
    01A5 0158      MOVW	R10,R16
(0132) 	}
(0133) }
(0134) void Task2(void *data){
(0135)     data = data;
(0136) 	OSTimeDly(5);
    01A6 E005      LDI	R16,5
    01A7 E010      LDI	R17,0
    01A8 D4C6      RCALL	_OSTimeDly
(0137) 	s = EEPROMread(1);
    01A9 E001      LDI	R16,1
    01AA E010      LDI	R17,0
    01AB D689      RCALL	_EEPROMread
    01AC 93000140  STS	s,R16
(0138) 	m = EEPROMread(2);
    01AE E002      LDI	R16,2
    01AF E010      LDI	R17,0
    01B0 D684      RCALL	_EEPROMread
    01B1 93000141  STS	m,R16
(0139) 	for (;;){
(0140) 	    if(state == 1){
    01B3 9180013F  LDS	R24,state
    01B5 3081      CPI	R24,1
    01B6 F559      BNE	0x01E2
(0141) 	        if(++s == 60){
    01B7 91800140  LDS	R24,s
    01B9 5F8F      SUBI	R24,0xFF
    01BA 2E28      MOV	R2,R24
    01BB 92200140  STS	s,R2
    01BD 338C      CPI	R24,0x3C
    01BE F4C9      BNE	0x01D8
(0142) 		        s = 0;
    01BF 2422      CLR	R2
    01C0 92200140  STS	s,R2
(0143) 			    if(++m == 60){
    01C2 91800141  LDS	R24,m
    01C4 5F8F      SUBI	R24,0xFF
    01C5 2E28      MOV	R2,R24
    01C6 92200141  STS	m,R2
    01C8 338C      CPI	R24,0x3C
    01C9 F471      BNE	0x01D8
(0144) 			        m = 0;
    01CA 2422      CLR	R2
    01CB 92200141  STS	m,R2
(0145) 				    if(++h == 24) h=0;
    01CD 91800142  LDS	R24,h
    01CF 5F8F      SUBI	R24,0xFF
    01D0 2E28      MOV	R2,R24
    01D1 92200142  STS	h,R2
    01D3 3188      CPI	R24,0x18
    01D4 F419      BNE	0x01D8
    01D5 2422      CLR	R2
    01D6 92200142  STS	h,R2
(0146) 			    }
(0147) 		    }
(0148) 			EEPROMwrite(1,s);
    01D8 91200140  LDS	R18,s
    01DA E001      LDI	R16,1
    01DB E010      LDI	R17,0
    01DC D65D      RCALL	_EEPROMwrite
(0149) 			EEPROMwrite(2,m);
    01DD 91200141  LDS	R18,m
    01DF E002      LDI	R16,2
    01E0 E010      LDI	R17,0
    01E1 D658      RCALL	_EEPROMwrite
(0150) 		}
(0151) 		putchar('\n');
    01E2 E00A      LDI	R16,0xA
    01E3 D63B      RCALL	_putchar
(0152) 		putchar(display[3]+'0');
    01E4 91000146  LDS	R16,display+3
    01E6 5D00      SUBI	R16,0xD0
    01E7 D637      RCALL	_putchar
(0153) 		putchar(display[2]+'0');
    01E8 91000145  LDS	R16,display+2
    01EA 5D00      SUBI	R16,0xD0
    01EB D633      RCALL	_putchar
(0154) 		putchar(':');
    01EC E30A      LDI	R16,0x3A
    01ED D631      RCALL	_putchar
(0155) 		putchar(display[1]+'0');
    01EE 91000144  LDS	R16,display+1
    01F0 5D00      SUBI	R16,0xD0
    01F1 D62D      RCALL	_putchar
(0156) 		putchar(display[0]+'0');
    01F2 91000143  LDS	R16,display
    01F4 5D00      SUBI	R16,0xD0
    01F5 D629      RCALL	_putchar
(0157) 		putchar(0x0d);
    01F6 E00D      LDI	R16,0xD
    01F7 D627      RCALL	_putchar
(0158) 		putchar(0x0a);
    01F8 E00A      LDI	R16,0xA
    01F9 D625      RCALL	_putchar
(0159) 		OSTimeDly (100);
    01FA E604      LDI	R16,0x64
    01FB E010      LDI	R17,0
    01FC D472      RCALL	_OSTimeDly
    01FD CFB5      RJMP	0x01B3
    01FE D607      RCALL	pop_gset3x
    01FF 9508      RET
_OSInit:
  i                    --> R10
    0200 D615      RCALL	push_gset3x
    0201 9723      SBIW	R28,3
FILE: G:\IccPro\ucos_m8_icc\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            */
    0202 E080      LDI	R24,0
    0203 E090      LDI	R25,0
    0204 E0A0      LDI	R26,0
    0205 E0B0      LDI	R27,0
    0206 93900202  STS	OSTime+1,R25
    0208 93800201  STS	OSTime,R24
    020A 93B00204  STS	OSTime+3,R27
    020C 93A00203  STS	OSTime+2,R26
(0082)     OSIntNesting  = 0;                                     /* Clear the interrupt nesting counter      */
    020E 2422      CLR	R2
    020F 92200235  STS	OSIntNesting,R2
(0083)     OSLockNesting = 0;                                     /* Clear the scheduling lock counter        */
    0211 92200234  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                */
    0213 9220022D  STS	OSTaskCtr,R2
(0086) #endif
(0087)     OSRunning     = FALSE;                                 /* Indicate that multitasking not started   */
    0215 9220022E  STS	OSRunning,R2
(0088)     OSIdleCtr     = 0L;                                    /* Clear the 32-bit idle counter            */
    0217 E080      LDI	R24,0
    0218 E090      LDI	R25,0
    0219 E0A0      LDI	R26,0
    021A E0B0      LDI	R27,0
    021B 93900237  STS	OSIdleCtr+1,R25
    021D 93800236  STS	OSIdleCtr,R24
    021F 93B00239  STS	OSIdleCtr+3,R27
    0221 93A00238  STS	OSIdleCtr+2,R26
(0089) 
(0090)     OSCtxSwCtr    = 0;                                     /* Clear the context switch counter         */
    0223 E080      LDI	R24,0
    0224 E090      LDI	R25,0
    0225 E0A0      LDI	R26,0
    0226 E0B0      LDI	R27,0
    0227 9390024D  STS	OSCtxSwCtr+1,R25
    0229 9380024C  STS	OSCtxSwCtr,R24
    022B 93B0024F  STS	OSCtxSwCtr+3,R27
    022D 93A0024E  STS	OSCtxSwCtr+2,R26
(0091)     OSRdyGrp      = 0;                                     /* Clear the ready list                     */
    022F 92200231  STS	OSRdyGrp,R2
(0092)     for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
    0231 24AA      CLR	R10
    0232 24BB      CLR	R11
    0233 C00A      RJMP	0x023E
(0093)         OSRdyTbl[i] = 0;
    0234 E28F      LDI	R24,0x2F
    0235 E092      LDI	R25,2
    0236 01F5      MOVW	R30,R10
    0237 0FE8      ADD	R30,R24
    0238 1FF9      ADC	R31,R25
    0239 2422      CLR	R2
    023A 8220      STD	Z+0,R2
    023B 01C5      MOVW	R24,R10
    023C 9601      ADIW	R24,1
    023D 015C      MOVW	R10,R24
    023E 01C5      MOVW	R24,R10
    023F 3082      CPI	R24,2
    0240 E0E0      LDI	R30,0
    0241 079E      CPC	R25,R30
    0242 F388      BCS	0x0234
(0094)     }
(0095)                 
(0096)     OSPrioCur     = 0;
    0243 2422      CLR	R2
    0244 92200233  STS	OSPrioCur,R2
(0097)     OSPrioHighRdy = 0;                                           
    0246 92200232  STS	OSPrioHighRdy,R2
(0098)     OSTCBHighRdy  = (OS_TCB *)0;                                 /* TCB Initialization                 */
    0248 2433      CLR	R3
    0249 92300228  STS	OSTCBHighRdy+1,R3
    024B 92200227  STS	OSTCBHighRdy,R2
(0099)     OSTCBCur      = (OS_TCB *)0;
    024D 9230022C  STS	OSTCBCur+1,R3
    024F 9220022B  STS	OSTCBCur,R2
(0100)     OSTCBList     = (OS_TCB *)0;
    0251 92300226  STS	OSTCBList+1,R3
    0253 92200225  STS	OSTCBList,R2
(0101)     for (i = 0; i < (OS_LOWEST_PRIO + 1); i++) {                 /* Clear the priority table           */
    0255 24AA      CLR	R10
    0256 24BB      CLR	R11
    0257 C010      RJMP	0x0268
(0102)         OSTCBPrioTbl[i] = (OS_TCB *)0;
    0258 E002      LDI	R16,2
    0259 E010      LDI	R17,0
    025A 0195      MOVW	R18,R10
    025B D59A      RCALL	empy16s
    025C 01F8      MOVW	R30,R16
    025D E085      LDI	R24,5
    025E E092      LDI	R25,2
    025F 0FE8      ADD	R30,R24
    0260 1FF9      ADC	R31,R25
    0261 2422      CLR	R2
    0262 2433      CLR	R3
    0263 8231      STD	Z+1,R3
    0264 8220      STD	Z+0,R2
    0265 01C5      MOVW	R24,R10
    0266 9601      ADIW	R24,1
    0267 015C      MOVW	R10,R24
    0268 01C5      MOVW	R24,R10
    0269 3180      CPI	R24,0x10
    026A E0E0      LDI	R30,0
    026B 079E      CPC	R25,R30
    026C F358      BCS	0x0258
(0103)     }
(0104)     for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {  /* Init. list of free TCBs            */
    026D 24AA      CLR	R10
    026E 24BB      CLR	R11
    026F C019      RJMP	0x0289
(0105)         OSTCBTbl[i].OSTCBNext = &OSTCBTbl[i + 1];
    0270 0195      MOVW	R18,R10
    0271 5F2F      SUBI	R18,0xFF
    0272 4F3F      SBCI	R19,0xFF
    0273 E00E      LDI	R16,0xE
    0274 E010      LDI	R17,0
    0275 D580      RCALL	empy16s
    0276 0118      MOVW	R2,R16
    0277 E488      LDI	R24,0x48
    0278 E091      LDI	R25,1
    0279 0E28      ADD	R2,R24
    027A 1E39      ADC	R3,R25
    027B E00E      LDI	R16,0xE
    027C E010      LDI	R17,0
    027D 0195      MOVW	R18,R10
    027E D577      RCALL	empy16s
    027F 01F8      MOVW	R30,R16
    0280 E48A      LDI	R24,0x4A
    0281 E091      LDI	R25,1
    0282 0FE8      ADD	R30,R24
    0283 1FF9      ADC	R31,R25

⌨️ 快捷键说明

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