mim egazminDaniel Kura

1. Zbiór typu .hex jest wynikiem pracy assemblera. Jest to standardowy format zapisywany

w kodzie ASCII wierszami o następujących polach: kod startu ':' liczba bajtów danych

(dwa znaki), adres pamięci kodu, od którego wpisywane będą dane tego wiersza (4 znaki),

typ pola danych (dwa znaki, 00 - oznacza treść programu, 01 - oznacza wiersz końca), 2n

znaków dla n bajtów danych, najmniej znaczący bajt sumy kontrolnej utworzonej ze

wszystkich bajtów bez pola ':' i bez siebie samej.

Ten bajt sumy przed zapisem ma zmieniony znak wg "uzupełnienia dwójkowego" (czyli

wynik powstaje z odjęcia od 0x100 albo przez XOR x 0xFF i dodaniu 0x01). Przykład

wiersza programu do ładowania od adresu 00A0, oraz wiersza sygnalizującego koniec

zbioru:

:1000A000C0E0C0D0D2D3C2D4C2AAC218753AFFC22F

:00000001FF

Sprawdź, czy następujący wiersz jest poprawny:

:10022000D2A8D2A9D2ABD2ACE4F52FF52AF5477506

TAK

2. Napisz obsługę przerwania timera T0, zliczającego cykle maszynowe w trybie 16-bitowym.

Załóż, że T0 jest uruchomione. W przerwaniu zwiększana jest wartość zmiennej ILE aż

osiągnie ona wartość 0xDE. Wtedy T0 ma zostać zatrzymane.

potrzebna tylko procedura Timer0

Adres przerwania T0: 0Bh

Rejestr TMOD dla trybu 16-bitowego timera 0 wygląda tak: 00000001b

On/Off przerwań dla timera 0: ET0

On/Off timera 0: TR0
On/Off globalny przerwań: ET

ILE DATA 20h

CSEG AT 0Bh

AJMP timer0_interrupt

CSEG AT 0h

AJMP reset

CSEG AT 30h

reset:

MOV TMOD, #0000001b

SETB ET0

SETB EA

SETB TR0

CLR A

start:

SJMP $

timer0_interrupt:

INC A

MOV ILE, A

CJNE A, #0DEh, dalej

CLR TR0

dalej:

RETI

END

3. Podaj cechy architektury ARM, które zasadniczo różnią ją od „rodziny 8051” i AVR.

ARM - wykonuje praktycznie wszystkie instrukcje w jednym cyklu podczas gdy 8051 potrzebuje przeważnie więcej niż 1 np: BNEQ w ARM potrzebuje 1 cyklu DJNZ w 8051 potrzebuje 3. ARM jest bazowany na RISK gdy 8051 jest bazowany na architekturze CISC. ARM oparty jest na architekturze ładuj/zapisz, dane musza być przechowywane w rejestrze przed przetwarzaniem a w 8051 można dostęp uzyskać do pamięci bezpośrednio. ARM posiada warunkowe instrukcje przetwarzania danych (tj. przed wykonaniem instrukcji sprawdzany jest określony warunek), 8051 nie posiada takiej funkcji. Główną różnicą między rodziną AVR a 8051 są typy adresowania. O wiele więcej rejestrów możemy zaadresować w AVR niż w 8051, co ułatwia programowanie i skraca kod. Inną różnicą jest to, że instrukcje AVR zmieniają o wiele więcej flag mikrokontrolera.

4. Napisz w assemblerze program, który ustawia zmienną PARITY na 1, gdy liczba jedynek w

trzech bajtach 24-bitowej zmiennej umieszczonej w adresach BAJT, BAJT+1, BAJT+2 jest

nieparzysta, a ustawia - w przypadku przeciwnym.

napisane w asemblerze MCS-51 [ 1- nieparzyste, 0-parzyste]

CSEG AT 0H

AJMP start

ZMIENNA DATA 30h

PARITY BIT 0h

start:

MOV 30h,#00010001B

MOV 31h,#01000000B

MOV 32h,#00000000B

CLR PARITY

MOV R0,#ZMIENNA

MOV R1,#3

sprawdzaj:

MOV A,@R0

JNB PSW.0,dalej

CPL PARITY

dalej:

INC R0

DJNZ R1,sprawdzaj

MOV P2,20h

END

5. Wymień najważniejsze różnice architektur RISC i CISC.

Architektura CISC (Complex Instruction Set Computer - komputer o złożonym zbiorze rozkazów) cechuje się dużą ilością złożonych rozkazów (mikrokodowanych) mających zmienny format, małym zestawem rejestrów strukturalnych oraz zazwyczaj rozbudowanym sposobem adresowania, Nacisk na sprzęt

architektury RISC (Reduced Instruction Set Computer - komputer o zredukowanym zbiorze instrukcji) cechy to zastosowanie niewielkiej listy prostych rozkazów, stałej długości rozkazu, dużej ilości uniwersalnych rejestrów wewnętrznych, uproszczenie trybów adresowania i, zazwyczaj, zastosowanie architektury load/store (ładuj/zapisz), czyli rozdzielenie rozkazów operujących na pamięci od reszty rozkazów. możliwość wykonywania rozkazów w jednym cyklu zegara, a dokładniej kończenia jednego rozkazu w jednym cyklu zegara przy spełnieniu określonych warunków, Nacisk na oprogramowanie

6. z tablicy pod adresem 0x50 o długości 0x40 wybierz bajty z parzysta liczba jedynek i utworzyc z nich nową tablice

Ogólnie pod adresem na który wskazuje zmienna BUFOR (50h) mamy aktualną tablice. Przenosimy te elementy, które mają parzystą liczbę jedynek w zapisie bitowym do tablicy o adresie zdefiniowanym w TABLICA (70h). Wykorzystujemy bit PSW.0 (patrz zad. 4).

ILE EQU 8 ; 0x60 = dec. 64 = 8 bajtów (elementów)

BUFOR DATA 50h

TABLICA DATA 70h

CSEG AT 0h

JMP start

start:

MOV R0, #TABLICA

MOV A, #0

MOV DPTR, #BUFOR

MOV R1, #ILE

loop:

MOV A, #0

MOVC A, @A+DPTR ; Do A ladujemy WARTOSC z adresu 0x50 ...

INC DPTR ; ... ktory zwiekszamy z kazdym obrotem petli

JNB PSW.0, dodaj_do_tablicy ; jezeli PSW.0 = 0 (parzyste) to skocz do event

powrot:

DJNZ R1, loop ; licznik petli 8 do 0

AJMP $

dodaj_do_tablicy:

MOV @R0, A ; Ladujemy element do adresu 0x70...

INC R0 ; ...ktory zwiekszamy z kazdym obrotem petli

AJMP powrot

CSEG AT BUFOR

DB 1,2,3,4,5,6,7,8

; tablica z kolejnymi wartosciami

; bitowo: 1, 10, 11, 100, 101, 110, 111, 1000

; mamy 3 elementy z parzysta liczba bitow

END

7. DAC 10-bitowy o Uref =2.048V jaka będzie odpowiedź analogowa gdy rejestr danych przechowują wartosci: DACDATAH = 0 DACDATAL = 0xF3

Nie jestem pewien co do tego wzoru, ale ciężko znaleźć coś sensownego na ten temat.

D = 0xF3 = 243 dec.
N = 10
Uref = 2,048

Uout=Uref*D/2N

Uout = 2,04800 * (243 / (2^10)) = 0,486


8. napisz podprogram dla uzyskania opóźnienia 1ms. Procesor ma cykl maszynowy równy 0.5us

Obliczamy x - liczbę potrzebnych cykli

1ms = 1000µs

1000 = x*0,5

x = 2000

MOV R1, #4

petla:

MOV R0, #165

DJNZ R0, $

DJNZ R1, petal

NOP

NOP

NOP

1+(1+165*3+3)*4 = 1997 + 3 = 2000

NOP, MOV – 1 cykl

DJNZ – 3 cykle

9. bufor danych znajduje się w pamięci pod adresem umieszczonym w R0 o długości umieszczoniej w R1 utwórz 16 bitową sumę kontrolną w parze R2,R3

Nie do końca poprawnie, bo adres pamięci jest adresowany bezpośrednio (MOV DPTR, #50h) a nie poprzez R0.

CSEG AT 0h

JMP start

start:

MOV R1, #08h

MOV R2, #0

MOV R3, #0

MOV DPTR, #50h

petla:

MOV A, #0

MOVC A, @A+DPTR

; tmp

MOV R5, A

MOV A, R3

ADD A, R5

MOV R3, A

MOV A, #0

ADDC A, R2

MOV R2, A

INC DPTR

DJNZ R1, petla

CSEG AT 50h

DB 132,245,135,234,215,134,156,159

END


04 Luty 2011

Zad.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.

1111 1111 to dziesiętnie 255, odpowiada wartości Uref=2.55V

czyli jeden krok 0000 0001 odpowiada 0.01V

start

V=0V ADC=0000 0000

po 1. minucie

V=1V, 1V/0.01V=100 stad ADC=100dec=0110 0100bin=64hex

po 2. minucie

V=2V, 2V/0.01V=200 stad ADC=200dec=1100 1000bin=C8hex

po 3. minucie

V=3C, 3V/0.01V=300 stad ADC=no właśnie ile? powyżej 2.55 już zawsze FF? + flaga przepełnienia?

ZAD2. 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. 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

CSEG AT 0

JMP start ;2cykle ktore nie licza sie do opoznienia

RSEG PROG

Delay_1s:

MOV R7, #16 ;1c

zewn:

MOV R6, #255 ;1c

wewn:

NOP ;1c

MOV R5, #243 ;1c

DJNZ R5, $ ;2c kazda

DJNZ R6,wewn ;2c kazda

DJNZ R7,zewn ;2c kazda

;i jeszcze dopelnic do rownych 2 mln

MOV R6, #255 ;1c

DJNZ R6, $ ;2c kazda

MOV R6, #117 ;1c

DJNZ R6, $ ;2c kazda

NOP ;1c

RET ;2c

start: ;jakis tam program

;instrukcja A

ACALL Delay_1s ;2c

;instrukcja B

end

ZAD4. 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.

PROG SEGMENT CODE

Ile EQU 8

BUFOR DATA 50h

TABLICA DATA 70h

CSEG AT 0

JMP start

RSEG PROG

start:

MOV R0, #TABLICA

MOV A, #0

MOV DPTR, #BUFOR

MOV R1, #Ile

loop:

MOV A, #0

MOVC A, @A+DPTR

INC DPTR

JNB PSW.0, event

powrot:

DJNZ R1, loop

AJMP $

event:

MOV @R0, A

INC R0

AJMP powrot

CSEG AT BUFOR

Buf:

DB 1,2,3,4,5,6,7,8

END


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.

PIEC DATA 30h

….

Start: MOV PIEC, #00

PUSH ACC

PUSH PSW

INC PIEC

MOV A,PIEC

CJNE A,#05, dalej

CLR TR1

MOV R7,#FF

Dalej:

POP PSW

POP ACC

RETI

ZAD7. Rozpoznaj funkcję poniższego programu i opisz sens każdej linii kodu:

;SUBROUTINE TOINT

TOINT:

CLR C ; clear znacznika przeniesienia C

JZ toend ; jeśli A= zero to toend

MOV R4,#00H ; przenoszenie do R4 wartosci 0

toi1:

RRC A ; rotacja w prawo akumulatora 7 bit staje się 6 itd.

INC R4 ; inkrementacja R4

JNC toi1 ; jeśli 0 to idz do toi1

MOV A,R4 ;przenoszenie do akumulatora wartości z rejestru R4

toend:

RET ; adres powrotu z podprogramu wpisywany do licznika PC

wypisze na którym miejscu była pierwsza 1 w akumlatorze)

np. A=0110 1000 to "wypisze" 4

ZAD8. 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.

CJNE A,#00, JEDEN

MOV A, #0000 0001B

SJMP KONIEC

JEDEN:

CJNE A,#01,DWA

MOV A,#0000 0010B

SJMP KONIEC

DWA:

KONIEC:

NOP

END


Wyszukiwarka

Podobne podstrony:
mim egazmin new id 302040 Nieznany
mim egazmin
mim egazmin new id 302040 Nieznany
mim egazmin docx
mim egazmin new
Pytania na egazmin, studia Pedagogika Resocjalizacja lic, Działalność pożytku publicznego
mim, studia Polibuda Informatyka, III semestr, mikroprocesory i mikrokontrolery (mim)
Fizjologia egazmin 13
Pytania na egazminie
notatki do egazminu
kura i kurczak
MIM (004)4 93
egazmin poprawkowy grupa b
Mleko egazmin, technologia żywienia- materiały, mleko
pytania na egazmin makro wykład, MAKROEKONOMIA
PPKB egazmin
pytania na egazmin (1)
pojecia na egazmin cz II

więcej podobnych podstron