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
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?
> rcall EinfEGp1 ...funktioniert also... > rcall AusfEGp1 > rcall EinfOGp1 > rcall AusfOGp1 ...funktionieren also nicht ... Vielleicht liegt der Fehler ja in den entsprechenden Unterprogrammen? Gruß, Magnetus
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
Wenn Du ausw aufrufst, wird wegen des fehlenden ret am Ende "EinfEGp1" auch mit ausgeführt, weil erst danach ein ret kommt!
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.
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!
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...
Ja sorry hab nicht alles mit gesendet ist auf jeden fall da. Es muss an diesem teil liegen.
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?
Ja tut mir leid, hab es jetzt kommentiert. Hoffe es reicht. Gruß
Reicht es wenn ich ihn ganz am anfant initialisiert habe oder muss ich es im hauptprogramm nochmal tuhen.
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.
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...
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ß
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!
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ß
>Zahl.asm
braucht man SOOOO viel text um 4 Tasten abzufragen und auf dem LCD
auszugeben?
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
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
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???
BK wrote:
> Kann es dann trotzdem an der entprellung liegen???
Wenn überhaupt, dann liegt es an der nicht vorhandenen Entprellung...
Warum die habe ich doch gemacht oder funktioniert das so nicht????
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.