www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik codeschloss in asm


Autor: Martin G. (zombo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moinsen...

nachdem ich vor ein paar tagen mit asm und dem mega16 angefangen habe, 
hätte ich mal eine frage:

ich habe heute mein codeschloss zum laufen bekommen. nur denke ich das 
das programm noch nicht das gelbe vom ei ist.


- tasten 1 bis 8 am port A
- ausgang port B
- momentan nur 2 stelliger code

<>

anfang:
zahl1:

in   r16, pina
cpi   r16, 0x00
breq   zahl1      ;prüfen das keine taste gedrückt ist

in   r16, pina
cpi  r16, 0x01
brne  anfang     ;prüfen das taste 1 gedrückt ist
                    ;sonst zurück auf anfang
wait1:

in  r16, pina
cpi  r16, 0x00
brne  wait1      ;warten bis taste losgelassen wird

zahl2:
in  r16, pina
cpi  r16, 0x00
breq  zahl2     ;prüfen das keine taste gedrückt ist

in  r16, pina
cpi  r16, 0x10
brne  anfang    ;prüfen das taste 5 gedrückt ist
                   ;sonst zurück auf anfang

wait2:
in  r16, pina
cpi  r16, 0x00
brne  wait2       ;warten bis taste losgelassen ist

ausgabe:
ldi  r16, 0xff
out  portb, r16  ;port b einschalten

ldi  r16, 0xfe
ldi  r17, 0xfe
ldi  r18, 0x0a
zeit1:
dec  r16
cpi  r16, 0x00
brne  zeit1
dec  r17
cpi  r17, 0x00
brne  zeit1
dec  r18
cpi  r18, 0x00
brne  zeit1      ;zeitschleife

ldi  r16, 0x00
out  portb, r16  ;portb ausschalten

rjmp  anfang      ;zurück zum anfang


<>

warscheinlich hab ich es mir sehr umständlich gemacht, aber immerhin 
selber geschrieben.
währe schön wenn jemand verbesserungsvorschläge hat.

Autor: MarioT (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tasten prellen! Hast Du das Programm getestet?

Autor: Martin G. (zombo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tasten sind entprellt, und programm läuft.. ;-)

Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm eine Schleife, die z.B. 4 mal durchläuft:

1. Ziffer aus dem Flash laden
2. Warten, bis sie gedrückt wird
3. Warten, bis sie losgelassen wird

Bei falscher Taste die Zählvariable zurücksetzen,
nach der Schleife Codeschloss öffnen.

Autor: Ohforf Sake (ohforf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für den praktischen Einsatz würde ich eher eine Matrixtastatur nehmen.
http://mezdata.de/ti-praxis/230_matrixtastatur/
Das sieht besser aus (und braucht ein paar Programmzeilen mehr).
Ausserdem eine Zeitverzögerung, wenn jemand einen falschen Code eingibt,
sonst kann man schnell alle Kombinationen durchprobieren.

Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR-Tutorial: Speicher - Flash
Speichere die Zahlen als 1, 2, 4, 8, 16, 32, 64 oder 128 im Flash.
Du lädst die Adresse der ersten Zahl in den Z-Pointer.
Dann zählst du von Drei bis auf Null, überprüfst den kompletten Port 
(das schließt mit ein, dass keine andere Taste gedrückt ist), nach jedem 
Durchlauf addierst du eins zum Z-Pointer, wenn du mit dem Zählen bei 
Null angelangt bist, brichst du ab.
Eine Zeitverzögerung bei Falscheingabe wäre auch noch sinnvoll.

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.