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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? test.c

?? ucos flashlite,從中可以學(xué)到很我flash的優(yōu)化技巧.
?? C
?? 第 1 頁 / 共 2 頁
字號:
*********************************************************************************************************
*                                             CREATE TASKS
*********************************************************************************************************
*/

static  void  TestCreateTasks (void)
{
    INT8U  err;
	INT8U  prio;
    INT8U  i;


    for (i = 0; i < TEST_N_TASKS; i++) {
        TestTaskData[i] = '0' + i;                         /* Each task will display its own letter    */
        prio            = i + 1;
        OSTaskCreateExt(TestTask, 
                    (void *)&TestTaskData[i], 
                    &TestTaskStk[i][TEST_TASK_STK_SIZE - 1], 
                    prio,
                    prio,
                    &TestTaskStk[i][0],
					TEST_TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CLR + OS_TASK_OPT_STK_CHK);
    }
}

/*
*********************************************************************************************************
*                                               TASK #1
*********************************************************************************************************
*/
static  void  TestTask (void *p_arg)
{
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr;
#endif
    INT8U      x;
    INT8U      y;
    INT8U      err;
	INT16U     i;

        

    p_arg = p_arg;                               /* Prevent compiler warning                           */
    while (TRUE) {
        OSSemPend(TestRandomSem, 0, &err);       /* Acquire semaphore to perform random numbers        */
        for (i = 0; i < TestLoops; i++) {
            x = random(80);                      /* Waste time by getting a random number              */
            y = random(10);
	    }
        x = x;                                   /* Prevent compiler warning                           */
        y = y;
        OSSemPost(TestRandomSem);                /* Release semaphore                                  */
                                                 /* Display the task number on the screen              */
        OSTimeDly(TestDly);
    }
}

/*
*********************************************************************************************************
*                                        CHECK AND GET KEYBOARD KEY
*
* Description: This function checks to see if a key has been pressed at the keyboard and returns TRUE if
*              so.  Also, if a key is pressed, the key is read and copied where the argument is pointing
*              to.
*
* Arguments  : c     is a pointer to where the read key will be stored.
*
* Returns    : TRUE  if a key was pressed
*              FALSE otherwise
*********************************************************************************************************
*/
BOOLEAN PC_GetKey (INT16S *c)
{
    if (kbhit()) {                                         /* See if a key has been pressed            */
        *c = (INT16S)getch();                              /* Get key pressed                          */
        return (TRUE);
    } else {
        *c = 0x00;                                         /* No key pressed                           */
        return (FALSE);
    }
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                             RETURN TO DOS
*
* Description : This functions returns control back to DOS by doing a 'long jump' back to the saved
*               location stored in 'PC_JumpBuf'.  The saved location was established by the function
*               'PC_DOSSaveReturn()'.  After execution of the long jump, execution will resume at the 
*               line following the 'set jump' back in 'PC_DOSSaveReturn()'.  Setting the flag 
*               'PC_ExitFlag' to TRUE ensures that the 'if' statement in 'PC_DOSSaveReturn()' executes.
*
* Arguments   : None
*
* Returns     : None
*********************************************************************************************************
*/
void PC_DOSReturn (void)
{
    PC_ExitFlag = TRUE;                                    /* Indicate we are returning to DOS         */
    longjmp(PC_JumpBuf, 1);                                /* Jump back to saved environment           */
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                        SAVE DOS RETURN LOCATION
*
* Description : This function saves the location of where we are in DOS so that it can be recovered.
*               This allows us to abort multitasking under uC/OS-II and return back to DOS as if we had
*               never left.  When this function is called by 'main()', it sets 'PC_ExitFlag' to FALSE
*               so that we don't take the 'if' branch.  Instead, the CPU registers are saved in the
*               long jump buffer 'PC_JumpBuf' and we simply return to the caller.  If a 'long jump' is
*               performed using the jump buffer then, execution would resume at the 'if' statement and
*               this time, if 'PC_ExitFlag' is set to TRUE then we would execute the 'if' statements and
*               restore the DOS environment.
*
* Arguments   : None
*
* Returns     : None
*********************************************************************************************************
*/
void PC_DOSSaveReturn (void)
{
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr;
#endif    


    PC_ExitFlag  = FALSE;                                  /* Indicate that we are not exiting yet!    */
    OSTickDOSCtr =     1;                                  /* Initialize the DOS tick counter          */
    PC_TickISR   = PC_VectGet(VECT_TICK);                  /* Get MS-DOS's tick vector                 */
    
    PC_VectSet(VECT_DOS_CHAIN, PC_TickISR);                /* Store MS-DOS's tick to chain             */
    
    setjmp(PC_JumpBuf);                                    /* Capture where we are in DOS              */
    if (PC_ExitFlag == TRUE) {                             /* See if we are exiting back to DOS        */
        PC_VectSet(VECT_TICK, PC_TickISR);                 /* Restore DOS's tick vector                */
        exit(0);                                           /* Return to DOS                            */
    }
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                        OBTAIN INTERRUPT VECTOR
*
* Description: This function reads the pointer stored at the specified vector.
*
* Arguments  : vect  is the desired interrupt vector number, a number between 0 and 255.
*
* Returns    : The address of the Interrupt handler stored at the desired vector location.
*********************************************************************************************************
*/
void *PC_VectGet (INT8U vect)
{
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr;
#endif    
    INT16U    *pvect;
    INT16U     off;
    INT16U     seg;
    
    
    pvect = (INT16U *)MK_FP(0x0000, vect * 4);        /* Point into IVT at desired vector location     */
    OS_ENTER_CRITICAL();
    off   = *pvect++;                                 /* Obtain the vector's OFFSET                    */
    seg   = *pvect;                                   /* Obtain the vector's SEGMENT                   */
    OS_EXIT_CRITICAL();
    return (MK_FP(seg, off));
}

/*
*********************************************************************************************************
*                                        INSTALL INTERRUPT VECTOR
*
* Description: This function sets an interrupt vector in the interrupt vector table.
*
* Arguments  : vect  is the desired interrupt vector number, a number between 0 and 255.
*              isr   is a pointer to a function to execute when the interrupt or exception occurs.
*
* Returns    : none
*********************************************************************************************************
*/
void PC_VectSet (INT8U vect, void (*isr)(void))
{
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr;
#endif    
    INT16U    *pvect;
    
    
    pvect    = (INT16U *)MK_FP(0x0000, vect * 4);     /* Point into IVT at desired vector location     */
    OS_ENTER_CRITICAL();
    *pvect++ = (INT16U)FP_OFF(isr);                   /* Store ISR offset                              */
    *pvect   = (INT16U)FP_SEG(isr);                   /* Store ISR segment                             */
    OS_EXIT_CRITICAL();
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区的| 亚洲国产一区视频| 中文字幕久久午夜不卡| 国产亚洲1区2区3区| 亚洲精品一区二区三区99| 亚洲成人免费影院| 精品国产凹凸成av人网站| 555www色欧美视频| 欧美一区二区三区影视| 欧美一区二区三区四区在线观看| 欧美精品日韩一本| 91精品在线观看入口| 欧美一级夜夜爽| 久久久综合激的五月天| 国产三级欧美三级日产三级99 | 欧美久久一二区| 在线不卡免费欧美| 日韩视频永久免费| 久久一区二区三区四区| 国产精品欧美精品| 亚洲品质自拍视频| 日韩精品国产欧美| 久久成人综合网| 成人精品电影在线观看| 色中色一区二区| 91精品国产综合久久久久久漫画 | 处破女av一区二区| 成人午夜激情片| 色综合天天综合网天天狠天天| 一本到不卡精品视频在线观看| 欧美在线一区二区| 欧美成人一区二区三区片免费 | 国产精品538一区二区在线| 成人免费看视频| 欧美日韩国产首页在线观看| 日韩精品一区二区三区四区| 国产精品久久久久永久免费观看 | 国产精品久久久久四虎| 亚洲一区二区不卡免费| 精品一区二区三区香蕉蜜桃| 99精品视频在线播放观看| 在线播放欧美女士性生活| 久久久久国产一区二区三区四区| 亚洲精品国产第一综合99久久| 丝瓜av网站精品一区二区 | 91精品国产欧美日韩| 欧美麻豆精品久久久久久| 久久综合九色综合97婷婷| 亚洲欧美中日韩| 天天色综合成人网| eeuss鲁片一区二区三区在线观看| 欧美亚洲国产bt| 久久美女艺术照精彩视频福利播放| 亚洲精品国产精华液| 精油按摩中文字幕久久| 在线观看三级视频欧美| 久久久久久久综合| 三级欧美在线一区| 91免费国产在线观看| 日韩色视频在线观看| 亚洲欧洲日韩av| 久久超级碰视频| 欧美色网一区二区| 欧美国产日产图区| 精品一区二区三区免费播放| 欧美撒尿777hd撒尿| 国产精品入口麻豆九色| 免费观看在线综合色| 在线观看三级视频欧美| 国产精品国产三级国产三级人妇 | 成人综合婷婷国产精品久久免费| 欧美日韩国产系列| 亚洲乱码精品一二三四区日韩在线| 韩日av一区二区| 9191久久久久久久久久久| 亚洲精选视频在线| 高清国产午夜精品久久久久久| 国产精品久久久爽爽爽麻豆色哟哟| 678五月天丁香亚洲综合网| 欧美国产日本韩| 国模娜娜一区二区三区| 91 com成人网| 亚洲va欧美va国产va天堂影院| 色综合一区二区三区| 1000部国产精品成人观看| 国产suv精品一区二区883| 久久免费美女视频| 国产原创一区二区| 精品入口麻豆88视频| 麻豆一区二区99久久久久| 91精品欧美一区二区三区综合在| 亚洲图片一区二区| 在线观看一区二区精品视频| 一区二区在线观看不卡| 91猫先生在线| 一区二区三区四区不卡在线 | 欧美成人一区二区三区在线观看| 亚洲成年人网站在线观看| 欧美视频自拍偷拍| 五月婷婷另类国产| 欧美日本视频在线| 婷婷一区二区三区| 88在线观看91蜜桃国自产| 日本不卡不码高清免费观看| 91精品欧美综合在线观看最新| 亚洲第一主播视频| 91亚洲精华国产精华精华液| 国产欧美日本一区视频| 国产一区二区三区四区五区美女 | 一区二区三区在线观看欧美 | 欧美国产激情一区二区三区蜜月| 黑人巨大精品欧美黑白配亚洲| 亚洲精品在线免费播放| 国产乱码精品一区二区三区av| 久久免费视频色| 成人av在线网| 亚洲免费在线播放| 欧美电影影音先锋| 久久精品国产精品亚洲红杏| 久久午夜羞羞影院免费观看| 国产+成+人+亚洲欧洲自线| 亚洲欧洲av一区二区三区久久| 在线亚洲免费视频| 人人超碰91尤物精品国产| 欧美精品一区二区不卡| 懂色一区二区三区免费观看| 亚洲视频一区二区在线观看| 欧美在线啊v一区| 日韩av中文字幕一区二区| 久久久久久久一区| 色先锋aa成人| 日韩在线一二三区| 国产日韩欧美a| 亚洲色图.com| 欧美三级三级三级爽爽爽| 全国精品久久少妇| 欧美激情综合在线| 欧洲一区二区三区在线| 久久精品国产第一区二区三区| 日本一区二区不卡视频| 欧美无乱码久久久免费午夜一区| 麻豆精品视频在线观看| 国产精品国产三级国产aⅴ原创| 欧美日韩免费电影| 国产精品羞羞答答xxdd| 尤物av一区二区| 久久亚洲私人国产精品va媚药| av网站一区二区三区| 日韩高清欧美激情| 国产精品伦一区| 欧美一三区三区四区免费在线看 | 精品久久久久久亚洲综合网| 91蜜桃在线观看| 久久电影网电视剧免费观看| 亚洲另类在线制服丝袜| 精品欧美乱码久久久久久| 色综合咪咪久久| 国产麻豆成人精品| 亚洲国产日韩在线一区模特| 国产日韩精品一区二区三区 | www成人在线观看| 一本久道久久综合中文字幕| 91国产成人在线| 精品一区二区成人精品| 樱花草国产18久久久久| 国产日韩三级在线| 日韩视频免费直播| 欧美亚洲国产一区二区三区| 成人夜色视频网站在线观看| 日韩国产欧美在线播放| 亚洲女人的天堂| 国产欧美日韩在线| 日韩一级片在线播放| 在线观看中文字幕不卡| 成人黄页在线观看| 国产一区美女在线| 老司机午夜精品| 午夜精品久久一牛影视| 亚洲美女电影在线| 国产精品女同一区二区三区| 日韩一区二区在线观看| 欧美亚洲日本国产| 色哟哟精品一区| 99久久久精品| www.欧美亚洲| 国产91在线|亚洲| 国产在线精品免费| 理论片日本一区| 青青草97国产精品免费观看| 偷窥少妇高潮呻吟av久久免费| 亚洲精选一二三| 亚洲免费av网站| 亚洲色欲色欲www| 亚洲天堂网中文字| 国产精品传媒入口麻豆| 国产精品丝袜黑色高跟| 精品国产99国产精品| 欧美成人精精品一区二区频| 日韩三级免费观看| 天堂资源在线中文精品|