zadania z 2011

Transkrypt

zadania z 2011
1. Na wejście 8-mio bitowego przetwornika ADC podawane jest napięcie wzrastające liniowo od zera do
wartości 10V z szybkością wzrostu 1 V / minutę. Proszę przyjąć, że ADC „próbkuje” sygnał co minutę i
podać wartości rejestru odczytu ADC (binarnie, lub szesnastkowo) w kolejnych 10 minutach, Napięcie
referencyjne ADC wynosi 2.55 V.
2. Potrzebujemy, by w programie dla 8-mio bitowego mikro-kontrolera, o cyklu maszynowym wynoszącym
500ns nastąpiło opóźnienie pomiędzy wykonaniem dwóch instrukcji.
a: ---- instrukcja
opóźnienie
b: ----- instrukcja
Opóźnienie ma wynosić 1 sekundę. Przy rozwiązaniu można podać/założyć które z użytych komend są
jedno, a które dwu-cyklowe.
3. Do magistrali I2C przyłączonych jest wiele procesorów. W pewnym momencie dwa z nich rozpoczynają
równocześnie transmisję (, która, jak wiadomo, po sekwencji „start” rozpoczyna się od wysyłania adresu
„slave'a”, z którym ma być nawiązane połączenie). Procesor A wysyła bajt o zawartości 0x8F, a procesor
B bajt o treści 0x1F. Który procesor uzyska dostęp do magistrali. Jaki jest adres urządzenia, z którym
„zwycięski” procesor nawiąże kontakt? Czy kolejny bajt wysyłany będzie od czy do procesora, który
uzyskał dostęp?
4. Rejestr PSW (Program Status Word) na pozycji 0 ma bit parzystości. Jest on ustawiany (na 1) jeśli
aktualnie liczba jedynek w ACC jest nieparzysta, zerowany w przeciwnym, wypadku. W obszarze
pamięci danych od adresu 0x50 do adresu 0xAF znajdują się bajty o różnych wartościach. Napisz
program zliczający liczbę bajtów o nieparzystej liczbie jedynek.
5. Mikroprocesor wyposażony jest w 8-bitowy „timer”, który skonfigurowany jest tak, że przepełnienie
powoduje przerwanie programowe. Timer zlicza cykle gdy ustawiony jest bit o nazwie TR1 (jeśli ten bit
jest 0, to timer nie zlicza cykli). Należy napisać podprogram obsługi przerwania od tego Timer'a tak, by
po piątym przepełnieniu ustawił rejestr R7 na wartość 0xFF oraz przestał zliczać cykle maszynowe.
6. Załóżmy, że interfejs USART procesora skonfigurowany jest tak, że przesyła i odbiera 9 bitów danych (8
bitów, pełny bajt odbierany jest do rejestru SBUF, a bit dziewiąty do bitu o nazwie TB8). Zmienna BLAD
ma być wyzerowana, gdy odczytany bajt z SBUF ma nieparzystą liczbę jedynek i równocześnie TB8 jest
ustawione na 1 lub gdy SBUF ma parzystą liczbę jedynek i TB8 jest zerem. W przeciwnych wypadkach
BLAD ma być różny od zera. Napisz fragment programu ustawiający właściwą wartość BLAD.
7. Rozpoznaj funkcję poniższego programu i opisz sens każdej linii kodu:
;SUBROUTINE TOINT
TOINT:
CLR C
JZ
toend
MOV R4,#00H
toi1:
RRC A
INC R4
JNC toi1
MOV A,R4
toend:
RET
;-----------------------------------------------------------------------------8. Napisz podprogram, który wywołany zastaje w akumulatorze liczbę całkowitą z zakresu 0-7,
a w wyniku zmienia ACC tak że ma on ustawiony jeden bit na pozycji odpowiadającej tej liczbie
całkowitej.