rogerberglen
19.08.2007, 18:14
Ich bekomme vom AD-Wandler einen 10-Bit Wert der mit einem 10-Bit Vorgabewert verglichen werden soll. Es sollen je nach AD-Wert verschiedene Ausgänge aktiviert werden.
Immer nur einer in einem bestimmten Zahlenbereich. Ich komme einfach nicht dahinter wie man den nun diese Zahlenwerte vergleicht. Denn es kann ja vorkommen, daß der High-Wert niedriger ist als der Vorgabewert und der Low-Wert kann höher sein als der Low-Vorgabewert.
Oder das Ganze kann ja auch umgekehrt der Fall sein.
Ich muß also feststellen ob die 10-Bit Zahl innerhalb des vorgegebenen Fensters liegt, höher oder niedriger ist.
LED1:
ldi EEprom,0x00 ; Vergleichswertadresse vorgeben
rcall LeseEEprom ; und Wert aus EEprom holen
cp ADHigh,TPHigh ; High-Byte vergleichen
brlo LED11
cbr Vergleich,0b00000010
;rjmp LED2
LED11:
sbr Vergleich,0b00000010
cp ADLow,TPLow
brlo LED12
cbr Vergleich,0b00000001
rjmp LED2
LED12:
sbr Vergleich,0b00000001
cpi Vergleich,3
brne LED2
cbr LEDStat,0b00000001
out PORTB,LEDStat
So funktioniert es nicht richtig!
Immer nur einer in einem bestimmten Zahlenbereich. Ich komme einfach nicht dahinter wie man den nun diese Zahlenwerte vergleicht. Denn es kann ja vorkommen, daß der High-Wert niedriger ist als der Vorgabewert und der Low-Wert kann höher sein als der Low-Vorgabewert.
Oder das Ganze kann ja auch umgekehrt der Fall sein.
Ich muß also feststellen ob die 10-Bit Zahl innerhalb des vorgegebenen Fensters liegt, höher oder niedriger ist.
LED1:
ldi EEprom,0x00 ; Vergleichswertadresse vorgeben
rcall LeseEEprom ; und Wert aus EEprom holen
cp ADHigh,TPHigh ; High-Byte vergleichen
brlo LED11
cbr Vergleich,0b00000010
;rjmp LED2
LED11:
sbr Vergleich,0b00000010
cp ADLow,TPLow
brlo LED12
cbr Vergleich,0b00000001
rjmp LED2
LED12:
sbr Vergleich,0b00000001
cpi Vergleich,3
brne LED2
cbr LEDStat,0b00000001
out PORTB,LEDStat
So funktioniert es nicht richtig!