www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MCS 8051 - Serielle Schnitstelle


Autor: Marcel Reich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich habe folgendes Problem ich hab hier Aufgaben die ich nicht verstehe 
und hoffe ihr könnt mir helfen. Ich bin neu auf dem Gebiet und hoffe auf 
eure Unterstützung. Danke!

3.1.Erweitern si das Programm der Aufgabe 1.1* um die serielle 
Schnittstelle zu initialisieren und anschliessend in einer Schleife ein 
Zeichen(z.B. "A")auszugeben. Beachten Sie, daß das Programm auf das Ende 
der Übertragung warten muss, bevor das nächste Zeichen gesendet wird.

*Aufgbae 1.1:

.title Erste Aufgabe
.area CODE1 (ABS)
.org 0x0000
DACAPO:
mov P1,#0x00
mov P1,#0XFF
.area CSEG (CODE)

3.2.Modifizieren sie das Programm der Aufgabe 3.1 so. dass ein lesbarer 
Text aus dem Terminal ausgegeben wird.

3.3 Modifizieren sie das Programm der Aufgabe 3.1 so, dass der 
Mircrocontroller auf Eingabe eines Zeichen vom Terminalwartet, und 
anschliessend das empfangene Zeichen wieder n das Termnal zurücksendet. 
(Echo)

3.4 Modifizieren sie das Programm der Aufgabe 3.3 so, dass der 
Microcontroller aufEingabe eines Zeichens vom Terminal watet, und 
anschliessend das empfangene Zeichen auf Port P1 ausgibt.

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich habe folgendes Problem ich hab hier Aufgaben die ich nicht verstehe
> und hoffe ihr könnt mir helfen.

Du musst schon sagen was du genau nicht verstehst. Oder glaubst du im 
ernst wir machen dir deine Hausaufgaben?

Olaf

Autor: Marcel Reich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lustig! Ich versteh da garnichts und Hausaufgaben sind das auch nicht 
hab echt keine Ahnung was ich da genau machen soll.
Wie soll ich denn die AUfgaben machen ohne zu wissen wie das alles 
funktioniert

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcel Reich schrieb:
> Wie soll ich denn die AUfgaben machen ohne zu wissen wie das alles
> funktioniert

Dann sag Deinem Lehrer, daß er erstmal seine Aufgabe erfüllen soll, 
nämlich Dir die dazu nötigen Grundlagen zu vermitteln.


Peter

Autor: Marcel Reich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja egal vergessen wir das Thema, aber wenn ihr noch so nett sein 
könntet könnt ihr mir noch eine Frage beantworten?

Ich brauch für den mov TH1 Befehl das 0x**, bloß hab ich das nur für 
einen 11.059 MHz Quartz und ich hab hier einen 20 MHz was muss ich dann 
für das ** einsetzen?

Autor: Helmut -dc3yc (dc3yc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser Wert lässt sich nach der Formel im Datenblatt berechnen!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcel Reich schrieb:
> Ich brauch für den mov TH1 Befehl das 0x**, bloß hab ich das nur für
> einen 11.059 MHz Quartz und ich hab hier einen 20 MHz was muss ich dann
> für das ** einsetzen?

Das hängt von der gewünschten Baudrate ab und von dem 8051-Typ, ob der 
durch 12, 6, 4, 2 oder 1 teilt und vom SMOD-Bit.
In vielen Datenblättern stehen sogar fertige Tabellen für die gängigsten 
Baudraten.


Peter

Autor: Marcel Reich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Peter werd mal suchen.

Ich hätt dir ja die Angaben gemacht aber wie gesagt kenn mich da noch 
nich so aus.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich hätt dir ja die Angaben gemacht aber wie gesagt kenn mich da noch
> nich so aus.
Dafür reisst dir ja keiner den Kopf ab, wohl aber für Formulierungen ála 
"Ich soll..., macht ihr...".

Vorschlag: Ließ dir das Datenblatt deines Controllers in Ruhe durch, 
oder zumindest den für die serielle Schnittstelle relevanten Teil.
Zusätzlich zum besseren Verständnis bemühst du mal die Suchmaschine 
deiner Wahl mit Stichworten wie zum Beispiel "Einführung 8051" - da 
bekommst du beispielsweise sowas:

http://rudolf-eisenbarth.de/rechts/MC8051.htm
http://www.ieap.uni-kiel.de/surface/ag-berndt/lehr...

Ich kenne die Seiten nicht, aber das sind sicher nicht die einzigen.

Und dann, wenn du ein gewisses Grundverständnis erarbeitet und 
konkrete Fragen hast, kommst wieder und fragst, warum was nicht geht 
oder was du nicht verstehst.

Ralf

Autor: Marcel Reich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Ralf

Ja sorry wegen dem "Ich soll..., macht ihr...".

Ich werd mich da mal durcharbeiten und komm dann mit konkreten Fragen 
wieder.
Falls ich welche haben sollte.

Autor: Marcel Reich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nochmal

Also zu Aufgabe 3, hab jetzt ein Programm dazu und wollte wissen  ob das 
so richtig ist!?

  .title  Aufgabe 3_3
  .area  CODE1 (ABS)
  .org  0x0000

  mov  TMOD,#0x20
  mov  TCON,#0x20
  mov  TH1,#0xEA  ; 4800 Baud
  mov  TL1,#0xEA  ; 4800 Baud
  mov  SCON,#0x50
  mov  PCON,#0x00
  mov  IE,#0x00
  setb  TR1
  mov   P1,#0x01  ; Clk = L
  mov   P2,#0xFA  ; Data 1
  mov   P1,#0xFF  ; Clk = H

  mov  R1,#0x3F

DACAPO:

  mov  SBUF,R1    ; Zeichen
1$:  jnb  RI,1$
  clr  RI
  mov  R1,SBUF    ; empfangenes Zeichen

  mov   P1,#0x01  ; Clk = L
  xrl   P2,#0x0F  ; Data 2
  mov   P1,#0xFF  ; Clk = H

  ljmp  DACAPO
  .area  CSEG (CODE)  ; End

Autor: Pieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moin moin,

was soll dieses Prog denn tun????

Fragen:
-woher kommt der Wert 0EAH für 4800Baud?
-wird R1 mit #3fH geladen?
-was soll das "wackeln" an  P1,P2 sein?

Ohne passende Dokumentation ist ein Programm wertlos, wie willst Du 
selber in einiger Zeit noch sagen können was warum wie gemacht wurde.

Mit Gruß
Pieter

Autor: Marcel Reich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Mircrocontroller soll auf Eingabe eines Zeichen vom Terminal warten, 
und
anschliessend das empfangene Zeichen wieder in das Termnal zurücksenden.

1. 0xEA hab ich ausgerechnet für den Microcontroller

2. Eigentlich schon

3. Sorry das muss raus war schon für was anderes

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcel Reich schrieb:
> mov  TH1,#0xEA  ; 4800 Baud
> mov  TL1,#0xEA  ; 4800 Baud

Beide den selben Wert?


Gruß

Jobst

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.