PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TMR0 auf 131 setzen



D.Stolarek
27.09.2004, 12:50
hi leute
ich habe bei sprut gelesen das wenn ich den tmr0 auf einen wert setzen muss den erstmal auf movlw 0x83 und dann mit movwf tmr0 da speichern.
ist das richtig den als ichs ausprobiert hab gings nicht.

ich brauche diesen als tmr0 offset.
timer0 offset ist 131
prescaller ratio 16
bei einem osci 4MHz
und da kommte 2ms raus

könnt ihr mir da helfen

danke im vorraus

mfg d.stolarek

BlackBox
27.09.2004, 14:11
movlw 0x83
movwf TMR0

--> ist richtig, funktioniert und ergibt bei den Werten ca. 2ms.

BlackBox

D.Stolarek
27.09.2004, 14:43
also ich weiss was passiert ist
ich hab eine sehr wichtigen punkt bei mir vergessen
ich musste schon wieder die bank wechseln
also jetzt läufts bei mir

danke blackbox fuer deine antwort

:-)

D.Stolarek
27.09.2004, 15:43
das problem was ich jetzt hab ist, das ich nun eine art schleife machen will
die schaut was ist drin in tmr0

TIMER
.
.
.
BTFSC TMR0, 0xFF
GOTO NEXT
GOTO TIMER
.
.
.
NEXT

ich weiss aber nich obs richtig ist und das witzige ist der springt immer zu dem unteren auch wenn er den wert 0xFF erreicht

bitte helft mir
danke im vorraus

;-)

BlackBox
27.09.2004, 16:15
Wie wärs mit dem Studium de Befehlssatzes?

BTFSC prüft ein Bit und nicht ein Register auf einen Wert.

Sinnvoll wäre den Timer-Interupt zu verwenden. Wenn Du es aber unbedingt so machen willst, dann geht das nur über einen Umweg.
z.B. So:


movlw 1

Timer
..
addwf TMR0,w ; +1 ergibt 0x00 in w, wenn TMR0=0xFF
btfss STATUS,Z ; Sprung, wenn Z-Flag gesetzt
goto Timer
Goto Next

Denke aber daran, dass TMR0 nur 16 Befehlszyklen auf einem Wert bleibt. Eine solche Auswertung ist daher nicht zu empfehlen. Die 2ms sind übrigens erst beim Überlauf von 0xff auf 0x00 um.

BlackBox

D.Stolarek
28.09.2004, 08:04
ich weiss das der überlauf erst nach der gesamten zeit ist und da dann erst die 2ms sind das ist auch das was ich benötige
und danke für den vorschlag ich werds bei mir versuchen ;-)