-
-
Erfahrener Benutzer
Roboter-Spezialist
Ich würde mal sagen, dass das ^ für die logische Verknüpfung XOR steht (siehe MPASM Hilfe), negiert (löscht in diesem Fall) also Bit 7. Der Autor des Quellcodes unterdrückt damit die Warnung des Assemblers.
-
Also unterdrücken würde ich nicht sagen.
Also ich hab mich gerade mal ein bissle durch ein Datenblätt gefuchst! *g*
Also, meine interpretation wäre, dass die im Assembler hinterlegten Adressen für PORTB und TRISB die identischen sind. Beide Register werden also beim assemblieren durch die Adresse 06h ersetzt.
Der Assembler weis aber, dass TRISB eigentlich an der Adresse 86h liegt und meldet also eine Warnung.
Das würde eigentlich heissen, wenn ich TRISB ^ 0x80 verknüpfe müsste folgendes zustande kommen:
TRISB = 0x06 --> 0x06 ^ 0x80 = 0x86 --> somit stimmt die Adresse für den Assembler, deswegen keine Warnung.
Allerdings müsste es dann reintheoretisch auch möglich sein das ganze anstatt so -->
bsf STATUS, RP0 ; switch to bank1
bcf TRISB ^ 0x80, 0 ; set on port B pin 0 as output
bcf STATUS, RP0 ; switch back to bank0
nur noch so
bcf TRISB ^ 0x80,0
zu schreiben, da die verwendet Physikalische Adresse 0x86h ja schon auf der Bank 1 liegt, muss denke ich nicht extra auf diese Umgeschaltet werden.
Dies Wäre auch logisch, da dadurch ja wieder 2 Befehle wegfallen würden und auch somit wieder Zeit sparen, was bei Zeitkritischen-Anwendungen ein vorteil wäre. Allerding würde das nur bei Adressen bis 0xFFh funktionieren.
Allerdings würde ich wetten, das dies nicht der Fall ist und du trotzdem manuell auf Bank1 umschalten musst, denn sonst wäre Bank 1 ja doch uninteressant. Hat, denke ich, was mit der 8Bit-Struktur der PICs zu tun.
Probiers mal aus ohne umschalten auf Bank1, wenns dann nicht stimmt, dann lass das mit TRISB ^ 0x08 weg, da es doch ein bisschen zu unübersichtlichkeit des Quellcodes beiträgt.
Gruß
Stefan
-
Erfahrener Benutzer
Roboter-Spezialist
Schau mal in die *.inc. TRISB ist 0x86.
Um darauf zuzugreifen musst Du natürlich das Bank-Select Bit setzen.
0x86^0x80=0x06 0x06 liegt in Bank0, also keine Fehlermeldung!
-
War nur ne vermutung...hatte nicht in die Include-Datei geschaut.
Also letztendlich gibt es wohl keine Plausible erklärung, warum die Warnung immer wieder kommt.
naja....
Gruß
Stefan
-
Diese Meldung (über die sich immer wieder aufgeregt wird) ist nur ein Hinweis darauf, dass das verwendete Register nicht in Bank0 ist und der Programmierer darauf achten soll, dass die richtige Bank gesetzt ist.
Dieses Bank-Thema führt bei PIC-Einsteigern oft zu nächtelanger Fehlersuche. Daher die (vollig korrekte) Meldung (als Erinnerung). Sobald man einige Erfahrung hat und weiss was man tut, kann man diese Warnung getost mit o. g. Anweisung unterdrücken.
-
jepp....kann ich nur bestätigen
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen