hallo,

Ik ben een beginner in µC's en zoals je aan de titel kan zien ben ik bezig met een klapschakelaar te maken. Met andere woorden: wanneer de PIC16F84A twee maal kort achter elkaar een signaal ontvangt op poort A, stuurt hij uit op poort B. Als hij nog maals twee signalen krijgt, wordt poort B weer 0.
Ik heb de softwaire in .asm geschreven, maar na het programmeren, doet de µC niets. Ik heb het programma al verschillende keren nagekeken op fouten of foute redeneringen, maar nu kan ik echt niets meer vinden. Volgens mij zit het hem in de configuratie van de controller, maar dat kan ik niet met zekerheid zeggen.
Hier is de broncode:

 
;---------------------klapschakelaar---------------------------
;
;	programmafunctie: het afwisselend aan en uit schakelen 
;	van een relais bij 2 kort achter elkaar volgende pulsen
;	als trigger.			
;	Controller: PIC16F84A
;
;--------------------------------------------------------------

porta		EQU	05h
portb		EQU	06h
instelporta	EQU	85h
instelportb	EQU	86h
teller1		EQU	20h
teller2		EQU	21h
flipflopmry	EQU	22h
klaptellermry	EQU	23h

;----------configuratie-----------------------------------------

	#include p16F84A.inc

__config _XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF 

;start code

		ORG	00h	

		BSF	03,5
		CLRF	instelportb
		MOVLW	0FFh
		MOVWF	instelporta
		BCF	03h,5
		GOTO	start

;---------------tuimel flipflop--------------------------------

tuimelff	BTFSS	flipflopmry, 1
		GOTO	out1
		GOTO	out0

out1		MOVLW	01h
		MOVWF	flipflopmry
		MOVLW	01h
		MOVWF	portb
		GOTO	start

out0		CLRF	flipflopmry
		CLRF	portb
		GOTO	start

;--------------------delay-------------------------------------

delay		MOVLW	0FFh
		MOVWF	teller2
loop2		MOVLW	0FFh
		MOVWF	teller1
loop		BTFSC	porta, 1
		GOTO	klapteller
		NOP
		DECFSZ	teller1
		GOTO	loop
		NOP
		DECFSZ	teller2
		GOTO	loop2
		CLRF	klaptellermry
		CLRW
		GOTO	start

;--------------------start------------------------------------

start		MOVLW	02h
		MOVWF	klaptellermry
start2		BTFSC	porta, 1
		GOTO	klapteller
		GOTO	start2	

;------------------klapteller---------------------------------

klapteller	BTFSC	porta, 1
		GOTO	klapteller
		DECFSZ	klaptellermry
		GOTO	delay
		GOTO	tuimelff

		END

alvast bedankt

Heb je er een kristal aan hangen?
Ik zie helemaal geen initialisatie.
Je zult toch minimaal je TRIS-registers moeten instellen, om aan te geven wat de ingang(en) en wat de uitgang(en) worden.
Of zijn dat soms de "instelpoorten"? :P
Heeft dat ding alleen maar een bank0?
EDIT:
Vervang instelporta door TRISA
instelportb door TRISB
03,5 door STATUS,RP0
Dat maakt het een stuk leesbaarder.

Die porta EQU 05 t/m instelpoortb EQU 86h
kun je weglaten, dat wordt benoemd in je include-file P16F84A.inc die je er al bij hebt staan.

[Bericht gewijzigd door Zonnepaneeltje op ]

Over je broncode kan ik niets zeggen - ik werk niet met PIC's en evenmin met assembler. Maar de meest logische aanpak bestaat er in, de zaak stapsgewijs aan te pakken:
LED laten knipperen op poort B.
LED op poort B het niveau op poort A laten volgen.
LED op B toggelen bij een niveau-wisseling op A.
Enz...

Als er op zeker ogenblik iets misloopt, weet je dat daar de (een) fout zit.

Bedankt! Het werkt nu dankzij een aantal stappen te doorlopen. De grote fout zat niet in de configuratie maar een 1tje moest een nulletje zijn in de volgende regel:

tuimelff	BTFSS	flipflopmry, 1

. Dit zorgde ervoor dat het ledje aan kon, maar niet meer uit.

Ondertussen ben ik gaan experimenteren in MPLAB IDE. Ik heb gehoord dat je je coded kan simuleren met de debugger MPLAB SIM, maar hoe doe je dit precies? Het zou een stuk gemakkelijker zijn bij het foutzoeken in de toekomst. Heeft iemand hier al enige ervaring mee?