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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.