Forum: Mikrocontroller und Digitale Elektronik MCS 8051 - Serielle Schnitstelle


von Marcel Reich (Gast)


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.

von Olaf (Gast)


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

von Marcel Reich (Gast)


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

von Peter D. (peda)


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

von Marcel Reich (Gast)


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?

von Helmut -. (dc3yc)


Lesenswert?

Dieser Wert lässt sich nach der Formel im Datenblatt berechnen!

von Peter D. (peda)


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

von Marcel Reich (Gast)


Lesenswert?

Danke Peter werd mal suchen.

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

von Ralf (Gast)


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/lehre/fpmc/index.html

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

von Marcel Reich (Gast)


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.

von Marcel Reich (Gast)


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

von Pieter (Gast)


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

von Marcel Reich (Gast)


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

von Jobst M. (jobstens-de)


Lesenswert?

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

Beide den selben Wert?


Gruß

Jobst

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.