 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
infernal Član


Pridružen-a: Pet 29 Jun 2007 0:46 Prispevkov: 239 Aktiv.: 1.09 Kraj: Maribor
|
Objavljeno: Čet Dec 06, 2007 7:50 pm Naslov sporočila: Pomoč začetniku v Bascomu. |
|
|
Lep pozdrav.
Program:
Koda: |
$regfile = "89c2051.dat"
$crystal = 4000000
$baud = 9600
Config Lcd = 16 * 1a
Config Lcdbus = 4
Config Lcdpin = Pin , Db7 = P1.7 , Db6 = P1.6 , Db5 = P1.5 , Db4 = P1.4 , E = P1.2 , Rs = P1.1
Cursor Off
Cls
Waitms 1
Do
Config Debounce = 1 Ms
Debounce P1.0 , 1 , Zastoj , Sub
Debounce P1.0 , 0 , Glavni , Sub
Debounce P3.7 , 1 , Poledica , Sub
Debounce P3.7 , 0 , Glavni , Sub
Loop
End
Glavni:
Do
Cls
Lcd " VARNO VOZNJO "
Waitms 500
Cls
Lcd " VAM ZELI SERS "
Waitms 500
Return
Zastoj:
Do
Cls
Lcd "POZOR!!! ZASTOJ"
Waitms 500
Cls
Lcd "PROMETA V TUNELO"
Waitms 500
Return
Poledica:
Do
Cls
Lcd " POZOR!!! MOKRO "
Waitms 500
Cls
Lcd " CESTISCE "
Waitms 500
Return
Poledicazastoj:
Do
Cls
Lcd " POZOR!!! "
Waitms 500
Cls
Lcd " POLEDICA "
Waitms 500
Cls
Lcd " IN "
Waitms 100
Cls
Lcd " ZASTOJ PROMETA "
Waitms 500
Return
End |
Kako bi naredil: ko sta P1.0 in P3.7 na logični 1, da mi začne izvajat program Poledicazastoj in ko sta na na logični 0 pa mi začne izvajat program Glavni.
Ko pa je P1.0 na logični 1 pa mi mora začet izvajat program Zastoj.
Ko pa je P3.7 na logični 1 pa program Poledica.
Nekaj sem delal vendar mi ni pravilno delalo.
Hvala za pomoč!!! |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Čet Dec 06, 2007 8:10 pm Naslov sporočila: |
|
|
Za debounce ne klici takoj tistih procedur, ampak samo postavi ustrezno zastavico. Potem s pogojnimi stavki ugotovi katera kombinacija je trenutno aktivna in glede na to izvedi ustrezno proceduro. _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
cimer Član

Pridružen-a: Sob 07 Okt 2006 0:07 Prispevkov: 122 Aktiv.: 0.54 Kraj: Ljubljana
|
Objavljeno: Čet Dec 06, 2007 8:17 pm Naslov sporočila: |
|
|
Zdravo!
Najprej je poglejva uporabo funkcije Debounce. Na vsaki nogici mikrokontrolerja moraš pred uporabi tipke točno definirati stanje te nogice. Ponavadi jo preko "PULL UP" upora priključimo na napajanje (+5V - Logična ENA). S funkcijo Debounce pa potem gledaš kdaj se je stanje spremenilo na 0V - Logična NIČ. Takrat, ko pritisnemo tipko, ki je vezana med nogico mikrokontrolerja in maso.
Če pogledamo tvoj program se procedura oziroma podprogam "Poledicazastoj" nikoli ne bo zgodil, ker ga nikoli ne pokličeš.
Glavni del programa bi moral zgledati takole
Config Debounce = 1 Ms
Do
Debounce P1.0 , 0 , Zastoj , Sub
Debounce P3.7 , 0 , Poledica , Sub
GoSub Glavni
Loop
End
Ostala koda lahko ostane taka kot je. Tak način detekcije ti ne omogoča hkratnega sporočanja obeh situacij, ker program vedno najprej obdela en klic Debounce nato pa še drugega in se po zaključku podprograma "Zastoj" ali "Poledica" vedno vrne nazaj v glavni progam.
Toliko na kratko. _________________ Lep pozdrav!
Marko S. |
|
Nazaj na vrh |
|
 |
infernal Član


Pridružen-a: Pet 29 Jun 2007 0:46 Prispevkov: 239 Aktiv.: 1.09 Kraj: Maribor
|
Objavljeno: Čet Dec 06, 2007 8:45 pm Naslov sporočila: |
|
|
Marko hvala za odgovor .
Ali mi še mogoče lahko poveš za poledicazastoj.
Hvala. |
|
Nazaj na vrh |
|
 |
smatjaz Član


Pridružen-a: Pon 10 Nov 2003 16:33 Prispevkov: 846 Aktiv.: 3.57
|
Objavljeno: Čet Dec 06, 2007 10:58 pm Naslov sporočila: |
|
|
Če sem te prav razumel, bi to naredil takole:
Koda: |
Do
Config Debounce = 1 Ms
'Debounce P1.0 , 1 , Zastoj , Sub
Debounce P1.0 , 0 , Glavni , Sub
'Debounce P3.7 , 1 , Poledica , Sub
Debounce P3.7 , 0 , Glavni , Sub
If P1.0 = 1 Then
Gosub Zastoj
End If
If P3.7 = 1 Then
Gosub Poledica
End If
If P3.7 = 1 And P1.0 = 1then
Gosub Poledicazastoj
End If
Loop
End
...
|
Nikakor ne priporočam Debounce za isti pin za vrednost 0 in 1. To mi ne gre skupaj.
LP M. _________________ Električni aparati delujejo na dim ... ko dim iz njih uide ... ne delujejo več! |
|
Nazaj na vrh |
|
 |
infernal Član


Pridružen-a: Pet 29 Jun 2007 0:46 Prispevkov: 239 Aktiv.: 1.09 Kraj: Maribor
|
Objavljeno: Čet Dec 06, 2007 11:21 pm Naslov sporočila: |
|
|
Sej mi je že Marko povedav pravilen odgovor, samo jaz "tele" ga nisem razumel.
Jutri bom preizkusil še tvojo verzijo, da vidim kako dela.
Hvala za pomoč! |
|
Nazaj na vrh |
|
 |
infernal Član


Pridružen-a: Pet 29 Jun 2007 0:46 Prispevkov: 239 Aktiv.: 1.09 Kraj: Maribor
|
Objavljeno: Čet Dec 06, 2007 11:58 pm Naslov sporočila: |
|
|
Sem še smatjaz-ovo verzijo testiral in deluje bolje, tako da boste ostali vedeli če boste imeli takšne probleme.
Hvala Smatjaz. |
|
Nazaj na vrh |
|
 |
cimer Član

Pridružen-a: Sob 07 Okt 2006 0:07 Prispevkov: 122 Aktiv.: 0.54 Kraj: Ljubljana
|
Objavljeno: Pet Dec 07, 2007 9:58 am Naslov sporočila: |
|
|
Zdravo!
Debounce je posebna funkcija v Bascomu, ki najprej preveri ali je tikpa pritisnjena določen čas in šele nato sproži akcijo, ki je vezana na tipko. Tako smo lahko prepričani, da je tipka res pritisnjena in da sprememba stanja na pinu ni posledica neke motnje.
Jaz jo uporabljam samo takrat kadar so na pine priključene tipke, za spremljanje stanj pinov pa je potrebno uporabiti primer kot ga je navedel smatjaz. _________________ Lep pozdrav!
Marko S. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|