/******************************************************************************** Includes ********************************************************************************/ #include #include #include /******************************************************************************** Macros and Defines ********************************************************************************/ #define BAUD 19200 #define MYUBRR F_CPU/16/BAUD-1 /******************************************************************************** Function Prototypes ********************************************************************************/ void usart_init(uint16_t ubrr); char usart_getchar( void ); void usart_putchar( char data ); void usart_pstr(char *s); unsigned char kbhit(void); /******************************************************************************** Main ********************************************************************************/ int main( void ) { // configure PORTA as output DDRA = 0xFF; // setup PORTB data direction as an input DDRB = 0; // make sure it is high impedance and will not source PORTB = 0; // fire up the usart usart_init ( MYUBRR ); // dump some strings to the screen at power on usart_pstr("Ready to rock and roll!\n\r"); usart_pstr("Type in a character, and I will transpose it up by 1:\n\r"); // main loop while(true) { // if a key has been pressed, then process it if(kbhit()) { usart_putchar(usart_getchar() + 1); } // map the PINB inputs to the PORTA outputs PORTA = PINB; // a little humor is always good, PB0 gets the user yelled at if(bit_is_clear(PINB,PB0)) { usart_pstr("OUCH! Stop poking me!\n\r"); } } return 0; } /******************************************************************************** usart Related ********************************************************************************/ void usart_init( uint16_t ubrr) { // Set baud rate UBRRH = (uint8_t)(ubrr>>8); UBRRL = (uint8_t)ubrr; // Enable receiver and transmitter UCSRB = (1<