Hey allemaal

Ben op het moment ff aan het aankloten met een uC, heb hierbij gekozen voor een PIC16F876.

Ik heb het politieproject uit het artikel over de PIC16F84 een beetje veranderd zodat het een 25Hz knipperlichtje wordt en ik wil hem met een schakelaartje aan en uit kunnen zetten.

Ik heb nu dit:


instelporta     EQU	085h
instelportb	EQU	086h
poorta		EQU	005h
poortb		EQU	006h
freq		EQU	019h		;019h = 25hz
teller		EQU	040h
teller2	        EQU	041h
strobostatus	EQU	042h


                ORG	00h     	;beginadres kiezen

		BSF 	03,5		;kies bank 1
		CLRF	instelporta	;alle pinnen poort A uitgang maken
		CLRF	instelportb	;alle pinnen poort B ingang maken
		COMF    instelportb,1	;
	        BCF 	03,5		;kies bank 0

knopdetect	BTFSS	043h,003h	;test ingang
		GOTO	knopdetect	;knop 0, opnieuw
		MOVLW	01h		;strobo gaat aan
		MOVWF	strobostatus	;
		GOTO	knipper		;knop 1, knipperen maar




knipper	        MOVLW	01h		;laad 01h in W
		MOVWF	poorta		;zet de waarde van W
					;in porta, oftewel zet de led aan

                MOVLW	freq		;laad 0FFh in W
        	MOVWF	teller2
verder          MOVLW	0FFh
        	MOVWF	teller
opnieuw         DECFSZ	teller, 1
        	GOTO	opnieuw
        	DECFSZ	teller2, 1
        	GOTO	verder

		MOVLW	00h		;laad 00h in W
		MOVWF	poorta		;zet de waarde van W
					;in porta, oftwel doe de led uit

                MOVLW	freq		;1 cycle
        	MOVWF	teller2		;1 cycle
again		MOVLW	0FFh		;1 cycle
        	MOVWF	teller		;1 cycle
again2	        DECFSZ	teller, 1       ;1 cycle
        	GOTO	again2		;2 cycles
        	DECFSZ	teller2, 1
        	GOTO	again

		GOTO	knipper
		END

Maar je raadt het al... Hij blijft in de loop hangen, ook als ik de ingang hoog maak..
Ook is de code nog niet af... Ik wil de grote loop met de zelfde schakelaar weer uit kunnen zetten.. Weet niet of dat mogelijk is? Ik heb iig een statusgeheugentje gemaakt daarvoor [indien nodig]

Iemand een idee waarom?

laatste regel moet zijn goto knopdetect en niet goto knipper

beter werkt het ook als je nadat je een knop gedetecteerd hebt na 10mS nogmaals te kijken of de knop nog hoog is
is dit het geval dan pas actie uit laten voeren.
dit noemt men debouncen