ImiÄ™ i nazwisko .......................................................... nr indeksu .............................................
1. (2pkt) Omów adresowanie bezpośrednie i pośrednie. Podaj przykłady rozkazów
zapisujących do pamięci SRAM bezpośrednio: ....... LDS ......... i pośrednio: ....... LD ..........
Adresowanie bezpośrednie adres komórki pamięci, z której będzie odczyt lub do której
będzie zapis, jest zapisany bezpośrednio w rozkazie jako stała liczba. Adres jest więc znany
już na etapie tworzenia kodu.
Adresowanie pośrednie adres jest odczytywany z zadanej komórki pamięci lub z
określonego rejestru. Faktyczny adres jest więc znany dopiero na etapie wykonywania kodu.
2. (2pkt) Stos w mikrokontrolerze AVR. Organizacja i zastosowanie. Rozkazy, których
efektem jest zapis lub odczyt stosu. Inicjalizacja stosu.
Organizacja:
-ð w pamiÄ™ci SRAM
-ð adres wskaznika można ustawić dowolnie programowo przeważnie inicjalizuje siÄ™
go na koniec pamięci SRAM
-ð wskaznik jest postdekrementowany przy odkÅ‚adaniu wartoÅ›ci na stos i
preinkrementowany przy jej pobieraniu
-ð rejestr wskaznika stosu: SPL
Zastosowanie:
-ð przechowywanie adresów powrotu z podprogramu (asembler) lub z funkcji (jÄ™zyki
wyższego poziomu np. język C)
-ð przechowywanie wartoÅ›ci zmiennych lokalnych (jÄ™zyk C)
Rozkazy:
CALL wywołanie podprogramu adres powrotu odłożony na stos; wskaznik stosu -1
RET powrót z podprogramu wskaznik stosu +1; adres powrotu brany se stosu;
POP wskaznik stosu +1; pobranie wartości ze stosu do rejestru
PUSH odłożenie wartości z rejestru na stos; wskaznik stosu -1
Inicjalizacja stosu:
LDI r16, high(RAMEND) ; RAMEND ostatni adres SRAM
OUT SPH, r16
LDI r16, low(RAMEND)
OUT SPL, r16
Strona 1 z 3
ImiÄ™ i nazwisko .......................................................... nr indeksu .............................................
3. (2pkt) Omów system przerwań mikrokontrolera AVR. Wymień rejestry, flagic i rozkazy
zwiÄ…zane z przerwaniami.
-ð Przerwanie jest generowanym sprzÄ™towo sygnaÅ‚em dla procesora, powodujÄ…cym (o ile
przerwanie jest aktywne) zawieszenie wykonywania głównego programu, skok do
procedury obsługującej przerwanie i po jej zakończeniu powrót do głównego
programu.
-ð Peryferia generujÄ…ce przerwania majÄ… w AVR-ach przydzielone staÅ‚e wektory
przerwań, tj. adresy pamięci kodu pod które następuje skok po wygenerowaniu
przerwania.
-ð Przerwania w AVR nie sÄ… domyÅ›lnie zagnieżdżane wywoÅ‚anie przerwania powoduje
automatyczne wyzerowanie globalnej flagi przerwań inne przerwania są
zablokowane na czas obsługi przerwania aktywnego (jednak programowo można tę
flagę odblokować w trakcie obsługi przerwania).
-ð W rejestrze SREG znajduje siÄ™ bit I globalna flaga odblokowania przerwaÅ„
-ð GIMSK rejestr ogólnego maskowania przerwaÅ„
-ð Każdy z peryferiów generujÄ…cych przerwanie ma swojÄ… wÅ‚asnÄ… flagÄ™ (lub ich zestaw
jeśli generuje kilka różnych przerwań np. timery) odblokowującą dane przerwanie
(w rejestrach maskujÄ…cych Mask Register) oraz flagi informujÄ…ce o wystÄ…pieniu
przerwania, które można sprawdzać programowo (w rejestrach z flagami przerwań
Interrupt Flag Register).
-ð RETI rozkaz powrotu z procedury obsÅ‚ugi przerwania zdjÄ™cie ze stosu adres
powrotu i załadowanie go do licznika programu PC; odblokowanie globalnej flagi
przerwań
4. (2pkt). Zapisz numer indeksu (młodsze 4 cyfry np. 168341) w kodzie
binarnym
heksadecymalnym
BCD
liczbÄ™ ujemnÄ… w
kodzie U2
Sposób przeliczania jest opisany np. tutaj:
http://blue_rider_hp.republika.pl/articles/tekst/liczby.html
Strona 2 z 3
ImiÄ™ i nazwisko .......................................................... nr indeksu .............................................
5. (1pkt) Sposób (algorytm) zamiany liczby w kodzie szesnastkowym na kod ASCII
N liczba wejściowa, X pierwsza cyfra w ASCII, Y druga cyfra w ASCII
1. A = N / 16
2. Jeśli A > 10, to X = A 10 + 'a', w przeciwnym wypadku X = A + '0'
3. A = N & 0x0F
4. Jeśli A > 10, to Y = A 10 + 'a', w przeciwnym wypadku Y = A + '0'
6. (3pkt) Ustaw rejestry TCCR0 i OCR0 licznika T0 tak aby na wyjściu OC0 generowany był
sygnał o wypełnieniu 1/8 - numery indeksu parzyste , 7/8 - numery indeksu nieparzyste.
FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00
0 1 1 0 / 1 * 1 0 0 1
OCR0=............ 32 ...................
* COM00 = 0 dla wypełnienia 1/8, = 1 dla wypełnienia 7/8
Jaka jest częstotliwość tego sygnału w przypadku taktowania mikroprocesora rezonatorem
kwarcowym fclk=1,024MHz fOC0= ...... fclk / 256 = 4kHz
(Nie jestem pewien tych wartości. Robienie tego na kartce bez możliwości odpalenia,
sprawdzenia i poprawki jest niestety zwyczajnym idiotyzmem.)
7. (2pkt). Multipleksowany wyświetlacz 7 segmentowy. Schemat, sposób sterowania
Nie umiem tego zrobić, ale tutaj dość dobrze to jest chyba opisane:
http://www.easy-soft.net.pl/artykuly/jezyk-c/jezyk-c-dla-
mikrokontrolerow-8051-multipleksowanie-wyswietlaczy-led
Strona 3 z 3
Wyszukiwarka
Podobne podstrony:
kolokwium odpowiedziZarządzanie finansami Wilimowska kolokwium z odpowiedziamiOdpowiedzi do kolokwiumII kolokwium 2006 07 odpowiedzikolokwium pytania i odpowiedziII kolokwium 2003 04 odpowiedziPOPRAWNE ODPOWIEDZI Z KOLOKWIUM 7 04 2016 (1)Odpowiedzi Kolokwium 2 WDAMwięcej podobnych podstron