#include "includes.h"
#define TASK_STK_SIZE 512
#define N_TASKS 2
OS_STK TaskStartStk[TASK_STK_SIZE];
OS_STK Task1Stk[TASK_STK_SIZE];
OS_STK Task2Stk[TASK_STK_SIZE];
char TaskData[N_TASKS];
OS_EVENT *RandomSem;
void Task(void *data);
void TaskStart(void *data);
void main (void)
{
OSInit();
RandomSem = OSSemCreate(1);
OSTaskCreate(TaskStart, (void *)0, (void *)&TaskStartStk[TASK_STK_SIZE - 1], 0);
OSStart();
}
void TaskStart (void *data)
{
UBYTE i;
char s[100];
WORD key;
data = data;
TaskData[0] = 0;
TaskData[1] = 1;
OSTaskCreate(Task1, (void *)&TaskData[0], (void *)&TaskStk1[TASK_STK_SIZE - 1], 6);
OSTaskCreate(Task2, (void *)&TaskData[1], (void *)&TaskStk2[TASK_STK_SIZE - 1], 7);
for (;;) {
………………………………….
OSTimeDlyHMSM(0, 0, 1, 0);
}
}
void Task1 (void *data)
{
UBYTE x;
UBYTE y;
UBYTE err;
for (;;) {
OSSemPend(RandomSem, 0, &err);
x = random(80);
y = random(16);
OSSemPost(RandomSem);
PC_DispChar(x, y + 5, *(char *)data, DISP_FGND_LIGHT_GRAY);
OSTimeDly(1);
}
}
void Task2 (void *data)
{
UBYTE x;
UBYTE y;
UBYTE err;
for (;;) {
OSSemPend(RandomSem, 0, &err);
x = random(80);
y = random(16);
OSSemPost(RandomSem);
PC_DispChar(x, y + 5, *(char *)data, DISP_FGND_LIGHT_GRAY);
OSTimeDly(1);
}
}