Gast
#873882
Hallo zusammen,
habe folgendes Problem:
Ich habe eine Analoge Sinuskurve, die in 10Bit digital umgewandelt wird.
Die Abtastungen sind ca. alle 30ms.
Die 10Bit sind aufgeteilt in P5 (bit 9, 8) und P4 (bit 7-0).
Nebenbei läuft ein Rechtecksignal. Das toggelt immer an der Grenz zu
2,5V (die Hälfte).
Ich habe nun folgende kleine Programme geschrieben die jeweils den
kleinsten Wert von P4 und P5 ermitteln.
Ich brauche nun eine Ausgabe, die immer nur das neuste Maxima bzw Minima
anzeigt. Da die Kurve ja periodisch weiter läuft...
Steh grad auf dem Schlauf und weiß nicht wie ich das realisieren kann.
Hat jemand eine Idee/ Vorlage/ Fertiges UP?
Viele Grüße
Aufruf aus der ISR (timer0)
timer0:
.........
.....
..
Wandlung usw in P5, P4 (Beispiel: 11 (P5) 1100 1010 (P4))
call kleinste_P5_in_R2 ; Vorheriger Wert R5 wird mit P5 verglichen
call kleinste_P4_in_R3 ; Vorheriger Wert R4 wird mit P4 verglichen
mov R5, P5
mov R4, P4
...
...
.....
ret
; +++ Findet kleinsten Wert von P5 und schreibt diesen in R2 +++
kleinste_P5_in_R2:
mov A, R5
cjne A, P5, ungleich_P5 ; R2 wird mit P5 verglichen
sjmp R5_KlGl_P5 ; C=0, R2=P5
ungleich_P5: jc R5_KlGl_P5 ; C=1, R2<P5
jmp R5_Gr_P5 ; C=0, R2>P5
R5_KlGl_P5: ; R2<=8
ret
R5_Gr_P5:
mov r2, P5
ret
; +++ Findet kleinsten Wert von P4 und schreibt diesen in R3 +++
kleinste_P4_in_R3:
mov A, R4
cjne A, P4, ungleich_P4 ; R2 wird mit P5 verglichen
sjmp R4_KlGl_P4 ; C=0, R2=P5
ungleich_P4: jc R4_KlGl_P4 ; C=1, R2<P5
jmp R4_Gr_P4 ; C=0, R2>P5
R4_KlGl_P4: ; R2<=8
ret
R4_Gr_P4:
mov r3, P4
ret
