LED
Functions
#include <stdio.h>
#include
<ME218_C32.h>
#include
<timers12.h>
#include "LED.h"
//----------------------------------------------------------------
void delayLED(unsigned int time_in_ms)
{
unsigned int time;
unsigned int time2;
time =
TMRS12_GetTime();
time2 = TMRS12_GetTime();
while((time2-time)
< time_in_ms) { // wait for desired amount of time
time2 = TMRS12_GetTime();
}
}
//----------------------------------------------------------------
void ClockPulseLED(void)
{
int
i = 0;
PTM = PTM | BIT1HI; //set port M1 to HI
(clock line)
for (i=0; i<100; i++);
//delayLED(1);
//wait for at least 1ms
PTM = PTM & BIT1LO;
//set port M1 to LO (clock line)
for (i=0; i<100; i++);
//delayLED(1);
//wait for at least 1ms
}
//----------------------------------------------------------------
void DataHighLED(void)
{
PTM = PTM | BIT0HI; // set M0 HI (data line)
ClockPulseLED();
}
//----------------------------------------------------------------
void DataLowLED(void)
{
PTM = PTM & BIT0LO; // set M0 LO (data line)
ClockPulseLED();
}
//----------------------------------------------------------------
void ClearLED() // set data low 8 times to
// clear
all shift register inputs
{
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
}
//----------------------------------------------------------------
void LEDInit( void)
{
DDRM = DDRM | BIT2HI; // set data direction on appropriate M bits
DDRM = DDRM | BIT1HI;
DDRM = DDRM | BIT0HI;
}
//----------------------------------------------------------------
void TurnOnLED(int LEDsign)
// turn on appropriate LED
{
ClearLED();
switch(LEDsign)
{
case
START_ENGINE_SIGN:
DataHighLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
break;
case
ON_YOUR_MARKS_SIGN:
DataLowLED();
DataHighLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
break;
case GET_SET_SIGN:
DataLowLED();
DataLowLED();
DataHighLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
break;
case GO_SIGN:
DataLowLED();
DataLowLED();
DataLowLED();
DataHighLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
break;
case
YOU_LOSE_SIGN:
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataHighLED();
DataLowLED();
DataLowLED();
DataLowLED();
break;
case YOU_WIN_SIGN:
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataHighLED();
DataHighLED();
DataLowLED();
break;
case
FALSE_START_SIGN:
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataHighLED();
break;
case
OUT_OF_GAS_SIGN:
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataLowLED();
DataHighLED();
break;
default:
printf("not legal sign on input \r\n");
}
}