Pic und BANKSEL

Gast #4765428
Lesenswert?
• ▲
▼
Hans-Jürgen K. schrieb:
> Wenn ich Daten im Arbeitsregister habe und dann den Befehl Banksel
> ausführe gehen die Daten dann im Arbeitsregister verloren?

Banksel ist wie ein/mehrere zusätzliches Adressbit für die 
Registerauswahl, dass aber nicht mehr in das Adressierungsschema passt 
und deswegen separat passend gesetzt werden muss.

Welches Register meinst du mit "Arbeitsregister".

Um welchen Prozessor geht es überhaupt?
Gast #4765466
Lesenswert?
• ▲
▼
Hans-Jürgen K. schrieb:
> Wenn ich Daten im Arbeitsregister habe und dann den Befehl Banksel
> ausführe gehen die Daten dann im Arbeitsregister verloren?

Wenn Du noch MPLAB v8.xx anstatt MPLABX verwendest,dann kannst Du unter 
"Help"/Topics/Language Tools/MPASM Assembler unter "Index" folgende 
Suchbegriffe eingeben:
banksel
pagesel
pageselw
Da wird erwaehnt was modifiziert wird und soweit ich erkennen konnte 
wird nur nur bei "pageselw" das Arbeitsregister "w" veraendert - in den 
anderen Faellen werden lediglich die Statusbits entsprechend gesetzt 
(was Du ansonsten auch manuell tun muesstest)
OP #4765504
Lesenswert?
• ▲
▼
Hallo
Es geht um den Pic16F1847 der hat ja nun mal sehr viele Bänke.
Ich arbeite noch mit MPLAB und schreibe alles in ASM. Mach das nur Hobby 
mäßig. Im speziellen fall geht es um das SSP1BUF Register(Bank4) das ich 
ins Arbeitsregister "w" schreibe und dann auf Bank 0 umstelle um die 
Daten weiter zu verarbeiten.

MFG
HJ
#4765667
Lesenswert?
• ▲
▼
Servus,

die "Enhanced Midrange" PICs, also 12F1xxx und 16F1xxx, haben ja den 
"movlb"-Befehl, der die Daten direkt ins BSR-Register schreibt, ohne 
irgenwas anderes zu verändern. Aus "banksel TRISA" macht der Assembler 
dann einen entsprechenden "movlb 1"-Befehl. Bei einem PIC12F629 macht er 
aus dem "banksel" dann stattdessen den benötigten "bsf 
STATUS,RP0"-Befehl.

-> am Besten, Du benutzt immer "banksel", statt die entsprechenden 
Befehle selbst!
Gast #4765705
Lesenswert?
• ▲
▼
Thomas E. schrieb:
> Aus "banksel TRISA" macht der Assembler
> dann einen entsprechenden "movlb 1"-Befehl.

Ja so isses
Hier ein Beispiel.Hab fuer das "Projekt" einen PIC16F1827 genommen,weil 
es fuer den ein Template gibt.

Als Testcode habe ich 2 Zeilen eingefuegt:
ORG 0x0009
BANKSEL LATA

Man sieht im beigefuegten Screenshot,dass an der Programmadresse 0x0009
MOVLB 0x2 steht da LATA in der Bank 2 zu finden ist.
Es werden ansonsten keine weitere Register veraendert.
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.