Sprawko cw2


0x01 graphic

Sprawozdanie z zajęć laboratoryjnych

Technika Mikroprocesorowa 2

Temat: System przerwań mikroprocesora Z80

Wykonujący ćwiczenie: Marcin Walenciej

Adam Zabrocki

Adam Turowski

Studia dzienne

Kierunek: Elektronika i Telekomunikacja

Specjalność: Elektronika Przemysłowa

Semestr V Grupa laboratoryjna: L03

Prowadzący ćwiczenie: dr inż. Sajewski Łukasz

...........................

OCENA

01.12.2010r.

Data wykonania ćwiczenia

..............................................

Data i podpis prowadzącego

I. Wstęp

Przerwanie - zdarzenie wewnątrz lub na zewnątrz systemu mikroprocesorowego, wymagające natychmiastowej reakcji ze strony programu wykonywanego przez mikroprocesor. Procedura obsługi przerwania - ciąg rozkazów realizujących pożądaną reakcję na przerwanie.

Rodzaje przerwań / zastosowania przerwań

1. przerwania zegarowe - regularne, o f > 1Hz, odmierzanie odcinków czasu (np. w ms), pomiar czasu astronomicznego, w małych systemach mikroprocesorowych: obsługa urządzeń zewnętrznych (klawiatur, wyświetlaczy, itd.).

2. przerwania od urządzeń zewnętrznych (komputerowych) - nieregularne,

informują mikroprocesor o gotowości urządzenia do nowej transmisji

informacji lub zakończeniu dotychczasowej transmisji.

3. przerwania od układów kontrolujących pracę systemu mikroprocesorowego -

sporadyczne, zwykle o wysokim priorytecie, zazwyczaj sygnalizujące jakieś

niesprawności (zanik zasilania, błąd parzystości w bloku pamięci, załamanie

się cyklu pracy systemu nadzorowanego przez watchdog).

4. przerwania od układów sprzężenia z obiektem - nieregularne, sygnalizujące

rożne zdarzenia w USO (np. koniec cyklu konwersji przetwornika A/C) lub w

kontrolowanym obiekcie (zadziałanie krańcówek alarmowych, wystąpienie

stanów alarmowych wielkości ciągłych).

II. Cel i zakres ćwiczenia.

Nabycie umiejętności programowania prostych systemów obsługi przerwań.

III. Opis stanowiska badawczego.

Ćwiczenie przeprowadzane jest w dwuosobowych grupach przy stanowisku komputerowym. Wymagany jest komputer klasy Pentium z systemem operacyjnym Windows, wyposażony w kolorową kartę graficzną i takiż monitor. Na komputerze powinny być zainstalowane programy narzędziowe (program metaasemblera C32.EXE i symulatora ekranowego SYMULATOR.EXE). Wymienione oprogramowanie narzędziowe w całości jest umieszczone w kartotece D:\Z80. Studenci piszą i uruchamiają swoje programy w indywidualnych podkartotekach, założonych w kartotece D:\Z80\LAB na pierwszych zajęciach.

Jako przykładowy rzeczywisty system mikroprocesorowy wykorzystuje się modułowy system z mikroprocesorem Z80. Jest on połączony z komputerem typu PC łączem szeregowym, które służy do ładowania kodów programów do pamięci operacyjnej systemu mikroprocesorowego.

IV. Przebieg ćwiczenia.

Nasza grupa miała do wykonania trzy zadania:

Zadanie 1: Napisać program, który wykorzystując przerwania o częstotliwości 1..2Hz będzie generował na linijce diod LED pod wyświetlaczem wybrany wzór z instrukcji.

Zadanie 2: To samo co zadanie pierwsze tylko inny wzór

Zadanie 3: Napisane dwa programy połączyć w jeden z możliwością wyboru dowolnym klawiszem na klawiaturze.

Zadanie nr 1:

Za zadanie mieliśmy wygenerować określony wzór geometryczny w postaci migających w odpowiednich chwilach diod. Wzór ten przedstawiony zostanie poniżej w postaci 0;1 gdzie 1 oznacza świecącą diodę.

1 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0

0 0 1 0 0 0 0 0

0 0 0 1 0 0 0 0

0 0 0 0 1 0 0 0

0 0 0 0 0 1 0 0

0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 1

1 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0

0 0 1 0 0 0 0 0

0 0 0 1 0 0 0 0

0 0 0 0 1 0 0 0

0 0 0 0 0 1 0 0

0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 1

Poniżej został przedstawiony jeno razowo cały kod całego programu (Nasz program napisany jest w przerwaniu int1)

cpu "z80.tbl"

hof "int8"

incl "system.inc"

org 8000h

; porty ukladu CTC na plycie CPU (zdefiniowane w pliku SYSTEM.INC):

;ctc1 equ 74h

;ctc2 equ 75h

;ctc3 equ 76h

;ctc4 equ 77h

; port LED'ow na plycie PKW

;ledy equ 0c1h

begin: im 2

ld a,81h

ld i,a ; wektor przerwan

ld a,00h

out (ctc1),a ; wektor przerwan

ld a,0b7h

out (ctc1),a ; inicjalizacja CTC1 jako genera-

ld a,0f7h ; tora przerwan systemowych

out (ctc2),a

out (ctc3),a

out (ctc4),a

ld a,00h

out (ctc1),a ; CTC1 / 256

ld a,20

out (ctc2),a ; CTC2 co 5/8 sekundy

ld a,2

out (ctc3),a ; CTC3 co 5/4 sekundy

ld a,8

out (ctc4),a ; CTC4 co 10 sekund

ld a,1 ; ładuj 1 do akkumulatora

ei ; zezwolenie na przerwania INT

label1: ;call inopnd

;ld hl,(oprnd1)

;ld de,(oprnd2)

;or a ; CY := 0

;sbc hl,de

;call hl4hp

;dfb 42h

;call conin

;call clsp

;dfb 80h

jr label1

; O B S L U G I P R Z E R W A N

int0: ;push af

;in a,(ledy)

;xor 0c0h

;out (ledy),a

;pop af

ei

reti

; nasz program

int1: ;push af

;in a,(ledy) ; wyświetl akku na linijce

rrc a ; przesuń w prawo jedynke

out (ledy),a ; wyświetl na linijce nową wartość w akku

;pop af

ei

reti

int2: ;push af

;in a,(ledy)

;xor 0ch

;out (ledy),a

;pop af

ei

reti

int3: ;push af

;in a,(ledy)

;xor 03h

;out (ledy),a

;pop af

ei

reti

org 8100h

tabint: dwl int0 ; tablica adresow obslug przerwan

dwl int1

dwl int2

dwl int3

end

Opis działania programu:

Program standardowo zaczyna się trzema rozkazami:

W powyższym tekście prog ramu zaznaczono po średnikach, które fragmenty odpowiadają za inicjalizację CTC1 jako generatora przerwań, częstotliwości migania diod LED, zezwolenie na przerwania INT, obsługę przerwań oraz tablicę adresów obsługi przerwań. Z kolei nasz program zaczyna się od przerwania INT 1, jego zadaniem jest wyświetloną wcześniej diodę na linijce przesunąć w prawo i tak co każde przerwanie w nieskończoność.

Zadanie nr 2:

W drugiej części ćwiczeń mieliśmy przygotować kolejny program wyświetlający na linijce

Wybrany wzór z instrukcji tyle że trudniejszy.

1 0 0 0 0 0 0 0

1 1 0 0 0 0 0 0

1 1 1 0 0 0 0 0

1 1 1 1 0 0 0 0

1 1 1 1 1 0 0 0

1 1 1 1 1 1 0 0

1 1 1 1 1 1 1 0

1 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0

1 1 0 0 0 0 0 0

1 1 1 0 0 0 0 0

1 1 1 1 0 0 0 0

1 1 1 1 1 0 0 0

1 1 1 1 1 1 0 0

1 1 1 1 1 1 1 0

1 1 1 1 1 1 1 1

Kod programu:

Przed przerwaniem :

ld a,10000000b - ładuj do akku liczbę 10000000 binarnie

int1: ;push af

out (ledy),a ; wyświetl akku na linijce

SRA a ; przesuń wartość binarnie w akku w prawo z zapamiętaniem poprzedniej

cp 11111111b ; porównanie 11111111b z akku

jp z,zeruj ; jeżeli akku=11111111b=> Z=1 => skok do „zeruj”

jp wyjdz ; jeżeli Z=0 skok do „wyjdź”

zeruj: ld a, 10000000b ; pętla zeruj, ładuj do akku 10000000b

wyjdz: ; pętla wyjdź (wychodzimy z przerwania i zaczynamy od początku)

;pop af

Ei

Reti

Opis działania programu:

Program ten ma zadanie zapalić diodę na linijce i przesuwać ją w prawo z zapamiętaniem przedniej co widać na przedstawionym powyżej rysunku.

Zadanie nr 3:

W trzecim i ostatnim naszym zadaniu mieliśmy nasze poprzednie dwa programy złożyć w jeden z możliwością wyboru migania diod poprzez wciśniecie dowolnego klawisza.

Kod programu:

int1: ;push af

; ld a,(ledy) ; ładuj komórkę pamięci o nazwie ledy(zadeklarowaną na początku programu) do akku

ld E,A ; ładuj akku do rej. E

call ifkey ; jeżeli wciśnięty klawisz wrzuca do akku jego wartość

cp 30h ; porównaj 30h z akku

jp Z,wzor1 ; jeżeli akku=30h=>Z=1 to skocz do wzór 1

cp 31h ; porównaj 31h z akku

jp Z,wzor2 ; jeżeli akku=31h=>Z=1 to skocz do wzór 2

jp wyjdz ; jeżeli żaden z powyższych skocz do pętli wyjdź

wzor1: ; pętla wzor1

ld A,E ; ładuj rej E do akku

out (ledy),a ; wyświetl akku na linijce

SRA a ; przesuń wartość binarnie w akku w prawo z zapamiętaniem poprzedniej

cp 11111111b ; porównanie 11111111b z akku

jp z,zeruj ; jeżeli akku=11111111b=> Z=1 => skok do „zeruj”

jp wyjdz ; jeżeli Z=0 skok do „wyjdź”

zeruj: ; pętla zeruj

ld a, 10000000b ; pętla zeruj, ładuj do akku 10000000b

jp wyjdz ;skok do wyjdź

wzor2: ; pętla wzor 2

ld A,E ; ładuj rej E do akku

ld (ledy),A ;ładuj akku do komórki pamięci o wartości ledy

rrc a ; przesuń w prawo jedynkę

out (ledy),a ; wyświetl na linijce nową wartość w akku

jp wyjdz ; skok do pętli wyjdź

wyjdz: ;ptla wzjdz.

;pop af

Ei

Reti

Opis działania programu:

Program ten ma wykonać wyświetlanie wzorów diod z poprzednich zadań. Gdy trzymamy wciśnięty przycisk „0”=30h program uruchamia wzór 1 a gdy wciśniemy „1”=31h to program automatycznie zacznie wykonywać wzór 2

V. Wnioski:

Udało się nam przerobić program do wersji potrzebnej na laboratoria. Sekwencję zapalania się diod można zmienić wciskając przycisk 0 LUB 1. Mogliśmy również zmieniać czas świecenia diod poprzez modyfikację odpowiedniej części programu. Na przykład jak wpiszemy 38 to diody będą świecić przez okres czasu równy sekundzie.

6



Wyszukiwarka

Podobne podstrony:
sprawko cw2
sprawko cw2 spoiwa?mentowe
Pneumatyka sprawko cw2
sprawko cw2
sprawko ćw2, Szkoła, Semestr 4, Podstawy elektroniki, Bart, Podstawy Elektroniki LAB, Podstawy Elekt
sprawko cw2, Polibuda, II semestr, fizyka, FIZA, lab, Chemia laborki, chemia ogolna nie organiczna
Pneumatyka sprawko cw2
fizyka2 Sprawko Ćw2
cw2 szklo, Prywatne, Uczelnia, Budownictwo, II Semestr, Materiały Budowlane, MOJE SPRAwka
sprawko anteny cw2 jhgjhgjhgjhg
fiz lab cw2 sprawko
Karol B ćw2, PWR W3 technologia chemiczna, Sprawko 1
sprawozdanie cw2, sprawka
sprawko metrologia cw2, polibuda, 2 semestr, metrologia( sprawozdania, materiały na egzamin)
sprawozdanie cw2 popr, sprawka

więcej podobnych podstron