📄 ucos_ii.i
字号:
#line 56 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_mem.c"
#line 120 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_mem.c"
#line 153 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_mem.c"
#line 188 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_mem.c"
#line 218 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_mem.c"
#line 24 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l\UCOS_II.C"
#line 1 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 16 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 27 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 43 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 64 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 108 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 161 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 193 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 233 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 305 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 355 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 404 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_q.c"
#line 25 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l\UCOS_II.C"
#line 1 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_sem.c"
#line 16 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_sem.c"
#line 38 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_sem.c"
INT16U OSSemAccept (OS_EVENT *pevent)
{
INT16U cnt;
asm {PUSHF; CLI};
if (pevent->OSEventType != 3) {
asm POPF;
return (0);
}
cnt = pevent->OSEventCnt;
if (cnt > 0) {
pevent->OSEventCnt--;
}
asm POPF;
return (cnt);
}
#line 74 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_sem.c"
OS_EVENT *OSSemCreate (INT16U cnt)
{
OS_EVENT *pevent;
asm {PUSHF; CLI};
pevent = OSEventFreeList;
if (OSEventFreeList != (OS_EVENT *)0) {
OSEventFreeList = (OS_EVENT *)OSEventFreeList->OSEventPtr;
}
asm POPF;
if (pevent != (OS_EVENT *)0) {
pevent->OSEventType = 3;
pevent->OSEventCnt = cnt;
OSEventWaitListInit(pevent);
}
return (pevent);
}
#line 123 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_sem.c"
void OSSemPend (OS_EVENT *pevent, INT16U timeout, INT8U *err)
{
asm {PUSHF; CLI};
if (pevent->OSEventType != 3) {
asm POPF;
*err = 1;
}
if (pevent->OSEventCnt > 0) {
pevent->OSEventCnt--;
asm POPF;
*err = 0;
} else if (OSIntNesting > 0) {
asm POPF;
*err = 2;
} else {
OSTCBCur->OSTCBStat |= 0x01;
OSTCBCur->OSTCBDly = timeout;
OSEventTaskWait(pevent);
asm POPF;
OSSched();
asm {PUSHF; CLI};
if (OSTCBCur->OSTCBStat & 0x01) {
OSEventTO(pevent);
asm POPF;
*err = 10;
} else {
OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0;
asm POPF;
*err = 0;
}
}
}
#line 173 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_sem.c"
INT8U OSSemPost (OS_EVENT *pevent)
{
asm {PUSHF; CLI};
if (pevent->OSEventType != 3) {
asm POPF;
return (1);
}
if (pevent->OSEventGrp) {
OSEventTaskRdy(pevent, (void *)0,0x01);
asm POPF;
OSSched();
return (0);
} else {
if (pevent->OSEventCnt < 65535) {
pevent->OSEventCnt++;
asm POPF;
return (0);
} else {
asm POPF;
return (50);
}
}
}
#line 213 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_sem.c"
INT8U OSSemQuery (OS_EVENT *pevent, OS_SEM_DATA *pdata)
{
INT8U i;
INT8U *psrc;
INT8U *pdest;
asm {PUSHF; CLI};
if (pevent->OSEventType != 3) {
asm POPF;
return (1);
}
pdata->OSEventGrp = pevent->OSEventGrp;
psrc = &pevent->OSEventTbl[0];
pdest = &pdata->OSEventTbl[0];
for (i = 0; i <((12) / 8 + 1); i++) {
*pdest++ = *psrc++;
}
pdata->OSCnt = pevent->OSEventCnt;
asm POPF;
return (0);
}
#line 26 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l\UCOS_II.C"
#line 1 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
#line 16 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
#line 26 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
static void OSDummy(void);
#line 42 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
static void OSDummy (void)
{
}
#line 67 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
#line 171 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
INT8U OSTaskCreate (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio)
{
void *psp;
INT8U err;
if (prio > 12) {
return (42);
}
asm {PUSHF; CLI};
if (OSTCBPrioTbl[prio] == (OS_TCB *)0) {
OSTCBPrioTbl[prio] = (OS_TCB *)1;
asm POPF;
psp = (void *)OSTaskStkInit(task, pdata, ptos, 0);
err = OSTCBInit(prio, psp, (void *)0, 0, 0, (void *)0, 0);
if (err == 0) {
asm {PUSHF; CLI};
OSTaskCtr++;
OSTaskCreateHook(OSTCBPrioTbl[prio]);
asm POPF;
if (OSRunning) {
OSSched();
}
} else {
asm {PUSHF; CLI};
OSTCBPrioTbl[prio] = (OS_TCB *)0;
asm POPF;
}
return (err);
} else {
asm POPF;
return (40);
}
}
#line 273 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
#line 372 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
#line 476 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
#line 526 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
#line 578 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
#line 645 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
#line 699 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_task.c"
INT8U OSTaskQuery (INT8U prio, OS_TCB *pdata)
{
OS_TCB *ptcb;
if (prio > 12 && prio != 0xFF) {
return (42);
}
asm {PUSHF; CLI};
if (prio == 0xFF) {
prio = OSTCBCur->OSTCBPrio;
}
if ((ptcb = OSTCBPrioTbl[prio]) == (OS_TCB *)0) {
asm POPF;
return (41);
}
*pdata = *ptcb;
asm POPF;
return (0);
}
#line 27 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l\UCOS_II.C"
#line 1 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_time.c"
#line 16 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_time.c"
#line 36 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_time.c"
void OSTimeDly (INT16U ticks)
{
if (ticks > 0) {
asm {PUSHF; CLI};
if ((OSRdyTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0) {
OSRdyGrp &= ~OSTCBCur->OSTCBBitY;
}
OSTCBCur->OSTCBDly = ticks;
asm POPF;
OSSched();
}
}
#line 74 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_time.c"
INT8U OSTimeDlyHMSM (INT8U hours, INT8U minutes, INT8U seconds, INT16U milli)
{
INT32U ticks;
INT16U loops;
if (hours > 0 || minutes > 0 || seconds > 0 || milli > 0) {
if (minutes > 59) {
return (81);
}
if (seconds > 59) {
return (82);
}
if (milli > 999) {
return (83);
}
ticks = ((INT32U)hours * 3600L + (INT32U)minutes * 60L + (INT32U)seconds) * 200
+ 200 * ((INT32U)milli + 500L / 200) / 1000L;
loops = ticks / 65536L;
ticks = ticks % 65536L;
OSTimeDly(ticks);
while (loops > 0) {
OSTimeDly(32768);
OSTimeDly(32768);
loops--;
}
return (0);
} else {
return (84);
}
}
#line 132 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_time.c"
INT8U OSTimeDlyResume (INT8U prio)
{
OS_TCB *ptcb;
if (prio >= 12) {
return (42);
}
asm {PUSHF; CLI};
ptcb = (OS_TCB *)OSTCBPrioTbl[prio];
if (ptcb != (OS_TCB *)0) {
if (ptcb->OSTCBDly != 0) {
ptcb->OSTCBDly = 0;
if (!(ptcb->OSTCBStat & 0x08)) {
OSRdyGrp |= ptcb->OSTCBBitY;
OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
asm POPF;
OSSched();
} else {
asm POPF;
}
return (0);
} else {
asm POPF;
return (80);
}
} else {
asm POPF;
return (11);
}
}
#line 177 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_time.c"
INT32U OSTimeGet (void)
{
INT32U ticks;
asm {PUSHF; CLI};
ticks = OSTime;
asm POPF;
return (ticks);
}
#line 200 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l/os_time.c"
void OSTimeSet (INT32U ticks)
{
asm {PUSHF; CLI};
OSTime = ticks;
asm POPF;
}
#line 28 "D:\robocon\技术资料\ucos\Embedded\ucosii\samples\ex1l\UCOS_II.C"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -