//----ПЕРЕДАТЧИК----//
#define  F_CPU 16000000UL
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/io.h>

#define DELAY 99							// задержка отправки пакета (default=99 (10 ms))
volatile unsigned int val=0x00;

ISR(TIMER0_OVF_vect) 					// отправка данных через интервал
{
 while(!(UCSRA&_BV(UDRE)));
 UDR=val;

 TCNT0=DELAY;
}


int main(void)
{
 DDRB=0x00;
 PORTB=0xFF;

 DDRD=0x00;
 PORTD=0xE0;

 DDRC=0x0F;
 PORTC=0xB0;

 // скорость передачи 9600 bod - 103
 UBRRH=0;
 UBRRL=103;

 // инициализация UCSRA
 UCSRA=0x00;

 // D1 - выход USART
 UCSRB=0x00;
 UCSRB|=_BV(TXEN);

 // UCSRC: 8 бит данных; контроль четности;
 UCSRC=_BV(URSEL)|_BV(UPM1)|_BV(UCSZ1)|_BV(UCSZ0);

 // настройка Т/C0 (задержка передачи=10мс); N=1024; прерывание по переполнению; 
 TIMSK|=_BV(TOIE0);
 TCCR0|=_BV(CS02)|_BV(CS00);
 TCNT0=DELAY; 

 // общее разрешение прерываний
 sei();

 while(1)
 { 
	val=~PINB;
	_delay_ms(1);
 }

 return 0;
}
