// Software für Lampensimulator mit ATtiny2313
// Version 1
#include <avr/io.h>
#include <stdlib.h>
#include <util/delay.h>
#define TRUE 1
#define FALSE 0
//Funktion zum Abfragen des Zustands des negierenden Tasters1
int taster1(void)
{
if (PIND & (1<<PIND0))
{
return FALSE;
}
else
{
return TRUE;
}
}
//Funktion zum Abfragen des Zustands des negierenden Tasters2
int taster2(void)
{
if (PIND & (1<<PIND1))
{
return FALSE;
}
else
{
return TRUE;
}
}
//Funktion zum Abfragen des Zustands des negierenden Tasters3
int taster3(void)
{
if (PIND & (1<<PIND2))
{
return FALSE;
}
else
{
return TRUE;
}
}
int main (void) {
// Port B Pin0, Pin1, Pin2 auf Ausgang setzen
DDRB |= (1 << PIN0) | (1 << PIN1) | (1 << PIN2);
// Port D Pin0, Pin1 und Pin2 (Taster 1, 2 3) als Eingänge setzen
DDRD &= ~((1 << PIN0) | (1 << PIN1) | (1 << PIN2));
uint8_t taster1toggle = FALSE;
uint8_t taster2toggle = FALSE;
uint8_t taster3toggle = FALSE;
uint8_t taster1_alt = FALSE;
uint8_t taster2_alt = FALSE;
uint8_t taster3_alt = FALSE;
while (1)
{
if ((taster1()==TRUE) && (taster1_alt == FALSE))
{
if (taster1toggle==FALSE)
{
taster1toggle=TRUE;
}
else
{
taster1toggle=FALSE;
}
}
taster1_alt=taster1();
if (taster1toggle == TRUE)
{
PORTB |= (1<<PIN0); // einzelnes Bit setzen, ohne die anderen zu beeinflussen
}
else
{
PORTB &= ~(1 << PIN0); // einzelnes Bit löschen, ohne die anderen zu beeinflussen
}
if ((taster2()==TRUE) && (taster2_alt == FALSE))
{
if (taster2toggle==FALSE)
{
taster2toggle=TRUE;
}
else
{
taster2toggle=FALSE;
}
}
taster2_alt=taster2();
if (taster2toggle == TRUE)
{
PORTB |= (1<<PIN1); // einzelnes Bit setzen, ohne die anderen zu beeinflussen
}
else
{
PORTB &= ~(1 << PIN1); // einzelnes Bit löschen, ohne die anderen zu beeinflussen
}
if ((taster3()==TRUE) && (taster3_alt == FALSE))
{
if (taster3toggle==FALSE)
{
taster3toggle=TRUE;
}
else
{
taster3toggle=FALSE;
}
}
taster3_alt=taster3();
if (taster3toggle == TRUE)
{
PORTB |= (1<<PIN2); // einzelnes Bit setzen, ohne die anderen zu beeinflussen
}
else
{
PORTB &= ~(1 << PIN2); // einzelnes Bit löschen, ohne die anderen zu beeinflussen
}
_delay_ms(10);
}
return 0;
}