Forum: Mikrocontroller und Digitale Elektronik Neuling braucht Hilfe(Tastenabfrage) ?


von BK (Gast)


Lesenswert?

Hallo ich möchte 4 tasten abfragen und als ergebnis einen zähler auf lcd 
ausgeben mit der 1. taste klappt es super nur bei 2- 4 passiert nichts.
Mich stellt sich die frage ob ich die abfrage überhaupt so machen 
kann???


Main:

      sbic PINC, PINC0
      rcall EinfEGp1

      sbic PINC, PINC1
      rcall AusfEGp1

      sbic PINC, PINC2
      rcall EinfOGp1

      sbic PINC, PINC3
      rcall AusfOGp1

      rjmp Main

von Johannes M. (johnny-m)


Lesenswert?

An der Abfrage an sich sehe ich eigentlich kein Problem (allerdings 
dürfte es Probleme mit Kontaktprellen geben). Hast Du mal versucht, den 
Pinzustand in ein Register zu laden und dann mit sbrc die Abfrage zu 
machen?

von Magnus Müller (Gast)


Lesenswert?

>       rcall EinfEGp1

...funktioniert also...

>       rcall AusfEGp1
>       rcall EinfOGp1
>       rcall AusfOGp1

...funktionieren also nicht ...

Vielleicht liegt der Fehler ja in den entsprechenden Unterprogrammen?

Gruß,
Magnetus

von BK (Gast)


Angehängte Dateien:

Lesenswert?

Ja genau und wenn ich unter die ausw, wie es sich eigentlich gehört ein 
ret schreibe springt er nur zwischen null und eins hin und her.

Im anhang ist der code.


Wäre sehr dankbar wenn mir jemand den fehler nennen kann.

Verzweifel langsam da ich es bald abgeben muss.

THX

von Johannes M. (johnny-m)


Lesenswert?

Wenn Du ausw aufrufst, wird wegen des fehlenden ret am Ende "EinfEGp1" 
auch mit ausgeführt, weil erst danach ein ret kommt!

von BK (Gast)


Lesenswert?

Zur erklärung:
Es ist eine Parkhaussteuerung mit 2 parkdecks.
es gibt insgesamt 4 lichtschranken einfEG, ausfEG,einfOG und ausfOG.
Nun möchte ich die anzahl der geparkten autos jeweils auf dem EG und dem 
OG auf einem lcd dastellen. Es funktioniert auch alles ausser das mit 
den tastern.

von Johannes M. (johnny-m)


Lesenswert?

Wo ist übrigens Deine Stack-Initialisierung? Die ist bei den meisten 
AVRs (abgesehen von einigen neueren Typen, bei denen der Stack Pointer 
automatisch initialisiert wird) unbedingt erforderlich, wenn 
Unterprogrammaufrufe verwendet werden!

von BK (Gast)


Lesenswert?

Ja aber mit ret zählt er nur noch zwischen 0 und 1.

von Johannes M. (johnny-m)


Lesenswert?

Außerdem solltest Du Dir dringendst endlich mal angewöhnen, Deine 
Programme zu kommentieren! Wenn ich mich recht entsinne, hab ich Dir das 
gestern schon mal gesagt, aber gebracht hat es anscheinend nichts...

von BK (Gast)


Lesenswert?

Ja sorry hab nicht alles mit gesendet ist auf jeden fall da.

Es muss an diesem teil liegen.

von Johannes M. (johnny-m)


Lesenswert?

BK wrote:
> Ja aber mit ret zählt er nur noch zwischen 0 und 1.
Ohne Stack-Initialisierung wundert es mich nicht! Liest Du die anderen 
Beiträge überhaupt?

von BK (Gast)


Lesenswert?

Ja tut mir leid, hab es jetzt kommentiert.
Hoffe es reicht.

Gruß

von BK (Gast)


Lesenswert?

Reicht es wenn ich ihn ganz am anfant initialisiert habe oder muss ich 
es im hauptprogramm nochmal tuhen.

von BK (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist der kommentierte code.

Sorry nochmal

von Magnus Müller (Gast)


Lesenswert?

BK wrote:
> Hier ist der kommentierte code.

Jo, aber da fehlen noch massenhaft ";" und im unteren Teil des Codes 
fehlen die Kommentare nach wie vor gänzlich.

von Johannes M. (johnny-m)


Lesenswert?

Heißt die Datei in Deinem Projekt auch .txt am Ende? Vermutlich nein! 
Stelle bitte die .asm-Datei rein. Die wird auch automatisch von der 
Forensoftware in formatierten Code umgewandelt. Das liest sich 
leichter...

von BK (Gast)


Angehängte Dateien:

Lesenswert?

So, nun hab ich es vollständig kommentiert.
Sorry nochmal, stehe sehr unter zeitdruck.

Hoffe jetzt kann mir jemand helfen.

Vielen dank schonmal im voraus.

Gruß

von Johannes M. (johnny-m)


Lesenswert?

Du sollst nicht die Projektdatei posten! Mit der kann ohne den 
Assembler-Code keiner was anfangen! Du sollst die Assembler-Datei 
schicken, und die endet mit .asm!

von BK (Gast)


Angehängte Dateien:

Lesenswert?

Ok bin halt noch nicht so fit,

zur info nochmal:
Wenn ich es simuliere passiert in den registern genau das was ich auch 
will nur die lcd springt zwischen null und eins und das merkwürdige ist 
das wenn ich das ret unter der auswertung wech lasse zählt er von 0-20 
wie schon erwähnt also kann mit der hardware auch nichts sein.

Gruß

von Alex (Gast)


Lesenswert?

>Zahl.asm

braucht man SOOOO viel text um 4 Tasten abzufragen und auf dem LCD 
auszugeben?

von BK (Gast)


Lesenswert?

Nee eigentlich nicht aber wie gesagt bin neuling.

Irgendwie geht es mal und mal muss ich fünf mal drücken bis was 
passiert.
Aber zähle´n tut er richtig.
Keiner ne ahnung was das sein könnte

von Johannes M. (johnny-m)


Lesenswert?

BK wrote:
> Irgendwie geht es mal und mal muss ich fünf mal drücken bis was
> passiert.
Ach, manchmal geht's? Hätteste auch mal früher sagen können.

> Keiner ne ahnung was das sein könnte
Entprellung

von BK (Gast)


Lesenswert?

sorry ist mir auch grade aufgefallen. aber er zählt ja richtig wenn es 
denn mal geht.

Kann es dann trotzdem an der entprellung liegen???

von Johannes M. (johnny-m)


Lesenswert?

BK wrote:
> Kann es dann trotzdem an der entprellung liegen???
Wenn überhaupt, dann liegt es an der nicht vorhandenen Entprellung...

von BK (Gast)


Lesenswert?

Warum die habe ich doch gemacht oder funktioniert das so nicht????

von BK (Gast)


Lesenswert?

Hab es fast hinbekommen nun macht er alles ausser beim ersten 
tastendruck macht er immer das gegensätzliche was er machen soll, ab dem 
2. infolge dann klappts.

Was kann das sein.


Danke für deine Mühe

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
Noch kein Account? Hier anmelden.