Hey allemaal
Ben op het moment ff aan het aankloten met een uC, heb hierbij gekozen voor een PIC16F876.
Ik heb het politieproject uit het artikel over de PIC16F84 een beetje veranderd zodat het een 25Hz knipperlichtje wordt en ik wil hem met een schakelaartje aan en uit kunnen zetten.
Ik heb nu dit:
instelporta EQU 085h
instelportb EQU 086h
poorta EQU 005h
poortb EQU 006h
freq EQU 019h ;019h = 25hz
teller EQU 040h
teller2 EQU 041h
strobostatus EQU 042h
ORG 00h ;beginadres kiezen
BSF 03,5 ;kies bank 1
CLRF instelporta ;alle pinnen poort A uitgang maken
CLRF instelportb ;alle pinnen poort B ingang maken
COMF instelportb,1 ;
BCF 03,5 ;kies bank 0
knopdetect BTFSS 043h,003h ;test ingang
GOTO knopdetect ;knop 0, opnieuw
MOVLW 01h ;strobo gaat aan
MOVWF strobostatus ;
GOTO knipper ;knop 1, knipperen maar
knipper MOVLW 01h ;laad 01h in W
MOVWF poorta ;zet de waarde van W
;in porta, oftewel zet de led aan
MOVLW freq ;laad 0FFh in W
MOVWF teller2
verder MOVLW 0FFh
MOVWF teller
opnieuw DECFSZ teller, 1
GOTO opnieuw
DECFSZ teller2, 1
GOTO verder
MOVLW 00h ;laad 00h in W
MOVWF poorta ;zet de waarde van W
;in porta, oftwel doe de led uit
MOVLW freq ;1 cycle
MOVWF teller2 ;1 cycle
again MOVLW 0FFh ;1 cycle
MOVWF teller ;1 cycle
again2 DECFSZ teller, 1 ;1 cycle
GOTO again2 ;2 cycles
DECFSZ teller2, 1
GOTO again
GOTO knipper
END
Maar je raadt het al... Hij blijft in de loop hangen, ook als ik de ingang hoog maak..
Ook is de code nog niet af... Ik wil de grote loop met de zelfde schakelaar weer uit kunnen zetten.. Weet niet of dat mogelijk is? Ik heb iig een statusgeheugentje gemaakt daarvoor [indien nodig]
Iemand een idee waarom?
k.p.meinesz
Een schizofreen is nooit alleen!
laatste regel moet zijn goto knopdetect en niet goto knipper
beter werkt het ook als je nadat je een knop gedetecteerd hebt na 10mS nogmaals te kijken of de knop nog hoog is
is dit het geval dan pas actie uit laten voeren.
dit noemt men debouncen