Hallo Leute, kann mir mal einer bitte erklären was der Code-Abschnitt zu bedeuten hat . ; Frequenz auf 32 kHz einstellen BSF STATUS,RP0 ; Bank1 MOVLW 0x1E ; MOVWF PR2 ; 32 kHz BCF STATUS,RP0 ; Bank0 Warum 0x1E ? Warum soll das 32 kHz sein ? H.M
> Warum 0x1E ? Warum soll das 32 kHz sein ?
Das verrät dir die Beschreibung von PR2 in deinem Datenblatt.
hendrik maier schrieb: > Hallo Leute, > kann mir mal einer bitte erklären was der Code-Abschnitt zu bedeuten hat > . > > ; Frequenz auf 32 kHz einstellen > BSF STATUS,RP0 ; Bank1 > MOVLW 0x1E ; > MOVWF PR2 ; 32 kHz > BCF STATUS,RP0 ; Bank0 > > Warum 0x1E ? > Warum soll das 32 kHz sein ? > > H.M @hendrik Offensichtlich wird hier ein Register als Zähler mit dem Wert hex 0x30 = dezimal=30 geladen. Wenn die Ausgangsfrequenz z.B. 992kHz ist und das Register von 30 nach 0 decrementiert wird, hast Du bei jedem 0-Durchgang den Takt für 32kHz (0-30 = 31 Zählvorgänge) 31*32kHz=992kHz @Falk Brunner Übrigens Assembler ist kein Selbstmord, im egenteil - macht Spass! mfG Ottmar
Ottmar K. schrieb: > Offensichtlich wird hier ein Register als Zähler > mit dem Wert hex 0x30 = dezimal=30 geladen. Da passt etwas nicht! Bei mir kommt da immer noch 46 raus. Gruß Martin
Ottmar K. schrieb: > Offensichtlich wird hier ein Register als Zähler mit dem Wert hex 0x30 = > dezimal=30 geladen. > Wenn die Ausgangsfrequenz z.B. 992kHz ist und das Register von 30 nach 0 > decrementiert wird, hast Du bei jedem 0-Durchgang den Takt für 32kHz > (0-30 = 31 Zählvorgänge) 31*32kHz=992kHz > > @Falk Brunner > Übrigens Assembler ist kein Selbstmord, im egenteil - macht Spass! > > mfG Ottmar Gut ich habe 4Mhr Keramikresonator. Heist 1 Mhz interner Takt. Wenn ich das jetzt so machen würde Frequenz auf 10 kHz einstellen BSF STATUS,RP0 ; Bank1 MOVLW 0x64 ; MOVWF PR2 ; 10 kHz BCF STATUS,RP0 ; Bank0 Wert 64 hex ist dann 100 decimal , heißt dann 100 Durchläufe a 10 kHz bei einen einem Vorteiler von 1/1 oder sehe ich das verkehrt ?
Martin K. schrieb: > Ottmar K. schrieb: >> Offensichtlich wird hier ein Register als Zähler >> mit dem Wert hex 0x30 = dezimal=30 geladen. > > Da passt etwas nicht! Bei mir kommt da immer noch 46 raus. > > Gruß Martin Stimmt, war eben ein Flüchtigkeitsfehler :-) 30h=48dez, abe am Prinzip ändert sich nichts. @hendrik maier Ja, das ist so richtig. mfG Ottmar
hendrik maier schrieb: > Wert 64 hex ist dann 100 decimal Sowas darf man auch direkt hinschreiben, ohne sich das Hirn zu verrenken: MOVLW 100
@Ottmar K. (wil1) >Übrigens Assembler ist kein Selbstmord, im egenteil - macht Spass! Schon, aber nicht PIC-Assembler. MfG Falk, AVR- und 68000er Fan.
Ottmar K. schrieb: > Martin K. schrieb: >> Ottmar K. schrieb: >>> Offensichtlich wird hier ein Register als Zähler >>> mit dem Wert hex 0x30 = dezimal=30 geladen. >> >> Da passt etwas nicht! Bei mir kommt da immer noch 46 raus. >> >> Gruß Martin > > Stimmt, war eben ein Flüchtigkeitsfehler :-) 30h=48dez, abe am Prinzip > ändert sich nichts. > @hendrik maier > Ja, das ist so richtig. > mfG Ottmar Ottmar meinte bestimmt das 1E = 30 ist, musste auch nachdenken ...hat mir aber zum verstehen was da vor sich geht sehr sehr geholfen. Riesen dank an Ottmar .
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.