Hallo, ich habe in Assembler einen Counter für einen Pic geschrieben. Es funktioniert auch alles wunderbar, die Zeit lässt sich mit 4 Tastern einstellen und wird auf 4 7-Segment Anzeigen visualisiert. Nun möchte ich, das das "runterlaufen" der Zeit nur stattfindet (im Moment immer), wenn ein zusätzlicher Taster gedrückt wurde. Dazu wollte ich ein Bit (Starten, 0) setzen und während des Interrupts abfragen: btfss Starten, 0 goto Int_end Counter Doch leider funktioniert das kein bisschen, egal was ich schon versucht habe, es scheint sich immer aufzuhängen, da die Ausgänge plötzlich völlig verrückt spielen. Weis jemand woran das liegen könnte? Danke im vorraus Gruß Moritz
>Weis jemand woran das liegen könnte?
An deinem Programm.
was holger sagen will: wir können dir nicht helfen, wenn wir dein programm nicht sehen...
Hallo Moritz, > ich habe in Assembler einen Counter für einen Pic geschrieben. Es > funktioniert auch alles wunderbar, die Zeit lässt sich mit 4 Tastern Counter? Zeit? Hast Du jetzt einen Counter oder einen Timer gebaut?\ Sieht nach Timer aus: Eine Zeit wird heruntergezaehlt und angezeigt, richtig? > btfss Starten, 0 > goto Int_end > Counter Das kann wirklich alles sein: - Falsch/Doppeltdeklaration des Bytes "Starten" - falsche Sprungadresse Int_end (ohne Wiederherstellung des Stacks) - ....... Holger MUSS nicht recht haben....kann auch Deine Hardware sein ;-) Aber ohne weitere INformation wuerde ich sagen, der Kondensator C14 sollte nicht mit der Adresse der Interruptserviceroutine verbunden sein! Gruss Michael
So, ich habe jetzt folgendes Problem: Der Counter zählt nach dem drücken der OK - Taste abwärts. Allerdings funktioniert es nur bei der 4 Ziffer. Sobald ich auch eine der 3 Ziffern vorher auf eine andere Zahl auser 0 einstelle leuchten auf einmal die Dezimalpunkte, genauso auch wenn der Counter nach dem Runterzählen der Sekunden auf 0 kommt. Wie kann das sein, ich habe den Ausgang der Dezimalpunkte nirgends definiert??? Und warum funktioniert es nur bei der 4 Ziffer??? Mfg Moritz
Wenn es nur bei der 4 funktioniert klappt vielleicht nur die Abfrage nicht und überspringt alle anderen, du hast wenn ich das richtig sehe in deinem Interrupt die 4 als automatische Auswahl falls alle andern "false" sind definiert. Ansonsten evtl. mal noch den Schaltplan anhängen, wenn man selbst schon paar Stunden grübelt ist einem das alles immer etwas mehr vor Augen als dem Rest hier im Forum, deswegen machen paar wenige Sätze meist nicht viel Sinn ;)
Ich kanns kaum glauben, es geht auf einemal :-) Kann es sein das es einen Unterscheid macht ober man movlw 5 oder movlw d'5' scheibt? MFG Moritz
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.