📄 os_cpu_c.c
字号:
#include "includes.h"
void OSTaskStkInit(void (*task)(void *pd)reentrant,
OS_STKCB *stkcb,
INT16U opt
)reentrant
{
OS_STK *stk;
opt = opt;
stk =stkcb->OSTKBtomPtr; //用户栈最低有效地址
*stk++ = 0x0f; //15
*stk++ = (INT16U)task&0XFF; //任务地址低8位
*stk++ = (INT16U)task>>8; //任务地址高8位
*stk++ = 0x00; //PSW
*stk++ = 0x0A; //ACC
*stk++ = 0x0B; //B
*stk++ = 0x00; //DPL
*stk++ = 0x00; //DPH
*stk++ = 0x00; //R0
*stk++ = 0x01; //R1
*stk++ = 0x02; //R2
*stk++ = 0x03; //R3
*stk++ = 0x04; //R4
*stk++ = 0x05; //R5
*stk++ = 0x06; //R6
*stk++ = 0x07; //R7
}
//=======================================================================
void TimeTickConfig(void)
{
TMOD &= 0xf0;
TMOD |= 0x01;
TH0 = 0x3c;
TH0 = 0xb0;
ET0=1;
TR0 = 1;
}
//=======================================================================
#if USE_Pre_ExternInt0
void ExternInt0(void)
{
}
#endif
#if USE_Pre_ExternInt1
void ExternInt1(void)
{
}
#endif
#if USE_Pre_TimeInt1
void Time1Int(void)
{
}
#endif
#if USE_Pre_SeryInt
void SeryInt(void)
{
INT8U c;
if(TI){
TI=0;
if(*O_buf){
SBUF=*O_buf;
O_buf++;
}else{
O_dex=0;
}
}
if(RI){
RI=0;
c=SBUF;
switch(c){
ESC: case 0x0d : if(I_dex==0)I_buf[0]=0x0d; //回车
OSSemPost(Sem1);
break;
case 0x08 : //退格
if(I_dex!=0){
I_dex--;
SBUF=c;
}
break;
case 0x1b : if(OSTCBCur->OSTCBPrio==2||OSTCBCur->OSTCBPrio==3){
OSTaskSuspend(OSTCBCur->OSTCBPrio);
I_dex=0;
goto ESC ;
}
break;
default: //其它 装入缓冲区
I_buf[I_dex++]=c;
SBUF=c;
break;
}
}
}
#endif
//=======================================================================
void OSTaskSwHook (void)reentrant
{
OSTCBCur = OSTCBHighRdy;
OSPrioCur = OSPrioHighRdy;
}
//-----------------------------------------------------------------------
void OSTimeTickHook (void)reentrant
{
}
//-----------------------------------------------------------------------
void OSTaskCreateHook (OS_TCB *ptcb)reentrant
{
ptcb = ptcb;
}
//-----------------------------------------------------------------------
#if OS_TASK_STAT_EN
void OSTaskStatHook(void)reentrant
{
}
#endif
#if OS_TASK_DEL_EN
void OSTaskDelHook (OS_TCB *ptcb)reentrant
{
ptcb = ptcb;
}
#endif
//=======================================================================
#if OS_CPU_HOOKS_EN
//--------------------------------------------
void OSInitHookBegin (void)reentrant
{
}
//--------------------------------------------
void OSInitHookEnd (void)reentrant
{
}
//--------------------------------------------
void OSTCBInitHook (OS_TCB *ptcb)reentrant
{
ptcb = ptcb;
}
//--------------------------------------------
void OSTickISRHook(void)reentrant
{
}
//--------------------------------------------
void OSRunningTrue(void)reentrant
{
OSRunning=TRUE;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -