87.pdf

(68 KB) Pobierz
BASIC Stamp w roli elektronicznej kostki do gry
Biblioteki procedur standardowych
S P R Z Ê T
BASIC Stamp
w roli elektronicznej kostki do gry
Po kilku artyku³ach
prezentuj¹cych mo¿liwoci
komputerka BASIC Stamp
i zaimplementowanego w nim
jêzyka, przedstawiamy
przyk³ad prostej, lecz bardzo
efektownej aplikacji.
Jest to mikroprocesorowa
kostka do gry (podwójna!)
z wywietlaczem wyniku
w postaci 14 diod LED,
charakteryzuj¹ca siê
minimaln¹ liczb¹ elementów
zewnêtrznych.
Na rys. 1  znajduje siê schemat
elektryczny proponowanego roz-
wi¹zania mikroprocesorowej, po-
dwójnej kostki do gry. Ka¿da
z tych dwóch kostek jest repre-
zentowana przez uk³ad siedmiu
diod LED, których zapalenie syg-
nalizuje liczbê wyrzuconych
oczek. £atwo zauwa¿yæ, ¿e diody
wiec¹ce s¹ sterowane bezpored-
nio z portu BASIC Stampa. Taka
konfiguracja uk³adu jest prawid-
³owa, poniewa¿ wydajnoæ pr¹do-
wa ka¿dej linii portu siêga 20mA.
Linia P7 steruje prze³¹czni-
kiem zbudowanym na tranzysto-
rach T1 i T2, który kluczuje grupy
diod tworz¹cych kostki. Mamy
wiêc do czynienia z sekwencyj-
nym wywietlaniem wyniku loso-
wania. Dodatkow¹ funkcj¹ linii P7
jest obs³uga przycisku losowania.
Zasada pracy kostki opiera siê
na generowaniu przypadkowych
ci¹gów liczb, w oparciu o wbudo-
wan¹ w PBASIC funkcjê generato-
ra ci¹gu pseudolosowego.
Na list. 1 przedstawiono pro-
gram podwójnej kostki do gry,
napisany w jêzyku PBASIC. Zada-
niem procedury g³ównej jest sek-
wencyjne wywietlanie wyniku lo-
sowania oraz wykrywanie naci-
niêcia przycisku losowania SW1.
Po wykryciu naciniêcia przy-
cisku SW1, program przechodzi
do realizacji podprogramu Losuj .
Przy jego pomocy zostaje wytwo-
rzona 16-bitowa liczba pseudolo-
sowa, umieszczona w s³owie w3
(zastêpcza nazwa losowanie ).
Liczba ta bêdzie podstaw¹ dla
tworzenia wyniku losowania. Jak
wiadomo, s³owo w3 odpowiada
w strukturze danych PBASICA
bajtom b6 i b7. Wartoci tam
zapisane, po wymaskowaniu
trzech najm³odszych bitów i wy-
zerowaniu pozosta³ych bitów, s¹
umieszczane odpowiednio
w zmiennych kostka1 kostka2 .
Oczywicie, interesuje nas tylko
szeæ ró¿nych liczb, a nie osiem,
bowiem tyle bêdzie dostêpnych
po tej operacji. Pozostaje wiêc
jeszcze ograniczyæ ten zakres liczb
poprzez odrzucenie liczb wiêk-
szych od 5. W przypadku zapisu
do kostka1 albo kostka2 co naj-
mniej jednej liczby wiêkszej od
5, losowanie jest powtórzone.
Wywietlaniem zajmuje siê
podprogram Wskaznik . Podpro-
gram ten dokonuje przekodowania
z zapisu binarnego na uk³ad wie-
c¹cych diod LED. Bardzo pomoc-
nym rozkazem jest LOOKUP.
Zwraca on jedn¹ z wartoci za-
wart¹ w nawiasie o takiej liczbie
porz¹dkowej, jaka jest zapisana
w pierwszym argumencie. Zwra-
cana wartoæ jest umieszczana
w trzecim argumencie instrukcji.
W ten sposób bardzo ³atwo w jê-
zyku PBASIC tablicowaæ ró¿ne
funkcje.
Nastêpne operacje tego pod-
programu s¹ cile zwi¹zane z
wywietlaniem informacji. Naj-
pierw wszystkie diody LED s¹
wygaszone (operacja zerowania pi-
nów P6..P0, stan pinu P7 pozo-
staje nie zmieniony), potem jest
zmieniony stan pinu P7 na prze-
ciwny, nastêpnie jest ustawiony
w³aciwy uk³ad w³¹czonych diod
LED. Taka kolejnoæ dzia³añ po-
zwala unikn¹æ duchów, czyli
s³abo wiec¹cych stanów drugiej
kostki na diodach kostki pierw-
szej.
Miros³aw Lach, AVT
Listing 1
Program KOSTKA.BAS
Podwojna elektroniczna kostka do gry
Symbol
kostka1 = b0
Symbol
kostka2 = b1
Symbol
losowanie = w3
Symbol
oczka = b2
Symbol
Wybierz = 7
high Wybierz
let dirs = 255
let kostka1 = 1    
let kostka2 = 4     
Powtorz:
let oczka = kostka1
gosub Wskaznik
let oczka = kostka2
gosub Wskaznik
input Wybierz
if pin7 = 1 then Losuj
let w3 = w3+1
Reenter:
output Wybierz
goto Powtorz
Wskaznik:
lookup oczka,(64,18,82,27,91,63),oczka
let pins = pins&%10000000
toggle Wybierz
let pins = pins|oczka
pause 4                  
return
Losuj:
random losowanie
let kostka1 = b6&%00000111
let kostka2 = b7&%00000111
if kostka1 > 5 then Losuj
if kostka2 > 5 then Losuj
goto Reenter
Rys. 1.
Elektronika Praktyczna 7/97
87
35722129.002.png 35722129.003.png 35722129.004.png 35722129.005.png 35722129.001.png
Zgłoś jeśli naruszono regulamin