- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: dcf - 77 assemblercode

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.11.2004
    Beiträge
    156
    Anzeige

    Praxistest und DIY Projekte
    Den Unterschied zwischen 100ms und 200ms stellst du ganz einfach fest: Sobald du ein Signal empfängst, startest du eine Zeitschleife mit beispielsweise 150ms. Direkt danach prüfst du, ob das Signal immer noch da ist. Wenn ja, war das Signal mindestens 150ms lang => 200ms, ansonsten 100ms. Falls das Signal "lang" war, musst du dann noch mal über 50ms warten, am besten nochmal 150ms, weil dann das Signal auf jeden Fall wieder weg ist. Dann wartest du so lange, bis das Signal wieder da ist und das Ganze beginnt wieder von vorne.

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    20.04.2005
    Ort
    Hannover
    Alter
    38
    Beiträge
    9
    ich habe folgenden source geschrieben:

    $IC(sfr.def)

    org 4000H //startadresse

    mov p5,#0 //mache alle leds aus
    weiter: mov A,P1 //schreibe das eingangssignal, des dcf77 (p1) in den akku
    mov R4,#01111111B //fülle register 4, mit dem wert
    SUBB A,R4 //ziehe die werte von einander ab
    jz null //wenn der akku null ist, spring zum label null
    jmp eins //ansonsten zum label eins


    null: setb P5.0 //mache die led auf port p5.0 an
    clr P5.1 //mache die led auf port p5.1 aus
    jmp wait //springe zum label wait (zeitschleife)

    eins: setb P5.1 //mache die led auf port p5.1 an
    clr P5.0 mache die led auf port p5.0 aus
    jmp wait //springe zum label wait (zeitschleife)



    wait: mov R7,#3
    wait2: mov R6,#25
    djnz R6,$
    djnz R7,wait2
    jmp weiter

    END

    ich weiss nciht was ic hfür einen fehler gemacht hab.......ich denke mal bei der zeitschleife......ich bekomme immer eine eins auf led P5.1 und keine null!

    hat jemand eine ahnung?

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.03.2005
    Ort
    Nürnberg
    Alter
    44
    Beiträge
    118
    Wie sind den die LEDs genau angeschlossen? Befindet sich noch ein Treiber dazwischen?
    Oder hast du sie zwischen Vcc und Port angschlossen. Dann würden sie ja bei Low-Pegel leuchten.

    Wenn ich das richtig verstanden habe liefert dir der Empfänger ein einzelnes Signal an P1.7. Und du möchtest die Impulslänge auswerten.
    Wenn das so ist probier es mal so:
    Code:
    .equ lednull, P5.0
    .equ ledeins, P5.1
    .equ dcf77, P1.7
    
    ;--------------------------------------------------------------------
    test:
      jnb  dcf77,$         /auf signalanfang warten
      call  wait150        /test ob lang oder kurz
      jb   dcf77,eins     /ist es noch da war es wohl ne eins
    ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    /hier war es eine null
      clr  lednull           /eine empfangene null anzeigen
      setb ledeins        /fals eine eins angezeigt wurde löschen
    jmp test
    ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    eins:
      clr  ledeins          /eine empfangene eins anzeigen
      setb lednull         /fals eine null angezeigt wurde löschen
      jb  dcf77,$          /auf Impulsende warten
    jmp test
    ;---------------------------------------------------------------------
    wait150:
      mov  r7,#XX      /tacktfrequenzabhängig
      mov  r6,#XX      /selbst ausrechnen
    wait150a:
      djnz  r7,$
      djnz  r6,wait150a
    ret
    ;----------------------------------------------------------------------

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.11.2004
    Beiträge
    156
    Also: Du vergleichst im Prinzip Das Muster an Port mit dem vorgegebenen Muster '01111111'. Wenn du auf P5.1 immer eine 1 bekommst, dann heißt das, dass dein Muster in P1 nie diesen Wert annimmt.
    So, wie du dein Programm geschrieben hast, darf an dem Port, an dem deine Antenne angeschlossen ist, nichts anderes angeschlossen werden, die anderen Pins müssen alle auf '1' liegen.
    Mein Tip: Versuche es doch einfach einmal mit dem Befehl sbic oder sbis, damit kannst du ein einzelnes Bit abfragen, und außerdem wäre es auch viel einfacher. Das würde dann so aussehen (Wenn dewin DCF77-Modul an PortB.7 angescglossen ist):
    Code:
    sbis PIND,7
    rjmp null
    rjmp eins

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    20.04.2005
    Ort
    Hannover
    Alter
    38
    Beiträge
    9
    hi leutz....

    erstmal danke für eure schnelle hilfe!

    ich habe es jetzt soweit geschaft:

    ich kann nullen und einsen unterscheiden und auch programmintern behandeln.

    mein problem:

    ich habe jetzt vor, die einzelnen bits zu speichern, den minutenanfang zu finden(da hab ich schon eine ahnung) und in die aktuelle zeit umzurechnen....

    wäre nett, wenn jemand ein programmbeispiel hätte oder mir anderweitig helfen könnte!

    danke für eure teilnahme!

    mfg

    Nick

  6. #16
    Hi an alle,
    wenn Du immer noch was für dcf 77 suchst, ist hier eine Internetseite (www.thelastinstance.de). Die hab ich auch benutzt und für meine Zwecke umgestrickt. Geht gut. Wenn Du noch weitere Fragen hast schreib.
    bis bald Zwickauer

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests