Back
/* Sched1 in COMATOS C
The goal of this lab is to run lab 1 exercise in 476 using COMATOS
*/
#include "comatos8515.c"
#include <stdio.h>
#define begin {
#define end }
//task repetition times
#define t0 100
#define t1 125
//initial task state variables
#define Task0State 0
#define Task1State 4 //4*125 is 1/2 second
#define NoTime 0
#define Task0Message 0x01
//Comatos constants
//Turn off debugger
#define NODebug 0
//Any task longer than 10 mS is an error
#define OSTimeOut 10
//mask to define that a task does not listen to messages
#define NoMessage 0xff
//mask to define that a task is not time-scheduled
#define NoTime 0
char Task0(void);
char Task1(void);
unsigned char led, led2;
signed char count;
void main(void)
begin
DDRB = 0xff;
PORTB = 0xff;
DDRD = 0x00;
led = 0xff;
//Set up OS constants
OSInit(OSTimeOut, NODebug);
//Define the tasks to the OS
OSCreateTask(Task0, t0, NoMessage, 0);
OSCreateTask(Task1, t1, NoMessage, Task1State);
count =1;
//Start the system
OSStart(); //never returns
end
//blink LED 0
char Task0(void)
begin
led = led + count;
PORTB=~led;
if(led==0x7F || led==0xff) count = -1;
else if (led==0x80 || led==0x00) count = 1;
return 0;
end
char Task1(void)
begin
char T2State;
T2State = OSGetState();
if(T2State==0)
begin
led = led ^ 0x80;
end
else OSSetState(T2State-1);
if(T2State==0) OSSetState(4);
return 0;
end
Back