Programmierung der Münzeingabe
Kategorie: MikrocontrollerDeine Aufgabe zu heute war es nun, das Programm so zu erweitern, dass nun alle Münzen erkannt werden.
Die Aufgabe mag für Dich vielleicht trivial erscheinen, wenn Du das Beispiel in der letzen Folge verstanden hast.
Das bitweise Setzen und Löschen eines Bits ist später für das Konfigurieren des Mikrocontrollers, beim Setzen und Löschen der sogenannten Special Function Register (SFR), so wichtig, dass das Prinzip wirklich sitzen sollte.
Hier zunächst einmal das Video.
In der nächsten Woche geht es darum, das Programm besser zu strukturieren, und zwar mit Funktionen. Dazu werde ich in der nächsten Folge in einer Einführung zeigen, was Funktionen eigentlich sind und wozu wir sie benötigen.
Dieser Artikel ist Teil des Mikrocontroller-Kurses auf ET-Tutorials.de.
[ >> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses .]
ET-Tutorials weiterempfehlen
Hat Dir der Artikel gefallen?Dann unterstütze ET-Tutorials.de mit einer Empfehlung per Email an Deine Freunde .
Hinweis zum Datenschutz: Ich kann weder Deine noch die Email-Adresse Deiner Freunde sehen.
Ähnliche Artikel
Folgende Artikel aus der gleichen Kategorie könnten Dich ebenfalls interessieren:» Variablenzuweisung - Teil 2
» Kaffeeautomat-Funktion für die Münzauswertung
» C-Syntax, getchar() und printf()
» Programmierung eines Kaffeeautomaten – Teil 2
» Bedingte Anweisungen mit switch–case
Mein Name ist Wolfgang Bengfort. Ich bin Lehrer für Elektrotechnik und Technische Informatik und habe im September 2009 diese Seite gestartet. 


Hallo.
Ich habe die Portverarbeitung / Bitverarbeitung auszüglich folgendermaßen vorgenommen.
[code]
...
while(P1 != 0x00)
{
if (P1 & 0x01) {ui_betrag=ui_betrag+1; P1 &= 0xFE;}
else if (P1 & 0x02) {ui_betrag=ui_betrag+2; P1 &= 0xFD;}
else if (P1 & 0x04) {ui_betrag=ui_betrag+5; P1 &= 0xFB;}
else if (P1 & 0x08) {ui_betrag=ui_betrag+10; P1 &= 0xF7; }
else if (P1 & 0x10) {ui_betrag=ui_betrag+20; P1 &= 0xEF;}
else if (P1 & 0x20) {ui_betrag=ui_betrag+50; P1 &= 0xDF;}
else if (P1 & 0x40) {ui_betrag=ui_betrag+100;P1 &= 0xBF;}
else if (P1 & 0x80) {ui_betrag=ui_betrag+200;P1 &= 0x7F;}
}
...
[/code]
Meine Frage ist, ob dies auch so in Ordnung geht?
Der Programmtest verläuft zufriedenstellend, würde nur gern sicher sein, ob dies ebenfalls “sauberer” C-code ist!?
Danke für die Mühe
Hallo, habe eine Frage zu meinem obigen Code vergessen.
Wären 8 “if” Abfragen besser als 7 “else if” — vor allem hinsichtich schnelleren Quellcodes?
Oder ist das in diesem Falle völlig egal?
Danke nochmals…
Hallo chaki,
das sieht gut aus.
If mit else if hat sogar den Vorteil, dass wenn das erste if zutrifft, die anderen Fälle erst gar nicht abgefragt werden müssen. Bei hintereinandergereihten if-Abfragen müsste jede Abfrage durchgeführt werden.