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



Pridružen-a: Ned 14 Dec 2003 17:47 Prispevkov: 893 Aktiv.: 3.77 Kraj: Dobrepolje
|
Objavljeno: Tor Maj 20, 2008 5:41 pm Naslov sporočila: Tipka, števec |
|
|
Pozdrav!
V Bascom 8051 mi nikakor ne uspe napisati programčka, ki bi znal sledeče:
- ko pritisnem tipko naj števec vsako sekundo prišteje 1.
- ko pa tipko spustim, pa naj to stanje zapiše v spremenlivko Skupaj_stevec,
nato pa naj števec znulira.
- ko ponovno pritisnem tipko naj števec zopet šteje od nič
- ko pa spustim tipko pa mora k Skupaj_stevec prišteti to stanje števca,
ki ga ga je naštel, ter ponov znulirati števec
Spodaj je primer, ki ne deluje, vse kar je v Else stavku bimoral vpisati nekam drugam pa ne vem kam!
LP,marko
Koda: |
If P3.0 = 0 then
Incr stevec
wait 1
Else
stevec_skupni = stevec_skupni + stevec
stevec_skupni = stevec_skupni * 2
Lcd stevec_skupni
stevec = 0
end if
|
_________________ Če ne veš kam greš, se ne moreš zgubiti. |
|
Nazaj na vrh |
|
 |
eddie Član

Pridružen-a: Sre 10 Dec 2003 21:02 Prispevkov: 723 Aktiv.: 3.05 Kraj: Severna primorska
|
Objavljeno: Tor Maj 20, 2008 7:55 pm Naslov sporočila: |
|
|
Drugi del se ti mora verjetno izvesti samo enkrat, ne pa vsak cikel, ko ni pritisnjena tipka!
Bolje bi bilo že takole:
Koda: |
If TipkaPritinjena=1 Then
Stevec=Stevec+1
EndIf
If TipkaPritisnjena=0 Then
If TipkaStaroStanje=1 Then
StevecSkupni=StevecSkupni+Stevec
Stevec=0
EndIf
EndIf
TipkaStaroStanje=TipkaPritisnjena
Wait 1
|
Zelo na hitro napisano ampak da vidiš princip pa bo
Lp |
|
Nazaj na vrh |
|
 |
marko11 Član



Pridružen-a: Ned 14 Dec 2003 17:47 Prispevkov: 893 Aktiv.: 3.77 Kraj: Dobrepolje
|
Objavljeno: Pon Maj 26, 2008 6:00 pm Naslov sporočila: |
|
|
eddie, gledam tvojo kodo, pa mislim, da si uporabil dve(2) tipke, TipkaPritisnjena in tipko TipkaStaroStanje, jaz pa bi to rad delal z eno tipko, popravite, če se motim.
LP,marko _________________ Če ne veš kam greš, se ne moreš zgubiti. |
|
Nazaj na vrh |
|
 |
eddie Član

Pridružen-a: Sre 10 Dec 2003 21:02 Prispevkov: 723 Aktiv.: 3.05 Kraj: Severna primorska
|
Objavljeno: Pon Maj 26, 2008 10:01 pm Naslov sporočila: |
|
|
Ne ne!
TipkaStaroStanje je samo pomožna spremenljivka, v katero konec vsakega krmilniškega(programskega) cikla shraniš "vrednost" tipke v tem ciklu(pritisnjena/spuščena). In tako bosta prvi cikel, ko boš tipko spustil veljala pogoja:
Koda: |
If TipkaPritisnjena=0 Then
If TipkaStaroStanje=1 Then
...
|
V tem primeru samo enkrat upoštevaš spust tipke, saj v naslednjem ciklu , če bo tipka še spuščena(ali pa tudi če jo boš že uhitel pritisniti) pogoj nebo več izpolnjen in prepis na skupni števec se nebo izvršil še enkrat.
Problem ti zna delati še vedno odskakovanje kontaktov tipke(debounce...).
Primer je bil na hitro napisan in samo zato, da vidiš princip.
Lp |
|
Nazaj na vrh |
|
 |
marko11 Član



Pridružen-a: Ned 14 Dec 2003 17:47 Prispevkov: 893 Aktiv.: 3.77 Kraj: Dobrepolje
|
Objavljeno: Ned Jun 01, 2008 4:33 pm Naslov sporočila: |
|
|
eddie napisal sem kodo po tvoje in jo sprobal v Bascom8051 simulatorju, toda NE deluje tako kot hočem, da si zapomni staro stanje in temu stanju prišteje vrednost števca.
Koda: |
$sim
Dim Stevec As Integer
Dim Tipkastarostanje As Integer
Dim Stevecskupni As Integer
Do
If P3.0 = 1 Then
Stevec = Stevec + 1
Locate 1 , 1 : Lcd Stevec : Lcd " "
End If
If P3.0 = 0 Then
If Tipkastarostanje = 1 Then
Stevecskupni = Stevecskupni + Stevec
Stevec = 0
Locate 2 , 1 : Lcd Stevecskupni : Lcd " "
End If
End If
Tipkastarostanje = P3.0
'Wait 1
Loop
|
_________________ Če ne veš kam greš, se ne moreš zgubiti. |
|
Nazaj na vrh |
|
 |
drVrh Član



Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.35 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Ned Jun 01, 2008 4:37 pm Naslov sporočila: |
|
|
Ti si pa naredil doktorat tu ven! Ti bom s tem pomagal!
Koda: |
Sub Stevec
If P1.1 = 0 Then
M = M + 1
End If |
Seveda moraš prej deklarirat neznanko M.
oo Atmeli
 _________________ Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega |
|
Nazaj na vrh |
|
 |
marko11 Član



Pridružen-a: Ned 14 Dec 2003 17:47 Prispevkov: 893 Aktiv.: 3.77 Kraj: Dobrepolje
|
Objavljeno: Ned Jun 01, 2008 5:04 pm Naslov sporočila: |
|
|
drVrhmogoče bom res doktoriral! Ampak zadeva mora delovati takole, bom še enkrat opisal:
1. ko pritisnem tipko, mora števec šteti,
2. ko pa tipko spustim si mora zapomniti stanje števca, ter števec postaviti na nulo.
3. ko pritisnem drugič, tretjič... , mora ponoviti točko 1 in 2 ter v novo spremenljivko (Skupaj) prišteti stanje števca,
- tako mora spremenljivki Skupaj vedno prišteti stanje števca _________________ Če ne veš kam greš, se ne moreš zgubiti. |
|
Nazaj na vrh |
|
 |
drVrh Član



Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.35 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Ned Jun 01, 2008 6:53 pm Naslov sporočila: |
|
|
Aha potem se ti opravičujem če sem bil ˝prehiter˝ z odgovorom.
Če bom našel kaj, ti bom posredoval. Velja? Zakaj pa bi uporabil to če lahko vprašam oziroma če to ni skrivnost? Ker me ta zadeva zanima, mi je zanimiva !! _________________ Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega |
|
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: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|