Gast
#48822
hallo
ich habe folgende probleme. 1. von pic's habe ich fast keine ahnung
und 2. ein problem mit folgenden: in dem unten stehenden 1.codefragment
wird der wert in Adres UND verknüpft mit 1111. wenn der wert in Adres
<15 (dezimal)ist soll der befehl "retlw 0" ausgeführt werden, wenn
der wert in Adres >15 ist soll der befehl "retlw 0" übersprungen
werden. so weit so gut. wenn ich jetzt allerdings nicht ganz falsch
liege ergeben aber auch bestimmte andere werte (z.B 32, 48, 64, 80, 96)
in Adres bei der UND verknüpfung das ergebnis 0 bzw. das Z flag wird
dementsprechend gesetzt und der befehl "retlw 0" ausgeführt. kann ich
jetzt wie bei dem 2. codefragment die auswertung umändern oder geht das
so nicht?
cu oli
1. codefragment
Retlw_Stufe
movf Adres,W
andlw b'1111' <- originale auswertung
btfsc STATUS,Z <- originale auswertung
retlw 0 ;wenn Adres <15; dann Vbatt<2.65V, Akku leer
movf Adres,W
addlw -0x10 ; die ersten 16 Werte abschneiden
andlw 0x7F ; zur Sicherheit, nur Werte 0 bis 127 erlauben
addwf PCL,F ; aber: kann nicht vorkommen, Adres max. ist 101 für
Vbatt=4.12V
retlw 0 ; 16
2. codefragment
Retlw_Stufe
movf Adres,W
sublw D'15' <- meine änderung
btfsc STATUS,C <- meine änderung
retlw 0 ; wenn Adres <15; dann Vbatt<2.65V, Akku leer
movf Adres,W
addlw -0x10 ; die ersten 16 Werte abschneiden
andlw 0x7F ; zur Sicherheit, nur Werte 0 bis 127 erlauben
addwf PCL,F ; aber: kann nicht vorkommen, Adres max. ist 101 für
Vbatt=4.12V
retlw 0 ; 16