#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 16000000UL
#define BAUD 9600
#define baud_prescaler (((F_CPU / (BAUD * 16UL))) - 1)
void uart_init(void)
{
UBRR0H |= (baud_prescaler >> 8);
UBRR0L |= baud_prescaler;
UCSR0B |= (1 << RXEN0) | (1 << TXEN0);
UCSR0C |= (1 << UCSZ01) | (1 << UCSZ00);
}
void data_transmit(char data)
{
while(!(UCSR0A & (1 << UDRE0)));
UDR0 = data;
}
char data_recieve(void)
{
while(!(UCSR0A & (1 << RXC0)));
return UDR0;
}
void send_data(char *string)
{
while(*string != '\0')
{
data_transmit(*string++);
}
}
int main(void)
{
uart_init();
while(1)
{
send_data("hello anish\r\n");
if(UCSR0A & (1 << RXC0))
{
char temp = data_recieve();
data_transmit(temp);
}
_delay_ms(500);
}
return 0;
}