Hallo Ich habe mal eine Frage zum Befehl Banksel. Wenn ich Daten im Arbeitsregister habe und dann den Befehl Banksel ausführe gehen die Daten dann im Arbeitsregister verloren? Eigentlich dürfte das ja nicht der Fall sein. Gruß HJ
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?
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)
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
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!
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.
Hallo Danke für die Antworten, werde mir das angewöhnen nur noch Banksel zu benutzen. Gruß HJ
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.