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

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

?? os_sem.ls1

?? 51單片機上移植UCOSII,通過調試
?? LS1
?? 第 1 頁 / 共 5 頁
字號:
                             desired
                     370     ; *                            semaphore.
                     371     ; *
                     372     ; *              opt           determines delete options as follows:
                     373     ; *                            opt == OS_DEL_NO_PEND   Delete semaphore ONLY if no task pen
                             ding
                     374     ; *                            opt == OS_DEL_ALWAYS    Deletes the semaphore even if tasks 
                             are waiting.
                     375     ; *                                                    In this case, all the tasks pending 
                             will be readied.
                     376     ; *
                     377     ; *              err           is a pointer to an error code that can contain one of the fo
                             llowing values:
                     378     ; *                            OS_NO_ERR               The call was successful and the sema
                             phore was deleted
                     379     ; *                            OS_ERR_DEL_ISR          If you attempted to delete the semap
                             hore from an ISR
                     380     ; *                            OS_ERR_INVALID_OPT      An invalid option was specified
                     381     ; *                            OS_ERR_TASK_WAITING     One or more tasks were waiting on th
                             e semaphore
                     382     ; *                            OS_ERR_EVENT_TYPE       If you didn't pass a pointer to a se
                             maphore
                     383     ; *                            OS_ERR_PEVENT_NULL      If 'pevent' is a NULL pointer.
                     384     ; *
                     385     ; * Returns    : pevent        upon error
                     386     ; *              (OS_EVENT *)0 if the semaphore was successfully deleted.
                     387     ; *
                     388     ; * Note(s)    : 1) This function must be used with care.  Tasks that would normally expect
                              the presence of
                     389     ; *                 the semaphore MUST check the return code of OSSemPend().
                     390     ; *              2) OSSemAccept() callers will not know that the intended semaphore has bee
                             n deleted unless
                     391     ; *                 they check 'pevent' to see that it's a NULL pointer.
                     392     ; *              3) This call can potentially disable interrupts for a long time.  The inte
                             rrupt disable
                     393     ; *                 time is directly proportional to the number of tasks waiting on the sem
                             aphore.
                     394     ; *              4) Because ALL tasks pending on the semaphore will be readied, you MUST be
                              careful in
                     395     ; *                 applications where the semaphore is used for mutual exclusion because t
                             he resource(s)
                     396     ; *                 will no longer be guarded by the semaphore.
                     397     ; *****************************************************************************************
                             ****************
                     398     ; */
                     399     ; 
                     400     ; #if OS_SEM_DEL_EN > 0
                     401     ; OS_EVENT  *OSSemDel (OS_EVENT *pevent, INT8U opt, INT8U *err)LG_REENTRANT
                     402     ; {
                     403     ; #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU st
                             atus register */
                     404     ;     OS_CPU_SR  cpu_sr;
                     405     ; #endif    
A51 MACRO ASSEMBLER  OS_SEM                                                               05/17/2005 11:19:57 PAGE     8

                     406     ;     BOOLEAN    tasks_waiting;
                     407     ; 
                     408     ; 
                     409     ;     if (OSIntNesting > 0) {                                /* See if called from ISR ... 
                                           */
                     410     ;         *err = OS_ERR_DEL_ISR;                             /* ... can't DELETE from an IS
                             R             */
                     411     ;         return (pevent);
                     412     ;     }
                     413     ; #if OS_ARG_CHK_EN > 0
                     414     ;     if (pevent == (OS_EVENT *)0) {                         /* Validate 'pevent'          
                                           */
                     415     ;         *err = OS_ERR_PEVENT_NULL;
                     416     ;         return (pevent);
                     417     ;     }
                     418     ;     if (pevent->OSEventType != OS_EVENT_TYPE_SEM) {        /* Validate event block type  
                                           */
                     419     ;         *err = OS_ERR_EVENT_TYPE;
                     420     ;         return (pevent);
                     421     ;     }
                     422     ; #endif
                     423     ;     OS_ENTER_CRITICAL();
                     424     ;     if (pevent->OSEventGrp != 0x00) {                      /* See if any tasks waiting on
                              semaphore    */
                     425     ;         tasks_waiting = TRUE;                              /* Yes                        
                                           */
                     426     ;     } else {
                     427     ;         tasks_waiting = FALSE;                             /* No                         
                                           */
                     428     ;     }
                     429     ;     switch (opt) {
                     430     ;         case OS_DEL_NO_PEND:                               /* Delete semaphore only if no
                              task waiting */
                     431     ;              if (tasks_waiting == FALSE) {
                     432     ;                  pevent->OSEventType = OS_EVENT_TYPE_UNUSED;
                     433     ;                  pevent->OSEventPtr  = OSEventFreeList;    /* Return Event Control Block 
                             to free list  */
                     434     ;                  OSEventFreeList     = pevent;             /* Get next free event control
                              block        */
                     435     ;                  OS_EXIT_CRITICAL();
                     436     ;                  *err = OS_NO_ERR;
                     437     ;                  return ((OS_EVENT *)0);                   /* Semaphore has been deleted 
                                           */
                     438     ;              } else {
                     439     ;                  OS_EXIT_CRITICAL();
                     440     ;                  *err = OS_ERR_TASK_WAITING;
                     441     ;                  return (pevent);
                     442     ;              }
                     443     ; 
                     444     ;         case OS_DEL_ALWAYS:                                /* Always delete the semaphore
                                           */
                     445     ;              while (pevent->OSEventGrp != 0x00) {          /* Ready ALL tasks waiting for
                              semaphore    */
                     446     ;                  OS_EventTaskRdy(pevent, (void *)0, OS_STAT_SEM);
                     447     ;              }
                     448     ;              pevent->OSEventType = OS_EVENT_TYPE_UNUSED;
                     449     ;              pevent->OSEventPtr  = OSEventFreeList;        /* Return Event Control Block 
                             to free list  */
                     450     ;              OSEventFreeList     = pevent;                 /* Get next free event control
                              block        */
                     451     ;              OS_EXIT_CRITICAL();
                     452     ;              if (tasks_waiting == TRUE) {                  /* Reschedule only if task(s) 
                             were waiting  */
                     453     ;                  OS_Sched();                               /* Find highest priority task 
                             ready to run  */
                     454     ;              }
A51 MACRO ASSEMBLER  OS_SEM                                                               05/17/2005 11:19:57 PAGE     9

                     455     ;              *err = OS_NO_ERR;
                     456     ;              return ((OS_EVENT *)0);                       /* Semaphore has been deleted 
                                           */
                     457     ; 
                     458     ;         default:
                     459     ;              OS_EXIT_CRITICAL();
                     460     ;              *err = OS_ERR_INVALID_OPT;
                     461     ;              return (pevent);
                     462     ;     }
                     463     ; }
                     464     ; #endif
                     465     ; 
                     466     ; /*$PAGE*/
                     467     ; /*
                     468     ; *****************************************************************************************
                             ****************
                     469     ; *                                           PEND ON SEMAPHORE
                     470     ; *
                     471     ; * Description: This function waits for a semaphore.
                     472     ; *
                     473     ; * Arguments  : pevent        is a pointer to the event control block associated with the 
                             desired
                     474     ; *                            semaphore.
                     475     ; *
                     476     ; *              timeout       is an optional timeout period (in clock ticks).  If non-zero
                             , your task will
                     477     ; *                            wait for the resource up to the amount of time specified by 
                             this argument.
                     478     ; *                            If you specify 0, however, your task will wait forever at th
                             e specified
                     479     ; *                            semaphore or, until the resource becomes available (or the e
                             vent occurs).
                     480     ; *
                     481     ; *              err           is a pointer to where an error message will be deposited.  P
                             ossible error
                     482     ; *                            messages are:
                     483     ; *
                     484     ; *                            OS_NO_ERR           The call was successful and your task ow
                             ns the resource
                     485     ; *                                                or, the event you are waiting for occurr
                             ed.
                     486     ; *                            OS_TIMEOUT          The semaphore was not received within th
                             e specified
                     487     ; *                                                timeout.
                     488     ; *                            OS_ERR_EVENT_TYPE   If you didn't pass a pointer to a semaph
                             ore.
                     489     ; *                            OS_ERR_PEND_ISR     If you called this function from an ISR 
                             and the result
                     490     ; *                                                would lead to a suspension.
                     491     ; *                            OS_ERR_PEVENT_NULL  If 'pevent' is a NULL pointer.
                     492     ; *
                     493     ; * Returns    : none
                     494     ; *****************************************************************************************
                             ****************
                     495     ; */
                     496     ; 
                     497     ; void  OSSemPend (OS_EVENT *pevent, INT16U timeout, INT8U *err)LG_REENTRANT
                     498     
----                 499             RSEG  ?PR?_?OSSemPend?OS_SEM
0000                 500     _?OSSemPend:
                     501             USING   0
                     502                             ; SOURCE LINE # 244
0000 90FFFE          503             MOV     DPTR,#0FFFEH
0003 120000   F      504             LCALL   ?C?ADDXBP
0006 EC              505             MOV     A,R4
0007 F0              506             MOVX    @DPTR,A
A51 MACRO ASSEMBLER  OS_SEM                                                               05/17/2005 11:19:57 PAGE    10

0008 A3              507             INC     DPTR
0009 ED              508             MOV     A,R5
000A F0              509             MOVX    @DPTR,A
000B 90FFFD          510             MOV     DPTR,#0FFFDH
000E 120000   F      511             LCALL   ?C?ADDXBP
0011 120000   F      512             LCALL   ?C?PSTXDATA
                     513     ; {
                     514     ; #if OS_CRITICAL_METHOD == 3                           /* Allocate storage for CPU status 
                             register      */
                     515     ;     OS_CPU_SR  cpu_sr;
                     516     ; #endif    
                     517     ; 
                     518     ; 
                     519     ;     if (OSIntNesting > 0) {                           /* See if called from ISR ...      
                                           */
                     520                             ; SOURCE LINE # 251
0014 900000   F      521             MOV     DPTR,#OSIntNesting
0017 E0              522             MOVX    A,@DPTR
0018 D3              523             SETB    C
0019 9400            524             SUBB    A,#00H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费一区二区三区视频 | 亚洲无人区一区| 51精品久久久久久久蜜臀| 99视频精品全部免费在线| 国产不卡视频在线播放| 亚洲精品videosex极品| 中文字幕在线不卡国产视频| 久久理论电影网| 精品嫩草影院久久| 欧美一级在线免费| 欧美精三区欧美精三区| 不卡视频在线看| 成人亚洲精品久久久久软件| 久久成人免费电影| 日韩不卡手机在线v区| 亚洲成人黄色小说| 亚洲成a人片在线观看中文| 中文字幕制服丝袜一区二区三区| 国产调教视频一区| 国产欧美综合在线观看第十页| 欧美裸体bbwbbwbbw| 91精品久久久久久蜜臀| 日韩精品一区二区三区在线播放| 91精品综合久久久久久| 欧美一区二区福利在线| 2欧美一区二区三区在线观看视频| 日韩一区二区三免费高清| 在线综合视频播放| 制服丝袜成人动漫| 精品久久99ma| 亚洲国产精品ⅴa在线观看| 亚洲综合色区另类av| 日本一区二区三区四区在线视频 | 4438x成人网最大色成网站| 91精品国产麻豆国产自产在线| 欧美日韩另类一区| 欧美一级搡bbbb搡bbbb| 久久亚洲一区二区三区四区| 欧美成人精品1314www| 精品国产乱码久久久久久1区2区| 欧美成人vr18sexvr| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 精品国产免费人成在线观看| 亚洲欧洲精品天堂一级| 亚洲成av人片在线| 国产大陆精品国产| 欧美性色综合网| 久久精品视频免费| 婷婷一区二区三区| 国产一区二区三区高清播放| 91久久精品国产91性色tv| 精品国产精品网麻豆系列| 亚洲精选一二三| 国内精品久久久久影院薰衣草| 91美女片黄在线观看| 精品日产卡一卡二卡麻豆| 一区二区视频在线| 国产在线不卡视频| 制服丝袜在线91| 亚洲欧美日韩中文播放| 九九久久精品视频| 欧美体内she精高潮| 国产精品灌醉下药二区| 男男gaygay亚洲| 欧美主播一区二区三区美女| 国产丝袜在线精品| 日韩av不卡在线观看| 91视频精品在这里| 欧美国产激情一区二区三区蜜月 | 久久综合色综合88| 亚洲综合久久av| 懂色av一区二区三区蜜臀| 91精品国产综合久久久久久久久久 | 欧美另类高清zo欧美| 国产精品的网站| 国产高清在线精品| 精品三级在线观看| 日韩不卡一区二区三区| 欧美日韩在线三级| 夜夜嗨av一区二区三区| 成人自拍视频在线| 久久久久久麻豆| 久久99热这里只有精品| 欧美精品一二三四| 夜夜爽夜夜爽精品视频| 99精品桃花视频在线观看| 国产日产欧美精品一区二区三区| 久久99精品国产麻豆婷婷洗澡| 欧美麻豆精品久久久久久| 亚洲国产视频网站| 91久久国产最好的精华液| 亚洲欧美在线另类| 99riav久久精品riav| 亚洲欧洲日本在线| 91网上在线视频| 中文字幕制服丝袜一区二区三区| 成人丝袜18视频在线观看| 日本一区免费视频| 懂色av一区二区夜夜嗨| 亚洲国产高清不卡| 成人av资源下载| 国产精品不卡在线| 91在线你懂得| 亚洲免费在线视频一区 二区| 色综合久久中文字幕| 亚洲你懂的在线视频| 日本精品视频一区二区| 亚洲午夜久久久久中文字幕久| 欧美在线综合视频| 香蕉成人伊视频在线观看| 欧美日韩国产一级| 日本美女一区二区三区| 日韩一区二区在线看| 精品一区二区免费| 国产亚洲成av人在线观看导航| 国产91精品露脸国语对白| 亚洲国产精品成人综合| 成人午夜私人影院| 亚洲精品欧美综合四区| 色婷婷亚洲综合| 亚洲一区二区三区激情| 欧美三级日韩三级国产三级| 日韩有码一区二区三区| 久久亚洲一区二区三区四区| av网站免费线看精品| 亚洲一区二区三区在线看| 日韩一级欧美一级| 国产成人免费视频网站| 亚洲精品乱码久久久久久久久| 91久久精品一区二区三区| 免费人成精品欧美精品| 欧美精品一区二区三区四区| 国产高清久久久| 亚洲精品网站在线观看| 欧美一区二区三区不卡| 国产成人欧美日韩在线电影| 亚洲精品免费视频| 日韩欧美一级片| 成人丝袜视频网| 天堂一区二区在线免费观看| 久久婷婷久久一区二区三区| av福利精品导航| 亚洲成人综合在线| 国产欧美一区二区精品性| 欧美午夜精品免费| 国产精品一区二区不卡| 亚洲精品乱码久久久久久久久| 欧美一区二区福利在线| 99久久精品一区| 美女视频网站黄色亚洲| 国产欧美精品区一区二区三区| 在线观看视频一区| 国产精品一区在线观看乱码 | 蜜臀av国产精品久久久久| 国产精品二区一区二区aⅴ污介绍| 欧美日韩在线直播| 欧美色图天堂网| 国产在线一区观看| 玉米视频成人免费看| 久久亚洲精精品中文字幕早川悠里 | 欧美日韩免费观看一区三区| 国产乱人伦偷精品视频免下载| 一区二区三区丝袜| 精品999久久久| 欧美精品电影在线播放| 粉嫩嫩av羞羞动漫久久久| 免费观看日韩电影| 亚洲一区在线视频| 国产精品激情偷乱一区二区∴| 日韩欧美一级片| 欧美人妖巨大在线| 91浏览器打开| 丁香婷婷综合色啪| 久久成人羞羞网站| 午夜精品福利在线| 亚洲男人天堂av网| 国产精品色一区二区三区| 精品久久久久久综合日本欧美| 欧美视频一区在线| 色久优优欧美色久优优| 成人一区二区三区| 国产精品影视在线| 狠狠色综合日日| 免费高清视频精品| 亚洲国产aⅴ成人精品无吗| 日韩一区有码在线| 国产亲近乱来精品视频| 久久综合狠狠综合| 欧美成人精品3d动漫h| 欧美一区二视频| 欧美日韩成人综合在线一区二区| 一本到不卡精品视频在线观看 | 欧美mv日韩mv| 欧美一区二区三区在线视频| 欧美性三三影院| 欧美色图一区二区三区| 欧美午夜一区二区三区| 欧美在线一二三| 欧洲一区二区av| 色婷婷av久久久久久久|