Problem mit Taster in weiterer Ausführung des Programmes

Gast #180225
Hallo Leute,

ich hab nen kleines Problem und bekomm es mal wieder nicht geregelt!
Vor hatte ich es zwei Taster zu realisieren die wie im ersten Beispiel
arbeiten! so nun das Problem was ja logisch is aber ich nicht weis wie
ich es lösen soll, Ist PIND Pin 0 clear kann ich PIND PIN1 nicht
betägigen da er ja noch in der loop schleife sitzt, kann mir jemand
eine lösung für mein Problem geben??

Bin Anfänger also nen bissel Erklärung wäre sehr hilfreich!

Und zwar hab ich folgendes Programmiert

   if ( !(PIND & (1<<0)) )
   {
   loop_until_bit_is_set(WARTEPIN, WARTEBIT);
   tue was sinvolles
   }

   if ( !(PIND & (1<<1)) )
   {
   // tue was sinvolles
   }
Gast #180226
Hallo Tina,
ich selber bin auch kein all zu großer Profi. Was mir aber schwer fällt
ist deine Erklärung!! :o)

Ich weiß nicht so genau was du vor hast. Was meinst du mir erstem
Beispiel??

Generell muss du dir ja vorstellen das der µC alles nacheinander ab
arbeitet. (das scheinst du ja vertanden zu haben) Er hängt in eine
Schleife fest. Somit kann er ja den andern gar nicht einlesen. Das hast
du schon richtig gesehen.

Kannst du das nicht mit vielleicht Variablen machen??

(Sorry wenn der Code nicht richtig ist, ich programmiere mit
CodeVison)

/////////////////////////////////////////////////////
...
int tastenspeicher;
...

if ( !(PIND & (1<<0)) )
   {tastenspeicher = 1;}
if ( !(PIND & (1<<1)) )   (oder mit else)
   {tastenspeicher = 0;}

if (tastenspeicher == 1)
   {tue was sinvolles.. }

   if ( !(PIND & (1<<1)) )
   {
   // tue was sinvolles
   }
////////////////////////////////////////////////////

So, oder so ähnlich!! Man könnte auch anstatt "int" nur ein "Bit"
nehmem. So spart man speicher.
Noch besser wäre es, wenn du das einlesen von Taster mit Interrupts
machen würdest. Aber kommt Zeit kommt Rat (kommt Attentat) :)

Das schafst du schon....

Gruß Marcel
Gast #180227
Du must einfach nur Dein Denken umstellen, also:

"wenn Bedingung nicht erfüllt, hänge hier fest"

ändern in:

"wenn Bedingung nicht erfüllt, teste die nächste"


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.