Hallo, ich habe ein Problem mit der Funktionalität des µC (p89c51rd2hbp). Ich weiß dass er schon etwas veraltet ist aber für meine Zwecke genügt er. Meine Frage ist die: Ich möchte über die serielle Schnittstelle am µC das empfangene serielle Signal aus dem Hyperterminal einlesen und genau diese empfangene Zahle an dem P2 ausgeben. Aber irgendwie funktioniert mein Programm nicht. Hier mein Code: siehe anhang Was ist hier falsch oder wie kann ich es machen, dass ich die oben beschriebene Funktion bekomme? Wäre sehr nett, wenn mir jemand helfen könnte, ist nämlich für ein Projekt für die Schule. danke mfg MSSauer
Hallo, bin mir net sicher ob der reload wert stimmt für 9600 Boud. Auch wichtig wäre vielleicht noch, dass ich eine 12 MHz Quarz habe. wenn jemand eine Antwort weiß wäre ich ihm sehr dankbar. danke mfg Michael
scanf("%s",&COMein); Du kannst nicht einen beliebig langen Text in ein einzelnes Byte speichern. Peter
Hallo, danke für deine Antwort. Ich möchte ja nur eine 8 Bit Zahl in die Variable schreiben. Habe jetzt das Programm umgeschrieben: #include <reg51.h> #include <stdio.h> void main() { char COMein SCON=0x50; PCON= PCON | 0x80; TMOD=0x12; TL0=249; TH0=249; TR0=1; TI=1; while (1) { if (RI==1) { scanf("%s",&COMein); printf("%s",COMein); } } } Kann das so gehen, dass ich die Zahl die ich über den Com Port zum µC schicke an den P2 Ports ausgebe? danke mfg Michael
scanf("%s",&COMein); Du kannst nicht einen Text in ein einzelnes Byte speichern. Schau Dir mal gets() und atoi() an. Peter
Hallo, sitze hier in der Schule und habe keine MSDN dabei, wie kann ich die im Internet abrufen? danke mfg Michael
Was ist eine MSDN ? wenn Du die Keil-Handbücher nicht hast, geh dochmal auf die Keil Webseite (knowledgebase). Peter
Hallo, hab jetzt das Programm geändert und so müsste es doch funktionieren, aber irgendwo muss noch ein Fehler sein. Weiß jemand was da falsch ist? #include <reg51.h> #include <stdio.h> void main() { char COMein[8]; SCON=0x50; PCON= PCON | 0x80; TMOD=0x21; TL1=249; TH1=249; TR1=1; TI=1; while (1) { if (TF1==1) { gets(COMein); P2=COMein; TF0=0; } } } danke mfg Michael
ändere mal folgendes um: 1.) du benötigst kein char array mehr 2.) ich glaube dass du lieber den wert von char ausbibst als die adresse. dass da der compiler nicht schon schreit? #include <reg51.h> #include <stdio.h> void main() { //char COMein[8]; //in char COMein; SCON=0x50; PCON= PCON | 0x80; TMOD=0x21; TL1=249; TH1=249; TR1=1; TI=1; while (1) { if (TF1==1) { gets(COMein); //Passt dann wenn du array haben wills sollte COMein[0] stehen P2=COMein; TF0=0; } } }
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.