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

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

?? os-task-switch.s

?? ucos-ii-at90S-icc-avr
?? S
?? 第 1 頁 / 共 4 頁
字號:
	rcall _OSDebug
	.dbline 346
;             OSIntCtxSw();                        /* Perform interrupt level context switch             */
	rcall _OSIntCtxSw
	.dbline 347
;         }//end OSPrioHighRdy != OSPrioCur
L78:
L77:
	.dbline 348
;     }//end nesting==0
L74:
	.dbline 349
;     OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 349
	.dbline -2
	.dbline 350
; }
L73:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e OSDebug _OSDebug fV
;         port_a -> R16
	.even
_OSDebug::
	.dbline -1
	.dbline 353
; 
; void OSDebug(void)
; {
	.dbline 356
; INT8U port_a;
;             //debug
; 			DDRA=0;port_a=PORTA;
	clr R2
	out 0x1a,R2
	.dbline 356
	in R16,0x1b
	.dbline 357
; 			DDRA=0xff;PORTA=~port_a;
	ldi R24,255
	out 0x1a,R24
	.dbline 357
	mov R2,R16
	com R2
	out 0x1b,R2
	.dbline -2
	.dbline 359
; 			//end debug
; }
L85:
	.dbline 0 ; func end
	ret
	.dbsym r port_a 16 c
	.dbend
	.dbfunc e OSEventInit _OSEventInit fV
;              i -> R20
;         pevent -> R16,R17
	.even
_OSEventInit::
	rcall push_gset1
	.dbline -1
	.dbline 386
; 
; /*
; *********************************************************************************************************
; *                             MAKE TASK READY TO RUN BASED ON EVENT OCCURING
; *
; * Description: This function is called by other uC/OS-II services and is used to ready a task that was
; *              waiting for an event to occur.
; *
; * Arguments  : pevent    is a pointer to the event control block corresponding to the event.
; *
; *              msg       is a pointer to a message.  This pointer is used by message oriented services
; *                        such as MAILBOXEs and QUEUEs.  The pointer is not used when called by other
; *                        service functions.
; *
; *              msk       is a mask that is used to clear the status byte of the TCB.  For example,
; *                        OSSemPost() will pass OS_STAT_SEM, OSMboxPost() will pass OS_STAT_MBOX etc.
; *
; * Returns    : none
; *
; * Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
; *********************************************************************************************************
; */
; #if OS_EVENT_EN
; 
; /*init event structure*/
; void  OSEventInit(OS_EVENT *pevent)
; {
	.dbline 388
; 	INT8U i;
; 	if(0==pevent)
	cpi R16,0
	cpc R16,R17
	brne L87
X18:
	.dbline 389
; 		return;
	rjmp L86
L87:
	.dbline 390
;     for(i=0;i<OS_TASK_COUNT;i++)
	clr R20
	rjmp L92
L89:
	.dbline 391
	mov R30,R20
	clr R31
	lsl R30
	rol R31
	add R30,R16
	adc R31,R17
	clr R2
	clr R3
	std z+0,R2
	std z+1,R3
L90:
	.dbline 390
	inc R20
L92:
	.dbline 390
	cpi R20,3
	brlo L89
	.dbline 392
; 		pevent->OSTaskTbl[i]=0;
;     pevent->OSEventCnt=0;
	clr R2
	clr R3
	mov R30,R16
	mov R31,R17
	std z+6,R2
	std z+7,R3
	.dbline 393
;     pevent->OSEventType=OS_EVENT_TYPE_INVALID;                   /* OS_EVENT_TYPE_MBOX, OS_EVENT_TYPE_Q or OS_EVENT_TYPE_SEM */
	std z+8,R2
	.dbline -2
	.dbline 394
; }
L86:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r pevent 16 pX
	.dbend
	.dbfunc e OSEventGetHighPrioRdy _OSEventGetHighPrioRdy fc
;           ptcb -> R20,R21
;              i -> R22
;         pevent -> R16,R17
	.even
_OSEventGetHighPrioRdy::
	rcall push_gset2
	.dbline -1
	.dbline 400
; 
; /*get highest prio from event's waiting task list,
;   ignore OSTCBStat and OSTCBDly.
;   Find first tcb in pevent->OSTaskTbl which is not null*/
; INT8U OSEventGetHighPrioRdy(OS_EVENT *pevent)
; {
	.dbline 403
; 	INT8U i;
; 	OS_TCB *ptcb;
; 	if(0==pevent)
	cpi R16,0
	cpc R16,R17
	brne L94
X19:
	.dbline 404
; 		return OS_TASK_COUNT;//error
	ldi R16,3
	rjmp L93
L94:
	.dbline 405
;     for(i=0;i<OS_TASK_COUNT;i++)
	clr R22
	rjmp L99
L96:
	.dbline 406
; 	{
	.dbline 407
; 		ptcb=pevent->OSTaskTbl[i];
	mov R30,R22
	clr R31
	lsl R30
	rol R31
	add R30,R16
	adc R31,R17
	ldd R20,z+0
	ldd R21,z+1
	.dbline 408
; 		if(ptcb)
	cpi R20,0
	cpc R20,R21
	breq L100
X20:
	.dbline 409
; 		{
	.dbline 410
; 			return ptcb->OSTCBPrio;
	mov R30,R20
	mov R31,R21
	ldd R16,z+5
	rjmp L93
L100:
	.dbline 412
L97:
	.dbline 405
	inc R22
L99:
	.dbline 405
	cpi R22,3
	brlo L96
	.dbline 413
; 		}
; 	}
; 	return OS_TASK_COUNT;//error
	ldi R16,3
	.dbline -2
L93:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r ptcb 20 pX
	.dbsym r i 22 c
	.dbsym r pevent 16 pX
	.dbend
	.dbfunc e OSEventTaskRdy _OSEventTaskRdy fV
;           prio -> R22
;           ptcb -> R22,R23
;            msk -> R20
;         pevent -> R22,R23
	.even
_OSEventTaskRdy::
	rcall push_gset2
	mov R20,R18
	mov R22,R16
	mov R23,R17
	.dbline -1
	.dbline 418
; }
; 
; /*when OSSemPend success,call OSEventTaskRdy to remove task from event waitting task list*/
; void  OSEventTaskRdy (OS_EVENT *pevent, INT8U msk)
; {
	.dbline 422
;     OS_TCB *ptcb;
;     INT8U   prio;
; 
; 	prio=OSEventGetHighPrioRdy(pevent);
	mov R16,R22
	mov R17,R23
	rcall _OSEventGetHighPrioRdy
	mov R22,R16
	.dbline 424
; #if OS_STRICT
; 	if(prio>OS_LOWEST_PRIO)
	ldi R24,2
	cp R24,R16
	brsh L103
	.dbline 425
; 		OSError(0);
	clr R16
	rcall _OSError
L103:
	.dbline 427
; #endif
;     ptcb                 =  OSpTCBList[prio];       /* Point to this task's OS_TCB                   */
	ldi R24,<_OSpTCBList
	ldi R25,>_OSpTCBList
	mov R30,R22
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	ldd R22,z+0
	ldd R23,z+1
	.dbline 429
; #if OS_STRICT
; 	if(0==ptcb)
	cpi R22,0
	cpc R22,R23
	brne L105
X21:
	.dbline 430
; 		OSError(0);
	clr R16
	rcall _OSError
L105:
	.dbline 433
; #endif
; 	//clear event flags
;     ptcb->OSTCBDly       =  0;                        /* Prevent OSTimeTick() from readying task       */
	clr R2
	clr R3
	mov R30,R22
	mov R31,R23
	std z+2,R2
	std z+3,R3
	.dbline 434
;     ptcb->OSTCBStat     &= ~msk;                      /* Clear bit associated with event type          */
	mov R24,R22
	mov R25,R23
	adiw R24,4
	mov R4,R20
	com R4
	mov R30,R24
	mov R31,R25
	ldd R5,z+0
	and R5,R4
	std z+0,R5
	.dbline -2
	.dbline 435
; }
L102:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r prio 22 c
	.dbsym r ptcb 22 pX
	.dbsym r msk 20 c
	.dbsym r pevent 22 pX
	.dbend
	.dbfunc e OSEventTaskWait _OSEventTaskWait fV
;         pevent -> R20,R21
	.even
_OSEventTaskWait::
	rcall push_gset1
	mov R20,R16
	mov R21,R17
	.dbline -1
	.dbline 453
	.dbline 455
	lds R2,_OSTCBCur
	lds R3,_OSTCBCur+1
	tst R2
	brne L108
	tst R3
	brne L108
X22:
	.dbline 456
	clr R16
	rcall _OSError
L108:
	.dbline -2
	.dbline 458
; 
; 
; /*
; *********************************************************************************************************
; *                                   MAKE TASK WAIT FOR EVENT TO OCCUR
; *
; * Description: This function is called by other uC/OS-II services to suspend a task because an event has
; *              not occurred.
; *
; * Arguments  : pevent   is a pointer to the event control block for which the task will be waiting for.
; *
; * Returns    : none
; *
; * Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
; *********************************************************************************************************
; */
; void  OSEventTaskWait (OS_EVENT *pevent)
; {
; #if OS_STRICT
; 	if(!OSTCBCur)
; 		OSError(0);
; #endif
; }
L107:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r pevent 20 pX
	.dbend
	.dbfunc e OSEventTO _OSEventTO fV
;         pevent -> R16,R17
	.even
_OSEventTO::
	.dbline -1
	.dbline 474
; /*
; *********************************************************************************************************
; *                              MAKE TASK READY TO RUN BASED ON EVENT TIMEOUT
; *
; * Description: This function is called by other uC/OS-II services to make a task ready to run because a
; *              timeout occurred.
; *
; * Arguments  : pevent   is a pointer to the event control block which is readying a task.
; *
; * Returns    : none
; *
; * Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
; *********************************************************************************************************
; */
; void  OSEventTO (OS_EVENT *pevent)
; {
	.dbline 475
;     OSTCBCur->OSTCBStat     = OS_STAT_RDY;       /* Set status to ready                                */
	ldi R24,1
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	std z+4,R24
	.dbline -2
	.dbline 476
; }
L110:
	.dbline 0 ; func end
	ret
	.dbsym r pevent 16 pX
	.dbend
	.dbfunc e OSSemAccept _OSSemAccept fi
;            cnt -> R20,R21
;         pevent -> R16,R17
	.even
_OSSemAccept::
	rcall push_gset1
	.dbline -1
	.dbline 497
; #endif//OS_EVENT_EN
; 
; #if OS_SEM_EN
; /*
; *********************************************************************************************************
; *                                           ACCEPT SEMAPHORE
; *
; * Description: This function checks the semaphore to see if a resource is available or, if an event
; *              occurred.  Unlike OSSemPend(), OSSemAccept() does not suspend the calling task if the
; *              resource is not available or the event did not occur.
; *
; * Arguments  : pevent     is a pointer to the event control block
; *
; * Returns    : >  0       if the resource is available or the event did not occur the semaphore is
; *                         decremented to obtain the resource.
; *              == 0       if the resource is not available or the event did not occur or,
; *                         you didn't pass a pointer to a semaphore
; *********************************************************************************************************
; */
; INT16U OSSemAccept (OS_EVENT *pevent)
; {
	.dbline 500
;     INT16U cnt;
; 
;     OS_ENTER_CRITICAL();
	st -y,r16
	 in r16,0x3f
	 cli
	 push r16
	ld r16,y+
	.dbline 500
	.dbline 501
;     if (pevent->OSEventType != OS_EVENT_TYPE_SEM) {   /* Validate event block type                     */
	mov R30,R16
	mov R31,R17
	ldd R24,z+8
	cpi R24,1
	breq L112
	.dbline 501
	.dbline 502
;         OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 502
	.dbline 503
;         return (0);
	clr R16
	clr R17
	rjmp L111
L112:
	.dbline 505
;     }
;     cnt = pevent->OSEventCnt;
	mov R30,R16
	mov R31,R17
	ldd R20,z+6
	ldd R21,z+7
	.dbline 506
;     if (cnt > 0) {                                    /* See if resource is available                  */
	cpi R20,0
	cpc R20,R21
	breq L114
X23:
	.dbline 506
	.dbline 507
;         pevent->OSEventCnt--;                         /* Yes, decrement semaphore and notify caller    */
	mov R24,R16
	mov R25,R17
	adiw R24,6
	mov R30,R24
	mov R31,R25
	ldd R24,z+0
	ldd R25,z+1
	sbiw R24,1
	std z+0,R24
	std z+1,R25
	.dbline 508
;     }
L114:
	.dbline 509
;     OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 509
	.dbline 510
;     return (cnt);                                     /* Return semaphore count                        */
	mov R16,R20
	mov R17,R21
	.dbline -2
L111:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r cnt 20 i
	.dbsym r pevent 16 pX
	.dbend
	.dbfunc e OSSemCreate _OSSemCreate fpX
;            cnt -> R22,R23
;         pevent -> R20,R21
	.even
_OSSemCreate::
	rcall push_gset2
	mov R22,R18
	mov R23,R19
	mov R20,R16
	mov R21,R17
	.dbline -1
	.dbline 531
; }
; 
; /*
; *********************************************************************************************************
; *                                           CREATE A SEMAPHORE
; *
; * Description: This function creates a semaphore.
; *
; * Arguments  : cnt           is the initial value for the semaphore.  If the value is 0, no resource is
; *                            available (or no event has occurred).  You initialize the semaphore to a 
; *                            non-zero value to specify how many resources are available (e.g. if you have
; *                            10 resources, you would initialize the semaphore to 10).
; *
; * Returns    : != (void *)0  is a pointer to the event control clock (OS_EVENT) associated with the
; *                            created semaphore
; *              == (void *)0  if no event control blocks were available
; *********************************************************************************************************
; */
; 
; OS_EVENT *OSSemCreate (OS_EVENT *pevent,INT16U cnt)
; {
	.dbline 532
;     if (pevent != (OS_EVENT *)0) {                         /* Get an event control block               */
	cpi R20,0
	cpc R20,R21
	breq L117

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美一区二区三区国产精品| 国产福利精品一区二区| 国产精品一二三区在线| 欧美日韩一区中文字幕| 国产丝袜美腿一区二区三区| 婷婷久久综合九色综合伊人色| 丁香一区二区三区| 日韩一区二区在线观看视频| 亚洲欧美日韩电影| 波多野结衣中文字幕一区 | 最近日韩中文字幕| 精品中文av资源站在线观看| 色综合久久综合| 国产精品国模大尺度视频| 国产成人鲁色资源国产91色综| 日韩一级大片在线观看| 日韩电影一区二区三区| 欧美日韩在线电影| 视频在线观看一区二区三区| 91麻豆国产精品久久| 日韩毛片视频在线看| 从欧美一区二区三区| 久久久久久久久久久久久夜| 国产一区二三区| 久久久综合激的五月天| 国产一区二区三区在线观看免费| 日韩精品一区二区三区视频播放| 婷婷久久综合九色综合伊人色| 欧美日韩一区二区在线观看 | 精久久久久久久久久久| 91精品国产手机| 美女在线视频一区| 精品精品国产高清a毛片牛牛| 蜜桃精品视频在线观看| 精品少妇一区二区三区免费观看| 麻豆91在线观看| 精品国产精品一区二区夜夜嗨| 国产综合久久久久久鬼色| 欧美国产日韩精品免费观看| 波多野洁衣一区| 一区二区三区精品视频在线| 欧美天天综合网| 奇米影视在线99精品| 精品国产sm最大网站免费看| 成人性生交大片免费看视频在线| 中文文精品字幕一区二区| 成人av在线网| 亚洲中国最大av网站| 日韩精品在线看片z| 成人在线综合网| 亚洲成人三级小说| 精品国精品国产尤物美女| 成人免费av资源| 亚洲国产日韩精品| 亚洲精品在线观| 91色porny| 久久成人精品无人区| 国产精品热久久久久夜色精品三区| 91麻豆免费看片| 麻豆精品视频在线观看免费| 亚洲国产精品二十页| 欧美高清视频一二三区 | 9i看片成人免费高清| 亚洲电影视频在线| 久久综合一区二区| 色狠狠色噜噜噜综合网| 免费xxxx性欧美18vr| 国产精品乱人伦| 欧美另类z0zxhd电影| 成人黄色大片在线观看| 天天综合日日夜夜精品| 国产午夜精品一区二区三区视频| 在线视频一区二区三| 国产精品99久久不卡二区| 午夜久久久影院| 亚洲日本成人在线观看| 久久久久久久精| 3atv在线一区二区三区| 91欧美激情一区二区三区成人| 久久疯狂做爰流白浆xx| 亚洲综合色自拍一区| 国产精品美女久久久久高潮| 欧美一级二级三级乱码| 色成年激情久久综合| 国产黄色成人av| 蜜臀精品久久久久久蜜臀| 曰韩精品一区二区| 中文字幕一区二区三区不卡 | 亚洲午夜在线电影| 国产精品久久久久婷婷| 久久婷婷成人综合色| 欧美一区二区三区四区高清| 色吧成人激情小说| 成人福利视频在线| 国产麻豆一精品一av一免费| 欧美aa在线视频| 日韩激情一二三区| 亚洲国产一区二区视频| 亚洲欧美福利一区二区| 日本一区二区免费在线观看视频 | jiyouzz国产精品久久| 国产在线视频不卡二| 日本成人在线不卡视频| 日韩中文字幕区一区有砖一区 | 欧美亚洲自拍偷拍| 成人av片在线观看| 99re这里都是精品| 不卡的av在线| 91在线观看免费视频| 99久久久精品免费观看国产蜜| 国产 欧美在线| 成人开心网精品视频| 成人免费av网站| 99精品在线观看视频| 99久久精品情趣| 色哟哟一区二区| 色婷婷综合激情| 欧美美女喷水视频| 欧美肥妇free| 欧美成人精品1314www| 欧美成人国产一区二区| 精品成人免费观看| 中文字幕乱码亚洲精品一区| 日韩毛片在线免费观看| 亚洲成人免费电影| 青草国产精品久久久久久| 国产一区二三区| 99久久精品国产一区二区三区| 91久久精品国产91性色tv| 欧美日韩一区二区三区四区| 正在播放一区二区| 久久久久久久久一| 中文字幕亚洲欧美在线不卡| 一区二区三区四区五区视频在线观看 | 日韩一区二区麻豆国产| 精品国产亚洲在线| 国产精品乱人伦中文| 亚洲成人av中文| 国产真实乱偷精品视频免| 99精品热视频| 91精选在线观看| 日本一区二区成人在线| 亚洲一区二区三区四区中文字幕 | 亚洲国产精品一区二区www| 日韩高清不卡一区二区三区| 国产精品一区二区在线观看不卡 | 中文字幕欧美区| 亚洲最大色网站| 国产一区二区福利视频| 91麻豆免费观看| 久久免费看少妇高潮| 一区二区三区免费网站| 国产一区二区三区不卡在线观看 | 国产不卡在线播放| 欧美丰满高潮xxxx喷水动漫| 国产婷婷色一区二区三区| 亚洲123区在线观看| 成人免费观看视频| 精品精品国产高清一毛片一天堂| 亚洲免费资源在线播放| 国产精选一区二区三区| 91精品国产综合久久久久久漫画| 国产精品短视频| 极品少妇xxxx精品少妇偷拍| 色88888久久久久久影院按摩 | 国产成人综合视频| 在线综合+亚洲+欧美中文字幕| 亚洲欧美一区二区三区国产精品 | 成人激情av网| 欧美v日韩v国产v| 亚洲自拍偷拍av| 成人黄色综合网站| 久久精品亚洲一区二区三区浴池| 午夜日韩在线观看| 91福利在线观看| 中文字幕永久在线不卡| 国产呦精品一区二区三区网站| 欧美精品v国产精品v日韩精品 | 国产精品久久影院| 国产乱人伦偷精品视频不卡| 欧美久久久影院| 午夜精品在线看| 色吧成人激情小说| 亚洲精品大片www| 一本大道久久精品懂色aⅴ | 色婷婷亚洲精品| 亚洲三级在线观看| 成人黄色在线网站| 中文字幕二三区不卡| 国产白丝精品91爽爽久久| 久久久久九九视频| 国产精品夜夜爽| 中文字幕精品一区二区精品绿巨人| 国产麻豆精品视频| 国产午夜三级一区二区三| 国产精品一区二区在线观看网站| 久久理论电影网| 福利一区福利二区| 日韩毛片视频在线看| 在线观看免费视频综合|