mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC und Macroprogrammierung


Autor: Andreas Huck (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.