• Einlesen d. 1. Operanten(scanf) // 57
• Einlesen d Operator(USART Getchar) +
• Einlesen d. 2. Operanten(scanf) // 277
• Einlesen d Operator(Getchar) =
Berechnen und Ausgeben der Ergebnisse in d. Form 57+277= ….
Also im Prinzip ein Taschenrechner
Ich weiß nicht was hier falsch ist :/
#include <avr/io.h>
#include "Wait.h"
#include "USART.h"
hisham moustafa schrieb:> while(1)> {>> }> switch (operator1)> {> case '*' : erg= oprt1*oprt2; break;> case '+' : erg= oprt1+oprt2; break;> case '-' : erg= oprt1-oprt2; break;> case '/' : erg= oprt1/oprt2; break;> }
Die Switchverzweigung wird nie erreicht, weil das Programm vorher schon
in der Enlosschleife hängt.
Die while(1)-Schleife muss über den ganzen Code fassen, damit die
Ein-Ausgabe zyxklisch widerholt wird.
Roland ... schrieb:> hisham moustafa schrieb:>> while(1)>> {>>>> }>> switch (operator1)>> {>> case '*' : erg= oprt1*oprt2; break;>> case '+' : erg= oprt1+oprt2; break;>> case '-' : erg= oprt1-oprt2; break;>> case '/' : erg= oprt1/oprt2; break;>> }>> Die Switchverzweigung wird nie erreicht, weil das Programm vorher schon> in der Enlosschleife hängt.>> Die while(1)-Schleife muss über den ganzen Code fassen, damit die> Ein-Ausgabe zyxklisch widerholt wird.
hisham moustafa schrieb:> operator1 = USARTGetChar(scanf("%d", &oprt1));
Ich glaube nicht, daß USARTGetChar etwas mit dem Rückgabewert von
scanf anfangen kann.
Du solltest dich erstmal mit scanf und printf auseinander setzen.
Das sind zwei unterschiedliche Funktionen,.
Was sie jedoch gemeinsam haben ist, dass die variablen Parameter zum
Formatstring passen müssen.
Beispiele:
%d bei scanf dient zum Einlesen von einem dezimalen int. (das ist i.A
kein uint8_t)
%s bei printf dient zur Ausgabe von einer nullterminierten Zeichenkette
und erwartet einen Zeiger darauf.
Du darfst aber nicht von dem Verhalten von printf auf das Verhalten von
scanf schließen (und umgekehrt)
hisham moustafa schrieb:> Form 57+277= ….> uint8_t operator1, operator2;> uint8_t erg;
277 passt nicht in einen uint8_t, das Ergebnis der Addition noch
weniger.
:-)
Was wird denn wie eingegeben?
scanf lässt alles, was nicxht zur Zahl passt im Eingabestrom stehen.
Das ist auch das Leerzeichen oder das '\n' von der Returntaste.
Wozu überhaupt das USARTReceive ?