background image

 

1. 

Spis tre

ś

ci 

 
 
 
 
 
 
 
Spis treści ................................................................................................................................... 1 
Dane techniczne i moŜliwości programu ................................................................................... 2 

Ograniczenia........................................................................................................................... 2 
MoŜliwości programu ............................................................................................................ 2 

Zawartość okna programu .......................................................................................................... 2 
Ustawienia symulatora ............................................................................................................... 3 

Pierwsze uruchomienie .......................................................................................................... 3 
Okno ustawień........................................................................................................................ 3 

Uruchamianie symulacja programu ........................................................................................... 4 

Wczytywanie programu ......................................................................................................... 4 

Wczytywanie z pliku HEX................................................................................................. 4 
Wczytanie z pliku ASM i kompilacja ................................................................................ 4 
Ręczna edycja programu .................................................................................................... 4 

Praca w trybie ciągłym ........................................................................................................... 4 
Praca w trybie krokowym ...................................................................................................... 4 
Praca ciągła z pułapką ............................................................................................................ 5 
Podgląd i modyfikacja zawartości pamięci SRAM................................................................ 5 

Część dolna pamięci........................................................................................................... 5 
Część górna pamięci (rejestry SFR)................................................................................... 6 

Podgląd stanu liczników......................................................................................................... 6 
Kontrola czasu rzeczywistego ................................................................................................ 7 

Narzędzia dodatkowe ................................................................................................................. 7 

Wyprowadzenia zewnętrzne .................................................................................................. 7 
Wyświetlacz 7-segmentowy................................................................................................... 8 
Kontrolki – przyciski monostabilne ....................................................................................... 8 
Terminal UART ..................................................................................................................... 9 

Zachowywanie ustawień środowiska symulacji....................................................................... 10 
Przykład.................................................................................................................................... 10

 

background image

 

 

2. 

Dane techniczne i mo

Ŝ

liwo

ś

ci programu 

2.1. 

Ograniczenia  

Na program pisany, którego działanie ma być symulowane, nałoŜone są pewne ograniczenia, 
wynikające z konstrukcji mikrokontrolera 89C51. Niniejszy program symulacyjny jest pod 
kaŜdym względem zgodny z restrykcjami zawartymi w danych technicznych wyŜej 
wspomnianego układu. NajwaŜniejszym ograniczeniem jest rozmiar programu, który nie 
moŜe przekraczać 4kB.  
Emulator 8051 w wersji 1: 
- nie obsługuje zewnętrznej pamięci ROM, 
- nie obsługuje zewnętrznej pamięci XRAM. 
Innym waŜnym ograniczeniem jest szybkość symulacji. NajwyŜsza (domyślna) symulowana 
częstotliwość to 12kHz (co daje 1000 instrukcji w ciągu sekundy). Program wyposaŜony jest 
jednak w narzędzia umoŜliwiające śledzenie wykonywania programu w czasie rzeczywistym. 

2.2. 

Mo

Ŝ

liwo

ś

ci programu 

Niniejszy program umoŜliwia debugging programu oraz kontrolę jego przebiegu poprzez: 
- podgląd i moŜliwość modyfikacji dolnego obszaru pamięci SRAM (bez ograniczeń), 
- podgląd i moŜliwość modyfikacji obszaru rejestrów SFR (bez ograniczeń), 
- moŜliwość interakcji z mikrokontrolerem, poprzez podgląd i wymuszanie zmian 
rzeczywistych stanów wyprowadzeń zewnętrznych (wyjścia z otwartym kolektorem), 
- komunikację z programem poprzez symulowany interfejs UART oraz dołączony do 
symulatora wirtualny terminal, 
- Tworzenie uproszczonego systemu z uŜyciem wyświetlacza 7-segmentowego (bez 
dekodera) oraz tablicy przycisków monostabilnych (kaŜdy posiadaa swój indywidualny opis). 
Całość układu okna, stanu programu moŜna zachować w pliku w celu późniejszego powrotu 
do symulacji. 

3. 

Zawarto

ść

 okna programu 

 

10 

11 

12 

13 

14 

15 

16 

background image

 

1 – Wczytaj plik z programem (Intel-HEX lub nieskompilowany ASM) 
2 – Otwórz plik MTS (plik symulatora, z zachowanymi parametrami symulacji oraz układem 
okien i stanów kontrolek, zachowany wcześniej przez uŜytkownika) 
3 – Zapis pliku MTS (zachowanie bieŜącego stanu symulacji( 
4 – Rozpoczyna symulacje programu w trybie ciągłym 
5 – Wstrzymuje symulację programu 
6 – Zatrzymuje symulację (ponownie inicjuje wirtualny mikrokontroler) 
7 – Wykonuje jedna instrukcję 
8 – Uruchamia program w trybie pracy „z pułapką” (tj. gdy wskaźnik programu przyjmie 
wcześniej zdefiniowaną wartość, wykonywanie programu zostanie wstrzymane). 
9 – Ustawienie szybkości odświeŜania podglądu stanów rejestrów, pamięci, itd. (liczba 
odświeŜeń / sek.). Nie naleŜy mylić z ustaleniem szybkości symulacji. 
10 – Pasek menu 
11 – PokaŜ okno podglądu / modyfikacji zawartości rejestrów SFR 
12 – PokaŜ okno podglądu / modyfikacji zawartości dolnego obszaru RAM, 
13 – Pokaz okno podglądu / modyfikacji stanu wyprowadzeń zewnętrznych 
14 – PokaŜ okno terminala UART 
15 – PokaŜ okno wyświetlacza 7-segmentowego 
16 – PokaŜ okno z łącznikami monostabilnymi 

4. 

Ustawienia symulatora 

4.1. 

Pierwsze uruchomienie 

Przy pierwszym uruchomieniu programu, uŜytkownik zostanie zapytany: 
1 – o chęć skojarzenia plików MTS z symulatorem. Pliki MTS to pliki w formacje 
wewnętrznym programu symulacyjnego. Są zapisywane przez uŜytkownika i zawierają 
wszystkie ustawienia środowiska symulacyjnego, łącznie ze stanem rejestru i wskaźnika 
programu, czasomierza, etc., oraz ścieŜką do pliku z zawartością programu Intel-HEX; 
2 – o chęć skojarzenia z symulatorem plików HEX. JeŜeli uŜytkownik korzysta z róŜnych 
programów symulacyjnych, w szczególności symulujących inne układy programowalne niŜ 
8051, kojarzenie plików HEX z „Emulatorem 8051” jest niewskazane. NaleŜy uwzględniać 
preferencje uŜytkownika. 

4.2. 

Okno ustawie

ń

 

Uwaga: Wszystkie ustawienia po zatwierdzeniu ich przyciskiem OK. zostaną zachowane w 
rejestrze systemu Windows. 
Dostęp: Menu Narzędzia -> Ustawienia 
Okno ustawień umoŜliwia dostosowanie do własnych potrzeb kilka wybranych parametrów 
symulatora. Widoczne od góry: 
Terminal UART – umoŜliwia wybór sposobu działania terminala UART. JeŜeli uŜytkownik 
symuluje programy pisane w językach wyŜszego poziomu (np. C, Basic) zalecanym 
ustawieniem (dla instrukcji Print i Input) jest „wyświetlaj tylko dane przychodzące”. 
Po wczytaniu programu. Po wczytaniu pliku programu domyślnie uŜytkownik jest pytany o 
chęć wyzerowania (ponownej inicjacji) mikrokontrolera. W tej ramce istnieje moŜliwość 
zadeklarowania chęci kaŜdorazowego pytania, kaŜdorazowego zerowania lub pozostawiania 
zawartości pamięci SRAM w stanie z chwili poprzedzającej moment przeładowania 
zawartości pamięci ROM. 
Po kompilacji. JeŜeli uŜytkownik uŜywa wbudowanego edytora kodu programu, lub 
wczytuje nie skompilowane pliki ASM, po kompilacji program pyta o chęć przejrzenia 
wygenerowanego pliku wydruku. (jest to jedyna moŜliwość weryfikacji poprawności 

background image

 

zapisu/kompilacji programu). W tej ramce moŜna zadeklarować chęć kaŜdorazowego pytania, 
kaŜdorazowego wyświetlania lub pomijania tej moŜliwości. 
W dwóch ostatnich ramkach moŜliwe jest skojarzenie z symulatorem plików MTS lub/i HEX, 
lub likwidacja skojarzenia. 

5. 

Uruchamianie symulacja programu 

5.1. 

Wczytywanie programu 

5.1.1. 

Wczytywanie z pliku HEX 

Menu Plik -> Wczytaj ROM… 
W otwartym oknie wskazać plik z zawartością programu (plik w formacie Intel-HEX). Po 
zatwierdzeniu przyciskiem Otwórz program z wybranego pliku zostanie wczytany do 
wewnętrznej pamięci symulowanego mikrokontrolera. Zostanie takŜe wyświetlone okno ze 
zdekompilowaną zawartością programu. 

5.1.2. 

Wczytanie z pliku ASM i kompilacja 

Menu Plik -> Wczytaj ROM… 
W otwartym oknie wskazać plik z zawartością programu (plik w formacie tekstowym, z 
rozszerzeniem .ASM). Po zatwierdzeniu przyciskiem Otwórz program zostanie 
automatycznie skompilowany, i – jak podczas wczytywania pliku HEX – zostanie wczytany 
do pamięci ROM symulowanego mikrokontrolera. Dodatkowo, wyświetlone zostanie okno z 
zawartością pliku ASM. MoŜliwa będzie zmiana programu oraz ponowna jego kompilacja 
(patrz nast. podrozdział). 

5.1.3. 

R

ę

czna edycja programu 

MoŜliwe jest bieŜące pisanie oraz symulowanie programu. Dostęp: menu Narzędzia -> 
Edytor kodu
Po otwarciu okna edytora kodu na pasku menu okna symulatora ukaŜe się dodatkowa pozycja 
„Asembler”. Po rozwinięciu tego menu ukaŜe się opcja „Kompiluj i wczytaj do pamięci”. Po 
jej kliknięciu, zawartość edytora kodu zostanie zapisana w pliku tymczasowym ASM, który 
zostanie poddany kompilacji. Po skompilowaniu, program zostanie wczytany do pamięci 
ROM symulowanego mikrokontrolera. 
Uwag: JeŜeli wcześniej wczytywany był plik ASM, następnie uŜytkownik zmieniał zawartość 
programu w oknie edytora kodu, po kompilacji zawartość oryginalnego pliku ASM nie 
ulegnie zmianie. Jest to istotne – w celu zapisu zawartości zmodyfikowanego programu 
naleŜy jego treść skopiować z edytora kodu (poprzez zaznaczenie całości, i wciśnięcie 
kombinacji klawiszy [Control] + [C] oraz wklejeniu skopiowanej treści do edytora 
tekstowego (np. Notatnika) i zapisaniu jej w odpowiednim pliku. 

5.2. 

Praca w trybie ci

ą

głym 

Po kliknięciu przycisku 

 wirtualny mikrokontroler zostanie uruchomiony. Wykonywanie 

programu moŜna wstrzymać (przycisk 

) lub zatrzymać przyciskiem 

, co spowoduje 

ponowne zainicjowanie mikrokontrolera (bez kasowania zawartości pamięci ROM). 

5.3. 

Praca w trybie krokowym 

Wykonanie programu „krok po kroku” moŜliwe jest przy uŜyciu przycisku 

. Pojedyncze 

jego kliknięcie spowoduje wykonanie jednej (bieŜącej) instrukcji programu. JeŜeli widoczne 

background image

 

jest okno programu, a uŜytkownik nie kliknął pojedynczo w liście prezentującej 
zdekompilowany program, zostanie wykonana aktualnie zaznaczona instrukcja. MoŜliwa jest 
zmiana zawartości wskaźnika programu, poprzez dwukrotne kliknięcie na poŜądanej 
instrukcji w w.w. liście i odpowiedniej odpowiedzi na wyświetlone zapytanie). Aktualna 
zawartość wskaźnika PC jest widoczna w oknie kontroli czasu (Menu Widok -> Przebieg 
programu
). 

5.4. 

Praca ci

ą

gła z pułapk

ą

 

Warunkiem moŜliwości pracy ciągłej „z pułapka” jest widoczność okna ze 
zdekompilowanym programem. JeŜeli okno to nie jest widoczne, naleŜy wybrać z menu: 
Widok -> Zasoby wewnętrzne -> zdekompilowany program
W w.w. oknie naleŜy wskazać pojedynczym kliknięciem myszy rozkaz, na którym ma zostać 
wstrzymane wykonywanie programu. (Wybrany rozkaz NIE zostanie wykonany). Następnie 

naleŜy uruchomić wykonywanie programu „z pułapką” przy pomocy przycisku 

 

5.5. 

Podgl

ą

d i modyfikacja zawarto

ś

ci pami

ę

ci SRAM 

5.5.1. 

Cz

ęść

 dolna pami

ę

ci 

Menu Widok -> Zasoby wewnętrzne -> Pamięć RAM (dolny obszar)
 

 

 
U dołu okna widoczne są pola wyboru opcji HEX i DEC. UmoŜliwiają przełączanie podstawy 
wyświetlanych liczb (szesnastkowy / dziesiętny). 
Dwukrotne kliknięcie którejkolwiek komórki pamięci powoduje wyświetlenie okna jak na 
poniŜszym obrazku. 
 

 

 

background image

 

UmoŜliwia ono podgląd adresu wybranej komórki i jej zawartości. Pozwala takŜe zmienić 
zawartość – nową liczbę wpisuje się w pole tekstowe u dołu okienka. Akceptowane są 
następujące formaty wpisywania: 
- dziesiętny – np. 17d lub 56 
- szesnastkowy – np. 15h 
- binarny – npp. 01100110b 

5.5.2. 

Cz

ęść

 górna pami

ę

ci (rejestry SFR) 

Menu Widok -> Zasoby wewnętrzne -> Rejestry SFR

 

W oknie podglądu/edycji zawartości SFR, podobnie jak w przypadku edycji zaw. Dolnego 
obszaru pamięci ram – dwukrotne kliknięcie na polu z liczbową zawartością wybranego 
rejestru powoduje ukazanie się okienka edycji jego zawartości. Dodatkowo, dwukrotne 
kliknięcie na wybranym bicie dowolnego rejestru powoduje zmianę jego stanu na przeciwny. 

5.6. 

Podgl

ą

d stanu liczników 

Menu Widok -> Układy peryferyjne wewnętrzne -> Timer0 oraz Timer1
 

 

background image

 

 
Okienka umoŜliwiają obserwację i zrozumienie aktualnego stanu układów licznikowych. 
UmoŜliwiają zmianę parametrów pracy liczników, odczyt i zmianę stanu ich rejestrów. 
Pojedyncze kliknięcie na danej pozycje listy informującej o trybie pracy licznika powoduje 
zmianę odpowiednich bitów w rejestrze TMOD, przez to zmianę trybu pracy licznika. 

5.7. 

Kontrola czasu rzeczywistego 

Menu Widok -> przebieg programu
 

 

 
W oknie kontroli przebiegu programu moŜliwa jest kontrola rzeczywistego czasu 
upływającego podczas wykonywania programu. Licznik czasu moŜna zerować przyciskiem 
„X” umieszczonym tuŜ obok niego, w dowolnym momencie wykonywania, lub wstrzymania 
wyk. Programu. W celu zapewnienia prawidłowości pracy licznika czasu, oraz wskaźnika 
szybkości układu UART, naleŜy ustawić w polu (liście) u góry okna częstotliwość przebiegu 
taktującego (lub oscylatora) jaki przewidziany jest w układzie, którego oprogramowanie jest 
uruchamiane w symulatorze. 

6. 

Narz

ę

dzia dodatkowe 

6.1. 

Wyprowadzenia zewn

ę

trzne 

Menu Widok -> Wyprowadzenia
 

 

background image

 

 

W tym oknie moŜliwa jest obserwacja stanu wyprowadzeń zewnętrznych. MoŜliwe jest takŜe 
wymuszanie zmiany ich rzeczywistego stanu – pojedyncze kliknięcie kontrolki danego 
wyprowadzenia powoduje zanegowanie jego stanu. Warto przypomnieć, Ŝe 8051 posiada 
wyjścia z otwartym kolektorem i tak teŜ (tzn. jako iloczyn „na drucie”) naleŜy rozumieć 
„zmianę stanu zewnętrznego”. 
Jeśli zmienić stan wyprowadzenia RESET na wysoki, tak jak w rzeczywistości – 
mikrokontroler zostanie wyzerowany. 

6.2. 

Wy

ś

wietlacz 7-segmentowy 

Menu Widok -> układy peryferyjne zewnętrzne -> wyświetlacz 7-seegmentowy, 
 

 

 

W powyŜej zaprezentowanym oknie moŜliwa jest graficzna reprezentacja stanu wybranych 
pinów w formie znaków na 7-segmentowym wyświetlaczu LED. Są to wyświetlacza „o 
wspólnej anodzie”. Warunkiem świecenia n-tej diody k-tego bloku jest stan wysoki na 
anodzie k-tego bloku i stan niski na linii n-tego segmentu. Konfiguracja powiązań 
poszczególnych linii z odpowiednimi pinami odbywa się poprzez wybór odpowiedniej 
pozycji z list widocznych w w.w. oknie, lub wpisanie nazw pinów za pomocą klawiatury. W 
tym drugim przypadku moŜliwe jest stosowanie notacji przyspieszającej pisanie – przykład: 
P1.0  =  p,10 =  p10 

6.3. 

Kontrolki – przyciski monostabilne 

Menu Widok -> układy peryferyjne zewnętrzne -> przyciski monostabilne
 

 

background image

 

 

WyŜej pokazane okno słuŜy do tworzenia symulowanego interfejsu uŜytkownika. Ułatwia 
komunikację z uŜytkownikiem, gdy program jest uruchamiany wyłącznie w symulatorze. 
KaŜdy przycisk posiada moŜliwość powiązania go z jednym z wyprowadzeń mikrokontrolera, 
oraz opatrzenia go etykieta opisująca jego funkcję. Konfiguracji powiązań z 
wyprowadzeniami dokonuje się jak w przypadku wyświetlacza 7-segmentowego (patrz dział 
poprzedni).  
Wciśnięcie przycisku sygnalizowane jest świeceniem „lampki” w górnej połówce kaŜdego 
klawisza i jest równoznaczne z wymuszeniem stanu niskiego na linii powiązanej z daną 
kontrolką. 

6.4. 

Terminal UART 

Menu Narzędzia -> Terminal UART
 

 

 

Okno terminala słuŜy do komunikacji z programami terminalowymi. Przykładowo, uŜycie 
instrukcji Print w językach wyŜszego poziomu (np. Bascom, C) powoduje wysłanie 
zdefiniowanego ciągu danych przez UART. Dane te odbierane są przez terminal, który w 
emulatorze symulowany jest w wyŜej pokazanym oknie. 
Terminal jest urządzeniem wejścia-wyjścia, a więc moŜliwe jest takŜe wysyłanie danych z 
terminala do mikrokontrolera. Ciąg danych naleŜy wpisać w polu tekstowym u dołu okna 
terminala i zatwierdzić przyciskiem „Wyślij”. 
U góry okna terminala wyświetlony jest bieŜący parametr „Baud Rate” (szybkość 
komunikacji, uzaleŜniona nastawami w odpowiednich rejestrach mikrokontrolera oraz 
częstotliwością generatora zegarowego; jest to powiązane z ustawieniem w oknie kontroli 
czasu rzeczywistego). 
PoniewaŜ wysłanie i odbiór bajtu danych wymaga (zaleŜnie od BR) upłynięcia duŜej liczby 
cykli maszynowych, a symulacja odbywa się z częstotliwością max. 1kHz, moŜliwe jest 
zignorowanie ustawionej w mikrokontrolerze szybkości transmisji. Domyślnie po otwarciu 
okna terminala ustawienie to jest aktywne. Poprzez zaznaczenia pola wyboru „Symulowana 
rzeczywista szybkość transmisji” na powrót wymusza się na symulatorze odczekiwanie 
odpowiedniej ilości cykli maszynowych niezbędnej do przesłania kaŜdego bajtu informacji 
(co znacznie spowalnia interakcje terminala z uŜytkownikiem). 

background image

 

10 

 
 
 

7. 

Zachowywanie ustawie

ń

 

ś

rodowiska symulacji 

MoŜliwe jest zachowanie w pliku konfiguracji okien oraz stanu symulacji. Z menu Plik 
wybiera się w tym celu pozycję Zapisz ustawienia symulatora. NaleŜy wybrać lokalizacje i 
nazwę pliku oraz zatwierdzić wybór przyciskiem „Zapisz”. W pliku zachowywane są: 
- pozycja wszystkich otwartych okien, 
- stan rejestrów SFR, oraz pamięci RAM i wskaźnika programu, 
- ścieŜka do pliku z zawartością programu. 
Uwaga: Nie zachowywany jest stan systemu przerwań! 
Po wczytaniu zapisanego wcześniej pliku symulacji, zostanie odtworzony stan symulatora, 
oraz wczytany plik programu, którego ścieŜka została zapisana w pliku symulatora. Uwaga: 
Plik programu najpierw poszukiwany jest w tej samej lokalizacji, w której znajduje się 
otwierany plik symulacji. JeŜeli nie zostanie tam znaleziony, poszukiwany jest bezpośrednio 
w lokalizacji zapisanej w pliku symulacji. UmoŜliwia to przenoszenie plików symulacji (wraz 
z plikami programu) między komputerami. Jedynym warunkiem jest to, aby plik programu 
umieszczony w katalogu wraz z plikiem symulacji miał taką samą nazwę jak plik programu 
zapisany „bezpośrednio zapisanej” lokalizacji. 
 
 
 
 
 
 

8. 

Przykład 

PoniŜej zostanie zaprezentowany przykładowy sposób zasymulowania prostego programu. 
Program ten będzie zliczał impulsy pochodzące od jednej z kontrolek pochodzącej z tablicy 
przycisków monostabilnych i wyświetlał wynik na pojedynczym bloku wyświetlacza 7-
segmentowego. PoniŜej widać listing wspomnianego programu. NaleŜy przepisać go do 
edytora kodu (Menu Narzędzia -> Edytor kodu). Następnie, z menu Asembler wybrać 
pozycję Kompiluj i wczytaj do pamięci. Po kompilacji, na ekranie ukaŜe się zapytanie o 
chęć przejrzenia pliku wydruku. Jest to jedyna moŜliwość weryfikacji poprawności 
asemblacji i kompilacji, poniewaŜ symulator nie otrzymuje od kompilatora informacji o 
poprawności przebiegu asemblacji i kompilacji. Jeśli wybierzemy „tak” otworzy się okno 
notatnika z wczytanym plikiem wydruku, który moŜna przeanalizować w celu weryfikacji 
poprawności kodowania programu.

background image

 

11 

 

 

JMP 

START 

 

ORG 

3h 

 

PUSH  ACC 

 

MOV 

A, R0 

 

INC 

 

MOV 

B, #10d 

 

DIV 

AB 

 

XCH 

A, B 

 

MOV 

R0, A 

 

POP 

ACC 

 

CALL  DISPLAY 

 

RETI 

 

ORG 

100h 

START: 

MOV 

R0, #0 

 

CALL  DISPLAY 

 

MOV 

TCON, #00000001b 

 

MOV 

IE, #10000001b 

 
LOOP: LJMP  $ 
 
DISPLAY: 

PUSH  ACC 

 

MOV 

DPTR, #TABLE 

 

MOV 

A, R0 

 

MOVC  A, @a+DPTR 

 

MOV 

P0, A 

 

POP 

ACC 

 

RET 

TABLE: 
 

DB 

00000011B 

 

DB 

10011111B 

 

DB 

00100101B 

 

DB 

00001101B 

 

DB 

10011001B 

 

DB 

01001001B 

 

DB 

01000001B 

 

DB 

00011111B 

 

DB 

00000001B 

 

DB 

00001001B 

END 

 
Po wczytaniu skompilowanego programu do pamięci ROM, moŜna zająć się kreowaniem 
ś

rodowiska symulacji. 

Program wykorzystuje przerwanie zewnętrzne INT0, skonfigurowane jako układ wyzwalany 
zboczem opadającym na linii INT0. Wywołajmy okno z tablica przycisków (Menu Widok -> 
układy peryferyjne zewnętrzne -> przyciski monostabilne). UŜyjemy pierwszego 
przycisku. W liście konfigurującej powiązanie pierwszego przycisku z danym 
wyprowadzeniem wybieramy (lub wpisujemy za pomocą klawiatury)  P3.2  
Otwórzmy teraz okno wyświetlacza 7-segmentowego (Menu Widok -> układy peryferyjne 
zewnętrzne
 -> wyświetlacz 7-segmentowy). Z pierwszej od góry listy wybierzmy Vcc. 
Wybór ten oznacza, Ŝe anoda pierwszego od prawej stron modułu jest zasilona. Katody 
połączymy z wyprowadzeniami portu P0, który jest uŜywany przez przykładowy program do 
komunikacji z wyświetlaczem. Katoda a przyłączona do P0.7, katoda b do P0.6, …, katoda g 

do P0.1.Po uruchomieniu symulacji przyciskiem 

 na wyświetlaczu ukaŜe się cyfra zero. 

KaŜde przyciśnięcie klawisza powiązanego z P3.2 spowoduje inkrementację wyświetlanej 
liczby (modulo 10).