Forum: Mikrocontroller und Digitale Elektronik printf funktioniert nur mit 2 angehängten Leerzeichen


von Steffen (Gast)


Lesenswert?

Ich benutze einen PIC16F876 mit MPLAB 7.22 und dem CSS-Compiler.
Mit dem printf-Befehl möchte ich Daten über die RS232 Schnittstelle zum
PC übertragen (Hyperterminal).

Der Quellcode:

#include <16F876.h>

#FUSES HS,NOWDT,NOLVP
#use delay(clock=4000000)
#USE RS232 (BAUD=9600, XMIT=PIN_C6, RCV=PIN_C7)

int i;

void main (void)
{
          printf("HalloWorld");
}

Im Terminalprogramm (entweder Microsoft oder HTerm) kommen aber die
letzten beiden Buchstaben nicht an, es erscheint also nur
"HalloWor".

Auch bei einem Integer muss ich zwei Leerzeichen anfügen damit es
funktioniert:
printf("%d  ",i) funktioniert, printf("%d",i) dagegen gar nicht.

Hat jemand schon einmal mit diesem Problem zu tun gehabt?

von Karl H. (kbuchegg)


Lesenswert?

Probier mal

  printf( "hallo World\n" );

Also mit einem abschliessenden \n (Carriage Return/LineFeed).
Moeglicherweise stecken die Zeichen noch in irgendwelchen
Puffern.

von Steffen (Gast)


Lesenswert?

Mit einem angehängten \n erscheint ein Buchstabe mehr, also
"halloWorl".
Weiter habe ich festgestellt, dass bei mehreren printf-Anweisung immer
nur bei der letzten zwei Zeichen angefügt werden müssen. Hierbei muss
es sich auch nicht um Leerzeichen handelt, es können beliebige sein.

int i;

void main (void)
{
          printf("HalloWorld");

          i=5;
          printf("%d\n\n",i);
}

So funktioniert es, statt \n\n könnte z.B. auch xy stehen.

von Steffen (Gast)


Lesenswert?

Habe schon eine Antwort gefunden, ist sehr interessant!!

http://www.ccsinfo.com/forum/viewtopic.php?t=24313&highlight=

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.