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