Probleempje met source code voor een pic16F628A

Alle vragen m.b.t digitale schakelingen m.b.v. losse i.c's
en oplossingen m.b.v. PIC processoren.
Plaats reactie
computerman30
Berichten: 18
Lid geworden op: zo 11 mar 2007, 22:42
Locatie: Onderwater . .. .

Probleempje met source code voor een pic16F628A

Bericht door computerman30 »

Goede middag,

Ik heb een poging gedaan om een stukje code te schrijven voor een PIC16F628A.

Wat moet het doen doormiddel van e druk op de knop nadat ik er spanning op heb gezet moet de witte led in een pwm cyclus komen.

Echter het probleem is als ik de spanning erop zet gelijk de led begint in zijn pwm cyclus ZONDER dat ik op de drukknop heb gedrukt.

Dit is de code:
DEVICE 16F628A ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal

SYMBOL LED1 = PORTA.0 ;Poort A.0 heeft nu de naam LED1
SYMBOL S1 = PORTB.0 ;Poort B.0 heeft nu de naam S1

DECLARE PORTB_PULLUPS ON ;On-chip pull-up weerstanden actief
CLEAR ;Wis alle RAM geheugen

;Variabele declareren
DIM Duty AS BYTE ;'Duty' is de variabele die de snelheid v.d. LED bepaalt

;Hoofdprogramma
WHILE 1 = 1 ;Oneindige lus
IF S1 = 0 THEN HIGH LED1 ;S1 gesloten (=laag) LED1 aan
FOR Duty = 1 TO 255 ;LED gaat steeds feller branden tot maximum (= 255)
PWM PORTA.0, Duty, 5 ;Stuur 5 pulsen met pulsbreedte 'Duty', naar PORTA.0
NEXT

FOR Duty = 254 TO 0 STEP -1 ;LED gaat steeds minder fel branden tot (=0)
PWM PORTA.0, Duty, 5 ;Stuur 5 pulsen met pulsbreedte 'Duty', naar PORTA.0
NEXT

WEND

END

Wiee weet wat er mis gaat want ik zie het even niet of heb ik wat over het hoofd gezien of nog niet geplaatst qua tekst in deze code.

Ik hoor graag van jullie.

gegroet.
djenn
Berichten: 1
Lid geworden op: za 22 dec 2012, 12:41
Locatie: . .

Re: Probleempje met source code voor een pic16F628A

Bericht door djenn »

computerman30 schreef:Echter het probleem is als ik de spanning erop zet gelijk de led begint in zijn pwm cyclus ZONDER dat ik op de drukknop heb gedrukt.
De fout zit'm in het if statement, want zoals jij het doet is alleen het aan gaan van de led afhankelijk van de stand van S1.

Code: Selecteer alles

IF S1 = 0 THEN  
    HIGH LED1
    FOR Duty = 1 TO 255 
       PWM PORTA.0, Duty, 5 
   NEXT

   FOR Duty = 254 TO 0 STEP -1
      PWM PORTA.0, Duty, 5
  NEXT
ENDIF
computerman30
Berichten: 18
Lid geworden op: zo 11 mar 2007, 22:42
Locatie: Onderwater . .. .

Bericht door computerman30 »

@djenn,

Bedankt voor je uitleg.
Ik zal dit morgen of een maandag is programmeren in de proton ide tot hex file en kijken of het werken wil.
Je hoort nog van mij.

Mvg,
Computerman
Plaats reactie