#define F_CPU 8000000
#define BAUD 9600
#define MYUBRR F_CPU/16/BAUD-1


#include <avr/io.h>
#include <util/delay.h>



void avr_init(void);
void uart_init(unsigned int);
void uart_transmit(unsigned char);
void portb_blink(unsigned int);





int main (void) 
{

avr_init();
uart_init(MYUBRR);
portb_blink(100);
portb_blink(100);
portb_blink(100);



while (1)
{
	for(int i=65;i<91;i++) 
	{
		uart_transmit(i);
		//portb_blink(50);
	}

	uart_transmit(13);
	uart_transmit(10);
	portb_blink(1000);
}
return 0;
}
//------------------------------------------------------------------




void portb_blink(unsigned int delay)
{
	PORTB = 0xff; // ???
	_delay_ms(100); 
	PORTB = 0x00; // ????
	_delay_ms(100); 
}
//------------------------------------------------------------------



void uart_transmit( unsigned char data )
{
while ( !( UCSR0A & (1<<UDRE0)) )  ;
UDR0 = data;
}
//------------------------------------------------------------------




void uart_init(unsigned int ubrr)
{
/*Set baud rate */
UBRR0H = (unsigned char)(ubrr>>8);
UBRR0L = (unsigned char)ubrr;

/*Enable receiver and transmitter */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);

/* Set frame format: 8data, 2stop bit */
UCSR0C = (0<<USBS0)|(3<<UCSZ00);
}
//------------------------------------------------------------------




void avr_init(void)
{

DDRB = 0xff; // ???? B ?????????? ?? ?????

CLKPR  = (1<<CLKPCE);               // set Clock Prescaler Change Enable 
CLKPR  = (0<<CLKPS1) | (0<<CLKPS0); // set prescaler = 1

PRR |= (1<<PRTWI) | (1<<ADC) | (1<<PRSPI);
PRR |= (1<<PRTIM0) | (1<<PRTIM1) | (1<<PRTIM2) ;

return;
}
//------------------------------------------------------------------	
    
