/* * usart_interrupt_demo_01.c * Funktionen zum Senden und Empfangen eines Bytes per USART-Rx-Interrupt * Controller: ATmega88 @ 8MHz */ #include <avr/interrupt.h> // Headerdatei für Interrupts einbinden ... ... void USART_Init( uint16_t ubrr) { /* Enable receiver, transmitter & Rx-interrupt */ UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0); } ... ... volatile uint8_t data; // global variable data (volatile for ISR) int main( void ) { ... ... sei(); // activate global interrupts ... ... while(1) { // andere Aufgaben erledigen... } } ISR(USART_RX_vect) // ISR Rx data { USART_Transmit(data = USART_Receive()); // receive on byte, send it PORTB = data; // and write to Port B }