Freescale MC9S08 Stack Manipulation

Gast #878897
Lesenswert?

Hallo Leute,

ich verwende einen MC9S08QE8 Controller von Freescale. Codewarrior 6.1.

Ich versuche den Stackpointer über ein Macro zu manipulieren, bzw. zu 
verschieben.

Mein Ansatz sieht folgendermaßen aus:

[pre]#define __SetSP( x ) __asm LDHX #x; __asm TXS;[pre]

Dummerweise funktioniert das nicht (error message (C18103: Factor 
exptected)). Das Problem ist vermutlich das # vor dem x.

Hat jemand eine Idee wie man das Macro korrekterweise definiert?

Danke vorab.

Thomas
Gast #879681
Lesenswert?

Lieber Fragesteller  Thomas A.
wenn Du schon solche Fragen zu nicht-AVR und nicht-PIC uP hier 
einstellst (in dieses Anfängerforum), so solltest Du doch 
freundlicherweise auch bald darauf die Lösung oder zumindest einen 
Hinweistext "erledigt" einstellen, da Du Deine Frage ja inzwischen im 
Freescale Forum beantwortet bekommen hast.
Der Einfachheit halber kopiere heute ich die dortige Antwort nochmal 
hierher.
Derlei extrem spezielle Fragen sind in diesem Forum jedoch fehl am 
Platz, denke ich.



Hello,

The following seems to give the intended result.

#pragma NO_STRING_CONSTR
#define __SetSP( x ) __asm LDHX #x; __asm TXS

Without the pragma, the presence of the '#' character within the inline 
assembler instruction confuses the C preprocessor when it expands the 
macro.

Regards,
Mac

Message Edited by bigmac on 2008-05-28 02:54 AM
#879964
Lesenswert?

@Klaus
1) WO steht hier geschrieben, dass diese Forum nur für AVR und PIC µCs 
ist?
2) Innerhalb von einem halben Tag reagieren (sehen, dass in dem anderen 
Forum die Frage beantwortet wurde und dann hier auch noch posten. Ein 
klein wenig zuviel verlangt. Vgl. Zeitangabe Freescale Forum mit der 
Zeit hier als du deine (doch etwas freche) Antwort geschrieben hast. Und 
bitte nicht die Zeitverschiebung der einzelnen User vergessen...

SCNR,
Christian

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren