www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schulprojekt 8951


Autor: Michael Sauter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael Sauter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mein Code

Autor: Michael Sauter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
scanf("%s",&COMein);

Du kannst nicht einen beliebig langen Text in ein einzelnes Byte
speichern.



Peter

Autor: Michael Sauter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
scanf("%s",&COMein);

Du kannst nicht einen Text in ein einzelnes Byte
speichern.


Schau Dir mal gets() und atoi() an.


Peter

Autor: Michael Sauter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für den Tipp ich schus mir mal an.

danke mfg Michael

Autor: Michael Sauter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

sitze hier in der Schule und habe keine MSDN dabei, wie kann ich die im
Internet abrufen?

danke mfg Michael

Autor: Andreas W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit
http://www.msdn.com/

Gruß
Andreas

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist eine MSDN ?

wenn Du die Keil-Handbücher nicht hast, geh dochmal auf die Keil
Webseite (knowledgebase).


Peter

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
microsoft developer network

Autor: Michael Sauter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: chriss chd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ä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;
   }
}
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.