FSR Register durch Variable festlegen
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Entwicklungswerkzeuge  |  Compiler  |  FSR Register durch Variable festlegen « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: FSR Register durch Variable festlegen  (Gelesen 1685 mal)
 
ingo
Sr. Member
****
Offline Offline

Beiträge: 258



Profil anzeigen
« am: Januar 04, 2010, 11:05:14 »

Hallo Forum,

nach langer Zeit erlaube ich mir mal ein Problem zu haben. Ich lese oft die Beiträge und bin bei all meine Problemen hier immer auf eine Lösung gestoßen. Nun aber finde ich keine Lösung, weder in der Hilfe des Assemblers noch hier im Forum.

Das also ist mein Problem:
IDE:         MPLAB 8.40
Assembler:   MPSAMWIN  5.34
Linker:      MPLINK 4.34
Prozessor:   18F4420
Language:    Assembler

Ich möchte eine Include-Datei schreiben, die sich in viele Programme interieren lässt. Da Strings über die RS232 gesendet werden sollen möchte ich ein FSR als Zeiger benutzen. Welches FSR, das möchte ich in einer Variablen festlegen.
Ist die Variable z.B. 1 soll das FSR1 benutzt werden.
Die frage ist nun wie bekomme ich das hin das nun die Befehle bzw. Registernamen:
lfsr 1, .....,   fsr1l, fsr1h, und indf1 benutzt werden.
Ist die Variable 2 so soll lfsr 2, .....,   fsr2l, fsr2h, und indf2 benutzt werden.

Ich danke allen die mich der Lösung näher bringen.

Gespeichert

GRUSS
INGO
Ein Computer gehorcht Deinen Befehlen, nicht Deinen Absichten!
Edson
Globaler Moderator
Sr. Member
*****
Offline Offline

Beiträge: 373



Profil anzeigen
« Antworten #1 am: Januar 04, 2010, 17:38:50 »

Hallo Ingo,

wenn ich dich richtig verstanden habe kannst du Präprozessor-Direktiven einsetzen:

Code:

#define PIC18_FSR0, 0
#define PIC18_FSR1, 1
#define PIC18_FSR2, 2

SETZEZEIGER MACRO zeiger_nummer, adresse

   #if zeiger_nummer == PIC18_FSR0
      lfsr 0, adresse
   #elseif zeiger_nummer == PIC18_FSR1
      lfsr 1, adresse
   #elseif zeiger_nummer == PIC18_FSR2
      lfsr 2, adresse
   #endif

   ENDM

Grüße,
Edson
Gespeichert
ingo
Sr. Member
****
Offline Offline

Beiträge: 258



Profil anzeigen
« Antworten #2 am: Januar 04, 2010, 18:33:20 »

Hallo Edson,

vielen Dank für den Tipp, aber MACROS wollte ich gerne vermeiden, da sie meiner Meinung nach den Code undurchsichtig machen.

Für immer wieder kehrende Eingaben sind Macros eine super Sache da verwende ich sie auch gerne. Aber zum selektieren der Befehle.......hhhhmmm ich werde mal darüber nachdenken.   -
Gespeichert

GRUSS
INGO
Ein Computer gehorcht Deinen Befehlen, nicht Deinen Absichten!
Edson
Globaler Moderator
Sr. Member
*****
Offline Offline

Beiträge: 373



Profil anzeigen
« Antworten #3 am: Januar 04, 2010, 22:35:04 »

Zitat
MACROS wollte ich gerne vermeiden, da sie meiner Meinung nach den Code undurchsichtig machen

Eigentlich setzt man sie ein um das genaue Gegenteil zu erreichen...
Wenn man eine Weile nichts an einem Projekt gemacht hat sind Zeilen wie
Code:
KOPIERE32 var1, var2
doch übersichtlicher und leichter zu verstehen als
Code:
movf var1, f
movwf var2
...usw
movf var1+3, f
movwf var2+3

oder?

Zitat
Für immer wieder kehrende Eingaben sind Macros eine super Sache

Vielleicht habe ich deine Absicht noch nicht verstanden, aber ist die Zuweisung der FSRs nicht eine Aufgabe der angesprochenen Kategorie?

Zitat
Ich möchte eine Include-Datei schreiben

Du meinst ausführbaren Code, den du per Textersetzung (include macht nichts anderes) in ein ASM-Modul einbindest? Das ist meiner Meinung nach von hinten durch die Brust ins Auge gezielt. Warum schreibst du den Code nicht in ein eigenes ASM-File?

Grüße,
Edson
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.034 Sekunden mit 18 Zugriffen.
 
Top! Top!