Codeschloss mit 8051

OP #568348
Lesenswert?
• ▲
▼
Hallo

Tut mir Leid, mir ist aufgefallen, dass ich bei meinem lezten Beitrag 
keine Kommentare eingefügt habe. Ich habe ein C-Programm für ein 
Codeschloss mit einem SAB80C537 geschrieben. Über eine 3x4 Tastenmatrix 
kann (sollte man) einen bis zu 20 Stellen langen Code eingeben können, 
der dann abgeglichen wird. Ist der Code falsch passiert gar nichts, ist 
der Code richtig, wird die Alarmanlage eingeschaltet, bei erneuter 
Codeeingabe ausgeschaltet.
Ist die Alarmanlage eingeschaltet, wird ein Interrup aktiv, sobald der 
daran angeschlossene Endschalter auslöst, geht eine Sirene an und eine 
Led zeigt an, dass Alarm ausgelöst wurde (diese Led kann nur durch die 
Eingabe des Codes gelöscht werden).
Die Matrix wird an Port 1 angeschlossen (Row1 = P1.4, Row2 = P1.5,Row3 = 
P1.6,Row4 = P1.7,Col1 = P1.0,Col2 = P1.1 usw).
Zusätzlich soll eine LCD an Port 5 (2x16) gewisse Dinge ausgeben.
Könnte jemand den Code vielleicht kurz überfliegen und nachsehen, ob 
irgendwo ein gröberer Denkfehler steckt?

J.

Angehängte Dateien:
OP #569059
Lesenswert?
• ▲
▼
Danke für den Hinweis, ich habe den Link gelesen, sehe aber nirgens eine 
Flankenerkennung. Wenn ich den C-Code richtig verstehe, wird eine Taste 
nur akzeptiert, wenn es nicht die gleiche wie die vorige ist -> man kann 
nie die gleiche Zahl 2mal eingeben. Leider kann ich auch noch nicht gut 
genug Englisch, um den ganzen Text zu verstehen. Würde es nicht auch mit 
einer Zeitschleife funktionieren, damit man genug Zeit hätte, um die 
Taste wieder loszulassen?
#569160
Lesenswert?
• ▲
▼
J. B. wrote:
> Danke für den Hinweis, ich habe den Link gelesen, sehe aber nirgens eine
> Flankenerkennung. Wenn ich den C-Code richtig verstehe, wird eine Taste
> nur akzeptiert, wenn es nicht die gleiche wie die vorige ist -> man kann
> nie die gleiche Zahl 2mal eingeben.

Doch kann man.

Loslassen zählt auch als Änderung und gibt einen Code zurück (z.B. um 
Kurz-/Langdruck auswerten zu können), der ungleich dem Code für keine 
Änderung ist.

Die Flankenerkennung erfolgt über oldkey, d.h. wenn ungleich oldkey, 
wird ein Code erzeugt.

Die Entprellung erfolgt über scan1, d.h. der Code muß mit dem vom 
vorherigen Scan identisch sein, ehe überhaupt drauf reagiert wird.


> genug Englisch, um den ganzen Text zu verstehen. Würde es nicht auch mit
> einer Zeitschleife funktionieren, damit man genug Zeit hätte, um die
> Taste wieder loszulassen?

Nein, jeder Mensch drückt unterschiedlich lang (ältere Personen viel 
länger).
Die zusätzliche Variable (oldkey) für Flankenerkennung ist ja nun nicht 
so aufwendig.


Peter

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.