?? os_cpu_c.c
字號:
#define OS_CPU_GLOBALS
#include "includes.h"
OS_STK *OSTaskStkInit (void (*task)(void *pd), void *pdat, OS_STK *ptos, INT16U opt) KCREENTRANT
{
OS_STK *stk;
opt = opt; /* 'opt' is not used, prevent warning */
stk =ptos;
*stk++ = (INT16U)task & 0xFF; /* PCL */
*stk++ = (INT16U)task >> 8; /* PCH */
*stk++ = 0x00; /* ACC */
*stk++ = 0x0a; /* B */
*stk++ = 0x10; /* DPH */
*stk++ = 0x01; /* DPL */
*stk++ = 0x00; /* PSW */
*stk++ = 0x00; /* R0 */
*stk++ = (UBYTE)(pdat); /* R1 */
*stk++ = (UBYTE)((UWORD)pdat >>8 ); /* R2 */
*stk++ = (UBYTE)((ULONG)pdat >>16 ); /* R3 */
*stk++ = 0x04; /* R4 */
*stk++ = 0x05; /* R5 */
*stk++ = 0x06; /* R6 */
*stk++ = 0x07; /* R7 */
*stk++ = 15; /* DS = Current value of DS */
*stk++ = (INT16U)(ptos+128)>>8;
*stk = (INT16U)(ptos+128)&0xff;
return ((OS_STK *)stk-2);
}
#if OS_CPU_HOOKS_EN
void OSTaskCreateHook (OS_TCB *ptcb) KCREENTRANT
{
ptcb = ptcb; /* Prevent compiler warning */
}
void OSTCBInitHook(OS_TCB *ptcb) KCREENTRANT
{
ptcb = ptcb; /* Prevent compiler warning */
}
void OSTaskSwHook (void) KCREENTRANT
{
OS_STK *temp;
temp=OSTCBCur->OSTCBStkPtr;
if (*temp>MaxStk)
MaxStk=*temp;
}
#if OS_TASK_STAT_EN
void OSTaskStatHook(void) KCREENTRANT
{
}
#endif
void OSInitHookBegin(void)KCREENTRANT
{
}
void OSInitHookEnd(void)KCREENTRANT
{
}
void OSTaskIdleHook(void)KCREENTRANT
{
}
#endif
void OSTimeTickHook(void)KCREENTRANT
{
}
void InitTimer0(void) KCREENTRANT
{
TMOD=TMOD&0xF0;
TMOD=TMOD|0x01; //模式1(16位定時器),僅受TR0控制
TH0=(INT16U)(SYS_TIMER_RELOAD)>>8; //定義Tick=100次/秒(即0.01秒/次)
TL0=(INT16U)(SYS_TIMER_RELOAD)&0xff; //OS_CPU_A.ASM 和 OS_TICKS_PER_SEC
ET0=1; //允許T0中斷
TR0=1;
}
//重裝載定時器0
void ReloadTimer0(void)
{
TF0=0;
TH0=(INT16U)(SYS_TIMER_RELOAD)>>8; //定義Tick=100次/秒(即0.01秒/次)
TL0=(INT16U)(SYS_TIMER_RELOAD)&0xff; //OS_CPU_A.ASM 和 OS_TICKS_PER_SEC
TR0=1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -