|
||||
|
|
||||
| Mikrokontroleri - PIC |
Autor: Milan Vukobrat, dipl. ing |
|||
Taster sa dve brzine
|
|
Komandu
BUTTON kod Parallax-ovog BASIC STAMP-a korisnici često zaobilaze, uglavnom zbog
nesnalaženja oko njene obimne i zbunjujuće sintakse: |
Namenjena je za očitavanje stanja tastera, eliminaciju treperenja kontakata (debounce), auto-repeat funkciju (kao kod računarske tastature: kad pritisnete neki taster, na ekranu se pojavi karakter - ako taster i dalje držite pritisnutim, posle nekog vremena (Delay) isti karakteri će se ispisivati velikom brzinom.
Parametri ove naredbe su:
pin (varijabla ili konstanta koja opisuje koji pin se koristi, vrednost je od 0 do 7)
downstate (varijabla ili konstanta koja opisuje stanje koje treba očekivati kada taster bude pritisnut, vrednost je 0 ili 1)
delay (varijabla ili konstanta koja određuje koliko dugo taster mora biti pritisnut da bi proradila auto-repeat funkcija, ima vrednost 0 do 255. Za 0, ne radi ni debounce ni auto- repeat, za 255, ne radi samo auto - repeat.
rate (varijabla ili konstanta koja odreduje trajanje auto - repeat funkcije, i ima vrednost 0 do 255
bytevariable je radna varijabla za naredbu button i mora se postaviti na 0 pre prvog korišćenja naredbe Button. Kako je ova naredba predviđena za korišćenje unutar programskih petlji, ovo brisanje mora se obaviti pre ulaska u petlju
targetstate je varijabla ili konstanta koja određuje u kom stanju taster treba da bude da bi se iz naredbe “skakalo” na labelu address i može imati vrednost 1, što znači da je taster pritisnut ili 0, što znači da taster nije pritisnut
address je labela (oznaka) koja upućuje tok izvršenja programa za slučaj kada je taster u željenom stanju (targetstste)
Kao što je već napomenuto, naredbu Button treba koristiti unutar programske petlje: pri svakom prolasku kroz petlju, proverava se stanje definisanog ulaza (pin) - kada se prvi put pojavi zadati downstate, aktivira se debounce. Po isteku tog intervala, gleda se parametar targetstate - tako se bira skok na labelu ako je taster pritisnut , ili skok ako nije pritisnut.
|
Primer koji će
očigledno ilustrovati gornje izlaganje dat je u Listingu. Pin 0 Basic Stampa treba vezati
na LED preko rednog otpornika 1k prema masi, a Pin 1 preko otpornika 4k7 na +Vcc i
tasterom prema masi.
Opis primenjene naredbe Button:
na Pinu 1
očekujemo downstate 0 - kad se ono desi, izvršice se delay u trajanju od 20 ciklusa (za
sve to vreme taster mora biti u downstate stanju). Ako po isteku delay perioda taster bude
i dalje u downstate stanju, obavljaće se auto - repeat sa periodom od 3 ciklusa, radna
varijabla je Tmp0, a ako taster nije pritisnut (targetstate = 0), program “skače” na
labelu Loop.
Programski to izgleda ovako: Dok taster NIJE protisnut, naredba Button se grana na labelu
Loop, zato što downstate 0 nije dostignut, a pošto se grananje vrši kada taster NIJE
pritisnut dolazi do grananja na labelu Loop. LED ne svetli, jer se izvršava samo naredba
Debug koja na ekranu prikazuje samo stanje varijable Tmp0, koje je jednako 0.
U momentu kada se
pritisne taster, downstate je postignut, pa počinje da teče Delay, što se vidi po tome
da Tmp0 dobija vrednost 20. Ako držimo pritisnut taster za kratko, videćemo da se
vrednost Tmp0 smanjuje - teče nam vreme predviđeno za Delay.
Listing 1. |
| ‘BUTTON.bas ‘Kratka ilustracija naredbe ‘************************** Symbol Tmp0 = B0 Symbol LED = 0 Loop: Debug Tmp0 Button 1,0,20,3,Tmp0,0,Loop Pulsout LED,500 Goto Loop |
Ako se taster
otpusti pre nego Tmp0 padne na 1, on se opet postavi na 0 i jedina reakcija da je naredba
Button očitala stanje tastera je LED koja je jednom kratko zasvetlela (izvršila se
naredba Pulsout).
Ako, naprotiv, taster držimo stalno pritisnut, posle odbrojavanja Tmp0 od 20 do 1 videće se da Tmp0 počinje da odbrojava od 3 do 1 (počeo je auto - repeat) i LED učestalo treperi. Eto, dakle, mogućnosti za “sporo” i “brzo” nameštanje parametara u vašoj aplikaciji, a sve to samo sa jednim tasterom.
| Pročitajte više o ovoj temi | ||||||||||||
|
|
C o p y r i g h t 1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji |