- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: PIC syntax - help needed!

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.06.2004
    Beiträge
    256
    Anzeige

    Praxistest und DIY Projekte
    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.
    BlackBox

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    10.03.2005
    Ort
    Mannheim
    Alter
    40
    Beiträge
    32
    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

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.06.2004
    Beiträge
    256
    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!
    BlackBox

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    10.03.2005
    Ort
    Mannheim
    Alter
    40
    Beiträge
    32
    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

  5. #15
    Frank Drebin
    Gast
    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.

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    10.03.2005
    Ort
    Mannheim
    Alter
    40
    Beiträge
    32
    jepp....kann ich nur bestätigen

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen