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"? 
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 ]
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
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?