www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 4x4-Matrix aus Tasten an Port B - Auswertung geht nicht


Autor: Markus Reichert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe 14 Tasten als 4x4 Matrix verschaltet und habe die 8 Kabel an
den Port B angeschlossen.

Als erste initialisiere ich den Port folgendermaßen:

ldi  akku, 0b00001111
out  PORTB,akku

ldi  akku, 0b11110000
out  DDRB, akku

sbis   PINB,0
rcall  PB0i

sbis   PINB,1
rcall   PB1i

sbis   PINB,2
rcall   PB2i

sbis   PINB,3
rcall   PB3i


Bei der Auswertung springe ich dann in ein Unterprogramm, welches
folgendermaßen aussieht:



PB1i:  ldi  akku, 0b11110000
  out  PORTB, akku

  ldi  akku, 0b00001111
  out  DDRB, akku

  sbis  PINA, 4
  rcall  PRESET1

  sbis  PINA, 5
  rcall  PRESET1

  sbis  PINA, 6
  rcall  PRESET1

  sbis  PINA, 7
  rcall  PRESET1

  ret

Aber irgendwie macht das komplette Zeugs nur Probleme. Ich kann noch
nicht einmal richtig sagen, was der Fehler ist.

Da ich Assembler programmiere und C (noch) nicht kann, bitte keine
Hinweise auf C#-Lösungen. ;-)

Im Voraus vielen Dank für jegliche Hilfe.

Gruß
Markus

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Markus,

ich vermute einen Denkfehler.

Gib uns mal bitte Deine Schaltung dazu?

Bernhard

Autor: Markus Reichert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was verstehst du unter Schaltung?

Was ich inzwischen gemerkt habe: die erste Auswertungsroutine (sie ist
mein Hauptprogramm) funktioniert. Die Unterroutinen für die 2.
Auswertung werden aufgerufen. Ab hier hakt es. Diese Auswertung
funktioniert nicht.

Hilft das weiter?

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was verstehst du unter Schaltung?

Einen Schaltplan

Welche Potentiale liegen wo an, wenn eine Taste betätigt wird?

Bernhard

Autor: Markus Reichert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den Fehler gefunden:

man sollte auch in den Unterroutinen Port B ansprechen und nicht Port
A.

Ich glaube die schwüle Hitze heute hat mein Gehirn lahmgelegt. ;-)

Sorry für dieses sinnlose Posting und danke Bernhard, dass du versucht
hast mir zu helfen. :-)
Aber nach meiner Erleuchtung funktioniert es endlich. Und dafür habe
ich über 3 Stunden meines Lebens vergeudet... ;-)

Nochmals danke und Gruß
Markus

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gern geschehen ;)

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Bernhard: Atmel-ApplicationNote AVR240...

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rahul,

habe gleich mal nachgeschut und auch gefunden ;)

http://www.atmel.com/dyn/products/app_notes.asp?fa...

Danke

Bernhard

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.