亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os-task-switch.s

?? ucos-ii-at90S-icc-avr
?? S
?? 第 1 頁 / 共 4 頁
字號:
	lds R2,_OSRunning
	tst R2
	brne L34
	.dbline 178
	.dbline 179
;         OSPrioHighRdy = 0;
	clr R2
	sts _OSPrioHighRdy,R2
	.dbline 180
;         OSPrioCur     = 0;
	sts _OSPrioCur,R2
	.dbline 181
;         OSTCBHighRdy  = OSpTCBList[OSPrioHighRdy]; /* Point to highest priority task ready to run    */
	ldi R24,<_OSpTCBList
	ldi R25,>_OSpTCBList
	mov R30,R2
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	sts _OSTCBHighRdy+1,R3
	sts _OSTCBHighRdy,R2
	.dbline 182
;         OSTCBCur      = OSTCBHighRdy;
	sts _OSTCBCur+1,R3
	sts _OSTCBCur,R2
	.dbline 184
; #if OS_STRICT
; 		if(0==OSTCBCur) 
	tst R2
	brne L36
	tst R3
	brne L36
X4:
	.dbline 185
; 		  OSError(0);
	clr R16
	rcall _OSError
L36:
	.dbline 187
; #endif		
;         OSStartHighRdy();                            /* Execute target specific code to start task     */
	rcall _OSStartHighRdy
	.dbline 188
;     }
	rjmp L35
L34:
	.dbline 190
	clr R16
	rcall _OSError
L35:
	.dbline -2
	.dbline 192
; #if OS_STRICT
; 	else OSError(0);
; #endif
; }
L33:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e OSTimeDly _OSTimeDly fV
;          ticks -> R20,R21
	.even
_OSTimeDly::
	rcall push_gset1
	mov R20,R16
	mov R21,R17
	.dbline -1
	.dbline 211
	.dbline 212
	cpi R20,0
	cpc R20,R21
	breq L39
X5:
	.dbline 212
	.dbline 213
	st -y,r16
	 in r16,0x3f
	 cli
	 push r16
	ld r16,y+
	.dbline 213
	.dbline 214
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	std z+2,R20
	std z+3,R21
	.dbline 215
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 215
	.dbline 216
	rcall _OSSched
	.dbline 217
L39:
	.dbline -2
	.dbline 218
; 
; /*
; *********************************************************************************************************
; *                                DELAY TASK 'n' TICKS   (n from 0 to 65535)
; *
; * Description: This function is called to delay execution of the currently running task until the 
; *              specified number of system ticks expires.  This, of course, directly equates to delaying
; *              the current task for some time to expire.  No delay will result If the specified delay is 
; *              0.  If the specified delay is greater than 0 then, a context switch will result.
; *
; * Arguments  : ticks     is the time delay that the task will be suspended in number of clock 'ticks'.  
; *                        Note that by specifying 0, the task will not be delayed.
; *
; * Returns    : none
; *********************************************************************************************************
; */
; 
; void OSTimeDly (INT16U ticks)
; {
;     if (ticks > 0) {                                                      /* 0 means no delay!         */
;         OS_ENTER_CRITICAL();
;         OSTCBCur->OSTCBDly = ticks;                                       /* Load ticks in TCB         */
;         OS_EXIT_CRITICAL();
;         OSSched();                                                        /* Find next task to run!    */
;     }
; }
L38:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r ticks 20 i
	.dbend
	.dbfunc e OSGetPrioRdy _OSGetPrioRdy fc
;            ret -> R20
;           ptcb -> R10,R11
;              i -> R22
	.even
_OSGetPrioRdy::
	rcall push_gset3
	.dbline -1
	.dbline 221
; /*return tcb's prio which OSTCBDly==0*/
; INT8U OSGetPrioRdy(void)
; {
	.dbline 222
;   INT8U i,ret=0xff;
	ldi R20,255
	.dbline 224
;   OS_TCB *ptcb;
;   for(i=0;i<OS_TASK_COUNT;i++)
	clr R22
	rjmp L45
L42:
	.dbline 225
;   {
	.dbline 226
;     ptcb=OSpTCBList[i];
	ldi R24,<_OSpTCBList
	ldi R25,>_OSpTCBList
	mov R30,R22
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	ldd R10,z+0
	ldd R11,z+1
	.dbline 228
;     //OS_ENTER_CRITICAL();
;     if(ptcb)
	tst R10
	brne X6
	tst R11
	brne X8
	rjmp L46
X8:
X6:
	.dbline 229
; 	{
	.dbline 230
; 	  if(0==ptcb->OSTCBDly)
	mov R30,R10
	mov R31,R11
	ldd R2,z+2
	ldd R3,z+3
	tst R2
	breq X9
	rjmp L48
X9:
	tst R3
	breq X10
	rjmp L48
X10:
X7:
	.dbline 231
; 	  {
	.dbline 232
; 	  if(OS_STAT_RDY==ptcb->OSTCBStat)
	mov R30,R10
	mov R31,R11
	ldd R24,z+4
	cpi R24,1
	brne L50
	.dbline 233
; 	  {
	.dbline 235
; #if OS_STRICT
; 	    if(i!=ptcb->OSTCBPrio)
	ldd R2,z+5
	cp R22,R2
	breq L52
	.dbline 236
; 		  OSError(0);
	clr R16
	rcall _OSError
L52:
	.dbline 238
; #endif  
;         ret=ptcb->OSTCBPrio;     
	mov R30,R10
	mov R31,R11
	ldd R20,z+5
	.dbline 240
; #if OS_STRICT
; 		if(ret>OS_LOWEST_PRIO)
	ldi R24,2
	cp R24,R20
	brsh L44
	.dbline 241
; 		  OSError(0);
	clr R16
	rcall _OSError
	.dbline 243
; #endif  		
; 	    break;//for
	rjmp L44
L50:
	.dbline 246
; 	  }//end OS_STAT_RDY==ptcb->OSTCBStat
; #if OS_SEM_EN
; 	  else{
	.dbline 247
; 		  if(ptcb->OSTCBStat & OS_STAT_SEM)
	mov R30,R10
	mov R31,R11
	ldd R2,z+4
	sbrs R2,1
	rjmp L56
	.dbline 248
; 		  {
	.dbline 250
; #if OS_STRICT
; 			  if(i!=ptcb->OSTCBPrio)
	ldd R2,z+5
	cp R22,R2
	breq L58
	.dbline 251
; 				  OSError(0);
	clr R16
	rcall _OSError
L58:
	.dbline 253
; #endif  
; 			  ret=ptcb->OSTCBPrio;     
	mov R30,R10
	mov R31,R11
	ldd R20,z+5
	.dbline 255
; #if OS_STRICT
; 			  if(ret>OS_LOWEST_PRIO)
	ldi R24,2
	cp R24,R20
	brsh L44
	.dbline 256
; 				  OSError(0);
	clr R16
	rcall _OSError
	.dbline 258
; #endif  		
; 	    break;//for
	rjmp L44
L56:
	.dbline 260
; 		  }
; 	  }//end (ptcb->OSTCBStat & OS_STAT_SEM)
	.dbline 262
; #endif//OS_SEM_EN
; 	  }//end (0==ptcb->OSTCBDly)
L48:
	.dbline 263
; 	}
L46:
	.dbline 265
L43:
	.dbline 224
	inc R22
L45:
	.dbline 224
	cpi R22,3
	brsh X11
	rjmp L42
X11:
L44:
	.dbline 266
;     //OS_EXIT_CRITICAL();
;   }
;   return ret;
	mov R16,R20
	.dbline -2
L41:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r ret 20 c
	.dbsym r ptcb 10 pX
	.dbsym r i 22 c
	.dbend
	.dbfunc e OSTimeTick _OSTimeTick fV
;            ret -> <dead>
;           ptcb -> R16,R17
;              i -> R18
	.even
_OSTimeTick::
	.dbline -1
	.dbline 284
; }
; 
; /*
; *********************************************************************************************************
; *                                         PROCESS SYSTEM TICK
; *
; * Description: This function is used to signal to uC/OS-II the occurrence of a 'system tick' (also known
; *              as a 'clock tick').  This function should be called by the ticker ISR but, can also be
; *              called by a high priority task.
; *
; * Arguments  : none
; *
; * Returns    : none
; *********************************************************************************************************
; */
; 
; void OSTimeTick (void)
; {
	.dbline 288
;     INT8U i,ret;
;     OS_TCB *ptcb;
; 	//skip last task,last task must be idle task
; 	for(i=0;i<OS_TASK_COUNT-1;i++)
	clr R18
	rjmp L66
L63:
	.dbline 289
; 	{
	.dbline 290
; 	ptcb=OSpTCBList[i];
	ldi R24,<_OSpTCBList
	ldi R25,>_OSpTCBList
	mov R30,R18
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	ldd R17,z+1
	.dbline 293
; //    OS_ENTER_CRITICAL();
;     //check ptcb != 0
; 	if(ptcb){              /* Go through all TCBs in TCB list          */
	cpi R16,0
	cpc R16,R17
	breq L67
X12:
	.dbline 293
	.dbline 294
;         if (ptcb->OSTCBDly != 0) {                         /* Delayed or waiting for event with TO     */
	mov R30,R16
	mov R31,R17
	ldd R2,z+2
	ldd R3,z+3
	tst R2
	brne X13
	tst R3
	breq L69
X13:
	.dbline 294
	.dbline 295
;             if (--ptcb->OSTCBDly == 0) {                   /* Decrement nbr of ticks to end of delay   */
	mov R24,R16
	mov R25,R17
	adiw R24,2
	mov R30,R24
	mov R31,R25
	ldd R24,z+0
	ldd R25,z+1
	sbiw R24,1
	mov R4,R24
	mov R5,R25
	std z+0,R4
	std z+1,R5
	cpi R24,0
	cpc R24,R25
	brne L71
X14:
	.dbline 295
	.dbline 302
; //                if (!(ptcb->OSTCBStat & OS_STAT_SUSPEND)) {    /* Is task suspended?                   */
; //                    OSRdyGrp               |= ptcb->OSTCBBitY; /* No,  Make task Rdy to Run (timed out)*/
; //                    OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
; //                } else {                                       /* Yes, Leave 1 tick to prevent ...     */
; //                    ptcb->OSTCBDly = 1;                        /* ... loosing the task when the ...    */
; //                }                                              /* ... suspension is removed.           */
; 			}//end (--ptcb->OSTCBDly==0)         
L71:
	.dbline 303
; 			}//end OSTCBDly!=0
L69:
	.dbline 304
;         }//end if(ptcb)
L67:
	.dbline 306
L64:
	.dbline 288
	inc R18
L66:
	.dbline 288
	cpi R18,2
	brlo L63
	.dbline -2
	.dbline 307
;   //  OS_EXIT_CRITICAL();
;     }//end for
; }
L62:
	.dbline 0 ; func end
	ret
	.dbsym l ret 1 c
	.dbsym r ptcb 16 pX
	.dbsym r i 18 c
	.dbend
	.dbfunc e OSIntExit _OSIntExit fV
	.even
_OSIntExit::
	.dbline -1
	.dbline 329
; 
; /*
; *********************************************************************************************************
; *                                               EXIT ISR
; *
; * Description: This function is used to notify uC/OS-II that you have completed serviving an ISR.  When 
; *              the last nested ISR has completed, uC/OS-II will call the scheduler to determine whether
; *              a new, high-priority task, is ready to run.
; *
; * Arguments  : none
; *
; * Returns    : none
; *
; * Notes      : 1) You MUST invoke OSIntEnter() and OSIntExit() in pair.  In other words, for every call
; *                 to OSIntEnter() at the beginning of the ISR you MUST have a call to OSIntExit() at the
; *                 end of the ISR.
; *              2) Rescheduling is prevented when the scheduler is locked (see OSSchedLock())
; *********************************************************************************************************
; */
; 
; void OSIntExit(void)
; {
	.dbline 330
;     OS_ENTER_CRITICAL();
	st -y,r16
	 in r16,0x3f
	 cli
	 push r16
	ld r16,y+
	.dbline 330
	.dbline 331
;     if ((--OSIntNesting | OSLockNesting) == 0) { /* Reschedule only if all ISRs completed & not locked */
	lds R24,_OSIntNesting
	subi R24,1
	mov R2,R24
	sts _OSIntNesting,R2
	lds R4,_OSLockNesting
	or R2,R4
	breq X17
	rjmp L74
X17:
	.dbline 331
	.dbline 332
;         OSPrioHighRdy=OSGetPrioRdy();
	rcall _OSGetPrioRdy
	sts _OSPrioHighRdy,R16
	.dbline 333
; 		if(OSPrioHighRdy>OS_LOWEST_PRIO)
	ldi R24,2
	cp R24,R16
	brsh L76
	.dbline 334
; 		{
	.dbline 336
; #if OS_STRICT
; 		  OSError(0);
	clr R16
	rcall _OSError
	.dbline 338
	rjmp L77
L76:
	.dbline 338
; #endif
; 		}else if (OSPrioHighRdy != OSPrioCur) {         /* No context switch if current task is highest ready */
	lds R2,_OSPrioCur
	lds R3,_OSPrioHighRdy
	cp R3,R2
	breq L78
	.dbline 338
	.dbline 339
;             OSTCBHighRdy = OSpTCBList[OSPrioHighRdy];
	ldi R24,<_OSpTCBList
	ldi R25,>_OSpTCBList
	mov R30,R3
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	sts _OSTCBHighRdy+1,R3
	sts _OSTCBHighRdy,R2
	.dbline 341
; #if OS_STRICT
; 		  	if((0==OSTCBHighRdy)||(0==OSTCBCur)||
	tst R2
	brne X15
	tst R3
	breq L84
X15:
	lds R2,_OSTCBCur
	lds R3,_OSTCBCur+1
	tst R2
	brne X16
	tst R3
	breq L84
X16:
	ldi R24,2
	lds R2,_OSPrioCur
	cp R24,R2
	brlo L84
	lds R2,_OSPrioHighRdy
	cp R24,R2
	brsh L80
L84:
	.dbline 343
; 			   (OSPrioCur>OS_LOWEST_PRIO)||(OSPrioHighRdy>OS_LOWEST_PRIO))
; 			  OSError(0);
	clr R16
	rcall _OSError
L80:
	.dbline 345
; #endif			
;             OSDebug();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品在线一区二区| 日韩一区二区三区高清免费看看| 亚洲免费观看高清| 久久久青草青青国产亚洲免观| 欧美美女直播网站| 91久久精品一区二区二区| 国产成人午夜片在线观看高清观看| 秋霞午夜鲁丝一区二区老狼| 日本不卡视频在线观看| 91在线观看下载| 国内精品免费**视频| 狠狠色丁香婷综合久久| 欧美影院午夜播放| 欧美一区二区三区免费大片| 欧美一区二区在线免费播放| 国产精品久久久久国产精品日日| 一区二区中文字幕在线| 亚洲一区二区三区视频在线 | av在线一区二区| 97aⅴ精品视频一二三区| 久久影音资源网| 国产精品视频第一区| 中文字幕亚洲综合久久菠萝蜜| 韩国女主播成人在线| 欧美一区二区在线视频| 青青青伊人色综合久久| 欧美日韩精品系列| 天天操天天色综合| 国产主播一区二区三区| 欧美一级一区二区| 日韩高清一级片| 成人综合婷婷国产精品久久 | 国产免费成人在线视频| 欧美国产1区2区| 午夜影院在线观看欧美| 成人动漫一区二区三区| 欧美一级片免费看| 蜜臀久久99精品久久久久宅男| 天天综合网天天综合色| 日韩一区二区在线观看视频| 日韩综合一区二区| 成人国产精品免费观看| 日本一区二区三区四区| 97久久久精品综合88久久| 亚洲欧美视频一区| 欧美嫩在线观看| 久88久久88久久久| 日韩欧美亚洲国产精品字幕久久久 | 欧美卡1卡2卡| 久久丁香综合五月国产三级网站 | 国产精品久久毛片| 色女孩综合影院| 日本一区二区在线不卡| 93久久精品日日躁夜夜躁欧美| 亚洲情趣在线观看| 欧美一区二区三区思思人| 国产成人在线影院| 洋洋成人永久网站入口| eeuss鲁片一区二区三区在线观看| 国产精品亲子乱子伦xxxx裸| 色噜噜狠狠成人网p站| 日韩和欧美一区二区| 久久久综合九色合综国产精品| 成人美女视频在线观看18| 亚洲高清在线视频| 欧美午夜寂寞影院| 美洲天堂一区二卡三卡四卡视频| 中文字幕不卡在线观看| 欧洲视频一区二区| 亚洲激情欧美激情| 91免费观看在线| 蜜桃av一区二区三区| 亚洲欧美日韩综合aⅴ视频| 日韩一级免费观看| 色诱视频网站一区| 国产成人综合自拍| 亚洲第一久久影院| 国产精品情趣视频| 日韩午夜在线观看| 欧美亚洲动漫另类| 国产99久久久国产精品| 中文字幕在线一区| 日韩视频在线一区二区| 色琪琪一区二区三区亚洲区| 国产成人鲁色资源国产91色综| 午夜欧美2019年伦理| 1区2区3区欧美| 国产午夜精品一区二区| 风间由美中文字幕在线看视频国产欧美 | 久久综合精品国产一区二区三区| 日本韩国精品在线| 成人h动漫精品一区二区| 国产制服丝袜一区| 九九精品视频在线看| 亚洲成人午夜影院| 亚洲小说春色综合另类电影| 国产精品无圣光一区二区| 欧美va在线播放| 粉嫩13p一区二区三区| 久久疯狂做爰流白浆xx| 日本免费在线视频不卡一不卡二| 一区二区三区在线不卡| 国产精品久久久久一区| 久久精品亚洲精品国产欧美 | 亚洲欧洲av在线| 国产片一区二区| 久久毛片高清国产| 久久综合成人精品亚洲另类欧美| 日韩一区二区三免费高清| 91精品国产免费| 欧美剧在线免费观看网站 | 久久精品欧美一区二区三区不卡| 日韩欧美在线综合网| 91精品婷婷国产综合久久竹菊| 国内精品伊人久久久久av一坑| 理论片日本一区| 美腿丝袜亚洲综合| 国产在线不卡视频| 亚洲一级电影视频| 亚洲国产精品久久久久婷婷884| 亚洲欧美一区二区三区久本道91| 亚洲三级理论片| 欧美精品一区二区三区很污很色的| caoporn国产精品| 成人黄色网址在线观看| 不卡一区二区中文字幕| 色天天综合久久久久综合片| 欧美日韩免费高清一区色橹橹| 狠狠色狠狠色合久久伊人| 国产美女久久久久| 91亚洲资源网| 精品视频全国免费看| 51精品秘密在线观看| 精品国产sm最大网站| 亚洲国产精品99久久久久久久久| 国产精品久久久久久久久晋中| 亚洲精品成人少妇| 日韩成人av影视| 国产一区999| 91黄色免费看| 日韩欧美国产电影| 中文幕一区二区三区久久蜜桃| 亚洲欧美国产77777| 丝袜脚交一区二区| 福利电影一区二区| 欧美色偷偷大香| 亚洲精品一区二区三区在线观看| 国产精品视频看| 婷婷久久综合九色综合绿巨人| 极品尤物av久久免费看| 99riav久久精品riav| 欧美xxxxxxxx| 一区二区三区四区乱视频| 久久狠狠亚洲综合| 色妞www精品视频| 久久午夜羞羞影院免费观看| 亚洲蜜臀av乱码久久精品| 精品一区二区免费| 91福利精品第一导航| 亚洲精品一区二区三区99| 亚洲欧洲精品一区二区三区 | 亚洲国产成人tv| 高清av一区二区| 日韩一区二区三区免费观看| 日韩毛片在线免费观看| 美女在线视频一区| 在线观看亚洲专区| 中文字幕亚洲综合久久菠萝蜜| 久久av中文字幕片| 欧美精选一区二区| 亚洲欧美色综合| 成人性生交大片免费看在线播放| 欧美一级欧美三级| 亚洲午夜在线视频| 91首页免费视频| 欧美经典一区二区| 久久精品99国产精品日本| 欧美日韩精品久久久| 亚洲精品视频一区二区| 夫妻av一区二区| 久久久久久电影| 国内不卡的二区三区中文字幕 | 九色|91porny| 欧美一级欧美一级在线播放| 亚洲一线二线三线久久久| 波多野结衣的一区二区三区| 26uuu亚洲综合色欧美| 秋霞午夜av一区二区三区| 欧美日本视频在线| 亚洲国产你懂的| 精品视频一区二区不卡| 亚洲国产综合人成综合网站| 91老师片黄在线观看| 中文字幕一区日韩精品欧美| 国产精品538一区二区在线| 91小视频在线免费看| 国产精品久久久久婷婷二区次| 国产精品影视在线| 国产欧美日本一区视频| 国产成人免费9x9x人网站视频|