Wydział Elektroniki i Telekomunikacji
MIKROKONTROLER 8051
Ćwiczenia uzupełniające
Poznań 2009
Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
Ćwiczenia uzupełniające
____________________________________________________________________________________________________________
PROSTE OPERACJE ARYTMETYCZNE, STOS MIKROKONTROLERA 8051
Ćwiczenia uzupełniające:
1. Napisz program, który będzie dodawał dwie liczby. Liczby mają być wczytywane z klawiatury
(wykorzystaj podprogram WAIT_KEY), a wynik i znaki + oraz = powinny być wyświetlane na
wyświetlaczu LCD (np. 3+5=8).
a. Program ma być oparty o podprogramy
b. Wynik pierwszego działania ma być jednocześnie pierwszym składnikiem kolejnej
operacji dodawania
c. Wynik n kolejnych dodawań może być większy od 255
2. Napisz program dokonujący konwersji liczby binarnej (również większej niż 100, ale mniejszej
niż 256) na liczbę w kodzie BCD.
3. Napisz program, który będzie odejmował dwie liczby. Liczby mają być wczytywane z
klawiatury (wykorzystaj podprogram WAIT_KEY), a wynik i znaki + oraz = powinny być
wyświetlane na wyświetlaczu LCD (np. 3-5=-2).
a. Program ma być oparty o podprogramy,
b. Wynik pierwszego działania ma być jednocześnie pierwszym składnikiem kolejnej
operacji odejmowania
4. Napisz program mnożący dwie liczby. Program powinien składać się z podprogramów.
Wykorzystaj do tego celu operację ACALL (jaka jest różnica pomiędzy operacją ACALL a
LCALL?). Program powinien wyświetlić wynik mnożenia w postaci liczb reprezentowanych
szesnastkowo, jak i dziesiętnie.
5. Napisz program obliczający NWW oraz NWD dwóch podanych liczb (liczby mogą być albo
wczytane z klawiatury, albo wpisane bezpośrednio do rejestrów w kodzie programu).
6. Napisz program obliczający sumę n wyrazów ciągu arytmetycznego o wyrazie początkowym
a 0, kroku r oraz liczbie sumowanych wyrazów n podanych przez użytkownika.
7. Napisz program pozwalający na odejmowanie dwóch liczb dwubajtowych.
8. Napisz program zamieniający temperaturę wyrażoną w stopniach Celsjusza na wyrażona w
Kelvinach, w stopniach Farenheita, w stopniach Rankine’a:
Uwaga:
T Kelvin = 273.15 + T Celsius
9
T Farenheit = 32 + ⋅
5
T Celsius
Skala temperatur Rankine'a jest modyfikacją skali temperatur Fahrenheita, powstała z tej
ostatniej przez przesunięcie punktu zerowego do temperatury zera bezwzględnego. Jednostką
skali temperatur Rankine'a jest 1°Rank = 5/9 K
9
T Rankine = 491.688+ ⋅
5
T Celsius = T Farenheit + 459.67
Oprac. mgr inż. Adrian Kliks, 29.09.2009
1
Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
Ćwiczenia uzupełniające
____________________________________________________________________________________________________________
9. Napisać program sprawdzający poprawność numeru IBAN.
Uwaga: ( za Wikipedia.pl)
International Bank Account Number (IBAN, pol. Międzynarodowy Numer Rachunku
Bankowego) – międzynarodowy standard numeracji kont bankowych.
Standard został utworzony przez Europejski Komitet Standardów Bankowych ( European
Committee for Bank Standardisation), po czym przyjęto go jako ISO 13616. IBAN składa się z
dwuliterowego kodu kraju ISO 3166-1, po którym następują dwie cyfry sprawdzające (suma
kontrolna), i do trzydziestu znaków alfanumerycznych określających numer rachunku, określanych
jako BBAN (ang. Basic Bank Account Number, pol. Podstawowy Numer Rachunku Bankowego).
Decyzja o długości tego bloku należy do poszczególnych krajów, z tym, że dany kraj musi posiadać
jedną, określoną długość. W BBAN musi się zawierać unikatowy kod identyfikujący bank, o
określonej długości i określonej cyfrze od której się on rozpoczyna. Jego pozycja i długość również
zależy od danego kraju. W transakcjach elektronicznych kod IBAN powinien być przechowywany
w jednym ciągu, bez spacji, jednakże w przypadku dokumentów na papierze powinien być
zapisywany w grupach po cztery znaki, przy czym ostatnia grupa może mieć ich dowolną liczbę (ze
względu na różną liczbę cyfr w poszczególnych krajach).Kod IBAN został utworzony, by wspomóc
obsługę płatności w Unii Europejskiej. Klienci, zwłaszcza osoby fizyczne oraz małe i średnie firmy,
często napotykają na problemy związane z różnymi standardami bankowości na świecie.
Przykład:
1. Holandia - NLkk BBBB CCCC CCCC CC
Pierwsze 4 znaki alfanumeryczne to symbol banku, kolejne 10 cyfr to numer rachunku.
2. Polska - PLkk BBBB BBBk MMMM MMMM MMMM MMMM
Pierwsze 2 cyfry to cyfry kontrolne. Następnych 8 cyfr to identyfikator banku-oddziału (ostatnia
jego cyfra jest cyfrą kontrolną, wyliczoną z pozostałych siedmiu). Ostatnie 16 to numer rachunku.
Wśród cyfr numeru banku, pierwsze 3 lub 4 oznaczają bank (np. citibank 103, pkobp 102, pekao s.a.
124, bre bank 114, kb 150) następne 4 lub 3 cyfry oznaczają oddział.
Algorytm sprawdzania cyfr kontrolnych:
• Weź pełen numer konta (razem z kodem kraju), bez spacji.
• Sprawdź czy zgadza się długość numeru dla danego kraju.
• Przenieś 4 pierwsze znaki numeru na jego koniec.
• Zamień litery w numerze konta na cyfry, zamieniając 'A' na 10, 'B' na 11 itd. aż do 'Z' na 35.
• Potraktuj otrzymany ciąg znaków jak liczbę i wylicz resztę z dzielenia przez 97.
• Jeśli reszta jest równa 1, to numer konta ma prawidłowe cyfry kontrolne.
10. Napisz program zamieniający odległość wyrażoną w cm na cale (1cal = 2.54cm).
11. Napisz program obliczający obwód i pole: a) kwadratu, b) prostokąta, c) trójkąta, d) trapezu,
e) koła. Długości potrzebnych odcinków mają być wprowadzane z klawiatury.
12. Napisz program zamieniający wartość prędkości wyrażoną w km/h na m/s i odwrotnie.
Oprac. mgr inż. Adrian Kliks, 29.09.2009
2
Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
Ćwiczenia uzupełniające
____________________________________________________________________________________________________________
KLAWIATURA PRZEGLĄDANA SEKWENCYJNIE, TIMERY MIKROKONTROLERA
Ćwiczenia uzupełniające:
1. Napisz program wprowadzający zadane opóźnienie wyrażone w milisekundach. Podprogram
wprowadzający zadanie opóźnienie ma działać tak samo, jak program DELAY_MS.
2. Napisać program symulujący zegar – sekundnik; czas ma być wyświetlony zarówno na
wyświetlaczu LCD oraz wyświetlaczu siedmiosegmentowym. Sekundnik ma mieć możliwość
zatrzymania odliczania, wznowienia odliczania oraz rozpoczęcia liczenia od nowa.
3. Napisz program obliczający czas trwania jednego bitu w transmisji szeregowej.
4. Napisz program obliczający czas, jaki upłynął pomiędzy dwoma kolejno po sobie
następującymi naciśnięciami wybranego przycisku.
Oprac. mgr inż. Adrian Kliks, 29.09.2009
3
Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
Ćwiczenia uzupełniające
____________________________________________________________________________________________________________
WYŚWIETLACZ SIEDMIOSEGMENTOWY
Ćwiczenia uzupełniające:
1. Napisać program, który wyświetli na wyświetlaczu siedmiosegmentowym imię i nazwisko.
Dodatkowo, wciśnięcie przycisku ← (na klawiaturze przeglądanej sekwencyjnie) powoduje
przewinięcie napisu w lewą stronę, → powoduje przewinięcie napisu w prawą stronę,
↑ powoduje ustawienie napisu w pozycji początkowej.
2. Napisać program, który wczyta N liczb i wyświetli je na wyświetlaczu 7-segmentowym.
Program może mieć taką samą funkcjonalność jak w przypadku ćwiczenia uzupełniającego
nr 1.
3. Napisać program, który będzie zliczał liczbę naciśnięć przycisku ResetRAM (należy
wykorzystać samomodyfikowanie programu).
4. Napisać program, w którym naciśnięcie przycisku ← (na klawiaturze przeglądanej
sekwencyjnie) będzie powodowało zapalanie się kolejnych segmentów na wyświetlaczu
siedmiosegmentowym, zaś naciśnięcie przycisku → będzie powodowało gaszenie kolejnych
segmentów.
Oprac. mgr inż. Adrian Kliks, 29.09.2009
4
Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
Ćwiczenia uzupełniające
____________________________________________________________________________________________________________
WYŚWIETLACZ ALFANUMERYCZNY LCD
Ćwiczenia uzupełniające:
1. Napisać program, w którym wprowadzane znaki z klawiatury matrycowej są przekazywane na
wyświetlacz LCD ale nie są widoczne. Na wyświetlaczu ma się pojawić aktualny adres pozycji
kursora na wyświetlaczu.
2. Napisać program, który wyświetli uprzednio wpisany w kodzie programu tekst, zawierający
minimum trzy polskie znaki (lub trzy dowolne znaki zdefiniowane przez użytkownika) i
składający się łącznie z co najmniej 45 znaków. Program ma umożliwiać następujące operacje:
a. naciśnięcie ← ma powodować przewijanie tekstu w lewo,
b. naciśnięcie → ma powodować przewijanie tekstu w prawo (uwaga, przewijanie w dowolną
stronę ma się rozpocząć dopiero po „dotarciu” kursorem na kraniec wyświetlacza),
c. naciśnięcie ↑ powoduje zamianę linii,
d. naciśnięcie ↓ powoduje powrót kursora na początek tekstu,
e. naciśnięcie ESC powoduje zamianę w całym tekście małych liter na duże i odwrotnie,
f. naciśnięcie Enter powoduje automatyczne przewijanie się tekstu w prawą stronę.
Dodatkowo na końcu tekstu można dopisywać swój tekst (liczby z klawiatury matrycowej).
Nie należy korzystać z podprogramu WAIT_KEY (należy wykorzystać rejestry CSBKx)
3. Napisz program symulujący funkcjonalność klawiatury telefonu komórkowego. Proces
wpisywania liter z klawiatury matrycowej ma być taki sam, jak proces wprowadzania liter na
telefonie komórkowym tzn. klawiszowi 1 przypisane są litery A B C, klawiszowi 2 litery D E F
itd., naciśnięcie dwukrotnie klawisza powoduje wybranie drugiej litery itd. Po wprowadzeniu
tekstu i naciśnięciu wybranego klawisza, program powinien umożliwiać operacje jak w
ćwiczeniu uzupełniającym nr 2. Dodatkowo tekst powinien przechodzić do następnej linii po
wprowadzonych 16 znakach (czyli po wypełnieniu jednej linii). Nie należy korzystać z
podprogramu WAIT_KEY (należy wykorzystać rejestry CSBKx)
Oprac. mgr inż. Adrian Kliks, 29.09.2009
5
Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
Ćwiczenia uzupełniające
____________________________________________________________________________________________________________
STEROWNIK TRANSMISJI SZEREGOWEJ
Ćwiczenia uzupełniające:
1. Napisać program umożliwiający jednoczesne nadawanie i odbiór danych z łącza szeregowego
wraz z kontrolą parzystości/nieparzystości z wykorzystaniem sterownika transmisji szeregowej.
Należy umieć ustawić różne prędkości przesyłu danych.
2. Napisać program umożliwiający jednoczesne nadawanie i odbiór danych z łącza szeregowego
wraz z kontrolą parzystości/nieparzystości bez wykorzystania sterownika transmisji szeregowej.
Transmisja ma być zrealizowana całkowicie programowo. Należy umieć ustawić różne
prędkości przesyłu danych (z zakresu od 100 do 19200 bodów).
SYSTEM PRZERWAŃ
Ćwiczenia uzupełniające:
Napisać program, który wyświetli na wyświetlaczu siedmiosegmentowym imię i nazwisko,
umożliwia przewijanie tekstu w lewo i prawo za pomocą klawiatury przeglądanej sekwencyjnie.
Dodatkowo umożliwia wprowadzanie danych z klawiatury matrycowej (należy wykorzystać
program WAIT_KEY), przewijanie, obracanie etc. wprowadzonego tekstu na wyświetlaczu LCD.
Oprac. mgr inż. Adrian Kliks, 29.09.2009
6