Hallo... hab bei Sprut.de folgendes zu diesem Befehl gefunden:
BSF Ein Bit (das Bit Nr. b) in einer Speicherzelle f setzen
Syntax: BSF f,b
Bedeutung: In der Speicherzelle f wird das Bit b auf 1 gesetzt
Beispiel: BSF PORTA,3 ; Im Register PORTA wird das Bit Nr.3 auf 1 gesetzt
; (das dritt"kleinste" Bit mit dem Wert 4).
; War PORTA vorher Null, so ist jetzt PORTA=4.
BCF Ein Bit (das Bit Nr. b) in einer Speicherzelle f löschen
Syntax: BCF f,b
Bedeutung: In der Speicherzelle f wird das Bit b auf 0 gesetzt
Beispiel: BCF PORTA,3 ; Im Register PORTA wird das Bit Nr.3 auf 0 gesetzt
; (das dritt"kleinste" Bit mit dem Wert 4).
; Was PORTA vorher 6, so ist jetzt PORTA=2.
Kleiner auszug aus Spruts homepage...
In dem fall deines programmes wird bas bit0 im Statusregister gesetzt...
dies bewirkt bei der indirekten Adressierung, die der pic benutzt ein umschalten von Speicherbank 1 auf Speicherbank 2... das Register TrisB befindetsich nämlich in Speicherbank 2...
mit BCF Status,Rp0 wird wieder auf Speicherbank 1 umgeschaltet... dort befindet sich nämlich das Register PortA, auf das als nächstes zugegriffen wird...
statt Bsf,Rp0
könntest du hier auch schreiben
movlw "00000001"
movwf STATUS
das BSF ist in diesem falle einfach kürzer und einfacher zum anwenden...
Falls ich mich hier vertue, werde ich gerne berichtigt...
MFG Quirin