mikroprocki cw 6

Politechnika Białostocka

Wydział Elektryczny

Sprawozdanie z zajęć laboratoryjnych

Technika Mikroprocesorowa 2

Ćwiczenie numer: 6

Temat: System przerwań mikroprocesora Z80

Kod przedmiotu TS1A520312

Skład grupy laboratoryjnej:

1. Ossowski Piotr

2. Romańczuk Paweł

Studia: dzienne

Kierunek: Elektronika i Telekomunikacja

Specjalność: Aparatura Elektroniczna - Telekomunikacja Bezprzewodowa

Semestr V Grupa laboratoryjna L02

Prowadzący ćwiczenie: dr inż. Rafał Kociszewski

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

OCENA

7.12.2009

Data wykonania ćwiczenia

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

Data i podpis prowadzącego

1. Cel i zakres ćwiczenia

Celem ćwiczenia było nabycie umiejętności programowania prostych systemów obsługi przerwań.

2. Opis stanowiska badawczego

Stanowisko laboratoryjne składało się z:

- komputera klasy Pentium z systemem operacyjnym Windows;
- programów narzędziowych ( program metaasemblera C.32.EXE oraz symulator ekranowy SYMULATOR.EXE).

- modułowego systemu z mikroprocesorem Z80

3. Przebieg ćwiczenia

Pierwszym etapem wykonania tego ćwiczenia było zapoznanie się z budową i działaniem przykładowego programu

‘CWICZINT.ASM’ wykorzystującego przerwania wektorowe od wszystkich liczników układu Z80CTC.

Po przeanalizowaniu i zidentyfikowaniu wszystkich rozkazów użytych w tym programie przystąpiliśmy do modyfikacji tego programu.

W dalszej części ćwiczenia naszym zadaniem było napisanie programu, który wykorzystując przerwania o częstotliwości 1..2Hz będzie generował na linijce diód LED pod wyświetlaczem podany niżej wzór:

Rys. 1. Wzór przedstawiający kolejność zapalania się diod.

Poniżej zamieszczę zmodyfikowany program ‘CWICZINT.ASM’ z opisem poszczególnych rozkazów:

cpu "z80.tbl" ; wskazuje plik zawierający opis listy rozkazów wybranego procesora;

hof "int8" ; określa format pliku wyjściowego .HEX;

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

ld hl,tab ; przesłanie do rejestru HL zawartości tablicy kolejnych wzorów wyświetlacza;

ld b,13 ; określenie licznika pętli;

begin: im 2 ; wybór 2 trybu obsługi przerwań maskowalnych;

ld a,81h

ld i,a ; wektor przerwań, starszy bajt tablicy przerwań;

ld a,00h

out (ctc1),a ; wektor przerwań, młodszy bajt;

ld a,0b7h ; słowo sterujące, tryb czasowy;

out (ctc1),a ; inicjalizacja CTC1 jako generatora przerwań systemowych;

ld a,0f7h ; słowo sterujące, tryb licznikowy;

out (ctc2),a

ld a,00h ;dzieli przez 256

out (ctc1),a ; CTC1 / 256 - czas przerwania 26ms;

ld a,40

out (ctc2),a ; CTC2 co jedną sekundę;

ei ; zezwolenie na przerwania INT;

label1:

nop ; pusta instrukcja mająca za zadanie wywołać następne;

jr label1

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

int0:

ei ; odblokowanie przerwań;

reti ; powrót z procedury obsługi przerwań maskowalnych;

int2:

ei ; odblokowanie przerwań

reti ; powrót z procedury obsługi przerwań maskowalnych;

ld hl, tab ; przesłanie do rejestru HL zawartości tablicy kolejnych wzorów wyświetlacza;

ld b,13 ; określenie licznika pętli;

int1: push af ;odłożenie zawartości akumulatora na stos

ld a,(hl) ; zapis do akumulatora zawartości komórki pamięci z pierwszym

elementem tablicy zawierającej wzory wyświetlacza;

out (ledy),a ; przesłanie zawartości akumulatora na wyjście tzn. na diody;

inc hl ; inkrementacja, zwiększenie zawartości rejestru HL o 1

(przeskok do następnej komórki pamięci);

dec b ; dekrementacja, zmniejszenie zawartości rejestru B o 1;

jp nz,next

next: pop af

ei

reti

org 8100h

tabint: dwl int0 ; tablica adresów obsługi przerwań;

dwl int1

dwl int2

org 8200h

tab: dfb 03h, 06h, 0ch, 18h, 30h, 60h, 0c0h, 60h, 30h, 18h, 0ch, 06h, 03h

; tablica kolejnych wzorów wyświetlacza;

end

Po kompilacji programu na początku zresetowaliśmy µp system (poprzez wciśnięcie i krótkie przytrzymanie przycisku po prawej stronie modułu ) następnie wcisnęliśmy klawisz nr 9 w celu zapoczątkowania ładowania programu

(na wyświetlaczu µp pojawił się napis LOAD), przy użyciu programu RS_OWL v1.7 przesyłaliśmy wykonany program w pliku HEX, następnie wcisnęliśmy klawisz nr 8 i zadeklarowaliśmy na klawiaturze µp systemu adres komórki od której rozpoczynał się kod naszego programu (w tym przypadku komórka o adresie 8000H) nasz wybór potwierdziliśmy klawiszem enter. Po wciśnięciu klawisza enter diody LED pod wyświetlaczem zaczęły migać w taki sam sposób jaki przedstawiony jest na rysunku 1 tzn. począwszy od lewej strony zapalały się kolejne pary diod w odstępie czasowym ok. 1 sekundy.

4. Wnioski

Podczas realizacji tego ćwiczenia poznaliśmy zasadę działania systemu przerwań mikroprocesora Z80. Jednak głównym celem tego ćwiczenia było stworzenie programu realizującego odpowiednie efekty świetlne. W naszym przypadku wykonaliśmy wzór z zadania Z5-23 zamieszczonego w instrukcji poprzez stablicowanie kolejnych wzorów i cykliczne przesyłanie elementów tej tablicy na port wyświetlacza. Zrealizowany przez nas program zadziałał poprawnie, ponadto jego niewielkie modyfikacje umożliwiają wyświetlanie dowolnych efektów świetlnych.


Wyszukiwarka

Podobne podstrony:
Technika Mikroprocesorowa, tup-cw 4, Program 1:
ZIA Ćw 10 Badanie mikroprocesorowego przekaźnika nadprądowego czasowego RIT 433 doc
ćw 4 Profil podłużny cieku
biofiza cw 31
Kinezyterapia ćw synergistyczne
Cw 1 ! komorki
Pedagogika ćw Dydaktyka
Cw 3 patologie wybrane aspekty
Cw 7 IMMUNOLOGIA TRANSPLANTACYJNA
Cw Ancyl strong
Cw 1 Zdrowie i choroba 2009
Rehabilitacja medyczna prezentacja ćw I
ćw 2b
Ćw 3 Elektorforeza Bzducha

więcej podobnych podstron