69_71.pdf

(82 KB) Pobierz
Basic dla mikrokontrolerów MCS-51, część 1
P R O G R A M Y
Basic dla
mikrokontrolerów
MCS-51, czêæ 1
Jest to pierwsza czêæ
artyku³u, w którym pokrótce
omówimy mo¿liwoci
nowoczesnego interpretera
Basica dla mikrokontrolerów
rodziny MCS-51.
Pomimo opinii, ¿e Basic
jest najgorszym z mo¿liwych
jêzyków programowania, nam
siê wydaje, ¿e pocz¹tkuj¹cy
mikroprocesorowcy mog¹
mia³o z niego korzystaæ -
jego prostota i stosunkowo
du¿e mo¿liwoci niweluj¹
wszelkie niedoskona³oci.
No to RUN ...
Mo¿liwoæ wykorzystania we
w³asnych projektach mikrokompu-
terów jednouk³adowych jest dla
wiêkszoci konstruktorów ³ako-
mym k¹skiem. Nawet bardzo z³o-
¿one funkcjonalnie uk³ady reali-
zuje siê przy ich pomocy w bar-
dzo prosty sposób. Niewielkie
p³ytki drukowane, ni¿szy pobór
pr¹du, ³atwoæ wprowadzania
zmian i modyfikacji, które zawsze
przecie¿ towarzysz¹ prototypom,
to argumenty, wobec których nikt
nie mo¿e byæ obojêtny.
Ci z Czytelników, którzy ledz¹
projekty zamieszczane np. w Elek-
tronice Praktycznej z pewnoci¹
s¹ pod wra¿eniem finezji uk³adów
z komputerami jednouk³adowymi,
a pozostali powinni koniecznie
zapoznaæ siê na przyk³ad z pro-
jektem miernika czêstotliwoci za-
mieszczonym w numerze 12/96.
Pocz¹tkuj¹cy konstruktorzy rza-
dko siêgaj¹ po mikroprocesory.
Boj¹ siê ich z³o¿onoci, nie maj¹
narzêdzi wspomagaj¹cych pracê,
nie potrafi¹ programowaæ. Nie bez
znaczenia jest równie¿ bariera
psychologiczna - niechêtnie siêga-
my po podzespo³y nieznane lub
takie, które mog¹ sprawiæ k³opoty.
W pismach wydawnictwa AVT
opublikowano szereg projektów,
które w za³o¿eniach mia³y u³atwiæ
pocz¹tkuj¹cym start w tej dziedzi-
nie. Przyk³adowo, kit AVT-222
zawieraj¹cy procesor 8031 z pa-
miêci¹ EPROM i uk³adami towa-
rzysz¹cymi uwalnia nas od k³o-
potów sprzêtowych, gdy¿ w zasa-
dzie jest to gotowy, przetestowany
sterownik. Do tej niewielkiej p³yt-
ki od razu mo¿na pod³¹czyæ urz¹-
dzenia wykonawcze (np. przeka-
niki) i uzyskaæ gotowe urz¹dze-
nie. Czêæ sprzêtowa nie powinna
zatem sprawiæ k³opotu temu, kto
umie pos³ugiwaæ siê lutownic¹
i miernikiem uniwersalnym
Pozostaje oczywicie problem
oprogramowania. Niestety tutaj
jest o wiele gorzej - konstruktor
amator, nie dysponuj¹cy du¿¹
gotówk¹, skazany jest w³aciwie
na programowanie w asemblerze,
przy wykorzystaniu sharewa-
re'owych wersji kompilatora (np.
dostêpnego na p³ycie CD-EP1).
Innymi s³owy: nie doæ, ¿e od
razu trafia na najtrudniejszy jêzyk
programowania, to jeszcze musi
mieæ komputer PC - platformê do
pracy wspomnianego asemblera
skronego. Samo napisanie i skom-
pilowanie bez b³êdów programu
nie oznacza koñca k³opotów.
Prawa Murphy'ego s¹ nieub³a-
gane i zazwyczaj nawet programy
kilkudziesiêcioliniowe zawieraj¹
w swej pocz¹tkowej formie po
kilka b³êdów. Du¿¹ czêæ z nich
mo¿na wprawdzie wy³apaæ na
programowych symulatorach pro-
cesora (znowu problem z pece-
tem!), jednak zawsze bêd¹ takie
b³êdy, które ujawni¹ siê dopiero
po zaprogramowaniu EPROM-u.
Symulator programowy jest bo-
wiem zbyt hermetyczny i w zasa-
dzie pozwala przetestowaæ jedy-
nie poprawnoæ algorytmu. Kom-
fortowa praca nad oprogramowa-
niem wymaga zatem sprzêtowego
symulatora procesora lub chocia¿-
by symulatora pamiêci EPROM.
Czy zatem nie ma ¿adnej pros-
tszej metody? Takiej dla pocz¹t-
kuj¹cego amatora? Taniej a nie-
z³ej? Czy nikt do tej pory nic nie
wymyli³? Owszem TAK!
Rozwi¹zanie to nazywa siê Ti-
ny Basic. Jest to prosty interpreter
jêzyka Basic przeznaczony dla
rodziny jednouk³adowych kompu-
terów serii MCS-51 i zosta³ napi-
sany przez firmê Intel. Jego zalet¹
jest niewielki obszar zajmowanej
pamiêci sta³ej, np. EPROM (3kB),
mo¿liwoæ pracy bez dodatkowej,
zewnêtrznej pamiêci RAM oraz
w³anie to, ¿e jest to interpreter
pozwalaj¹cy wykonywaæ program
instrukcja po instrukcji, z pe³nym
wgl¹dem programisty do pamiêci
portów, rejestrów i zmiennych. Jak
Elektronika Praktyczna 9/97
69
30482132.001.png
P R O G R A M Y
Tabela 1. Zestawienie skróconych postaci
poleceñ i funkcji Tiny Basic.
Polecenia
C. CALL
D. DECIMAL E. END
Dodanie do wersji minimal-
nej pamiêci RAM pozwala na
bardziej komfortow¹ pracê z Ba-
siciem (gin¹ ograniczenia, o któ-
rych bêdzie mowa póniej),
natomiast dodanie sta³ej pamiê-
ci zewnêtrznej lub jej rozbudo-
wanie ponad 4 KB dla wersji
z 8031 pozwala zapamiêtaæ na-
wet du¿e programy lub dane
(tablice sta³ych). Basic potrafi
automatycznie rozpoznaæ, ile
pamiêci RAM jest w systemie
i skorzystaæ z rozszerzenia poza
128 bajty zawarte w chipie.
Du¿ym u³atwieniem jest rów-
nie¿ wbudowana procedura de-
tekcji szybkoci pracy ³¹cza
RS232. Pozwala to stosowaæ prak-
tycznie dowolne kwarce w ste-
rowniku, uwalniaj¹c siê od zaku-
pu kryszta³u o magicznej czêstot-
liwoci 11,0592MHz.
Testowanie szybkoci RS-a od-
bywa siê podczas startu systemu.
Po w³¹czeniu zasilania sterowni-
ka, na klawiaturze terminala na-
ciskamy kilkakrotnie spacjê lub
ma³e c, a¿ do pojawienia siê
winiety Basica i znaku zachêty
interpretera >. O tym, czy Basic
bêdzie pracowa³ w trybie interak-
cyjnym z terminalem, czy te¿ ma
automatycznie przejæ do wykony-
wania gotowego programu Basico-
wego zapisanego w pamiêci sta³ej,
decyduje stan logiczny wejcia
RxD procesora. Zwarcie tej nó¿ki
do masy, zostanie zrozumiane
podczas startu sterownika jako
¿¹danie wykonania gotowego pro-
gramu. Interpreter pominie rów-
nie¿ procedurê detekcji szybkoci
RS-232.
Szybkoæ pracy interpretera nie
jest porywaj¹ca, jednak mo¿na
uznaæ j¹ za wystarczaj¹c¹. Nie ma
¿adnej przeszkody, aby krytyczne
z punktu widzenia szybkoci pro-
cedury programu zrealizowaæ za
pomoc¹ wstawek asemblerowych.
Poniewa¿ s¹ to jednak wstawki,
a nie ca³e procedury, ich pisanie
i testowanie jest o wiele przyjem-
niejsze.
Tiny Basic jest interpreterem
wy³¹cznie sta³oprzecinkowym.
Wszystkie u¿ywane liczby musz¹
byæ ca³kowite i zawieraæ siê
w przedziale -32767 do +32768.
ku³ów prasowych, bez sensu by-
³oby na ³amach EP opisywaæ
szczegó³owo metody i sposoby
programowania w Basicu. Dlatego
w niniejszym artykule ograniczy-
my siê do skrótowego opisu ko-
mend jêzyka odsy³aj¹c jednocze-
nie do literatury tych wszystkich,
dla których oka¿e siê on niewy-
starczaj¹cy.
F. FOR
G. GOTO
GOS. GOSUB
H. HEX
I. IF
IN. INPUT
L. LET
LI. LIST
N. NEXT
NEW NEW
P. PRINT
PRO. PROM
R. RETURN RA. RAM
RES. RESET
RO. ROM
RU. RUN
REM REMARK
T. TO
T. THEN
Funkcje i zmienne specjalne
A ABS
A. AND
C. CBYTE
Liczby
Tiny Basic jest programem sta-
³oprzecinkowym, wszystkie u¿y-
wane liczby oraz wyniki operacji
matematycznych musz¹ zawieraæ
siê w zakresie -32767 do 32767.
D. DBYTE
M. MOD
N. NOT
O. OR
R. RBIT
RN. RND
X. XBYTE
X. XOR
bardzo u³atwia to uruchamianie
programów nie trzeba chyba
nikogo przekonywaæ.
Interpreter pracuje w kilku try-
bach zale¿nych od sprzêtowej kon-
figuracji sterownika. Najprostsza
konfiguracja wymaga jedynie pro-
cesora 8751 (lub 8031 z zewnêt-
rznym EPROM-em) zawieraj¹cego
kod interpretera, uk³adu MAX 232
konwertuj¹cego poziomy napiêæ
interfejsu RS232 procesora i ter-
minala wspó³pracuj¹cego z proce-
sorem poprzez ten interfejs. Za-
sada pracy programu jest bowiem
nastêpuj¹ca: komputer (terminal)
zawieraj¹cy monitor i klawiaturê
jest dla sterownika urz¹dzeniem
do wprowadzania i wywietlania
danych. Znaki pisane na klawia-
turze s¹ przesy³ane do sterowni-
ka, a wyniki pracy wywietlane
na jego ekranie.
Terminalem mo¿e byæ dowolny
komputer PC, na którym urucho-
miono program obs³ugi portu
szeregowego (np. terminal win-
dowsowy, Telix, Procomm, Tele-
mate) lub inne komputery, nawet
8-bitowe C64, Atari XL/XE, Am-
strad czy ZX Spectrum, zawiera-
j¹ce programowe lub sprzêtowe
³¹cze RS232. Tak niskie wymaga-
nia spowodowane s¹ tym, ¿e
zadaniem terminala jest jedynie
wywietlanie na ekranie znaków
wysy³anych przez sterownik i wy-
sy³anie do sterownika znaków
z klawiatury. Nie nale¿y myleæ,
¿e pod³¹czony terminal jest za-
wsze potrzebny (by³oby to bez
sensu), wykorzystuje siê go jedy-
nie na etapie pisania i uruchamia-
nia programu. Póniej, po zakoñ-
czeniu prac, gotowe dzie³o
umieszcza siê w pamiêci sta³ej
i terminal mo¿na od³¹czyæ.
Zmienne
U¿ytkownik ma do dyspozycji
26 zadeklarowanych wstêpnie
zmiennych, o jednoliterowych na-
zwach od A do Z. Przy pracy bez
zewnêtrznej pamiêci RAM liczba
dostêpnych zmiennych jest mniej-
sza i u¿ytkownik dysponuje tylko
dwunastoma w zakresie od A do
L. Nie jest wa¿ne czy pos³ugu-
jemy siê ma³ymi, czy te¿ du¿ymi
literami, gdy¿ Basic automatycz-
nie dokonuje konwersji na du¿e
litery.
Funkcje
Dostêpne s¹ jedynie dwie fun-
kcje:
ABS (X) - daje modu³
wyra¿enia X
RND (X) - daje pseudolosow¹
liczbê z zakresu od 1 do X
Operacje matematyczne
Oprócz typowych dzia³añ jak:
+ - czyli dodawania
- - odejmowania
* - mno¿enia
/ - dzielenia sta³oprzecinkowego
(na przyk³ad 16/3=5, 14/5=2,
8/5=1),
Dostêpny jest jeszcze operator
MOD, za pomoc¹ którego mo¿na
otrzymaæ resztê z dzielenia ca³ko-
witego (na przyk³ad 16 MOD 3 =
1, 14 MOD 5 = 4, 8 MOD 5 = 3).
Operacje logiczne
Lista dostêpnych operatorów
logicznych jest typowa. Operuj¹
na wszystkich bitach danych:
NOT - negacja
AND - iloczyn (3 AND 6 = 2,
24 AND 8 = 8)
OR - suma (3 OR 6 = 7, 24
OR 8 = 24)
Opis jêzyka Tiny Basic
Poniewa¿ na temat jêzyka Ba-
sic napisano wiele ksi¹¿ek i arty-
70
Elektronika Praktyczna 9/97
30482132.002.png
P R O G R A M Y
XOR - suma modulo 2 (3 XOR
6 = 5, 4 XOR 7 =3)
Basic wylicza od lewej do prawej
strony. Powy¿sze regu³y kolejno-
ci mo¿na zmieniæ za pomoc¹
nawiasów.
Przyk³ad:
10 LET A=(X+2)*Y+321+(X=Y)*3+(X<=Y)
da: 328 przy X=1 i Y=1,
338 przy X=2 i Y=4
Skróty
Aby maksymalnie efektywnie
korzystaæ z pamiêci RAM sterow-
nika, s³owa kluczowe jêzyka mog¹
byæ skracane. Tak wiêc s³owo
PRINT mo¿e zostaæ zapisane jako
P., PR., PRIN.. Skrótu do-
konuje siê za pomoc¹ kropki.
Dodatkowo, mo¿na pomin¹æ s³o-
wa LET i THEN w poleceniu IF.
Wpisanie bezporednio nazwy
zmiennej spowoduje wypisanie jej
wartoci na ekranie terminala.
Tak prosta inspekcja jest bardzo
wygodna na etapie uruchamiania
programu. Zestawienie najbardziej
skróconych komend przedstawio-
no w  tab.1 . Dziêki skrótom w jed-
nej linii Basica mo¿na umieciæ
kilka instrukcji (rozdzielamy je
dwukropkami).
Robert Magdziak, AVT
Operatory porównania
> - wiêcej ni¿
< - mniej ni¿
= - równoæ
<> - nierównoæ
>= - wiêcej lub tyle samo
<= - mniej lub tyle samo
Komendy
Jeli wpisywane rozkazy nie
zostan¹ poprzedzone numerem li-
nii, zostan¹ zinterpretowane jako
komendy, czyli polecenia do na-
tychmiastowego wykonania.
Wszystkie opisane dalej polecenia
jêzyka mog¹ byæ u¿yte jako ko-
mendy bezporednie. Nastêpuj¹-
cych trzech poleceñ wolno jednak
u¿ywaæ tylko jako komendy bez-
porednie:
RUN - uruchamia wpisany pro-
gram;
LIST - wywietla listing programu
od pierwszej linii;
LIST 40 - wywietla listing pro-
gramu od linii wskazanej;
NEW - kasuje program, ustawia
wartoæ wszystkich zmiennych
na zero.
Wynik operatora porównania
jest równy 1 dla prawdy i 0 dla
fa³szu. Taka sama reprezentacja
dotyczy operacji logicznych. Po-
zwala to uprociæ w programie
zapis badania warunków.
Wyra¿enia
Do budowy wyra¿eñ mo¿na
u¿yæ liczb, zmiennych i funkcji,
³¹cz¹c je za pomoc¹ operatorów.
Kolejnoæ obliczania przez pro-
gram wyra¿eñ jest nastêpuj¹ca: na
pocz¹tku s¹ wykonywane operacje
negacji, póniej mno¿enie, dziele-
nie, MOD i AND, a nastêpnie
operacje dodawania, odejmowa-
nia, OR, XOR i na koñcu operacje
porównania. Wartoæ wyra¿enia
Interpreter Tiny Basic jest do-
stêpny na p³ycie CD-EP1, dostêp-
nej w sprzeda¿y wysy³kowej (ku-
pon zamówienia).
Elektronika Praktyczna 9/97
71
30482132.003.png
Zgłoś jeśli naruszono regulamin