0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovLiteraturaArhiv literatureMatrična tipkovnica 3x4

    Kot vidite, najprej postavimo vrednost spremenljivki Vrednost_t, nato z Debounce ukazom preverimo pritisnjenost tipke. V kolikor je tipka bila pritisnjena, skočimo v subrutino Sprejeta_t.

    Sprejeta_t:
    Preverispet: ' Bere P2 in preverja, ce so vse tipke sproscene
    Preveri = P2 And 71
    If Preveri <> 71 Then : Goto Preverispet : End If ' Preveri spuscenost tipk
    If Vrednost_t = 12 Then : Goto Akcija : End If ' Tipka #
    If Vrednost_t = 11 Then : Goto Akcija : End If ' Tipka *
    Digiti = Digiti * 10 ' Sesteva stevila za pravilen izpis
    Digiti = Digiti + Vrednost_t
    Cls : Lcd Digiti ' Izpis na LCD
    Vrednost_t = 0 ' Brise vrednosti spremenljivk
    Preveri = 0
    Return ' se vrne iz subrutine
    End

    Subrutina Sprejeta_t najprej preveri, ali je tipka spuščena. To naredimo z ukazoma:

    Preveri = P2 And 71
    If Preveri <> 71 Then : Goto Preverispet : End If ' Preveri spuscenost tipk

    Zakaj smo napisali vrednost 71 v prvem stavku? To je pravzaprav običajen stavek t.i. maskiranja, ki se večkrat uporablja pri programiranju mikrokontrolerjev. Poglejmo si binarne vrednosti:

    71(des) = 01000111 (bin)

    Iz binarnega zapisa vidimo, da smo na 1 postavili vse štiri stolpce (P2.0, P2.1, P2.2 in P2.6). V kolikor bi imeli tipkovnico vezano drugače, kot v našem primeru, bi to morali upoštevati v omenjenih stavkih. Če bi npr. imeli vezane stolpce na P2.0, P2.1, P2.2 in P2.3, bi bila vrednost v stavku Preveri = P2 and 15, zato ker je število 15 (des) = 00001111 (bin). Ko smo nekaj vrstic nazaj napisali, da smo v glavnem skoraj vse opravili, smo s tem “skoraj” mislili ravnokar opisane nastavitve oziroma stavka, s katerima ugotavljamo, ali smo tipko izpustili ali ne. Naslednjih stavkov ni potrebno posebej komentirati:

    If Vrednost_t = 12 Then : Goto Akcija : End If ' Tipka #
    If Vrednost_t = 11 Then : Goto Akcija : End If ' Tipka *

    Tukaj ugotovimo, da sta bili pritisnjeni tipki “*” oziroma “#”. Sledi rutina za krajši preračun in izpis spremenljivk na LCD prikazovalniku. Predpostavimo, da smo zaporedoma pritisnili števila 1234. V tem primeru bomo po prvem pritisku imeli vrednost spremenljivke Digiti = 1, v naslednjem izvajanju rutine bo vrednost najprej 10 (1*10) + 2 = 12, naslednji pritisk tipke bo vrednost spremenljivke Digiti = 120 (12*10) + 3 = 123 in nato 1230 + 4 = 1234. Postopek poteka tako naprej, dokler ne dosežemo omejitve spremenljivke Digiti, ki je tipa Long. Namreč, ko dosežemo 4 byte in jo želimo pomnožiti z 10, bo mikrokontroler to naredil, rezultat pa ne bo ravno smiseln. Podobno se zgodi, ko od števila 0 odštejemo 1. Mikrokontroler to naredi, vendar rezultat ni –1, kot poznamo iz »običajne« matematike, pač pa je rezultat 255, kar ustreza »binarni« matematiki. Zato predlagamo, da nekako omejite število vnosov posameznih digitov. Mi smo to naredili takole:

    Incr Kontrola
    If Kontrola > 6 Then : Goto Akcija : End If

    Vsakič, ko smo pravilno odtipkali digit, se poveča vrednost kontrolne spremenljivke Kontrola za 1. Ko njena vrednost preseže 7 – to pomeni, ko smo že odtipkali 6 digitov in želimo odtipkati sedmega, program skoči v rutino Akcija in s tem onemogoči nadaljne vnašanje digitov. Seveda, pa se lahko tega lotite tudi drugače… No, zdaj ko že poznamo delovanje programa, moramo še dodati tisti praktični del, ki nam tudi dejansko služi kot praktična uporaba naprave. Mi smo v našem programu enostavno prižigali in ugašali LED-ico vsakič, ko je bila vnešena pravilna koda. Poglejmo si rutino Akcija.