|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
marko11 Profesionalec
Pridružen/-a: Ned Jan 2004 18:00 Prispevkov: 112 Kraj: Ponikve
|
Objavljeno: Čet Okt 02, 2008 12:34 pm Naslov sporočila: Tipka in AVR |
|
|
Pozdrav
V Bascom AVR sem napisal spodnjo proceduro za Mini Pin, pa ko pritisnem eno od Tipk se na LCD-ju izpiseti obe vrstici.
Moralo bi se, ko pritisnem Tipko1 izpisati Vrsta 1, ko pa pritisnem Tipko 2, pa vrsta 2, ali obratno.
kaj delam narobe?
Koda: | ........
.......
Do
if Pind.1 = 0 then 'Tipka1
Locate 1,1 : LCD "Vrsta 1"
end if
if Pind.2 = 0 then 'Tipka2
Locate 2,1 : LCD "Vrsta 2"
end if
loop
end
|
_________________ Kdor visoko leta, daleč vidi. |
|
Nazaj na vrh |
|
|
lbozo Profesionalec
Pridružen/-a: Sre Jan 2006 14:24 Prispevkov: 75 Kraj: Ljubljana
|
Objavljeno: Čet Okt 02, 2008 1:53 pm Naslov sporočila: |
|
|
Pobriši lcd predno kaj napišeš. _________________ Lep pozdrav, Božo |
|
Nazaj na vrh |
|
|
marko11 Profesionalec
Pridružen/-a: Ned Jan 2004 18:00 Prispevkov: 112 Kraj: Ponikve
|
Objavljeno: Čet Okt 02, 2008 5:02 pm Naslov sporočila: |
|
|
Mi je uspelo rešit problem.
Koda: | If Pind.0 = 0 Then
Waitms 20
If Pind.0 = 0 Then
Locate 1,1 : LCD "Vrsta 1"
End If
End If
|
Isto bi bilo če bi uporabil debounce ukaz.
Še vedno pa ne vem zakaj pride do tega, da se izpišeta obe vrstici, čeprav sem pritisnil samo eno tipko.
Lp,marko _________________ Kdor visoko leta, daleč vidi. |
|
Nazaj na vrh |
|
|
plutonij210 Novinec
Pridružen/-a: Ned Avg 2008 17:59 Prispevkov: 7
|
Objavljeno: Čet Okt 02, 2008 5:40 pm Naslov sporočila: |
|
|
Ker ne pobrišeš LCD-ja
Koda: |
If Pind.0 = 0 Then
Waitms 20
If Pind.0 = 0 Then
Cls
Locate 1,1 : LCD "Vrsta 1"
End If
End If
|
Pa tudi v tej kodi, ko boš enkrat stisnil tipko, bo izpis na LCDju gorel tako dolgo (pa tudi če boš tipko spustil), dokler ne boš stisnil druge, ki bo LCD pobrisala. Za ta namen pa daj še med obema IF stavkoma en Cls.
EDIT: Tole bo še boljše:
Koda: |
Do
Cls
If Pind.0 = 0 Then
Waitms 20
If Pind.0 = 0 Then
Locate 1,1 : LCD "Vrsta 1"
End If
End If
Cls
If Pind.1 = 0 Then
Waitms 20
If Pind.1 = 0 Then
Locate 2,1 : LCD "Vrsta 2"
End If
End If
Loop
End
|
V prejšnji kodi se bo, če boš držal tipko LCD non-stop brisal in pisal, in to vse bo skupaj tako hitro, da ne boš videl nič - mislil boš, da je LCD prazen.
V tej novi kodi pa se LCD pobriše šele, ko pride iz IF stavka. Če torej držiš tipko se sploh ne bo pobrisal, dokler je ne boš spustil.
LP |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Čet Okt 02, 2008 6:12 pm Naslov sporočila: |
|
|
Marko,
mislim da bi moral Pind postaviti na logično 1:
Koda: | Do
Pind=255
.
.
.
Loop |
Lp
Jure |
|
Nazaj na vrh |
|
|
plutonij210 Novinec
Pridružen/-a: Ned Avg 2008 17:59 Prispevkov: 7
|
Objavljeno: Čet Okt 02, 2008 8:37 pm Naslov sporočila: |
|
|
Točno, a imaš zunanje pull-up upore na tipkah? Če ne, potem je to, kar je rekel Jure potrebno. |
|
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 You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|