Forum: Mikrocontroller und Digitale Elektronik Freescale MC9S08 Stack Manipulation


von Thomas A. (Gast)


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

von Klaus (Gast)


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

von Christian G. (christiang)


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

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.