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

📄 os_cpu_c.c

📁 该源码是本人经调试通过的UCOS2操作系统在51单片机上移植好的源代码
💻 C
字号:
#ifndef  OS_MASTER_FILE
#include "includes.h"
#endif

void *OSTaskStkInit (void (*task)(void *pd), void *ppdata, void *ptos, INT16U opt)   reentrant
{ 
OS_STK *stk;

ppdata = ppdata;
opt = opt; //opt没被用到,保留此语句防止告警产生 
stk = (OS_STK *)ptos; //用户堆栈最低有效地址
*stk++ = 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
//不用保存SP,任务切换时根据用户堆栈长度计算得出。 
*stk++=(INT16U)(ptos+MaxStkSize)>>8;
*stk++=(INT16U)(ptos+MaxStkSize)&0xff;
return ((void *)ptos);
}

#if OS_CPU_HOOKS_EN
void OSTaskCreateHook (OS_TCB *ptcb)   reentrant
{
ptcb = ptcb; /* Prevent compiler warning */
}

//void OSTaskDelHook (OS_TCB *ptcb) 
//{
//ptcb = ptcb; /* Prevent compiler warning */
//}

//void OSTaskSwHook(void) 
//{
//}

//void OSTaskStatHook(void) 
//{
//}
void OSTaskIdleHook(void)  reentrant
{
}
void OSTimeTickHook (void)  reentrant
{
}
#endif

#if OS_VERSION >= 204
void OSTCBInitHook(OS_TCB *ptcb)  reentrant
{
 ptcb = ptcb;
}

void OSInitHookEnd(void)  reentrant
{
}

void OSInitHookBegin(void)  reentrant
{
}
#endif

//初始化定时器0
void InitTimer0(void) 
{
TMOD=TMOD&0xF0;
TMOD=TMOD|0x01; //模式1(16位定时器),仅受TR0控制
TH0=0x70; //定义Tick=50次/秒(即0.02秒/次)
TL0=0x00; //OS_CPU_A.ASM 和 OS_TICKS_PER_SEC
ET0=1; //允许T0中断
TR0=1; 
}

void serial_initial(void)
{
SCON=0x52;
TMOD=0x20;
TH1=0xf3;
TR1=1;
}


⌨️ 快捷键说明

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