Titel zegt het al.

Ik heb op een 16F84A naar voedingsspanning een schakelaar (maakcontact uiteraard) aangesloten naar pin 18.
Naar 0 is een weerstand van 1 k geplaatst.

Tot 2 weken geleden werkte het, ik heb de hele schakeling een week laten liggen, en nu reageert hij ineens nergens meer op.

De code is onveranderd gebleven:

trisa		EQU	85h
porta		EQU	05h
trisb     	EQU	86h
portb		EQU	06h
teller		EQU	40h
teller2	        EQU	41h

		ORG     00h

		BSF     03,5	
		CLRF    trisb
		BCF     03,5

BLP		MOVLW   0x0F
		MOVWF   portb
		CALL	delaya

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delaya

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	lang
		CALL	lang

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delaya

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delaya

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	lang
		CALL	lang

check1		BTFSC	05h, 01h
		GOTO	rechts
		GOTO	BLP
		
rechts          MOVLW	0x0F0	
		MOVWF	portb
		CAll	delay	

		MOVLW	00h
		MOVWF	portb
		CALl	delay2

	 	MOVLW	0x0F0
		MOVWF	portb
		CALL	delay
		
		MOVLW	00h
		MOVWF	portb
		CALl	delay2

	 	MOVLW	0x0F0
		MOVWF	portb
		CALL	delay
		
		MOVLW	00h
		MOVWF	portb
		CALl	delay2

		MOVLW   0x0F
		MOVWF   portb
		CALL	delaya

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delaya

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F
		MOVWF   portb
		CALL	lang
		CALL	lang

check2		BTFSC	05h, 01h
		GOTO	links
		GOTO	rechts

links		MOVLW   0x0F0
		MOVWF   portb
		CALL	delaya

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delaya

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	delayb

		MOVLW   00h
		MOVWF   portb
		CALL	delayb

		MOVLW   0x0F0
		MOVWF   portb
		CALL	lang
		CALL	lang
		
                MOVLW	0x0F	
		MOVWF	portb
		CAll	delay	

		MOVLW	00h
		MOVWF	portb
		CALl	delay2

	 	MOVLW	0x0F
		MOVWF	portb
		CALL	delay
		
		MOVLW	00h
		MOVWF	portb
		CALl	delay2

	 	MOVLW	0x0F
		MOVWF	portb
		CALL	delay
		
		MOVLW	00h
		MOVWF	portb
		CALl	delay2

		BTFSC	05h, 01h
		GOTO	dxldxr
		GOTO	links

dxldxr		MOVLW	0x0F	
		MOVWF	portb
		CAll	delay	

		MOVLW	00h
		MOVWF	portb
		CALl	delay2

	 	MOVLW	0x0F
		MOVWF	portb
		CALL	delay
		
		MOVLW	00h
		MOVWF	portb
		CALl	delay2

	 	MOVLW	0x0F
		MOVWF	portb
		CALL	delay
		
		MOVLW	00h
		MOVWF	portb
		CALl	delay2

                MOVLW	0x0F0	
		MOVWF	portb
		CAll	delay	

		MOVLW	00h
		MOVWF	portb
		CALl	delay2

	 	MOVLW	0x0F0
		MOVWF	portb
		CALL	delay
		
		MOVLW	00h
		MOVWF	portb
		CALl	delay2

	 	MOVLW	0x0F0
		MOVWF	portb
		CALL	delay
		
		MOVLW	00h
		MOVWF	portb
		CALl	delay2

		BTFSC	05h, 01h
		GOTO	BLP
		GOTO	dxldxr

delay	        MOVLW	0x082
        	MOVWF	teller2
verder	        MOVLW	0x082
        	MOVWF	teller
opnieuw         DECFSZ	teller, 1
		GOTO	opnieuw
		DECFSZ	teller2, 1
		GOTO	verder
		RETLW	00h

delay2	        MOVLW	0x0FF
        	MOVWF	teller2	
verder2		MOVLW	0x0FF
        	MOVWF	teller
opnieuw2        DECFSZ	teller, 1
        	GOTO	opnieuw2
        	DECFSZ	teller2, 1
        	GOTO	verder2
		RETLW	00h

lang		MOVLW   0FFH
		MOVWF   teller2
verder11	MOVLW   0FFh
		MOVWF   teller
opnieuw11	DECFSZ  teller, 1
		GOTO    opnieuw11
		DECFSZ  teller2, 1
		GOTO    verder11
		RETLW	00h

delay3          MOVLW	0xFF
        	MOVWF	teller2	
verder3		MOVLW	0xFF
        	MOVWF	teller
opnieuw3        DECFSZ	teller, 1
        	GOTO	opnieuw3
        	DECFSZ	teller2, 1
        	GOTO	verder3
		RETLW	00h

delaya		MOVLW   2A
		MOVWF   teller2
verder1a	MOVLW   2A
		MOVWF   teller
opnieuw1a	DECFSZ  teller, 1	
		GOTO    opnieuw1a
		DECFSZ  teller2, 1	
		GOTO    verder1a
		RETLW	00h

delayb		MOVLW   55
		MOVWF   teller2
verder2a	MOVLW   55
		MOVWF   teller
opnieuw2a	DECFSZ  teller, 1
		GOTO    opnieuw2a
		DECFSZ  teller2, 1
		GOTO    verder2a
		RETLW	00h

		END

Excuses dat de code (in mijn ogen) een behoorlijke bende is.

In plaats van verder springen naar een ander programma, lichten nu de LED's op die niet aan horen te zijn (wel zwak, maar ze lichten duidelijk op) en gaan de LED's die wel aan horen te zijn zwakker branden.

Ik heb nu al 'alles' geprobeerd, schakelaar naar pin 17 verplaatst, naar de resterende drie andere pinnen op poort a, geen resultaat.
Andere PIC, zelfde testen: geen resultaat.
Inmiddels kan ik wel zeggen dat ik wanhopig ben, en niet meer weet waar het probleem zit.
Je zou bijna gaan denken dat de bitjes eruit gelekt zijn :P

Klinkt alsof voeding rare dingen doet. uC is ontkoppeld? Zit ook daadwerkelijk aan Vcc en GND (even met de meter controleren)? Je voeding staat niet te oscilleren? Die pin waar je schakelaar aan hangt is niet als output gedefinieerd (sorry, doe nooit wat met MicroChip, dus ga ook de taal niet leren).

Wow, wat een verhaal zeg. Ik ben niet zo goed in assembler dus ik ga dat niet helemaal doorlezen. Zoals marco al zegt kan het goed liggen aan de voeding. Heb je een 100nF dicht genoeg over de PIC geplaatst?

En hoe zit het met je reset?
Aan + hangen.

uC is ontkoppeld, snap niet helemaal wat je bedoelt of dat ook echt aan Vcc en massa is, maar eh ja, schakeling nalopen levert echt Vcc en massa op.

En chipje: natuurlijk wordt die met een 10 k weerstandje constant hoog gehouden. ;)

Begrijp me trouwens niet verkeerd: het programma wat ie uitvoerd is helemaal stabiel, geen rare (vanzelf) verspringers ofzo, waar hij mee start voert ie goed uit, en 2 weken geleden reageerde hij dus nog op een laagpuls hoogpuls via de schakelaar.
Echter een week later reageert hij niet meer.

Over de voeding: het lijkt mij dat de 5 volt van een computer voeding stabiel zat is, en overigens heeft hij op elke voeding hetzelfde probleem, 5 volt vast of niet (regelen op 5 volt dus)

De pin waar de schakelaar aanhangt is niet als output gedefinieerd? (ik heb het liever over in of uitgangen)
Bij een schakelaar moet deze toch als ingang (1ngang) gedefinieerd staan.
Volgens het datablad is poort a bij inschakeling allemaal gedefinieerd als ingang, dus daar zit het niet (zou ook niet verklaren waarom hij het eerst wel deed) (alhoewel ik ook geen verklaring weet waarom hij het nu ineens niet meer doet)

Ok, het bleek dus helemaal mijn fout te zijn.

Na verwijdering van een teller met een 7 segmentsdisplay had ik ook een massaverbinding onderbroken, waardoor de schakelaar dus alleen aan voedingsspanning verbonden werd, en geen laagtrekking naar massa meer had.

Na herstellen van die verbinding werkt hij weer zoals hoort.

Wil ik iedereen hier toch bedanken voor het meedenken.