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