Ich habe jetzt einmal den Teil mit der If-Schleife etwas umgeschrieben und die Befehle für den AD-Wandler erst mal ausgeschlossen, um hier eine Fehlerquelle auszuschließen. Stattdessen setze ich einen manuellen Wert, der überprüft werden soll. Jetzt leuchet immer die 2. LED, obwohl eigentlich noch die 4. leuchten sollte.
Ich muss irgendwo einen Denkfehler haben, den ich einfach nicht finde. Kann mir jemand weiterhelfen?
Code:
Start
call Delay
clrwdt
clrf PORTA
clrf PORTB
bsf STATUS,0 ; Status,0 auf eins setzten
movlw 50h ; einen Testwert setzten, so dass die 4. und 2. LED leuchten sollte
movwf SPEICHER
; Erste Überprüfung
movlw SPEICHER
SUBLW 15h ;von 15 w abziehen und wieder in w schreiben, wenn Speicher kleiner als 15 ist, wird das C-Flag gelöscht
movlw 04h ; LED 1 an
movwf PORTA
BTFSC STATUS,0 ;wenn STATUS,0=1 , dann übersprigen
goto Start
; Zweite Überprüfung
movlw SPEICHER
SUBLW 2Bh ;von w 17 abziehen und wieder in w schreiben
movlw 08h ; LED 2 an
movwf PORTA
BTFSC STATUS,0 ;wenn STATUS,0=0 , dann übersprigen
goto Start
; Dritte Überprüfung
movlw SPEICHER
SUBLW 41h ;von w 16 abziehen und wieder in w schreiben
movlw 02h ; LED 3 an
movwf PORTB
BTFSC STATUS,0 ;wenn STATUS,0=0 , dann übersprigen
goto Start
; Vierte Überprüfung
movlw SPEICHER
SUBLW 57h ;von w 16 abziehen und wieder in w schreiben
movlw 04h ; LED 4 an
movwf PORTB
BTFSC STATUS,0 ;wenn STATUS,0=1 , dann übersprigen
goto Start
; Fünfte Überprüfung
movlw SPEICHER
SUBLW 6Ch ;von w 15 abziehen und wieder in w schreiben
movlw 10h ; LED5 an
movwf PORTB
BTFSC STATUS,0 ;wenn STATUS,0=1 , dann übersprigen
goto Start
; Sechste Überprüfung
movlw SPEICHER
SUBLW 82h ;von w 16 abziehen und wieder in w schreiben
movlw 20h ; LED 5 an
movwf PORTB
BTFSC STATUS,0 ;wenn STATUS,0=1 , dann übersprigen
goto Start
goto Start
Lesezeichen