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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren