Hallöchen
Ich lerne gerade Assembler und habe da ein kleines Problem, wobei ich denke das es sich um ein reines Anfängerproblem handelt.
Nach meinem Verständnis sollte hiermit der Pin RB0 als Ausgang definiert sein und alle anderen Pins ein Low level haben.Code:
Adresse equ 0x20 ; Vergleichsadresse, kann irgendein 5bit enthalten. Zum testen schreibe ich einfach 0h
MOVLW 0h ; Wert in W
MOVWF Adresse ; W nach Register
MOVLW b'00000111' ; Komperatorausgänge nutzen
MOVWF 1Fh
BSF STATUS, RP0 ; auf BAnk 1 wechseln
BCF TRISB, 0 ; Soll als Augang fungieren
BCF STATUS, RP0 ; zurück nach Bank 0
CLRF PORTA ; Eingänge PortA auf low
CLRF PORTB ; Eingänge PortB auf low
Dann möchte ich die Pegel an den Pins abfragen:
Hierbei sollten nach meinem Verständnis die BSF Befehle ignoriert werden, da die eingelesenen Pegel = 0 sind. Das scheint auch zu funktionieren.Code:BTFSC PORTA, 0
BSF Adresse, 0
BTFSC PORTA, 1
BSF Adresse, 1
BTFSC PORTA, 2
BSF Adresse, 2
BTFSC PORTA, 3
BSF Adresse, 3
BTFSC PORTA, 4
BSF Adresse, 4
Wenn ich aber in das Register PORTA = ffh schreibe, müssten hierbei doch die Ausgänge alle auf High stehen und somit bei dem letzten Codeabschnitt die BSF Befehle ausführen. Oder sehe ich das falsch??
Nur falls die Frage aufkommt was die Schaltung können soll:
Beim initialisieren wird das REgister Adresse mit einem Nullwert erstellt. Beim einlesen der Pin Pegel von PortA soll das anliegende Bitmuster in das Register geschrieben werden. Im weiteren Schritten die hier aber nicht aufgeführt sind soll später das Register mit einem 5 Bit Muster von PortB verglichen werden. Das macht vieleicht für euch nicht viel Sinn, aber für Mein Verständnis an diesen kleinen Teilchen unverzichtbar O:)
Für eure Hilfe bedanke ich mich im voraus