Gast
#128039
Hi!!
In meinem Programm ist der folgende Code definiert:
;***********************************************************************
****************************************
#define RXTXData R4
#define bitcount R5
#define pointer R6
#include <msp430x11x2.h>
NAME PROTOTYP
EXTERN ausgabestring ; C-Funktion: berechnet Ausgabestring
PUBLIC main
PUBLIC dr_out
..................
..................
ASEG 0x200
dr_out DB 15
ASEG 0x216 ; Arbeitsvariablen ins RAM
laden
...................
...................
;**********************************************
;* Programmstart *
;**********************************************
ORG 0xF000 ; Programm-Start
;**********************************************
main MOV.W #0x280,SP
...................
..................
CALL #ausgabestring
............
............
Die zugehörige C-Funktion lautet:
#include <stdio.h>
extern char dr_out[15];
void ausgabestring (unsigned int dr_ref,unsigned int dr_akt)
{
float druck;
druck = (150.0*dr_akt)/dr_ref;
sprintf(dr_out,"\n%f",druck);
druck =0;
}
Die Funktion soll beim Aufruf zwei Werte aus Assembler (R12,R14)
übernehmen, den Quotienten berechnen und das Ergebnis formatiert als
String in die Variable "dr_out" (Speicherplatz im RAM: 0x200 bis
0x214) schreiben. Die Berechnung der Variable "druck" funktioniert
einwandfrei, die Übergabe der beiden Werte ist also richtig erfolgt.
Bei dem Befehl "sprintf(dr_out,"\n%f",druck);" allerdings gibt es
einen Reset und der Wert der Variable "druck" wird nicht in das RAM
geschrieben, obwohl die Syntax des Befehls richtig ist . Wie muß ich
dies berichtigen?
Bei der Compilierung und Linkung des Programms ist keine Fehlermeldung
zu beobachten.
Wer kann mir da helfen? Ich habe die neueste Kickstart-Version von TI
runtergeladen, dürfte also nicht an der Version liegen....
Wolfgang