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
;----------------------------------------------------------------------
Lesezeichen