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
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
mh wie sieht denn die source für den seriellen Empänger beim Microcontroller aus... ==??=
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
@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
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 ....
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
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.