OK nu har jag lärt mig att använda picen för att blinka lite med lysdioder och sånt.
Men jag kom att tänka på, hur gör jag om jag tex vill koppla in en knapp till picen och när den sluts så ska en lysdiod tändas i 5 sek och sen slockna?
Och om jag vill göra tvärtom dvs om en anslutning till picen bryts så ska en led tändas i 5sek?
Edit: Ny fråga längst ner
Senast redigerad av Selpix 3 juni 2004, 13:48:19, redigerad totalt 1 gång.
Principen är sådan att du alltid har en programloop som ska loopa så ofta som möjligt. I loopen lägger du en if-sats som kollar vilket läge I/O-pinnen knappen är kopplad till står i. Via if-satsen hoppar du sedan till en rutin som utför det du önskar. När den utfört det du önskar hoppar den tillbaks till den eviga loopen...
Så bör du koppla in knappen. När den trycks ner ska den leda jorden till PICens önskade I/O-pinne. När den inte trycks ned ska den dras hög av ett motstånd på några kOhm (ta vad du har så länge det är kOhm ).
knapp var portb.0
input knapp
main_loop:
if knapp = 0 then knapp_tryckt
'Fyll ut med annat här vid behov
goto main_loop
knapp_tryckt:
'Hitta på något att göra när knappen trycks ner
goto main_loop
end
Så är det bara att fylla ut...
portb.0 kan naturligtvis bytas mot vilken pinne du vill!
Alltså vi säger att jag vill ha en "timer" som blinkar en led i en viss takt och sen vill jag ha en annan som blinkar en annan led i en helt annan takt. De ska alltså inte bero av varandra.
Går det , eller kan man lösa på något annat sätt?
"ps, ni som använt vb så är det samma funktion som de timers man använder där som jag är ute efter"
Det är inte helt enkelt att göra flera saker samtidigt med en PIC, men det går.
Det finns timers man kan använda. Dom funderar så att dom räknar upp ett steg för varje programsteg som körs (eller varannat, var fjärde eller något av de andra fasta valmöjligheter som finns).
Dom är dock inte helt busenkla att använda, så kan man undvika dom så gör man gärna det...
Nja. Det blir inte så farligt svårt. Det är bara att använda en timer, och i program-loopen kolla hur lång tid sedan det var varje diod släcktes eller tändes(med hjälp av timern). När en viss tid har utlöpt, tänds eller släcks dioden.
Om du inte vill använda timers och interrupt (vilket du egentligen borde) kan du ju ha olika räknare som du räknar upp olika fort och tänder/släcker dioderna då räknarvariabeln slår över/blir full....blir egentligen samma sak som timers och interrupt men ineffektivare och krångligare....
Interrupt gör du inte gärna i PICBasic. Då måste nästan använda assembler för att det ska bli bra. Såå, bara att börja läsa asm. Det står hur timers fungerar i databladen för respektive mikrokontroller.