⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 z80_c.c

📁 UCOSII使用Z80单片机开发
💻 C
字号:
/*
*********************************************************************************************************
*                                                uC/OS
*                        Microcomputer Real-Time Multitasking Operating System
*
*                         (c) Copyright 1994, Jean J. Labrosse, Plantation, FL
*                                          All Rights Reserved
*
*
*                                          Z-80 Specific code
*
* File : Z80_C.C
* By   : Jean J. Labrosse
*********************************************************************************************************
*/

#include "INCLUDES.H"

/*
*********************************************************************************************************
*                                           CREATE A TASK
*********************************************************************************************************
*/
UBYTE OSTaskCreate(void (*task)(void *pd), void *pdata, void *pstk, UBYTE p)
{
    UWORD *stk;
    UBYTE  err;


    OS_ENTER_CRITICAL();
    if (OSTCBPrioTbl[p] == (OS_TCB *)0) {   /* Make sure task doesn't already exist at this priority   */
        OS_EXIT_CRITICAL();
        stk    = (UWORD *)pstk;             /* Load stack pointer                                      */
        *--stk = (UWORD)pdata;              /* Simulate call to function with argument                 */
        *--stk = (UWORD)task;
        *--stk = (UWORD)task;               /* Put pointer to task   on top of stack                   */
        *--stk = (UWORD)0x0000;             /* AF = 0                                                  */
        *--stk = (UWORD)0x0000;             /* BC = 0                                                  */
        *--stk = (UWORD)0x0000;             /* DE = 0                                                  */
        *--stk = (UWORD)0x0000;             /* HL = 0                                                  */
        *--stk = (UWORD)0x0000;             /* IX = 0                                                  */
        *--stk = (UWORD)0x0000;             /* IY = 0                                                  */
        err = OSTCBInit(p, (void *)stk);    /* Get and initialize a TCB                                */
        if (err == OS_NO_ERR) {
            if (OSRunning) {                /* Find highest priority task if multitasking has started  */
                OSSched();
            }
        }
        return (err);
    } else {
        OS_EXIT_CRITICAL();
        return (OS_PRIO_EXIST);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -