Forum: PC-Programmierung Mplab Printf integer zu Hyperterminal


von Herbert K. (herbert90)


Lesenswert?

Hallo !

Hätten eine Frage bezüglich dem Printf Befehl bei Mplab(C).

Wir programmieren mit einem PIC18f4550 und wollen eine int16 zahl über 
die serielle Schnittstelle übertragen und im Programm Hyperterminal 
empfangen bzw.darstellen.

Die wesentlichen Komponenten unseres Programms sind wie folgt:

int16 inbyte;

und in der main:

printf("byte="+inbyte+"     ");

--------------
Habe mich schon in der CCS Help erkundigt was ich genau mit % hinzufügen 
muss. Dort steht geschrieben das %u für unsigned Integer hinzugefügt 
werden muss. Jedoch bekomme ich im Hyperterminal nur kryptische Zeichen 
und nicht das inbyte was ich darstellen will.

Woran kann das liegen ??

danke im voraus

: Wiederhergestellt durch Admin
von Karl H. (kbuchegg)


Lesenswert?

Herbert Kn schrieb:

> Woran kann das liegen ??

C-Buch lesen

  int16 inbyte;
  printf( "byte= %d", (int)inbyte );

von Herbert K. (herbert90)


Lesenswert?

hallo

danke für die schnelle Hilfe!

Wir haben das mittlerweile versucht , erhalten jedoch dezimale werte im 
bereich von 20-300 ! Anzeigen soll es jedoch zahlen wie inbyte = 
1111101111111111 ;

Ist es möglich das Hyperterminal sozusagen nicht kompatibel mit Mplab 
ist ??

Normale Printf Befehle wie Printf("Hallo"); können wir jedoch ohne 
weiteres senden !

mfg

von Karl H. (kbuchegg)


Lesenswert?

Herbert Kn schrieb:
> hallo
>
> danke für die schnelle Hilfe!
>
> Wir haben das mittlerweile versucht , erhalten jedoch dezimale werte im
> bereich von 20-300 !

Ja logisch.
inbyte enthält eine Zahl, und mit %d wird diese Zahl in menschenlesbarer 
Form als Dezimalzahl aufbereitet

> Anzeigen soll es jedoch zahlen wie inbyte =
> 1111101111111111 ;

Dann musst du dir selbst eine Ausgabefunktion machen, die dir die Zahl 
binär aufdröselt oder du verwendest zb itoa. Dem kann man die 
Zahlenbasis vorgeben.

> Ist es möglich das Hyperterminal sozusagen nicht kompatibel mit Mplab
> ist ??

Quatsch.
Text ist Text.
Du gibst Text aus. Das die 'Buchstaben' des Textes aus '1' '2' '3' 
bestehen und du daher als schlauer Benutzer vor dem Schirm 
hundert_drei_und_zwanzig liest, interessiert weder den C-Compiler noch 
Hyperterminal. Der eine schickt Text, der andere stellt den Text dar. 
Welcher Text geschickt wird, legst du als Programmierer fest. Lässt du 
als Programmierer den falschen Text schicken, darfst du dich nicht 
wundern, wenn der angezeigte Text nicht dem entspricht was du dir 
erhoffst.
Programmierung funktioniert immer noch nach dem Muster
  'Do what I tell you to do'
und nicht nach
  ' Do what I mean that you should do but am not able to express 
correctly, therefore please correct my mistakes and insufficient 
knowledge on your own'

von Loonix (Gast)


Lesenswert?

@kbuchegg
>Programmierung funktioniert immer noch nach dem Muster
>  'Do what I tell you to do'
>und nicht nach
>  ' Do what I mean that you should do but am not able to express
>correctly, therefore please correct my mistakes and insufficient
>knowledge on your own'

Dass das stimmt sieht man schon am komplizierteren Satzbau der 
Beschreibung der falschen Vorgehensweise - der ideale Programmierer ist 
eben faul ;)

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.