Forum: Offtopic Was macht diese Source (Empfänger serielle ...)


von Peter Allers (Gast)


Lesenswert?

Hallo ich wollte mal frage was diese Source hier macht..
Ich soll die analysieren, aber ich weiss nicht genau was die macht

Es soll sich um eine Empfänger Source für die serielle Datenübertragung
handel, aber was bewirken die einzelnen Zeilen???

ORG 0000h
Start:
  MOV R1,#00h
  MOV R2,#07h
  jb P3.1,Start2
  sjmp Start
Start2:
  MOV A,P3
  ANL A,#01h
  MOV R3,A
  MOV A,R1
  MOV A,R3
  RL A
  MOV R1,A
Warte:
  jb P3.1,Warte
  DJNZ R2,Start2
  rr A
  MOV P0,A
  sjmp Start
end

von Peter D. (peda)


Lesenswert?

MOV R3,A
  MOV A,R1
  MOV A,R3

Z.B. diese 3 Zeilen bewirken nichts.

Auch sonst ergibt der Code nicht den geringsten Sinn.


Peter

von Peter Allers (Gast)


Lesenswert?

mh wie sieht denn die source für den seriellen Empänger beim
Microcontroller aus... ==??=

von Alexander Niessen (Gast)


Lesenswert?

Ich will ja nicht unhöflich erscheinen ...
Für welchen MC soll der Code sein ? Welche serielle Übertragung ?
(UART, RC5, ...)
Die Antwort auf deine Frage ist hier sicher schonmal im Forum (oder bei
Google) diskutiert worden.

Grüße,
Alex

von Heinz (Gast)


Lesenswert?

www.hausaufgaben.de ?

von Elektrikser (Gast)


Lesenswert?

@Heinz
[Ironie an]
Vielen Dank für die Star-Dialer-Werbung!
[Ironie aus]

Mehr Daten über den Mc wären sinnvoll. Ohne wird es schwierig.

Gruß Elektrikser

von Martin S. (Gast)


Lesenswert?

ORG 0000h            ; 01 Code wird auf feste Speicheradresse fixiert
Start:               ; 02 hier geht das ganze Elend los
  MOV R1,#00h        ; 03 Register R1 kommt das fertige byte rein,
initial = 00
  MOV R2,#07h        ; 04 Register R2 zählt die Bits (0-7)
  jb P3.1,Start2     ; 05 wenns am Port3 bit 1 hochgeht dann gehts los
..
  sjmp Start         ; 06 war wohl nix, nochmal Däumchen drehen gehen

Start2:              ; 07 jetzt wirds ernst: es kommt 1 bit !
  MOV A,P3           ; 08 Datenwert einholen (P3)
  ANL A,#01h         ; 09 alles wegschmeissen ausser dem Bit 0 (dem
datenbit)
  MOV R3,A           ; 10 Nutzbit nach Register 3 zwischenlagern
  MOV A,R1           ; 11 bisher aufgelaufenes in den Akku laden
  MOV A,R3           ; 12 (FEHLER IM ASSEMBLER-PROGRAMM)
  RL A               ; 13 schon mal vorsorglich in Bitposition 0 Platz
machen
  MOV R1,A           ; 14 das bis dahin schon aufgelaufene in R1
zwischenbunkern

Warte:               ; 15 warten auf das nächste bit
  jb P3.1,Warte      ; 16 ist die 1 am Port3 bit 1 schon wieder runter?
wenn nicht dann warte
  DJNZ R2,Start2     ; 17 jetzt ist endlich das vorherige bit fertig,
das nächste kann eingeholt werden
  rr A               ; 18 die letzte Rotaion aus Zeile 13 war zuviel,
halt wieder aufheben
  MOV P0,A           ; 19 das fertige Byte auf Port P0 ausgeben
  sjmp Start         ; 20 kurzer relativer Sprung zum Anfang des Elends

end                  ; alles hat ein Ende, auch dieses Programm ....


Programmzeile 12 ist wohl fehlerhaft.
wenn da irgendwas wäre der art: ORL A,R3 würde es Sinn machen:
verknüpfe den Inhalt von Register 3 (es ist eh nur dessen Bitposition 0
relevant) mit dem Akku


PS: Ich habe keine Ahnung welcher Prozessor das ist, aber der
Assemblercode ist doch selbserklärend ....

von Martin S. (Gast)


Lesenswert?

Noch eine Anmerkung:

Das Timing der Taktleitung ist mir nicht ganz klar: Grundzustand (siehe
Zeile 5) scheint LOW zu sein, und auf die steigende Flanke gehts los.
Die nächsten Bits werden dann aber an der fallenden Flanke abgeholt
(siehe Zeile 16)

Die Datenleitung ist so wie sie ist, da wird also nichts mit der
Taktleitung zusammen gemischt (manche Codierungen wechseln da die
Wertigkeit von 0 und 1). Puh, das ist schon so ca. 100 Jahre her, daß
ich da mal im Digital-Kursus was von RZ, NRZ und Konsorten gehört habe
... alles weiß ich auch nicht mehr aus dem Kopf, und Lust zum Nachsehen
hab ich auch nicht

von Manuel Fernandez (Gast)


Lesenswert?

sicher n 535 kompatibler mC?

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.