Forum: Mikrocontroller und Digitale Elektronik PIC XC8 Variablen übergabe


von Martin M. (ats3788)


Lesenswert?

Hallo
Ich arbeite mich in wenig in PIC C ein.
MPLAP X v1.90
Ist es möglich eine Variable in Assembler
zu übergeben.

Ich bekomme den Fehler.

source\xyz.c:120: error: undefined symbol "TextDaten"


void OutDaten(unsigned char TextDaten) {


asm("movlw TextDaten");

#asm
    movlw TextDaten

#endasm

von Teo D. (teoderix)


Lesenswert?


von Martin M. (ats3788)


Lesenswert?

Ja danke das weiß ich
mir geh es um die Variablen Übergabe.

von Teo D. (teoderix)


Lesenswert?

Du meinst also nicht "in Ass..." sondern an Ass... übergeben und 
"MOVLW" war nur ein schlechtes Beispiel.

Sry ka.

von Chris B. (dekatz)


Lesenswert?

MPLABX..also geht es um den XC8 Compiler!?
Versuche mal:
#asm
   BANKSEL(_TextDaten)
   MOVLW(_TextDaten)
   .....
   .....
#endasm

bzw. noch besser:

MPLAB XC8 C Compiler
User’s Guide
5.12 MIXING C AND ASSEMBLY CODE

von 1423 (Gast)


Lesenswert?

Chris B. schrieb:
> MPLABX..also geht es um den XC8 Compiler!?

Steht auch in der Überschrift.

Martin Michael schrieb:
> Ist es möglich eine Variable in Assembler
> zu übergeben.

Was soll der Mist bewirken? Wieso willst du das machen? Es gibt enorm 
wenige Anwendungen wo man sowas machen sollte. In 99,99999% aller Fälle 
ist es pfusch. Das macht dir alle Optimierungen des Compilers zu nichte, 
ist nicht zu debuggen und im Ernstfall zerschießt du dir (z.B. mit 
solchen Bank-Wechseln) dein ganzes Programm zu einem beliebigen 
Zeitpunkt nicht reprodzuierbar. Außerdem können die wenigsten 
Programmierer so effizient arbeiten wie ein C Compiler. Schon garnicht 
wenn sie nicht mit ASM groß geworden sind.

von Martin M. (ats3788)


Lesenswert?

Danke für die Antworten
Im C bin ich ein Frischling und
da wäre es eben nun man toll am Anfang
noch ein bisschen ASM zu benutzen.

Mir ist schon klar das das auf Dauer keinen Sinn macht.

von B. S. (bestucki)


Lesenswert?

Martin Michael schrieb:
> Mir ist schon klar das das auf Dauer keinen Sinn macht.

Das macht schon Sinn, aber nur wenn man ganze Funktionen in ASM schreibt 
(z.B. Zeitverzögerungen, Zugriffe auf das interne EEPROM, extrem 
zeitkritisches Bit-Banging usw.). Diese Funktionen schreibt man aber 
nicht in eine C-Datei, sonder direkt in eine eigene ASM-Datei und bindet 
diese in das Projekt ein. Wie man das macht, ist alles im Handbuch des 
Compilers beschrieben.

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.