/*
Matt Chalker
Adapted from Bill Whitaker 20160525
Adapted from Make: AVR Programming by Elliot Williams
*/

#include <avr/io.h>
#include <util/delay.h>

#define LED      PA7
#define DELAYTIMEA 150
#define DELAYTIMEB 50


#define setBit(sfr, bit)     (_SFR_BYTE(sfr) |= (1 << bit))
#define clearBit(sfr, bit)   (_SFR_BYTE(sfr) &= ~(1 << bit))

int main(void) {

  // Initialization
  setBit(DDRA, LED);        /* set LED pin for output */

  // On-off loop
  while (1) {

    	setBit(PORTA, LED);     /*turn on LED*/
    _delay_ms(DELAYTIMEB);   /*Dot*/
    
     clearBit(PORTA, LED);   /*turn off LED*/
    _delay_ms(DELAYTIMEB);   /*wait*/
    
    	setBit(PORTA, LED);     /*turn on LED*/
    _delay_ms(DELAYTIMEB);   /*Dot*/
    
     clearBit(PORTA, LED);   /*turn off LED*/
    _delay_ms(DELAYTIMEB);   /*wait*/
    
    setBit(PORTA, LED);     /*turn on LED*/
    _delay_ms(DELAYTIMEA);   /*Dash*/

    clearBit(PORTA, LED);   /*turn off LED*/
    _delay_ms(DELAYTIMEB);   /*wait*/
    
    	setBit(PORTA, LED);     /*turn on LED*/
    _delay_ms(DELAYTIMEB);   /*Dot*/
    
     clearBit(PORTA, LED);   /*turn off LED*/
    _delay_ms(DELAYTIMEB);   /*wait*/

	setBit(PORTA, LED);     /*turn on LED*/
    _delay_ms(DELAYTIMEB);   /*Dot*/
    
     clearBit(PORTA, LED);   /*turn off LED*/
    _delay_ms(DELAYTIMEB);   /*wait*/
    
       setBit(PORTA, LED);     /*turn on LED*/
    _delay_ms(DELAYTIMEA);   /*Dash*/

    clearBit(PORTA, LED);   /*turn off LED*/
    _delay_ms(DELAYTIMEB);   /*wait*/
    
       setBit(PORTA, LED);     /*turn on LED*/
    _delay_ms(DELAYTIMEA);   /*Dash*/

    clearBit(PORTA, LED);   /*turn off LED*/
    _delay_ms(DELAYTIMEB);   /*wait*/
    
    setBit(PORTA, LED);     /*turn on LED*/
    _delay_ms(DELAYTIMEB);   /*Dot*/
    
     clearBit(PORTA, LED);   /*turn off LED*/
    _delay_ms(DELAYTIMEB);   /*wait*/
    
    	setBit(PORTA, LED);     /*turn on LED*/
    _delay_ms(DELAYTIMEB);   /*Dot*/
    
     clearBit(PORTA, LED);   /*turn off LED*/
    _delay_ms(DELAYTIMEB);   /*wait*/
    
    setBit(PORTA, LED);     /*turn on LED*/
    _delay_ms(DELAYTIMEB);   /*Dot*/
    
     clearBit(PORTA, LED);   /*turn off LED*/
    _delay_ms(DELAYTIMEB);   /*wait*/
    
 
    
  }
  
  return (0);                                          
}

