|
Umsetzung in den Quelltext
"ganz dicht am Mikrocontroller"
Pollingverfahren - die Taster werden regelmäßig, hier alle
1,5 µs vom Mikrocontroller abgefragt (mehr als 600 x pro
Sekunde!!!)
Nachteil dieses Entwurfs: beim Loslassen eines beliebigen
Tasters verlöscht die FrontLED sofort wieder
#include <avr/io.h>
// io.h
einbinden, Header-bzw. Bibliotheksdatei
int
main (
void
)
// jedes C-Programm hat eine main-Funktion
{
// beim Aufrufen der main-Funktion wird nichts
// (engl. void) übergeben
DDRC = 0b00000000;
// Alle 6 Taster sind über Widerstände mit C4 und D3
// verbunden. Von den Ports soll aber nur C4 als
// normaler Eingang verwendet werden.
// Daten-Richtung einstellen, Bit 4 auf 0 (Eingang)
//
Zählung von rechts beginnend mit Bit 0
// Am PortC4 liegt ebenfalls der Analog/Digital-Wandler,
// der aber nicht initialisiert bzw. eingeschaltet ist
// Am PortD3 liegt ebenfalls der Interrupt 1
// der aber nicht initialisiert bzw. eingeschaltet ist
DDRD = 0b01000000;
// Daten-Richtung einstellen, Bit 6 auf 1 (Ausgang)
// fuer FrontLED
while
( 1 )
// Endlosschleife
{
// solange Bedingung wahr (1 = wahr)
if
( bit_is_clear ( PINC,4 ) )
// Wenn beliebiger Taster gedrückt, dann bit_is_clear
{
// 0,015 bis 0,33 V an Pin C4, als LOW gewertet
PORTD = 0b01000000;
// Port anschalten, Port D6 (FrontLED einschalten)
}
if
( bit_is_set ( PINC,4 ) )
// Wenn kein Taster gedrückt, dann bit_is_set
{
// 4,74 V an Pin C4, als HIGH gewertet
PORTD = 0b00000000;
// Port ausschalten, Port D6 (FrontLED ausschalten)
}
}
// LOW beim ASURO -0,5 V bis 1,04 V
// HIGH beim ASURO 3,12 V bis 5,7 V
return
0;
}
AVR Studio-Projekt (.zip)
|