O mnie
Kim jestem? Wejdź tu, a się dowiesz..

Mikrokontroler 89C2051
Wiesz co to jest procesor? A wiesz czym różni się on od mikrokontrolera? A potrafisz już programować mikrokontrolery? To naprawdę fajna zabawa. Przekonaj się :)

Połącz dwa komputery
Jak połączyć dwa komputery bez karty sieciowej? Poczytaj o komunikacji szeregowej i równoległej, i zrób sobie coś takiego

Linki
Odwiedź też inne strony w Internecie

Księga Gości
Zostaw jakiś ślad po sobie. Napisz to, co chcesz, byle kulturalnie

Kontakt
Podoba Ci się ta stronka? A może masz pomysł jak ją ulepszyć? Każda uwaga mile widziana. Złap mnie na skrzynce lub GG
dosu@op.pl
GG 2101711

Home
Powrót do wstępniaka


Co to jest komputer? /  Pamięć i rejestry /  Budowa 89C2051 /  Programujemy

Budowa 89C2051

Czas najwyższy przygotować się do zaprogramowania 89C2051. W tym celu musisz poznać budowę naszego bohatera.

Może zadajesz sobie pytanie - gdzie mamy umieścić swój program? Z pewnością pamiętasz jak wcześniej coś wspominałem o dwóch rodzajach pamięci programu. Pisałem o pamięci wewnętrznej i zewnętrznej. O ile do 8051 możemy podłączyć zewnętrzną pamięć, to do 89C2051 tego nie zrobimy. Rozmiarami jest on mniejszy od swego "Większego Brata" i fizycznie jest to niemożliwe. Zamiast jednak ubolewać nad takim losem, przyjmij do wiadomości, że 89C2051 posiada w swym wnętrzu 2KB pamięci flash. Cała ona stoi do naszej dyspozycji i tylko czeka aż ją zaprogramujemy. Jeśli znowu wydaje ci się, że 2KB to za mało na napisanie programu, to wiedz że z pewnością w zupełności ci to wystarczy.

Podam ci przykład z większej maszyny, jaką jest komputer PC. Dla porównania stworzyłem dwa bardzo proste programy których celem było wyświetlenie napisu: "Hello, tu izi". Pierwszy z nich powstał w C++, a drugi w asemblerze. I co się okazało? C++ stworzył program którego kod wynikowy wynosił ok. 20KB (słownie: 20 kilobajtów). A jak poradził sobie z tym zadaniem asembler? Po skompilowaniu w formacie COM, program wykonujący to samo zadanie miał rozmiar ok. 20B (słownie: 20 bajtów). Zwróć uwagę, że w asemblerze sama tylko tablica przechowująca napis zajmuje 13bajtów. Reszta to kod programu. Ocenę tego zjawiska pozostawiam Tobie.

Z przytoczonego wyżej przykładu wynika, że posługując się asemblerem można pisać dobre i naprawdę pożyteczne programy (zwłaszcza dla 89C2051), których kod nie będzie przekraczał 1KB, a my mamy do dyspozycji aż 2KB (dla przykładu program "Zegar" który będzie przedstawiony w dalszej części zajmuje około 500 bajtów).

Aby jednak programować przydało by się jakieś narzędzie. Ja sam używam, i tobie polecam, asembler który nabyć można w wydawnictwie "Elektroniki dla Wszystkich". Jest on dołączany do kitu AVT 2250. Wszelkie przykłady będę odnosił właśnie do tego asemblera. Jeśli masz inny, np. z wydawnictwa MIKOM, to też możesz go używać. Składnia programu jest taka sama, a różnić mogą się jedynie dyrektywy do samego kompilatora.

Napisany i skompilowany program należało by w jakiś sposób zapisać do pamięci naszego małego mikrokontrolera. Jak to zrobić? Ja robię tak: po skompilowaniu programu wysyłam go poprzez port COM (to ten do którego możesz podłączyć starsze myszki) do komputera ATARI, a on po przyjęciu danych w formacie Intel-HEX programuje mikrokontroler w który znajduje się w specjalnej przystawce. Czy nie można łatwiej? Można. Istnieją programatory podłączane do peceta. Musiał byś się więc w takowy zaopatrzyć.

Jak obsługiwać asemblera? To pytanie dosyć długo nurtowało i mnie. Jak we Wstępniaku nadmieniłem kontakt z komputerem ATARI mam od 1986. Niby stara technologia, mało pamięci itd. itp. Jak się jednak okazuje tam wszystko jest co potrzeba. Pisząc programy w asemblerze dla Atarki możesz używać np. Quick Asemblera. Jest to rozbudowany asembler posiadający własny edytor. Pisanie programu nie przysparza kłopotów. Gdy mamy już napisany listing programu, to dwoma klawiszami uruchamiamy asemblację.

Dlaczego o tym piszę? Chcąc pisać programy w asemblerze na PC napotykasz pewne kłopoty które mogą zniechęcać początkujących programistów. Ten problem dotyczy również programów dla 89C2051. Asembler posiadasz? To super, ale... Nie posiada on własnego edytora. Musisz posłużyć się w tym celu jakimś innym edytorem tekstowym (np. Notatnik Windows'a, czy edytor Norton Comander'a). Gdy już napiszesz program (lub jego część) musisz zapisać go na dysk, wywołać DOS'a, wejść do odpowiedniego katalogu, a następnie uruchomić asemblera z twoim programem jako parametrem. W przypadku asemblera z zestawu AVT 2250 musisz napisać coś takiego: do nazwa_twojego_programu.s03

Pół biedy jeśli nie popełniłeś błędu. Co jednak jeśli kompilator napisze coś o błędach? Wtedy ty wchodzisz do swojego kodu źródłowego, poprawiasz błędy, zapisujesz, przechodzisz do DOS'a (jeśli go wyłączyłeś, to znowu musisz go załączyć), piszesz: do nazwa_twojego_programu.s03 i tak aż wszystko będzie dobrze. Męczące prawda? Zwłaszcza na początku. Potem człowiek przyzwyczaja się, a dopiero potem uczy pisać programy z minimalną ilością błędów.
I pomyśleć, że na ATARI podobne rzeczy robi się od ręki (a właściwie od klawisza)

To że 89C2051 wykonuje jakiś program nic nam jeszcze nie daje. Musimy mieć jakąś możliwość komunikowania się z nim, lub po prostu musimy widzieć jakieś efekty działania programu. Jak już wcześniej wspominałem procesor posiada porty poprzez które może komunikować się z otoczeniem, lub czymś sterować. 89C2051 posiada dwa takie porty oznaczone symbolem P1 i P3. Dlaczego tak? No bo 8051 posiada tych portów aż 4 i nazwane są one P1, P2, P3 i P4. Nasz 89C2051 Jest rozmiarami o połowę mniejszy i posiada o połowę mniej portów. Pory P1 i P3 są portami 8 bitowym, chociaż P3 ma wyprowadzone na zewnątrz tylko 7 bitów.

Dzięki odpowiednim trybom adresowania możemy bardzo łatwo (tzn. bez stosowania tzw. maski) starować jednocześnie i niezależnie aż 15 urządzeniami (bez stosowania dodatkowych zewnętrznych układów kombinacyjnych). Równie dobrze możemy np. 10 bitów wykorzystać jako wyjścia, a 5 jako wejścia. To już zależy od naszego pomysłu i od potrzeb programu. Nie musimy oczywiście wykorzystywać wszystkich bitów portów. Oznaczenia końcówek są następujące: P1.0 to bit 0 portu 1. P1.1 to bit 1 portu 1 itd. Analogicznie jest w przypadku P3: P3.0 to bit 0 portu 3. Pamiętajmy jednak, że P3 nie posiada wyprowadzenia z bitu 6. Istnieje zatem P3.7, ale na zewnątrz nie istnieje P3.6.

Oprócz tych wyprowadzeń istnieją dodatkowe dwa oznaczone jako: XL1 i XL2. Jak na prawdziwy komputer przystało musi on być taktowany jakimś zegarem. W to miejsce zatem przyłączany jest rezonator kwarcowy.

Końcówka nr 1 to reset. Oznaczona jest jako RST.
Ostatnie dwie oznaczone jako GND i Vcc to zasilanie
A teraz graficznie to, co przed chwilą przeczytałeś(przeczytałaś :)

Rozkład wyprowadzeń

Myślę, że czas już najwyższy na prawdziwe programowanie. Na następnej stronie napiszemy już swój własny, pierwszy program.

dalej >>