#include "includes.h"
#define TASK_STK_SIZE 512
char*s1="MyTask";
char*s2="YouTask";
INT8U err;
INT8U y=0;
INT16S key;
OS_EVENT *Fun_Semp;
OS_STK StartTaskStk[TASK_STK_SIZE];
OS_STK MyTaskStk[TASK_STK_SIZE];
OS_STK YouTaskStk[TASK_STK_SIZE];
void Fun(INT8U x,INT8U y);
void StartTask(void *data);
void MyTask(void *data);
void YouTask(void *data);
/******************************main**************************************/
void main(void)
{
Fun_Semp = OSSemCreate(1); //定義信號量
OSInit();
PC_DOSSaveReturn();
PC_VectSet(uCOS,OSCtxSw);
OSTaskCreate(StartTask,
(void*)0,
&StartTaskStk[TASK_STK_SIZE - 1],
0);
OSStart();
}
/**************************StartTask**************************************/
void StartTask(void *pdata)
{
#if OS_CRITICAL_METHOD ==3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
OS_ENTER_CRITICAL();
PC_VectSet(0x08,OSTickISR);
PC_SetTickRate(OS_TICKS_PER_SEC);
OS_EXIT_CRITICAL();
OSStatInit();
OSTaskCreate(MyTask,
(void*)0,
&MyTaskStk[TASK_STK_SIZE-1],
1);
OSTaskCreate(YouTask,
(void*)0,
&YouTaskStk[TASK_STK_SIZE-1],
2);
for(;;)
{
if(PC_GetKey(&key) == TRUE)
{
if(key == 0x1b)
{
PC_DOSReturn();
}
}
OSTimeDlyHMSM(0,0,3,0);
}
}
/****************************MyTask*******************************************/
void MyTask(void *pdata)
{
#if OS_CRITICAL_METHOD ==3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for(;;)
{
OSSemPend(Fun_Semp,0,&err);
PC_DispStr(0,++y,s1,DISP_BGND_BLACK+DISP_FGND_WHITE);
Fun(7,y); //調用FUN()
OSSemPost(Fun_Semp);
OSTimeDlyHMSM(0,0,1,0);
}
}
/*****************************YouTask*****************************************/
void YouTask(void *pdata)
{
#if OS_CRITICAL_METHOD ==3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for(;;)
{
OSSemPend(Fun_Semp,0,&err);
PC_DispStr(0,++y,s2,DISP_BGND_BLACK+DISP_FGND_WHITE);
Fun(7,y);
OSSemPost(Fun_Semp);
OSTimeDlyHMSM(0,0,2,0);
}
}
/*************************Fun*************************************************/
void Fun(INT8U x,INT8U y)
{
PC_DispStr(x,y,"diao yong Fun()",DISP_BGND_BLACK+DISP_FGND_WHITE);
}
/***********************************End***************************************/