PIC und Macroprogrammierung

Gast #55497
hi Leute,

das geht hier direkt an die Pic- Spezialisten.

Also, ich programmier schon ne Weile mit Pic´s und nun bin ich dabei
einen i2c-Bus auf einem PIC16f73. Da hab ich in die Application Note
"AN734" reingeschaut und auf den Quelltext gelunst.

Da ist auf der Seite 8 z.B. folgene Sequenz:

LFSR macro Address,Offset ; This macro loads the correct value
     movlw Address        ; into the FSR given an initial data
     movwf FSR            ; memory address and offset value.
     movf Offset,W
     addwf FSR,F
endm

Ich verstehe leider nicht, was diese Zeilen bedeuten, wie ich diese
programmiere (Inhaltlich, Syntax,...) und wie ich die Zeilen dann auch
anwende !!!!!

Fals mir jemand helfen kann, z.B. mit Links (nicht Google!!!) oder mir
das so life erklären kann, dem wäre ich sehr dankbar....

andreas
Gast
Hallo Andreas,

das Macro dient einfach dazu, einen berechneten Wert (möglichst
einfach) ins FSR zu schreiben. Aufgerufen wird es z.B. so

 LFSR 0x80, Tmp

wobei 80h die Basisadresse z.B. einer Tabelle ist und Tmp ein Zeiger
auf den Eintrag in der Tabelle, auf den man zugreifen möchte
(angenommen in Tmp steht 5).

Der Macro-Expander macht dann daraus:

 movlw  0x80
 movwf  FSR
 movf   Tmp,W
 addwf  FSR,F

Im FSR steht also hinterher 85h, d.h. es wird auf den 6. Eintrag
zugegriffen. Wofür das FSR ist, solltest Du allerdings wissen
(indirekte Adressierung).

Was aus einem Macro gemacht wird, wenn es aufgerufen wird, kannst Du
nach dem Assemblieren im LST-File sehen (sofern Du die Option nicht
deaktiviert hast). Weitere (wenige) Infos zu Macros findest Du im
"Assembler User's Guide". Ein Makro dient am Ende aber immer nur
dazu, Tipparbeit zu sparen, bzw. das Programm lesbarer zu machen.

MfG
Andreas

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.