Forum: Mikrocontroller und Digitale Elektronik Morse Code Decoder


von Stine (Gast)


Lesenswert?

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

:
von Philipp B. (philipp_burch)


Lesenswert?

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?

von doofi (Gast)


Lesenswert?

> include C51RD2.inc

> um was für eine Architektur es sich denn handelt

Steht doch drübär.

von Philipp B. (philipp_burch)


Lesenswert?

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.

von doofi (Gast)


Lesenswert?

Wahrscheinlich kann der OP nicht morsen :-)

von aha (Gast)


Lesenswert?

Das konzept bitte ?

von Holli (Gast)


Lesenswert?

>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

von STK500-Besitzer (Gast)


Lesenswert?

Irgendwie sind die Kommentare im Programm bei der Beitragsvorschau 
flöten gegangen...

von Bernd (Gast)


Lesenswert?

Der Code des Threadstarters sieht abgetippt oder nach Disassembler aus.

von aha (Gast)


Lesenswert?

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.
von Mario M. (thelonging)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hat sich erledigt. Der uralte Thread wurde von einem Bot ausgegraben.

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
Noch kein Account? Hier anmelden.