Forum: Mikrocontroller und Digitale Elektronik PIC und Macroprogrammierung


von Andreas Huck (Gast)


Lesenswert?

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

von Andreas Jäger (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.