Technika Mikroprocesorowa, sajewski-przerwania


0x01 graphic

Sprawozdanie z zajęć laboratoryjnych

Technika mikroprocesorowa 2

Temat: System przerwań mikroprocesora Z80

Wykonujący ćwiczenie: Borowski Krzysztof

Szeszko Adam

Studia dzienne

Kierunek: Elektronika i Telekomunikacja

Specjalność: Telekomunikacja bezprzewodowa

Semestr V Grupa laboratoryjna: L01

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

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

OCENA

16.11.2009

Data wykonania ćwiczenia

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

Data i podpis prowadzącego

Cel ćwiczenia:

Zapoznanie się oraz z prostymi systemami przerwań oraz ich programowanie.

Opis stanowiska badawczego:

Ćwiczenie przeprowadzone zostało w dwuosobowej grupie przy stanowisku komputerowym. Wymagany był 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.

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.

Przebieg ćwiczenia:

Ćwiczenie było zaplanowane jako 4-godzinne

Pierwszym zadaniem było zapoznanie się z pracą programu obsługującego przerwania, a następnie poprzez jego modyfikacje wyświetlanie na wyświetlaczu segmentowym liczb od 1 do 256 oraz dodatkowe wyświetlanie liczby w systemie binarnym na diodach.

Listing programu:

cpu "z80.tbl"

hof "int8"

incl "system.inc"

org 8000h

ld C,10 ;ustawienie początkowej prędkości wyświetlania jp begin

szybciej:

Ld c, 5 ;zmiana prędkości wyświetlania na szybszą

jp begin

wolniej:

ld c, 10

jp begin

begin: im 2 ; przerwania maskowalne typu drugiego

ld a,81h ; starszy bajt wektora przerwań

ld i,a ; wektor przerwań

ld a,00h ; młodszy bajt wektora przerwań

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

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

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

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

out (ctc2),a

out (ctc3),a

out (ctc4),a

ld a,00h

out (ctc1),a ; wpisanie stałej czasowej do licznika CTC1 / 256 ld a,C

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 ;zlicza do 8

ei ;zezwolenie na przerwania INT

label1:call conin ;instrukcja wczytująca jaki przycisk został wciśnięty

cp 41h ;sprawdza czy to przycisk „A”

jp Z,szybciej ;jeśli został wciśniety przycisk „A” skocz do inst. szybciej

cp 42h ;sprawdza czy to przycisk „B”

jp Z, wolniej ;jeśli został wciśniety przycisk „B” skocz do inst. szybciej

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

int0:

ei

reti

int1: push af

in a,(ledy)

inc a

out (ledy),a

call A2HEXP

dfb 23h

pop af

ei

reti

int2:

ei

reti

int3:

ei

reti

org 8100h

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

dwl int1

dwl int2

dwl int3

end

W programie zostały dopisane komendy mające na celu wyświetlanie liczb na wyświetlaczy segmentowym jak i diodowym. Dodatkową funkcją programu jest możliwość zmieniania prędkości wyświetlania za pomocą przypisanych przycisków.

Drugim zadaniem było napisanie programu, który zapalał kolejne diody. Sekwencje zapalania diód odzwierciedla przedstawianie kolejnej potęgi liczby 2.

Listing programu:

cpu "z80.tbl"

hof "int8"

incl "system.inc"

org 8000h

ld C,10

jp begin

begin: im 2

ld a,81h

ld i,a ;wektor przerwań

ld a,00h

out (ctc1),a ;wektor przerwań

ld a,0b7h

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

ld a,0f7h

out (ctc2),a

out (ctc3),a

out (ctc4),a

ld a,00h

out (ctc1),a ;CTC1 / 256

ld a,C ;zlicza do 20

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

ld a,2 ;zlicza do 2

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

ld a,8 ;zlicza do 2

out (ctc4),a ;CTC4 co 10 sekund, zlicza do 8

ld a,10000000b ;początkowa wartość wyświetlana zapalona 1 dioda od lewej

ei ;zezwolenie na przerwania INT

;aktywuje system przerwań

label1: jr label1

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

int0: ei

reti

int1:

rlca ; przesunięcie liczby w prawo tak aby zapalila sie kolejna dioda

out (ledy),a

ei

reti

int2: ei

reti

int3: ei

reti

org 8100h

tabint: dwl int0 ; tablica adresow obslug przerwan

dwl int1

dwl int2

dwl int3

end

W programie została wykorzystana komenda przesunięcia w prawo co odpowiada dzieleniu przez dwa. Gdy zapalona jest 1 dioda od lewej wyświetlana jest niejako liczba 128. Po wykonaniu dzielenia jedynka przesuwa się w prawo wyświetlając kolejne wartości z dzielenia przez 2 aż dojdziemy do liczby 1. Proces powtarza się cyklicznie aż do zatrzymania systemu przerwań.

Kolejnym zadaniem było napisanie programu mającego na celu wyświetlanie sekwencji, które po złożeniu ułożą konkretny wzór lub obrazek. W naszym przypadku sekwencja wyświetlana na diodach wyświetlała choinkę.

Listing programu:

cpu "z80.tbl"

hof "int8"

incl "system.inc"

org 8000h

ld C,5

jp begin

begin: im 2

ld a,81h

ld i,a ; wektor przerwan

ld a,00h

out (ctc1),a

ld a,0b7h

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

ld a,0f7h

out (ctc2),a

out (ctc3),a

out (ctc4),a

ld a,00h

out (ctc1),a ; CTC1 / 256

ld a,C

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

ld HL,8200h

ld B,6

ei

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

int0: ei

reti

int1: ld a,(HL)

inc HL

cp

out (ledy),a

call A2HEXP

dfb 23h

ei

reti

int2: ei

reti

int3: ei

reti

org 8100h

tabint: dwl int0 ; tablica adresow obslug przerwań

dwl int1

dwl int2

dwl int3

org 8200h

tab: dfb 00011000b

dfb 00111100b

dfb 01111110b

dfb 11111111b

dfb 01111110b

dfb 00111100b

dfb 00011000b

dfb 00000000b

dfb 00011000b

dfb 00111100b

dfb 01111110b

dfb 11111111b

dfb 01111110b

dfb 00111100b

dfb 00011000b

dfb 00000000b

end

W programie wykorzystaliśmy funkcję dzięki której sami przypisujemy stan poszczególnych wyświetlaczy. Program ten poprzez zapalanie odpowiednia sekwencje diod wyświetla nam obrazek przedstawiający choinkę.

Wnioski

Wszystkie programy jakie napisaliśmy podczas wykonywania ćwiczenia działały poprawnie i po ich skompilowaniu dawały się uruchomić na module mikroprocesorowym z systemem Z80. Przerwania mogą zostac wykorzystane w większości programów dzieki czemu upraszczaja one prace.



Wyszukiwarka

Podobne podstrony:
mazurkiewicz,PODSTAWY TECHNIK MIKROPROCESOROWYCH,SYSTEM PRZERWAŃ, przerwania od timerów liczników, p
PODSTAWY TECHNIK MIKROPROCESOROWYCH, Studia Pwr INF, Semestr IV, PTM
C1 Techniki mikroprocesorowe sprawozdanie
Podstawy techniki mikroprocesor Nieznany
zadania egzaminacyjne dzienne (PTM), elektro, 1, Podstawy Techniki Mikroprocesorowej
80C51 pytania i odpowiedzi, elektro, 1, Podstawy Techniki Mikroprocesorowej
zadania egzaminacyjne zaoczne 2006 07 (PTM), elektro, 1, Podstawy Techniki Mikroprocesorowej
Egzamin z PTC podst kombinacyjne, elektro, 1, Podstawy Techniki Mikroprocesorowej
C2 Techniki mikroprocesorowe sprawozdanie
Technika mikroprocesorowa
Zagadnienia do egzaminu z Elektroniki i Technik Mikroprocesorowych
cw03spp, Przwatne, Studia, Semestr 3, Technika Mikropocesorowa
TECHNIKA MIKROPROCESOROWA (1), Edukacja, studia, Semestr IV, Technika Mikroprocesorowa
Technika Mikroprocesorowa, tup-cw 4, Program 1:
Technika mikroprocesorowa projekt(1)
7 Zastosowanie techniki mikroprocesorowej II
1g zastosowania techniki mikroprocesorowej
Technika mikroprocesorowa - zagadnienia na egzamin, Technika mikroprocesorowa - zagadnienia na egzam

więcej podobnych podstron