Forum: Compiler & IDEs Tasterabfrage_Stoppuhr_funktioniert_nicht


von HansC (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin dabei eine Stoppuhr mit mechanischer 7 Segment Anzeige zu bauen.
Die Anzeigen habe ich von Einer alten Tankstelle.
Ich habe schonsehr viele Beiträge in diesem Forum gelesen und auch viele 
Erkenntnisse gewonnen. Wie 
z.B.:Beitrag "Problem: Stoppuhr in C (Interrupts und Pull-Ups)"

C Programmieren kann ich, aber mit Microcontroller hab ich erst 
angefangen.

Ich benötige nun eure Hilfe. Die Tastenabfrage fuktioniert nicht 
richtig.
Taster wird auf logisch 1 gezogen bei Tastendruck.

Ich würde gerne mit einem Taster die Uhr starten, anhalten( Zeit soll 
angezeigt bleiben) und zurücksetzen.

Versuche schon lange eine Lösung zu finden aber anscheinend werden meine 
Versuche immer verwirrter!

Den Code hab ich angehängt.

Bitte un eure Hilfe!!

Lg HansC

von Uwe (de0508)


Lesenswert?

Hallo HansC,

du solltest Dich mit Bitmanipulationen beschäftigen:
http://www.mikrocontroller.net/articles/Bitmanipulation

Die AVR Register Belegungen dann besser lesbar und du kannst das weiter 
Abstrahieren mit #defines.

Als weiteres nutze dieses Macros in "sbit.h", Entwickler Peter PeDa.

http://www.mikrocontroller.net/attachment/60772/sbit.h

Damit sind da so Sachen machbar:
1
#define LED1         SBIT( PORTD, 0 )
2
#define LED1_DDR     SBIT( DDRD, 0 )
3
LED1_DDR = 1 // enable output pins
4
LED1 = 1 // LED1 high
5
LED1 = 0 // LED1 low

Auch kann man Eingänge definieren und Abfragen.
1
#define KEY1         SBIT( PORTD, 1 )
2
#define KEY1_DDR     SBIT( DDRD, 1 )
3
KEY1_DDR = 0 // enable input pins
4
if ( ! KEY1 ) { ... }

Eine Weiterentwicklung ist dann dieses Paket:
http://www.mikrocontroller.net/attachment/215365/sbit.h

Taster sollten man nach GND Schalten und den internen Pullup 
eingeschalten.

Zur Auswertung von Tastern nutze dann die PeDa Entprellung:
Beitrag "Tasten entprellen - Bulletproof"
und viele andere Beiträge im Forum.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.