#include #include #include #include #include "serial-neil.h" #define F_CPU 8000000UL // internal clock set to 8 MHz #define LED1 PA7 // define the pins for the LEDs #define LED2 PB2 #define LED3 PB1 #define LED4 PB0 void bouncy(void) // function making the LEDs bounce like KIT from K2000 { PORTA ^= (1 << LED1); _delay_ms(200); PORTA ^= (1 << LED1); PORTB ^= (1 << LED2); _delay_ms(200); PORTB ^= (1 << LED2); PORTB ^= (1 << LED3); _delay_ms(200); PORTB ^= (1 << LED3); PORTB ^= (1 << LED4); _delay_ms(200); PORTB ^= (1 << LED4); PORTB ^= (1 << LED3); _delay_ms(200); PORTB ^= (1 << LED3); PORTB ^= (1 << LED2); _delay_ms(200); PORTB ^= (1 << LED2); } void turnOn(int led) { if (led == 1) { PORTA ^= (1 << LED1); } if (led == 2) { PORTB ^= (1 << LED2); } if (led == 3) { PORTB ^= (1 << LED3); } if (led == 4) { PORTB ^= (1 << LED4); } } int main() { static char chr; DDRA |= (1 << LED1); // define LED pins as outputs DDRB |= (1 << LED2); DDRB |= (1 << LED3); DDRB |= (1 << LED4); CLKPR = (1 << CLKPCE); CLKPR = (0 << CLKPS3) | (0 << CLKPS2) | (0 << CLKPS1) | (0 << CLKPS0); // clock is not divided set(serial_port, serial_pin_out); output(serial_direction, serial_pin_out); bouncy(); while(1) { get_char(&serial_pins, serial_pin_in, &chr); switch(chr) { case '1' : turnOn(1); break; case '2' : turnOn(2); break; case '3' : turnOn(3); break; case '4' : turnOn(4); break; default : bouncy(); } _delay_ms(50); } }