Hallo, ich suche eine möglichst einfache Routine, mit der ich einen "Delay" erzeugen kann, dessen Länge durch 24 Bit (Also 3 Register) bestimmt wird. Mit anderen Worten, ich stecke einen 24 Bit langen Wert aufgeteilt in 3x8 Bit in 3 Register und Rufe dann die "Delay" Routine auf, die dann genauso viele Takte wartet, wie hoch der Wert in den 3 Registern ist. Natürlich wäre ein Delay von wenigen Takten nicht möglich (Mindestens 4 schon mal wegen CALL und RETURN geschweige denn von der eigentlichen Delay Logik) Der Delay sollte auf 1000 bis 1.000.000 Takte funktionieren. Ich weiß nicht ob jemand so eine Routine kennt oder hat, aber ich komme gerade irgendwie nicht selbst drauf. Ich benutze übrigens den PIC16F887. Grüße Max
Ich würde den 16bit Timer in Software noch um ein paar bit erweitern.
Kenner schrieb: > http://www.biltronix.com/picloops.html Damit kann ich nichts anfangen, dass könnte ich auch selber. Ich muss die Delay abstände dynamischen im Programm festlegen können. Trotzdem Danke :)
Um welche Programmiersprache geht es eigentlich und was ist der Zweck des ganzen?
Es geht um Assembler. Und Zweck des ganzen ist es, dass ich dynamisch im Programm einen Delay erzeugen kann. Interrupts bzw. die Timer kann ich dafür aber nicht benutzen. Ich brauche die noch für einen anderen Zweck.
Gerd B. schrieb: > Wie wäre es hiermit: > > http://hg.kewl.org/pub/pickles/file/18d5eac67b2b/include/delay.inc Dass geht leider nicht, da das ein anderes Assembler ist. Ich habe den Befehl "DJNZ" nicht zu verfügung. Ich kann diesen nur durch 2 Befehle "DECFSZ" und "GOTO" emulieren, was aber 3 Takte und nicht 1 Takt dauert, was im verschachtelten zählen kompliziert wird.
Max schrieb: > Und Zweck des ganzen ist es, dass ich dynamisch im Programm einen Delay > erzeugen kann. Ja, das ist klar, wozu braucht man aber ein 1'000'000 Zyklen langes Delay mit einer Auflösung von einem Tatzyklus? Max schrieb: > Interrupts bzw. die Timer kann ich dafür aber nicht benutzen. > Ich brauche die noch für einen anderen Zweck. Achtung, wenn nur ein einziges davon das Delay stört, wird das mit der Genauigkeit von einem Tatzyklus auch nichts mehr. Wenn du das nicht gleichzeitig brauchst könntest du dir vllt. auch kurz einen Timer für die Wartezeit ausleihen.
:
Bearbeitet durch User
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.