-
-
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
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen