mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Morse Code Decoder


Autor: Stine (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

:
Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: doofi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> include C51RD2.inc

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

Steht doch drübär.

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: doofi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wahrscheinlich kann der OP nicht morsen :-)

Autor: aha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das konzept bitte ?

Autor: Holli (Gast)
Datum:

Bewertung
-1 lesenswert
nicht 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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie sind die Kommentare im Programm bei der Beitragsvorschau 
flöten gegangen...

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Code des Threadstarters sieht abgetippt oder nach Disassembler aus.

Autor: aha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
Autor: Mario M. (thelonging)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat sich erledigt. Der uralte Thread wurde von einem Bot ausgegraben.

Beitrag #4981910 wurde von einem Moderator gelöscht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.