Hallo. Ich habe ein Programm für den 16f628 geschrieben, das die Dioden abhängig von einem Schalter an RB0 schaltet oder eben nicht. Jetzt brennen keine LEDs am Anfang. Drücke ich ein bißchen auf dem PIC rum brennen alle oder ein paar nur - aber nicht entsprechend dem Muster. Woran kann das liegen ?

P.S.: Die Diodenbeschaltung ist im Code integriert....
Code:
	list p=16F628                
	include "P16F628.INC"    

	__CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC 	

Hundert1	EQU	0x22
Hundert2	EQU	0x23
Zehn	EQU	0x24

    
	org 		0x00                 	;Hier startet der PIC 
	goto 	Beginn 			;Zum Hauptprogramm
               
	org   	0x04        		;Interruptadresse
	BCF	INTCON,INTE
	BCF	INTCON,INTF		;An RB0 gab es keinen Interrupt
	BCF	INTCON, GIE
	GOTO	Entscheiden		;Fragen, ob der Schalter eingeschaltet
							;oder ausgeschaltet ist



Ein
	BCF     	STATUS, RP0		;Bank0 aktivieren
	BCF	STATUS,RP0
	BCF	PORTB,7  		;Gruene Diode deaktivieren
	BSF		PORTA,2  		;Gelbe Diode aktivieren
	;Record ein
	CALL	EineSekunde		;Warten drei Sekunden
	CALL	EineSekunde
	CALL	EineSekunde
	;Record aus
	CALL	EineSekunde		;Warten eine Sekunde
	;Pause ein
	CALL	EineSekunde		;Warten eine Sekunde
	;Pause aus
	BCF	PORTA,2  		;Gelbe Diode deaktivieren
	BSF		PORTA,4  		;Rote Diode aktivieren
	CALL	EineSekunde		;Warten eine Sekunde
	;Kanal ein
	CALL	EineSekunde		;Warten eine Sekunde
	;Kanal aus			
	CALL	EineSekunde		;Warten eine Sekunde
	;Pause ein
	CALL	EineSekunde		;Warten eine Sekunde
	;Pause aus
	BSF		INTCON,RBIE		;Portaenderungsinterrupt für RB0 aktivieren
	BSF		INTCON,INTE		;Externen RB0 Interrupt aktivieren
	BSF		INTCON, GIE		;Alle Interrupts aktivieren
	SLEEP					;Schlafen
	

Aus
	;Stop ein
	BCF     	STATUS, RP0		;Bank0 aktivieren
	BCF	STATUS,RP0
	BCF		PORTA,4  		;Rote Diode deaktivieren
	BSF		PORTB,7  		;Gruene Diode aktivieren
	CALL	EineSekunde	
	CALL	EineSekunde
	;Stop aus
	BSF		INTCON,RBIE		;Portaenderungsinterrupt für RB0 aktivieren
	BSF		INTCON,INTE		;Externen RB0 Interrupt aktivieren
	BSF		INTCON, GIE		;Alle Interrupts aktivieren
	SLEEP					;Schlafen


	

Beginn 
	BCF     	STATUS, RP0		;Bank0 aktivieren
	BCF	STATUS,RP0
	BSF 	CMCON, CM0 	;Alles Digital
    	BSF 	CMCON, CM1 
    	BSF 	CMCON, CM2

	BCF	INTCON, GIE		;Alle Interrupts deaktivieren

	BSF		STATUS,RP0		;Bank1 aktivieren	
	BSF		TRISB,0			;Pin RB0 ist Eingang
	CLRF	TRISA
	BCF	STATUS,RP0
	CLRF	PORTA
	CLRF	PORTB
       bsf		INTCON, RBIE 
	bcf		INTCON, RBIF 	;RB Port hat sich nicht geändert
       bsf		INTCON, GIE		;Alle Interrupts aktivieren

Entscheiden
	BCF     	STATUS, RP0		;Bank0 aktivieren
	BCF	STATUS,RP0
	BTFSS	PORTB,0			;Ist Bit 0 von PortB aktiviert ?
	GOTO	Ein
	GOTO	Aus

EineSekunde
	MOVLW	D'100'
	MOVWF	Hundert1
Warte
	MOVLW	D'100'
	MOVWF Hundert2
Wart
	MOVLW	.10
	MOVWF Zehn
Los
	nop	
	nop	
	nop	
	nop	
	nop	
	nop	
	nop	
	nop	
	nop	
	nop	
	DECFSZ		Zehn,F
	GOTO		Los
	DECFSZ		Hundert2,F
	GOTO		Wart
	DECFSZ		Hundert1,F
	GOTO		Warte
	RETLW		0
	
          end                         ;das Ende des Programms
P.S.:
1. Daß einige Bankänderungen nicht nötig sind, da ich bereits in der Bank bin, ist mir bekannt.

2. Kann man davon ausgehen, daß Success! und Verified! bei FPP auch wirklich für überprüften Erfolg stehen ?