
#include <avr/io.h> 
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <avr/delay.h>

int main (void) 
{ 

DDRB &= ~( 1 << PB0 ); //PB0 Eingang 
DDRB &= ~( 1 << PB1 ); //PB1 Eingang
PORTB |= ( 1 << PB0 ); //Pull up an
PORTB |= ( 1 << PB1 ); //Pull up an
DDRC &= ~( 1 << PC2 ); //PC2 Eingang 
DDRC &= ~( 1 << PC3 ); //PC3 Eingang
PORTC |= ( 1 << PC2 ); //Pull up an
PORTC |= ( 1 << PC3 ); //Pull up an
DDRC |= ( 1 << PC0 ); //PC0 Ausgang 
DDRC |= ( 1 << PC1 ); //PC1 Ausgang


TCNT1=0;												//Timer-Daten-Register Timer1 High auf 0 setzen
TCNT1H=0;												//Timer-Daten-Register Timer1 High auf 0 setzen
TCNT1L=0;												//Timer-Daten-Register Timer1 Low auf 0 setzen



int time;
time=3600;


while(1) 
{ 
TCCR1B|=(1<<CS12)|(1<<CS10);							//setzt Timer1 mit Prescaler CPU/1024

	if (PINB & (1 << PB1)||(PINC & (1 << PC3)))			//wenn PB1 oder PC3 High ist setze PC1 auf High
	{ 
		while((TCNT1<time)||(PINB & (0 << PB0)||(PINC & (0 << PC2))))//solange das Register kleiner time und nicht PB0 oder PC2 high
		{
			PORTC |= (1 << PC1);						//PC1 High 
		}
		TCNT1H=0;										//Timer-Daten-Register Timer1 High auf 0 setzen
		TCNT1L=0;										//Timer-Daten-Register Timer1 Low auf 0 setzen
	} 




	if (PINB & (1 << PB0)||(PINC & (1 << PC2)))			//wenn PB0 oder PC2 High ist setze PC0 auf High
	{ 
		while((TCNT1<time)||(PINB & (0 << PB1)||(PINC & (0 << PC3))))	//solange das Register kleiner time und nicht PB1 oder PC3 high
		{
			PORTC |= (1 << PC0);						//PC1 High 
		}
		TCNT1H=0;										//Timer-Daten-Register Timer1 High auf 0 setzen
		TCNT1L=0;										//Timer-Daten-Register Timer1 Low auf 0 setzen
	} 




	if (!(PINB & (1 << PB0))||!(PINC & (1 << PC2))) 	//wenn PB0 und PC2 Low ist... 
	{ 
	PORTC &= ~(1 << PC0); 								//PC0 Low 
	} 

	if (!(PINB & (1 << PB1))||!(PINC & (1 << PC3))) 	//wenn PB1 und PC3 Low ist... 
	{ 
	PORTC &= ~(1 << PC1); 								//PC1 Low 
	}

} 
TCNT1=0;												//Timer-Daten-Register Timer1 auf 0 setzen
TCNT1H=0;												//Timer-Daten-Register Timer1 High auf 0 setzen
TCNT1L=0;												//Timer-Daten-Register Timer1 Low auf 0 setzen
	
return 0; 
} 
