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

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

?? os-task-switch.s

?? ucos-ii-at90S-icc-avr
?? S
?? 第 1 頁 / 共 4 頁
字號:
X24:
	.dbline 532
	.dbline 533
;         OSEventInit(pevent);
	mov R16,R20
	mov R17,R21
	rcall _OSEventInit
	.dbline 534
; 		pevent->OSEventType = OS_EVENT_TYPE_SEM;
	ldi R24,1
	mov R30,R20
	mov R31,R21
	std z+8,R24
	.dbline 535
;         pevent->OSEventCnt  = cnt;                         /* Set semaphore value                      */
	std z+6,R22
	std z+7,R23
	.dbline 536
;     }
L117:
	.dbline 537
;     return (pevent);
	mov R16,R20
	mov R17,R21
	.dbline -2
L116:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r cnt 22 i
	.dbsym r pevent 20 pX
	.dbend
	.dbfunc e OSEventRemoveCurrentTCB _OSEventRemoveCurrentTCB fV
;         pevent -> R20,R21
	.even
_OSEventRemoveCurrentTCB::
	rcall push_gset1
	mov R20,R16
	mov R21,R17
	.dbline -1
	.dbline 541
; }
; //called by OSSemPend to remove current tcb from event's waitting task list
; void OSEventRemoveCurrentTCB(OS_EVENT *pevent)
; {
	.dbline 543
; #if OS_STRICT
; 	if((0==pevent)||(OSPrioCur>OS_LOWEST_PRIO)||(OSTCBCur==0))
	cpi R20,0
	cpc R20,R21
	breq L123
X25:
	ldi R24,2
	lds R2,_OSPrioCur
	cp R24,R2
	brlo L123
	lds R2,_OSTCBCur
	lds R3,_OSTCBCur+1
	tst R2
	brne L120
	tst R3
	brne L120
X26:
L123:
	.dbline 544
; 		OSError(0);
	clr R16
	rcall _OSError
L120:
	.dbline 545
; 	if(pevent->OSTaskTbl[OSPrioCur]==0)
	lds R30,_OSPrioCur
	clr R31
	lsl R30
	rol R31
	add R30,R20
	adc R31,R21
	ldd R2,z+0
	ldd R3,z+1
	tst R2
	brne L124
	tst R3
	brne L124
X27:
	.dbline 546
; 		OSError(0);
	clr R16
	rcall _OSError
L124:
	.dbline 548
; #endif
; 	pevent->OSTaskTbl[OSPrioCur]=0;
	lds R30,_OSPrioCur
	clr R31
	lsl R30
	rol R31
	add R30,R20
	adc R31,R21
	clr R2
	clr R3
	std z+0,R2
	std z+1,R3
	.dbline -2
	.dbline 549
; }
L119:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r pevent 20 pX
	.dbend
	.dbfunc e OSSemPend _OSSemPend fV
;            err -> R20,R21
;        timeout -> R10,R11
;         pevent -> R22,R23
	.even
_OSSemPend::
	rcall push_gset3
	mov R10,R18
	mov R11,R19
	mov R22,R16
	mov R23,R17
	ldd R20,y+6
	ldd R21,y+7
	.dbline -1
	.dbline 581
; 
; /*
; *********************************************************************************************************
; *                                           PEND ON SEMAPHORE
; *
; * Description: This function waits for a semaphore.
; *
; * Arguments  : pevent        is a pointer to the event control block associated with the desired 
; *                            semaphore.
; *
; *              timeout       is an optional timeout period (in clock ticks).  If non-zero, your task will
; *                            wait for the resource up to the amount of time specified by this argument.  
; *                            If you specify 0, however, your task will wait forever at the specified 
; *                            semaphore or, until the resource becomes available (or the event occurs).
; *
; *              err           is a pointer to where an error message will be deposited.  Possible error
; *                            messages are:
; *
; *                            OS_NO_ERR          The call was successful and your task owns the resource 
; *                                               or, the event you are waiting for occurred.
; *                            OS_TIMEOUT         The semaphore was not received within the specified 
; *                                               timeout.
; *                            OS_ERR_EVENT_TYPE  If you didn't pass a pointer to a semaphore.
; *                            OS_ERR_PEND_ISR    If you called this function from an ISR and the result
; *                                               would lead to a suspension.
; *
; * Returns    : none
; *********************************************************************************************************
; */
; 
; void OSSemPend (OS_EVENT *pevent, INT16U timeout, INT8U *err)
; {
	.dbline 582
;     OS_ENTER_CRITICAL();
	st -y,r16
	 in r16,0x3f
	 cli
	 push r16
	ld r16,y+
	.dbline 582
	.dbline 583
;     if (pevent->OSEventType != OS_EVENT_TYPE_SEM) {   /* Validate event block type                     */
	mov R30,R22
	mov R31,R23
	ldd R24,z+8
	cpi R24,1
	breq L127
	.dbline 583
	.dbline 584
;         OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 584
	.dbline 585
;         *err = OSERR_EVENT_TYPE;
	ldi R24,4
	mov R30,R20
	mov R31,R21
	std z+0,R24
	.dbline 586
;     }
L127:
	.dbline 587
;     if (pevent->OSEventCnt > 0) {                     /* If sem. is positive, resource available ...   */
	mov R30,R22
	mov R31,R23
	ldd R2,z+6
	ldd R3,z+7
	tst R2
	brne X28
	tst R3
	breq L129
X28:
	.dbline 587
	.dbline 588
;         pevent->OSEventCnt--;                         /* ... decrement semaphore only if positive.     */
	mov R24,R22
	mov R25,R23
	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 589
;         OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 589
	.dbline 590
;         *err = OS_NO_ERR;
	clr R2
	mov R30,R20
	mov R31,R21
	std z+0,R2
	.dbline 591
	rjmp L130
L129:
	.dbline 591
;     } else if (OSIntNesting > 0) {                    /* See if called from ISR ...                    */
	clr R2
	lds R3,_OSIntNesting
	cp R2,R3
	brsh L131
	.dbline 591
	.dbline 592
;         OS_EXIT_CRITICAL();                           /* ... can't PEND from an ISR                    */
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 592
	.dbline 593
;         *err = OSERR_PEND_ISR;
	ldi R24,5
	mov R30,R20
	mov R31,R21
	std z+0,R24
	.dbline 594
	rjmp L132
L131:
	.dbline 594
;     } else {                                          /* Otherwise, must wait until event occurs       */
	.dbline 595
;         OSTCBCur->OSTCBStat    |= OS_STAT_SEM;        /* Resource not available, pend on semaphore     */
	lds R24,_OSTCBCur
	lds R25,_OSTCBCur+1
	adiw R24,4
	mov R30,R24
	mov R31,R25
	ldd R24,z+0
	ori R24,2
	std z+0,R24
	.dbline 596
;         OSTCBCur->OSTCBDly      = timeout;            /* Store pend timeout in TCB                     */
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	std z+2,R10
	std z+3,R11
	.dbline 597
;         OSEventTaskWait(pevent);                      /* Suspend task until event or timeout occurs    */
	mov R16,R22
	mov R17,R23
	rcall _OSEventTaskWait
	.dbline 598
;         OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 598
	.dbline 599
;         OSSched();                                    /* Find next highest priority task ready         */
	rcall _OSSched
	.dbline 600
;         OS_ENTER_CRITICAL();
	st -y,r16
	 in r16,0x3f
	 cli
	 push r16
	ld r16,y+
	.dbline 600
	.dbline 601
;         OSEventRemoveCurrentTCB(pevent);
	mov R16,R22
	mov R17,R23
	rcall _OSEventRemoveCurrentTCB
	.dbline 602
;         if (OSTCBCur->OSTCBStat & OS_STAT_SEM) {      /* Must have timed out if still waiting for event*/
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	ldd R2,z+4
	sbrs R2,1
	rjmp L133
	.dbline 602
	.dbline 603
;             OSEventTO(pevent);
	mov R16,R22
	mov R17,R23
	rcall _OSEventTO
	.dbline 604
;             OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 604
	.dbline 605
;             *err = OSERR_TIMEOUT;                        /* Indicate that didn't get event within TO      */
	ldi R24,6
	mov R30,R20
	mov R31,R21
	std z+0,R24
	.dbline 606
	rjmp L134
L133:
	.dbline 606
;         } else {
	.dbline 607
;             OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 607
	.dbline 608
;             *err = OS_NO_ERR;
	clr R2
	mov R30,R20
	mov R31,R21
	std z+0,R2
	.dbline 609
;         }
L134:
	.dbline 610
;     }
L132:
L130:
	.dbline -2
	.dbline 611
; }
L126:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r err 20 pc
	.dbsym r timeout 10 i
	.dbsym r pevent 22 pX
	.dbend
	.dbfunc e OSSemPost _OSSemPost fc
;           prio -> R22
;         pevent -> R20,R21
	.even
_OSSemPost::
	rcall push_gset2
	mov R20,R16
	mov R21,R17
	.dbline -1
	.dbline 631
; 
; /*
; *********************************************************************************************************
; *                                         POST TO A SEMAPHORE
; *
; * Description: This function signals a semaphore
; *
; * Arguments  : pevent        is a pointer to the event control block associated with the desired 
; *                            semaphore.
; *
; * Returns    : OS_NO_ERR          The call was successful and the semaphore was signaled.
; *              OS_SEM_OVF         If the semaphore count exceeded its limit.  In other words, you have 
; *                                 signalled the semaphore more often than you waited on it with either
; *                                 OSSemAccept() or OSSemPend().
; *              OS_ERR_EVENT_TYPE  If you didn't pass a pointer to a semaphore
; *********************************************************************************************************
; */
; 
; INT8U OSSemPost (OS_EVENT *pevent)
; {
	.dbline 633
; 	INT8U prio;
;     OS_ENTER_CRITICAL();
	st -y,r16
	 in r16,0x3f
	 cli
	 push r16
	ld r16,y+
	.dbline 633
	.dbline 634
;     if (pevent->OSEventType != OS_EVENT_TYPE_SEM) {        /* Validate event block type                */
	mov R30,R20
	mov R31,R21
	ldd R24,z+8
	cpi R24,1
	breq L136
	.dbline 634
	.dbline 635
;         OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 635
	.dbline 636
;         return (OSERR_EVENT_TYPE);
	ldi R16,4
	rjmp L135
L136:
	.dbline 638
;     }
;     prio=OSEventGetHighPrioRdy(pevent);
	mov R16,R20
	mov R17,R21
	rcall _OSEventGetHighPrioRdy
	mov R22,R16
	.dbline 639
;     if (prio<=OS_LOWEST_PRIO) {                              /* See if any task waiting for semaphore    */
	ldi R24,2
	cp R24,R16
	brlo L138
	.dbline 639
	.dbline 640
;         OSEventTaskRdy(pevent,OS_STAT_SEM);    /* Ready highest prio task waiting on event */
	ldi R18,2
	mov R16,R20
	mov R17,R21
	rcall _OSEventTaskRdy
	.dbline 641
;         OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 641
	.dbline 642
;         OSSched();                                    /* Find highest priority task ready to run       */
	rcall _OSSched
	.dbline 643
;         return (OS_NO_ERR);
	clr R16
	rjmp L135
L138:
	.dbline 644
;     } else {
	.dbline 645
;         if (pevent->OSEventCnt < 65535) {             /* Make sure semaphore will not overflow         */
	mov R30,R20
	mov R31,R21
	ldd R24,z+6
	ldd R25,z+7
	cpi R24,255
	ldi R30,255
	cpc R25,R30
	brsh L140
	.dbline 645
	.dbline 646
;             pevent->OSEventCnt++;                     /* Increment semaphore count to register event   */
	mov R24,R20
	mov R25,R21
	adiw R24,6
	mov R30,R24
	mov R31,R25
	ldd R24,z+0
	ldd R25,z+1
	adiw R24,1
	std z+0,R24
	std z+1,R25
	.dbline 647
;             OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 647
	.dbline 648
;             return (OS_NO_ERR);
	clr R16
	rjmp L135
L140:
	.dbline 649
;         } else {                                      /* Semaphore value has reached its maximum       */
	.dbline 650
;             OS_EXIT_CRITICAL();
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 650
	.dbline 651
;             return (OSERR_SEM_OVF);
	ldi R16,7
	.dbline -2
L135:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r prio 22 c
	.dbsym r pevent 20 pX
	.dbend
	.area bss(ram, con, rel)
	.dbfile G:\編程2002-10-15-HOME\做過的項目\2002-10-22\home-c\software\ucos-ii-at90S-icc-avr\os-task-sem\os-task-switch.c
_uart_sem::
	.blkb 9
	.dbfile G:\編程2002-10-15-HOME\做過的項目\2002-10-22\home-c\software\ucos-ii-at90S-icc-avr\os-task-sem/includes.h
	.dbsym e uart_sem _uart_sem X
_stk_task3::
	.blkb 128
	.dbsym e stk_task3 _stk_task3 A[128:128]c
_stk_task2::
	.blkb 128
	.dbsym e stk_task2 _stk_task2 A[128:128]c
_stk_task1::
	.blkb 128
	.dbsym e stk_task1 _stk_task1 A[128:128]c
_tcb_task3::
	.blkb 6
	.dbsym e tcb_task3 _tcb_task3 X
_tcb_task2::
	.blkb 6
	.dbsym e tcb_task2 _tcb_task2 X
_tcb_task1::
	.blkb 6
	.dbsym e tcb_task1 _tcb_task1 X
_OSTCBHighRdy::
	.blkb 2
	.dbfile G:\編程2002-10-15-HOME\做過的項目\2002-10-22\home-c\software\ucos-ii-at90S-icc-avr\os-task-sem/os-task-switch.h
	.dbsym e OSTCBHighRdy _OSTCBHighRdy pX
_OSTCBCur::
	.blkb 2
	.dbsym e OSTCBCur _OSTCBCur pX
_OSPrioHighRdy::
	.blkb 1
	.dbsym e OSPrioHighRdy _OSPrioHighRdy c
_OSPrioCur::
	.blkb 1
	.dbsym e OSPrioCur _OSPrioCur c
_OSLockNesting::
	.blkb 1
	.dbsym e OSLockNesting _OSLockNesting c
_OSIntNesting::
	.blkb 1
	.dbsym e OSIntNesting _OSIntNesting c
_OSpTCBList::
	.blkb 6
	.dbsym e OSpTCBList _OSpTCBList A[6:3]pX
_OSRunning::
	.blkb 1
	.dbsym e OSRunning _OSRunning c

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图另类专区| 成人网在线播放| 成人激情开心网| 欧美一区二区网站| 亚洲男女毛片无遮挡| 精品一区二区三区在线视频| 欧美主播一区二区三区| 中文字幕欧美国产| 久国产精品韩国三级视频| 欧美日韩一区二区欧美激情| 国产精品久久久久久久久久免费看| 日韩精品亚洲专区| 91电影在线观看| 亚洲欧美国产三级| 99在线精品观看| 欧美国产日韩a欧美在线观看| 热久久国产精品| 欧美日韩成人在线| 一级特黄大欧美久久久| 成人国产亚洲欧美成人综合网| 欧美电影免费提供在线观看| 天天综合网 天天综合色| 色系网站成人免费| 成人欧美一区二区三区视频网页| 国产一二精品视频| 久久久久久久久97黄色工厂| 久久国产精品色| 日韩三级中文字幕| 精品一区二区免费| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国内精品伊人久久久久av一坑| 欧美日韩国产综合一区二区三区| 亚洲美女淫视频| 欧洲色大大久久| 亚洲va欧美va人人爽| 欧美三级电影网| 日韩高清不卡一区二区三区| 69久久夜色精品国产69蝌蚪网| 日韩中文欧美在线| 日韩欧美精品三级| 国产精品香蕉一区二区三区| 国产午夜精品在线观看| 岛国一区二区三区| 亚洲精品欧美激情| 欧美一区二区三区人| 麻豆91精品视频| 久久久综合网站| 99精品欧美一区二区三区综合在线| 亚洲欧美综合网| 欧洲一区二区三区在线| 日韩国产欧美一区二区三区| 精品国产乱码久久久久久牛牛| 国产自产2019最新不卡| 国产精品久久久久桃色tv| 99国产精品99久久久久久| 一区二区三区影院| 91精品婷婷国产综合久久性色| 黄色日韩三级电影| 亚洲丝袜美腿综合| 日韩欧美视频在线| 99久久伊人精品| 日日摸夜夜添夜夜添精品视频| 久久综合五月天婷婷伊人| 91免费小视频| 久久国产尿小便嘘嘘| 亚洲美女区一区| www国产亚洲精品久久麻豆| 91美女在线观看| 激情国产一区二区| 一区二区成人在线视频| 久久综合一区二区| 欧美日韩不卡一区二区| 国产91精品在线观看| 亚洲国产成人av好男人在线观看| 精品久久人人做人人爽| 欧美综合在线视频| 丁香激情综合国产| 美女被吸乳得到大胸91| 亚洲欧美偷拍三级| 国产亚洲成年网址在线观看| 欧美精品自拍偷拍动漫精品| 成人免费视频免费观看| 欧美aaaaa成人免费观看视频| 中文字幕综合网| 久久精品一区二区三区不卡牛牛| 欧美日韩专区在线| a4yy欧美一区二区三区| 国产一区二区三区最好精华液| 亚洲成人午夜影院| 亚洲精品乱码久久久久| 国产精品丝袜91| 久久你懂得1024| 欧美一区二区日韩一区二区| 欧美亚洲综合一区| 99精品久久99久久久久| 成人精品在线视频观看| 国模娜娜一区二区三区| 午夜久久久影院| 亚洲专区一二三| 亚洲黄一区二区三区| 中文字幕在线一区免费| 久久精品夜夜夜夜久久| 日韩精品专区在线影院重磅| 欧美精品三级日韩久久| 欧美性做爰猛烈叫床潮| 欧洲色大大久久| 欧美综合一区二区| 欧美日韩亚洲综合| 欧美日韩精品一区二区| 欧美日韩一区三区| 欧美午夜不卡在线观看免费| 欧美性猛交xxxx黑人交| 欧美日韩在线亚洲一区蜜芽| 在线观看日韩国产| 欧美无砖专区一中文字| 欧美日韩精品一区二区三区蜜桃 | 成人一区二区三区视频在线观看| 久久国产日韩欧美精品| 精品写真视频在线观看 | 日日摸夜夜添夜夜添精品视频| 亚洲愉拍自拍另类高清精品| 亚洲一线二线三线视频| 一级中文字幕一区二区| 亚洲成人精品一区二区| 日本午夜一区二区| 久久精品国产精品亚洲精品| 国产一区二三区| 成人在线视频首页| 91丨九色porny丨蝌蚪| 欧美三级三级三级| 欧美一区二区三区成人| 久久久蜜桃精品| 亚洲欧美偷拍卡通变态| 亚洲国产精品久久久久秋霞影院| 视频一区视频二区中文| 极品少妇xxxx精品少妇偷拍| 成人性色生活片免费看爆迷你毛片| www.欧美日韩| 欧美乱妇23p| 久久蜜桃av一区二区天堂| 亚洲婷婷国产精品电影人久久| 亚洲亚洲精品在线观看| 精品制服美女久久| 99精品国产91久久久久久| 欧美日产国产精品| 久久久精品日韩欧美| 亚洲欧美激情一区二区| 奇米精品一区二区三区在线观看一| 国产精品一品视频| 欧美午夜精品电影| 国产日韩欧美在线一区| 亚洲成人动漫在线观看| 国产一二精品视频| 欧美日韩精品二区第二页| 国产日韩一级二级三级| 亚洲18女电影在线观看| 成人国产精品免费观看| 制服.丝袜.亚洲.中文.综合| 国产精品视频在线看| 日韩av高清在线观看| 91蝌蚪porny九色| 久久尤物电影视频在线观看| 亚洲激情自拍视频| 国产一区二区三区久久悠悠色av | 日韩欧美一级二级| 夜夜精品浪潮av一区二区三区| 国产在线观看一区二区| 欧美日韩一卡二卡三卡| 亚洲欧洲精品一区二区精品久久久| 日韩国产在线一| 色av成人天堂桃色av| 国产亚洲欧美一级| 久久精品国产免费看久久精品| 欧美性欧美巨大黑白大战| 国产精品久久一卡二卡| 久久99精品国产| 在线不卡a资源高清| 一区二区三区国产豹纹内裤在线| 国产盗摄精品一区二区三区在线| 91精品免费观看| 亚洲一级二级三级| 99久久精品国产麻豆演员表| 国产午夜精品一区二区三区视频 | 日本精品一区二区三区四区的功能| 精品免费99久久| 六月婷婷色综合| 91精品国产欧美一区二区| 亚洲成人一区二区| 欧美日韩久久一区二区| 亚洲综合一区二区| 91麻豆精品视频| 亚洲伦理在线免费看| 一本大道av一区二区在线播放| 欧美极品xxx| 成人高清视频免费观看| 欧美国产成人在线| 成人av影视在线观看| 国产精品白丝在线| 91视频一区二区| 亚洲一二三专区|