Timer in picbasic

Alle vragen m.b.t digitale schakelingen m.b.v. losse i.c's
en oplossingen m.b.v. PIC processoren.
Plaats reactie
lollipop dolli
Berichten: 47
Lid geworden op: ma 11 jun 2007, 1:16
Locatie: Hamme. .. .. .

Timer in picbasic

Bericht door lollipop dolli »

Dag allen,

Ik ben reeds een tijdje bezig aan een timer voor men nieuwe lichtbak. Blijkbaar ben ik wel nog steeds een krabber met picbasic. De volgende code zou eerst voor het testen alle ledpanelen doorlopen (heb er 3 om te kunnen kiezen volgens pcb grootte). Daarna zou de tijd ingesteld worden.
Tijd_omhoog is de subroutine voor het verhogen van de tijd, Tijd_omlaag voor het verlagen ... enz enz. Ik dacht te beginnen met het testen van het verhogen, maar aangezien dat al niet werkt post ik hier maar even...

Hetgeen niet werkt is het verhogen, de testomloop werkt wel.

Code: Selecteer alles

Device 16F628A
Config intrc_osc_noclkout, wdt_off, pwrte_on, lvp_off, mclre_off
ALL_DIGITAL true
PORTB_PULLUPS On
Clear

;Scherm instellen
DelayMS 250       ;lcd stabilisatie
Cls               ;scherm leegmaken

;Poorten instellen
;        76543210
PORTA = %00000000
PORTB = %00000000
TRISA = %11100010
TRISB = %00000011

;Logische constanten
Symbol aan = 1
Symbol uit = 0
Symbol Iaan = 0
Symbol Iuit = 1

;Constanten
Symbol Toontijd_opstarten = 2500

;Poorten benoemen
Symbol Omhoog = PORTB.0
Symbol Omlaag = PORTB.1
Symbol Start = PORTA.5
Symbol Stoppen = PORTA.1
Symbol buzzer = PORTA.0
Symbol leds1 = PORTA.2
Symbol leds2 = PORTA.3
Symbol leds3 = PORTA.4

;Variabelen declareren
Dim min_resterend As Byte
Dim sec_resterend As Byte
Dim minuten As Byte
Dim seconden As Byte
Dim buzztel As Byte

;Introductie: alle ledborden en buzzer testen
seconden = 0
minuten = 0
buzztel = 0
;              0123456789ABCDEF
Print At 1,1, "Uv-led lichtbak "
Print At 2,1, "Versie 1.0      "
DelayMS Toontijd_opstarten
Print At 1,1, "(c) 2008 Zatar  "
Print At 2,1, "                "
DelayMS Toontijd_opstarten
Print At 1,1, "Test Drive      "
Print At 2,1, "Paneel 1        "
leds3 = uit
leds1 = aan
DelayMS Toontijd_opstarten
Print At 2,1, "Paneel 2        "
leds1 = uit
leds2 = aan
DelayMS Toontijd_opstarten
Print At 2,1, "Paneel 3        "
leds2 = uit
leds3 = aan
DelayMS Toontijd_opstarten
leds3 = uit
Repeat
    buzzer = aan
    DelayMS 200
    buzzer = uit
    DelayMS 200
    Inc buzztel
Until buzztel = 5


;Hoofdprogramma: instellen tijd, starten en uitschakelen na afloop
Main:
While 1 = 1
    Tijd_instellen:     ;hier stel ik de tijd in die afgelopen moet worden
        While Omhoog = uit And Omlaag = uit And Start = uit And Stoppen = uit : Wend
        GoSub Instelling_tonen ;sub voor het printen van de tekst
        GoSub Tijd_omhoog ;in deze subroutine zal gekeken worden of de drukknop voor het verhogen van de tijd is ingedrukt.
        GoSub Tijd_omlaag ;in deze subroutine zal gekeken worden of de drukknop voor het verlagen van de tijd is ingedrukt.
        GoSub Starten ;in deze sub zal gekeken worden of start is ingedrukt, zo ja zal de tijd beginnen aftellen
Wend    


Instelling_tonen:
;                  0123456789ABCDEF
    Print At 1,1, "Tijd instelling:"
    Print At 2,1, Rep " "\16
    Print At 2,1, Dec minuten, " min : ", Dec seconden, " sec"
    Return



Tijd_omhoog:
    If Omhoog = aan Then
        Inc seconden
        If seconden = 60 Then
            Inc minuten
            seconden = 0
        DelayMS 75
        EndIf
    EndIf
    Return

Tijd_omlaag:
Starten:    


End
Bijlagen
PB.zip
(1.59 KiB) 388 keer gedownload
professioneel groentje :;):
lollipop dolli
Berichten: 47
Lid geworden op: ma 11 jun 2007, 1:16
Locatie: Hamme. .. .. .

Bericht door lollipop dolli »

Niemand? :(
professioneel groentje :;):
Gebruikersavatar
Stynus
Site Admin
Site Admin
Berichten: 5971
Lid geworden op: vr 16 mei 2003, 20:45
Locatie: Overpelt (België)
Contacteer:

Bericht door Stynus »

Loopt je tijd te snel door bij het instellen?
Met vriendelijke groet,
Stynus
http://www.elektronicastynus.be
Plaats reactie