Hallo zusammen,
Ich habe ein Programm geschrieben, welches im Prinzip aus einem Taster einen Umschalter machen soll.
Das heißt, wenn der Taster gedrückt wird, sollen zwei LEDs angeschaltet werden und das Programm in einer Abfrageschleife bleiben.
Bei erneutem drücken sollen die LEDs wieder aus gehen und das Programm in einer anderen Schleife den Taster abfragen.

Leider scheint es irgendwie Probleme bei der Abfrage zu geben und mal wird der Befehl übersprungen und mal nicht (obwohl der Taster nicht betätigt wird)

Ich habe schon an einigen Stellen des Programms andere LEDs bzw. ausgänge auf 1 gesetzt und dadurch gesehen, dass das Programm wild durchsprungen wird, ohne den Taster korrekt abzufragen.

Jetzt vermute ich, das irgendetwas mit der Initialisierung des Tasters nicht stimmt. Oder liegt es vielleicht doch an der Hardware?

Vielen Dank fürs durchschauen.

Code:
;$$$$$$$$$$$$$$ -- CONFIG -- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	list p=16f84a
	include "p16f84a.inc"

	 __config   _XT_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF ;CONFIG


	cblock  0x22 					; Variablen kenzeichnen
		ZAEHLER1 
		ZAEHLER2

	endc  

;$$$$$$$$$$$$$$$$ -- INIT -- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	org		0x00


	bsf		STATUS, RP0				;Wechsel in Bank 1
	movlw	0x00					;PORTB OUTPUT
	movwf	TRISB					;
	movlw	0x01					;PORTA INPUT
	movwf	TRISA					;
	bcf		STATUS, RP0				;Wechsel in Bank 0
	clrf	PORTB


	movlw	0x00					;PORTB, setze alle Bits 0
	movwf 	PORTB

	goto	main	
	
;$$$$$$$$$$$$$$ -- MAIN -- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$



main
	movlw	0x00					;PORTB, setze alle Bits 0
	movwf 	PORTB
	call	wait


loop								;Abfrage von Taster
	BTFSS	PORTA,0					
	CALL	switch	
	goto	main


;$$$$$$$$$-SUBRUTINES-$$$$$$$$

		

switch
								
	movlw	0x03					;PORTB, setze Bits 1 und 2
	movwf 	PORTB
	call	wait

loop3
	
	BTFSS	PORTA,0	
	call	main
	call	wait
	goto 	loop3	
			
	return	




wait								;Warteschleife
loop1	decfsz	ZAEHLER1,1
		goto	loop1
		decfsz	ZAEHLER2,1
		goto	loop1
loop2	decfsz	ZAEHLER1,1
		goto	loop2
		decfsz	ZAEHLER2,1
		goto	loop2

		return

	end

http://mitglied.lycos.de/schtiewen/switchbox.bmp " rel="nofollow" target='_blank'>Bild hier