www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Tipka, števec

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 893
Aktiv.: 3.77
Kraj: Dobrepolje

PrispevekObjavljeno: Tor Maj 20, 2008 5:41 pm    Naslov sporočila:  Tipka, števec Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
eddie
Član
Član



Pridružen-a: Sre 10 Dec 2003 21:02
Prispevkov: 723
Aktiv.: 3.05
Kraj: Severna primorska

PrispevekObjavljeno: Tor Maj 20, 2008 7:55 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 893
Aktiv.: 3.77
Kraj: Dobrepolje

PrispevekObjavljeno: Pon Maj 26, 2008 6:00 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
eddie
Član
Član



Pridružen-a: Sre 10 Dec 2003 21:02
Prispevkov: 723
Aktiv.: 3.05
Kraj: Severna primorska

PrispevekObjavljeno: Pon Maj 26, 2008 10:01 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 893
Aktiv.: 3.77
Kraj: Dobrepolje

PrispevekObjavljeno: Ned Jun 01, 2008 4:33 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.35
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Ned Jun 01, 2008 4:37 pm    Naslov sporočila:   Odgovori s citatom

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 Laughing

Razz

_________________
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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 893
Aktiv.: 3.77
Kraj: Dobrepolje

PrispevekObjavljeno: Ned Jun 01, 2008 5:04 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.35
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Ned Jun 01, 2008 6:53 pm    Naslov sporočila:   Odgovori s citatom

Aha potem se ti opravičujem če sem bil ˝prehiter˝ z odgovorom. Very Happy

Č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 Razz !!

_________________
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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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