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







Zitieren

Lesezeichen