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.