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.
Wenn das ganze läuft warum sollte dann ein grober Designfehler drinstecken?
Ich sehe nirgends ne Flankenerkennung, sobald Du ne Taste drückst, wird also der Puffer damit geflutet. Ein Tastencode sollte nur beim Wechsel von Losgelassen zu Gedrückt erzeugt werden. Hier mal ein Beispiel: http://home.tiscali.de/peterd/appl/soft/keyscan/index.htm Peter
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?
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
Dnke für die Hilfe, ich habe jetzt kapiert was ich tun muss und es funktioniert.
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.