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

📄 ucos_ii.ls

📁 ucos在所有cpu下的移植范例
💻 LS
📖 第 1 页 / 共 5 页
字号:
1853  0106 01            	dc.b	1
1854  0107 00            	dc.b	0
2157                     ; 114 void  OSEventTaskRdy (OS_EVENT *pevent, void *msg, INT8U msk)
2157                     ; 115 {
2158                     	switch	.text
2159  0000               _OSEventTaskRdy:
2161  0000 3b            	pshd	
2162  0001 1b99          	leas	-7,s
2163       00000007      OFST:	set	7
2166                     ; 124     y    = OSUnMapTbl[pevent->OSEventGrp];            /* Find highest prio. task waiting for message   */
2168  0003 b746          	tfr	d,y
2169  0005 e64d          	ldab	13,y
2170  0007 87            	clra	
2171  0008 b746          	tfr	d,y
2172  000a e6ea0008      	ldab	_OSUnMapTbl,y
2173  000e 6b82          	stab	OFST-5,s
2174                     ; 125     bity = OSMapTbl[y];
2176                     ;***** ldab OFST-5,s ***** L1
2177                     ;***** clra  ***** C0
2178  0010 b746          	tfr	d,y
2179  0012 e6ea0000      	ldab	_OSMapTbl,y
2180  0016 6b85          	stab	OFST-2,s
2181                     ; 126     x    = OSUnMapTbl[pevent->OSEventTbl[y]];
2183  0018 ed87          	ldy	OFST+0,s
2184  001a e682          	ldab	OFST-5,s
2185                     ;***** clra  ***** C0
2186  001c 19ee          	leay	d,y
2187  001e e642          	ldab	2,y
2188                     ;***** clra  ***** C0
2189  0020 b746          	tfr	d,y
2190  0022 e6ea0008      	ldab	_OSUnMapTbl,y
2191  0026 6b83          	stab	OFST-4,s
2192                     ; 127     bitx = OSMapTbl[x];
2194                     ;***** ldab OFST-4,s ***** L1
2195                     ;***** clra  ***** C0
2196  0028 b746          	tfr	d,y
2197  002a e6ea0000      	ldab	_OSMapTbl,y
2198  002e 6b84          	stab	OFST-3,s
2199                     ; 128     prio = (INT8U)((y << 3) + x);                     /* Find priority of task getting the msg         */
2201  0030 e682          	ldab	OFST-5,s
2202  0032 58            	lslb	
2203  0033 58            	lslb	
2204  0034 58            	lslb	
2205  0035 eb83          	addb	OFST-4,s
2206  0037 6b86          	stab	OFST-1,s
2207                     ; 129     if ((pevent->OSEventTbl[y] &= ~bitx) == 0) {      /* Remove this task from the waiting list        */
2209  0039 ed87          	ldy	OFST+0,s
2210  003b e682          	ldab	OFST-5,s
2211                     ;***** clra  ***** C0
2212  003d 19ee          	leay	d,y
2213  003f e684          	ldab	OFST-3,s
2214  0041 51            	comb	
2215  0042 e442          	andb	2,y
2216  0044 6b42          	stab	2,y
2217  0046 2609          	bne	L1301
2218                     ; 130         pevent->OSEventGrp &= ~bity;
2220  0048 ed87          	ldy	OFST+0,s
2221  004a e685          	ldab	OFST-2,s
2222  004c 51            	comb	
2223  004d e44d          	andb	13,y
2224  004f 6b4d          	stab	13,y
2225  0051               L1301:
2226                     ; 132     ptcb                 =  OSTCBPrioTbl[prio];       /* Point to this task's OS_TCB                   */
2228  0051 e686          	ldab	OFST-1,s
2229  0053 87            	clra	
2230  0054 59            	lsld	
2231  0055 b746          	tfr	d,y
2232  0057 ecea0a24      	ldd	_OSTCBPrioTbl,y
2233  005b 6c80          	std	OFST-7,s
2234                     ; 133     ptcb->OSTCBDly       =  0;                        /* Prevent OSTimeTick() from readying task       */
2236  005d 87            	clra	
2237  005e c7            	clrb	
2238  005f ed80          	ldy	OFST-7,s
2239  0061 6ce816        	std	22,y
2240                     ; 134     ptcb->OSTCBEventPtr  = (OS_EVENT *)0;             /* Unlink ECB from this task                     */
2242                     ;***** clra  ***** C0
2243                     ;***** clrb  ***** C0
2244                     ;***** ldy OFST-7,s ***** L1
2245  0064 6ce812        	std	18,y
2246                     ; 136     ptcb->OSTCBMsg       = msg;                       /* Send message directly to waiting task         */
2248  0067 ec8b          	ldd	OFST+4,s
2249                     ;***** ldy OFST-7,s ***** L1
2250  0069 6ce814        	std	20,y
2251                     ; 140     ptcb->OSTCBStat     &= ~msk;                      /* Clear bit associated with event type          */
2253                     ;***** ldy OFST-7,s ***** L1
2254  006c e68d          	ldab	OFST+6,s
2255  006e 51            	comb	
2256  006f e4e818        	andb	24,y
2257  0072 6be818        	stab	24,y
2258                     ; 141     if (ptcb->OSTCBStat == OS_STAT_RDY) {             /* See if task is ready (could be susp'd)        */
2260                     ;***** ldy OFST-7,s ***** L1
2261                     ;***** tst 24,y ***** T3
2262                     ;***** tstb  ***** T4
2263  0075 2617          	bne	L3301
2264                     ; 142         OSRdyGrp        |=  bity;                     /* Put task in the ready to run list             */
2266  0077 e685          	ldab	OFST-2,s
2267  0079 fa0ab6        	orab	_OSRdyGrp
2268  007c 7b0ab6        	stab	_OSRdyGrp
2269                     ; 143         OSRdyTbl[y]     |=  bitx;
2271  007f e682          	ldab	OFST-5,s
2272  0081 87            	clra	
2273  0082 b746          	tfr	d,y
2274  0084 e684          	ldab	OFST-3,s
2275  0086 eaea0aae      	orab	_OSRdyTbl,y
2276  008a 6bea0aae      	stab	_OSRdyTbl,y
2277  008e               L3301:
2278                     ; 145 }
2281  008e 1b89          	leas	9,s
2282  0090 3d            	rts	
2317                     ; 163 void  OSEventTaskWait (OS_EVENT *pevent)
2317                     ; 164 {
2318                     	switch	.text
2319  0091               _OSEventTaskWait:
2321  0091 3b            	pshd	
2322       00000000      OFST:	set	0
2325                     ; 165     OSTCBCur->OSTCBEventPtr = pevent;            /* Store pointer to event control block in TCB        */
2327  0092 fd0aaa        	ldy	_OSTCBCur
2328  0095 6ce812        	std	18,y
2329                     ; 166     if ((OSRdyTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0) {      /* Task no longer ready      */
2331                     ;***** ldy _OSTCBCur ***** L1
2332  0098 e6e81b        	ldab	27,y
2333  009b 87            	clra	
2334  009c b746          	tfr	d,y
2335  009e fe0aaa        	ldx	_OSTCBCur
2336  00a1 e6e01c        	ldab	28,x
2337  00a4 51            	comb	
2338  00a5 e4ea0aae      	andb	_OSRdyTbl,y
2339  00a9 6bea0aae      	stab	_OSRdyTbl,y
2340  00ad 260c          	bne	L1501
2341                     ; 167         OSRdyGrp &= ~OSTCBCur->OSTCBBitY;
2343                     ;***** ldy _OSTCBCur ***** L6
2344  00af b756          	tfr	x,y
2345  00b1 e6e81d        	ldab	29,y
2346  00b4 51            	comb	
2347  00b5 f40ab6        	andb	_OSRdyGrp
2348  00b8 7b0ab6        	stab	_OSRdyGrp
2349  00bb               L1501:
2350                     ; 169     pevent->OSEventTbl[OSTCBCur->OSTCBY] |= OSTCBCur->OSTCBBitX;          /* Put task in waiting list  */
2352  00bb ed80          	ldy	OFST+0,s
2353                     ;***** ldx _OSTCBCur ***** L1
2354  00bd e6e01b        	ldab	27,x
2355  00c0 87            	clra	
2356  00c1 19ee          	leay	d,y
2357                     ;***** ldx _OSTCBCur ***** L1
2358  00c3 e6e01c        	ldab	28,x
2359  00c6 ea42          	orab	2,y
2360  00c8 6b42          	stab	2,y
2361                     ; 170     pevent->OSEventGrp                   |= OSTCBCur->OSTCBBitY;
2363  00ca ed80          	ldy	OFST+0,s
2364                     ;***** ldx _OSTCBCur ***** L1
2365  00cc e6e01d        	ldab	29,x
2366  00cf ea4d          	orab	13,y
2367  00d1 6b4d          	stab	13,y
2368                     ; 171 }
2371  00d3 31            	puly	
2372  00d4 3d            	rts	
2405                     ; 189 void  OSEventTO (OS_EVENT *pevent)
2405                     ; 190 {
2406                     	switch	.text
2407  00d5               _OSEventTO:
2409  00d5 3b            	pshd	
2410       00000000      OFST:	set	0
2413                     ; 191     if ((pevent->OSEventTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0) {
2415  00d6 b746          	tfr	d,y
2416  00d8 fe0aaa        	ldx	_OSTCBCur
2417  00db e6e01b        	ldab	27,x
2418  00de 87            	clra	
2419  00df 19ee          	leay	d,y
2420                     ;***** ldx _OSTCBCur ***** L1
2421  00e1 e6e01c        	ldab	28,x
2422  00e4 51            	comb	
2423  00e5 e442          	andb	2,y
2424  00e7 6b42          	stab	2,y
2425  00e9 260a          	bne	L7601
2426                     ; 192         pevent->OSEventGrp &= ~OSTCBCur->OSTCBBitY;
2428  00eb ed80          	ldy	OFST+0,s
2429                     ;***** ldx _OSTCBCur ***** L1
2430  00ed e6e01d        	ldab	29,x
2431  00f0 51            	comb	
2432  00f1 e44d          	andb	13,y
2433  00f3 6b4d          	stab	13,y
2434  00f5               L7601:
2435                     ; 194     OSTCBCur->OSTCBStat     = OS_STAT_RDY;       /* Set status to ready                                */
2437                     ;***** ldy _OSTCBCur ***** L6
2438  00f5 b756          	tfr	x,y
2439                     ;***** clr 24,y ***** C0
2440  00f7 87            	clra	
2441  00f8 6ae818        	staa	24,y
2442                     ; 195     OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0;     /* No longer waiting for event                        */
2444                     ;***** clra  ***** C0
2445  00fb c7            	clrb	
2446                     ;***** ldy _OSTCBCur ***** L1
2447  00fc 6ce812        	std	18,y
2448                     ; 196 }
2451  00ff 31            	puly	
2452  0100 3d            	rts	
2492                     ; 213 void  OSEventWaitListInit (OS_EVENT *pevent)
2492                     ; 214 {
2493                     	switch	.text
2494  0101               _OSEventWaitListInit:
2496  0101 3b            	pshd	
2497  0102 37            	pshb	
2498       00000001      OFST:	set	1
2501                     ; 218     pevent->OSEventGrp = 0x00;                   /* No task waiting on event                           */
2503  0103 b746          	tfr	d,y
2504                     ;***** clr 13,y ***** C0
2505  0105 c7            	clrb	
2506  0106 6b4d          	stab	13,y
2507                     ; 219     for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
2509                     ;***** clr OFST-1,s ***** L0
2510                     ;***** clrb  ***** C0
2511  0108 6b80          	stab	OFST-1,s
2512                     ;***** ldab OFST-1,s ***** L0
2513  010a               L7011:
2514                     ; 220         pevent->OSEventTbl[i] = 0x00;
2516  010a ed81          	ldy	OFST+0,s
2517                     ;***** ldab OFST-1,s ***** M4
2518  010c 87            	clra	
2519  010d 19ee          	leay	d,y
2520  010f 6942          	clr	2,y
2521                     ; 219     for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
2523  0111 6280          	inc	OFST-1,s
2526  0113 e680          	ldab	OFST-1,s
2527  0115 c108          	cmpb	#8
2528  0117 25f1          	blo	L7011
2529                     ; 222 }
2532  0119 1b83          	leas	3,s
2533  011b 3d            	rts	
2591                     ; 238 void OSInit (void)
2591                     ; 239 {
2592                     	switch	.text
2593  011c               _OSInit:
2595  011c 3b            	pshd	
2596       00000002      OFST:	set	2
2599                     ; 243     OSTime        = 0L;                                    /* Clear the 32-bit system clock            */
2601                     ;***** ldd #0 ***** L0
2602  011d 87            	clra	
2603  011e c7            	clrb	
2604  011f 7c0a22        	std	_OSTime+2
2605                     ;***** ldd #0 ***** L0
2606                     ;***** clra  ***** C0
2607                     ;***** clrb  ***** C0
2608  0122 7c0a20        	std	_OSTime
2609                     ; 244     OSIntNesting  = 0;                                     /* Clear the interrupt nesting counter      */
2611                     ;***** clr _OSIntNesting ***** C0
2612                     ;***** clra  ***** C0
2613  0125 7a0aba        	staa	_OSIntNesting
2614                     ; 245     OSLockNesting = 0;                                     /* Clear the scheduling lock counter        */
2616                     ;***** clr _OSLockNesting ***** C0
2617                     ;***** clrb  ***** C0
2618  0128 7b0ab9        	stab	_OSLockNesting
2619                     ; 247     OSTaskCtr     = 0;                                     /* Clear the number of tasks                */
2621                     ;***** clr _OSTaskCtr ***** C0
2622                     ;***** clrb  ***** C0
2623  012b 7b0aac        	stab	_OSTaskCtr
2624                     ; 249     OSRunning     = FALSE;                                 /* Indicate that multitasking not started   */
2626                     ;***** clr _OSRunning ***** C0
2627                     ;***** clra  ***** C0
2628  012e 7a0aad        	staa	_OSRunning
2629                     ; 250     OSIdleCtr     = 0L;                                    /* Clear the 32-bit idle counter            */
2631                     ;***** ldd #0 ***** L0
2632                     ;***** clra  ***** C0
2633                     ;***** clrb  ***** C0
2634  0131 7c0ac7        	std	_OSIdleCtr+2
2635                     ;***** ldd #0 ***** L0
2636                     ;***** clra  ***** C0
2637                     ;***** clrb  ***** C0

⌨️ 快捷键说明

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