diff options
Diffstat (limited to 'powerswitch2/main.c')
-rw-r--r-- | powerswitch2/main.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/powerswitch2/main.c b/powerswitch2/main.c new file mode 100644 index 0000000..63e5d5c --- /dev/null +++ b/powerswitch2/main.c @@ -0,0 +1,39 @@ +#include <avr/io.h> +#include <util/delay.h> + +static inline void uart_init(); +int main() +{ + /* serial */ + uart_init(); + + /* data input */ + PORTB &= ~0x0F; + DDRB |= 0x0F; + + for (;;) + { + while ((UCSRA & (1 << RXC)) == 0); + PORTB ^= UDR & 0x0F; + + while ((UCSRA & (1 << UDRE)) == 0); + UDR = PORTB & 0x0F; + } + + return 0; +} + +static inline void uart_init() +{ + UCSRB |= (1 << RXEN) | (1 << TXEN); + UCSRC |= (1 << UCSZ0) | (1 << UCSZ1); +#define BAUD 38400 +#include <util/setbaud.h> + UBRRH = UBRRH_VALUE; + UBRRL = UBRRL_VALUE; +#if USE_2X + UCSRA |= (1 << U2X); +#else + UCSRA &= ~(1 << U2X); +#endif +} |