#include <avr/io.h> //UART INTERRUPT 11.0592Mhz
#define F_CPU 11059200UL
#include <util/delay.h>
#include <avr/interrupt.h>
#define SRL_DISP(c){ UDR=c;while(!(UCSRA&0x20));} // UDRE BIT TESTING
unsigned char x;
ISR(USART_RXC_vect)
{
x=UDR;
if(x=='A'||x=='a')
{
PORTC=0XFF;
SRL_DISP(' '); SRL_DISP('O');SRL_DISP('N');SRL_DISP(10);SRL_DISP(13);
}
else if (x=='B'||x=='b')
{
PORTC=0X0;
SRL_DISP('O');SRL_DISP('F');SRL_DISP('F');SRL_DISP(10);SRL_DISP(13);
}
}
main(void)
{
unsigned char i=0,arr[30]={"AVR UART INTERRUPT TEST \n\r"};
SREG|=0X80;
DDRD =0XFE;
DDRC=0XFF;
PORTC=0;
UCSRB=0x98; //8BIT //1 STOP BIT //NO PARITY //RXCIE ENABLE
UCSRC=0x86; //ASYNC
UBRRH=0x0;
UBRRL=0x47; //BDRT 9600 11.0592
while(arr[i])
SRL_DISP(arr[i++]);
PORTC=0X0;
while (1);
}