Hallo Leute! Ich arbeite gerade an einem Morse Code Decoder. Hab jetzt am anfang zwei Timmer und eine Taste genommen. die Ausgabe mach ich als erstes nur mit LEDs. Könntet ihr euch mal den assembler text anschauen und sagen ob das so geht. ;::::: MORSECODE DECODER ::::: include C51RD2.inc Taster1 bit p3.2 LEDs data p2 ;******** Programm ************** code at 0 sjmp init ;******** Interrupt-Service-Routine org 0003h inc R1 sjmp abfragen reti org 000Bh mov TCON,#00000000b jmp schreiben reti org 001Bh mov TCON,#00010000b reti ;********* Initialisierung ********** init: mov LEDs,#0 setb IT0 clr IE0 setb EX0 setb EA mov TMOD,#00010001b setb ET0 mov TL0,#00h mov TH0,#00h ;********** Hauptprogramm****** mov P2,#0 ; Port löschen mov R1,#0 ; R1 auf 0 setzen mov R2,#0 haupt: call warte_leer ;leerzeichen sjmp haupt abfragen: call warte_schreiben call warte_abfrage mov A,R1 clr C subb A,#3 jz kurz jc kurz jmp lang kurz: mov A,R2 clr C subb A,#0 jz gleich jc kleiner jmp groesser gleich: mov R2,#01 mov R1,#0 kleiner: mov R2,#01 mov R1,#0 groesser: subb A,#02 jz gleich2 jc kleiner2 jmp groesser2 gleich2: mov R3,A add A,R3 add A,R3 mov R2,A mov R1,#0 kleiner2: mov R3,A add A,R3 add A,R3 mov R2,A mov R1,#0 groesser2: subb A,#08 jz gleich3 jc kleiner3 jmp groesser3 gleich3: mov R3,A add A,R3 add A,R3 add A,R3 add A,R3 mov R2,A mov R1,#0 kleiner3: mov R3,A add A,R3 add A,R3 add A,R3 add A,R3 mov R2,A mov R1,#0 groesser3: mov A,R2 clr C subb A,#40 jz alternative1 mov A,R2 clr C subb A,#36 jz alternative1 mov A, R2 mov R3,A add A,R3 add A,R3 add A,R3 add A,R3 add A,R3 add A,R3 mov R2,A mov TCON,#00000000b mov R1,#0 jmp schreiben alternative1: inc R2 lang: mov A,R2 clr C subb A,#0 jz gleich4 jc kleiner4 jmp groesser4 gleich4: mov R2,#02 mov R1,#0 kleiner4: mov R2,#02 mov R1,#0 groesser4: subb A,#02 jz gleich5 jc kleiner5 jmp groesser5 gleich5: mov R3,A add A,R3 add A,R3 add A,R3 mov R2,A mov R1,#0 kleiner5: mov R3,A add A,R3 add A,R3 add A,R3 mov R2,A mov R1,#0 groesser5: subb A,#08 jz gleich6 jc kleiner6 jmp groesser6 gleich6: mov R3,A add A,R3 add A,R3 add A,R3 add A,R3 add A,R3 mov R2,A mov R1,#0 kleiner6: mov R3,A add A,R3 add A,R3 add A,R3 add A,R3 add A,R3 mov R2,A mov R1,#0 groesser6: mov A,R2 clr C subb A,#48 jz alternative mov A,R2 clr C subb A,#40 jz alternative mov A,R2 mov R3,A add A,R3 add A,R3 add A,R3 add A,R3 add A,R3 add A,R3 add A,R3 mov R2,A mov TCON,#00000000b mov R1,#0 jmp schreiben alternative: dec R2 schreiben: cjne A,#01,T mov LEDs,#10000000b jmp haupt T: cjne A,#02,I mov LEDs,#11000000b jmp haupt I: cjne A,#03,AA mov LEDs,#11100000b jmp haupt AA: cjne A,#04,N mov LEDs,#11110000b jmp haupt N: cjne A,#06,M mov LEDs,#11111000b jmp haupt M: cjne A,#08,S mov LEDs,#11111100b jmp haupt S: cjne A,#15,U mov LEDs,#11111110b jmp haupt U: cjne A,#18,R mov LEDs,#11111111b jmp haupt R: cjne A,#20,W mov LEDs,#01111111b jmp haupt W: cjne A,#24,D mov LEDs,#00111111b jmp haupt D: cjne A,#30,K mov LEDs,#00011111b jmp haupt K: cjne A,#36,G mov LEDs,#00001111b jmp haupt G: cjne A,#40,O mov LEDs,#00000111b jmp haupt O: cjne A,#48,H mov LEDs,#00000011b jmp haupt H: cjne A,#105,V mov LEDs,#00000001b jmp haupt V: cjne A,#120,F mov LEDs,#00000000b jmp haupt F: cjne A,#126,UE mov LEDs,#01000000b jmp haupt UE: cjne A,#144,L mov LEDs,#01100000b jmp haupt L: cjne A,140,AE mov LEDs,#01110000b jmp haupt AE: cjne A,#160,PP mov LEDs,#01111000b jmp haupt PP: cjne A,#168,J mov LEDs,#01111100b jmp haupt J: cjne A,#192,BB mov LEDs,#01111110b jmp haupt BB: cjne A,#210,X mov LEDs,#00111110b jmp haupt X: cjne A,#240,CC mov LEDs,#00011110b jmp haupt CC: cjne A,#252,Y mov LEDs,#00001110b jmp haupt Y: cjne A,#37,Z mov LEDs,#00000110b jmp haupt Z: cjne A,#41,Q mov LEDs,#00000010b jmp haupt Q: cjne A,#39,OEE mov LEDs,#1000001b jmp haupt OEE: cjne A,#47,go mov LEDs,#10000011b jmp haupt go: jmp haupt mov TL0,#00h mov TH0,#00h mov R2,#0 jmp haupt ;*** UNTERPROGRAMME *** warte_leer: mov TL0,#00h mov TH0,#00h mov TCON,#00010000b reti warte_abfrage: mov TL1,#00h mov TH1,#00h mov TCON,#01010000b reti warte_schreiben: mov TCON,#00010000b ; reti end Sorry wenn es ein bissle unordentlich ist. Hoff aber ihr kommt rein. LG Stine
:
Du könntest den Code natürlich einfach ausprobieren. Oder wenigstens noch sagen, um was für eine Architektur es sich denn handelt. Das ganze Ding mal eben im Kopf durchzuspielen ist nicht ganz trivial, wieso sollte sich jemand diese Mühe machen?
> include C51RD2.inc > um was für eine Architektur es sich denn handelt Steht doch drübär.
doofi schrieb: >> include C51RD2.inc > >> um was für eine Architektur es sich denn handelt > > Steht doch drübär. Ach? Ich tippe mal auf irgendwas 8051-mässiges, aber nur auf Grund dieses Headers darauf zu schliessen, finde ich nicht sehr zuverlässig. Zumal ich mich mit 8051 nicht auskenne, sonst hätte ich den Code wohl auch erkannt. Ändert aber nichts daran, dass die Frage, ob der Code denn funktioniert, reichlich sinnfrei ist.
>doofi Kaum ein Funkamateur dieser Welt kann noch morsen. Da gibt es nur noch wenige Freaks, meist in USA. Selbst die Profis von den Küstenfunkstellen konnten nicht Morsen. Die gerkten ;-), wie auch heute zigtausende auf der Erde... http://de.wikipedia.org/wiki/Friedrich_Clemens_Gerke Holli p.s. das wäre mal was für SWR3-Klugscheißer
Irgendwie sind die Kommentare im Programm bei der Beitragsvorschau flöten gegangen...
Falls der Morse code von einem Prozessor generiert wird, so duerfte eine Decdierung nicht sehr schwierig sein. (Timer Capture und vergleichen) Falls nicht, wird man etwas mehr machen muessen...
Beitrag #4978230 wurde von einem Moderator gelöscht.
Falls das Programm überhaupt Morsecode decodiert, was ich stark bezweifle, wird es innnerhalb kürzester Zeit abstürzen, weil aus den Interrupts in die Auswertung springt und ohne Korrektur des Stacks ins Hauptprogramm zurück.
Beitrag #4981910 wurde von einem Moderator gelöscht.
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.