www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Codeschloss mit 8051


Autor: J. B. (_neuling_)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn das ganze läuft warum sollte dann ein grober Designfehler 
drinstecken?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: J. B. (_neuling_)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: J. B. (_neuling_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dnke für die Hilfe, ich habe jetzt kapiert was ich tun muss und es 
funktioniert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.