SPRAWO~2.DOC

(62 KB) Pobierz
WIADOMOŚCI WSTĘPNE

Politechnika Wrocławska

 

 

 

 

 

 

 

 

Laboratorium

podstaw techniki mikroprocesorowej

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sprawozdanie nr 1.

Grupa nr1:

Tarnowski Ireneusz

Świątek Bartłomiej

 

 

 

Wrocław 1999r.
Wiadomości wstępne

 

Mikrokontroler 80535 jest stosunkowo prostym i tanim lecz bardzo użytecznym w wielu zastosowaniach ( szczególnie przemysłowych, gdzie doskonale spełnia rolę urządzenia kontrolującego i sterującego pracą różnych zewnętrznych urządzeń i układów). 

Ogólnie rzecz biorąc 80535 składa się z :

ü     arytmometra ( 8-bitowa jednostka arytmetyczno-logiczna , wewnętrzne rejestry, dekoder rozkazów);

ü     pamięci danych ( 256 bajtów, przy czym komórki o adresach 128..255 dostępne są tylko w rejestrowym pośrednim trybie adresowania);

ü     blok rejestrów specjalnych ( 42 rejestry );

ü     pamięci programu ( ROM lub EPROM ) – pamięć programu jest rozdzielona od pamięci danych w celach bezpieczeństwa, bowiem układ 80535 pracuje zwykle jako kontroler urządzeń zewnętrznych i wysoce niewskazane byłoby „zamazywanie” kodu programu w czasie pracy tego urządzenia (co może mieć miejsce np. w typowych PC );

ü     programowalne układy czasowe , liczniki;

ü     układów I/O : sześć programowalnych 8-bitowych portów równoległych, które mogą służyć również do transmisji szeregowej, czy jako linie adresowe zewnętrznej pamięci ;

ü     układu transmisji szeregowej (duplex, własny licznik, Synch/Asynch )

ü     układu przerwań (12 źródeł przerwań w tym 7 zgłaszanych sygnałami zewnętrznymi);

ü     generatora sygnałów taktujących i sterowania ( cykl maszynowy trwa 12 cykli zegarowych );

ü     przetwornika A\D ( 8-bitów );

ü     watchdog ( 16-bitowy licznik nadzorujący poprawną pracę programu );

ü     układ redukcji mocy;

 

Sterownik ZD-535 zbudowany na bazie tego mikrokontrolera współpracuje bezpośrednio z komputerem PC poprzez port szeregowy i odpowiedni program nadzorujący.

Mikrokontroler 80535 jako, iż jest swego rodzaju maszyną liczącą akceptuje jedynie tzw. język maszynowy, język który jest zbiorem numerycznych rozkazów „rozumianych” przez mikrokontroler. Ze względu na to, iż posługiwanie się tym językiem przez programistę jest wysoce niewygodne, dlatego stosujemy dla uproszczenia pisania programów dla mikroprocesorów „asembler”, język niskiego poziomu pozwalający w pełni i w bardziej elastyczny sposób wykorzystać możliwości mikroprocesora.


Jednocześnie program asembler ułatwia pisanie programów poprzez:

·        operowanie mnemonikami zamiast numerycznymi rozkazami,

·        możliwość zastosowania etykiet, które asembler automatycznie kojarzy z określoną komórką pamięci,

·        zastosowanie dyrektyw asemblerowych,

Za pomocą dyrektyw asemblera można:

·        deklarować zarezerwowanych bajtów w pamięci wykorzystywane w programie (dyrektywy DB, DW,DD),

·        umieszczać program w odpowiednim miejscu pamięci (dyrektywa ORG nn),

·        inicjować symbole predefiniowane dla mikrokontrolera oraz zestawu dyrektywą $LAB535.INC

·        deklarować stałe dyrektywą EQU nn

 

Po napisaniu programu w asemblerze otrzymujemy plik tekstowy o rozszerzeniu *.S03. Taki tekstowy plik jest dopiero kompilowany przez asembler i linkowany (łączone są poszczególne, np. skompilowane wcześniej, bloki i przygotowane do umieszczenia w pamięci programu mikrokontrolera). Po skompilowaniu programu przez asembler i zlinkowaniu przez linker otrzymujemy kod maszynowy programu w postaci cyfr heksadecymalnych, umieszczonych w pliku o rozszerzeniu *.HEX. Taki program jest przesyłany złączem szeregowym do pamięci kontrolera i tam dopiero jest on uruchamiany. Całość transmisji i pracy programu jest nadzorowana przez program monitora, który to z punktu widzenia programisty widziany jest tylko po stronie komputera PC, natomiast część monitora znajdująca się w sterowniku jest niewidoczna dla użytkownika (przynajmniej na początkowym etapie pisania programów). 

 

Program pisany w asemblerze dla tego urządzenia może zawierać następujące segmenty:

ü     segment kodu (wymagany) – CODE

ü     segment danych – DATA

ü     segment danych – IDATA

Lista instrukcji asemblerowych obejmuje 111 pozycji, które można podzielić na:

ü     operacje arytmetyczne

ü     logiczne

ü     przesłania

ü     zmiany sterowania

Oprócz akumulatora oraz rejestrów związanych z arytmometrem istnieje 8 rejestrów ogólnego przeznaczenie R0..R7. Istnieją 4 bloki takich rejestrów, ale tylko jeden może być aktywny.


Zestaw 80535 znajdujący się w laboratorium daje użytkownikowi do dyspozycji następujące tryby adresowe:

1.     rejestrowy : MOV R0,A
adresem jest tu numer (nazwa) rejestru

2.     rejestrowy pośredni : MOV @R0,A
adresem argumentu jest zawartość rejestru

3.     bezpośredni : MOV A,01H
adres argumentu stanowi drugi lub drugi i trzeci bajt rozkazu

4.     natychmiastowy : MOV A,#0
argument znajduje się w drugim lub w trzecim bajcie rozkazu

5.     indeksowy : MOV X A,@DPTR
względem rejestru adresowego DPTR

 

Uproszczona mapa pamięci 80535 z zestawu laboratoryjnego

 

 

External Data Memory

RAM

2 kB

 

 

 

External Code Memory

EPROM

8 kB

 

 

Internal RAM

Indirect

128 byte

 

 

Internal RAM

Direct

128 byte

 

 

 

 

External Code Memory

RAM

32 kB

 

 

External Data Memory

RAM

128 byte

 

 

Zewnętrzna pamięć podzielona jest na pamięć danych i programu. Pamięć programu składa się z 8kB EPROM, w której znajduje się program monitora (jego część pracująca w ZD535) oraz 31kB RAM, do której przegrywany jest program użytkownika. Wielkość pamięci danych wynosi 2kB.

Bardzo ogólna mapa pamięci danych zestawu ZD535:

0000

-

07FF

pamięć dostępna dla użytkownika

8000

-

87FF

klawiatura

8800

-

8FFF

LCD

9000

-

9FFF

I/O dwustanowe oraz wyjścia analogowe

C000

-

C7FF

RS232 służący do komunikacji z PC

 


Pamięć programu użytkownika zawiera się w adresach: 0000-DFFF;

Adresy E000-FFFF są zajmowane przez program monitora. Należy dodać, że ostatnie  256 bajtów pamięci danych dostępnej dla użytkownika zarezerwowane jest dla programu monitora.

 

Przebieg ćwiczenia :

Naszym zadaniem podczas ćwiczenia było odpowiednia modyfikacja programu
Test535.S03 napisanego w asemblerze „Archimedes”, aby kontroler zadziałał
w zadany przez prowadzącego sposób.

Zadanie1.
              Wyświetlenie w odpowiednim miejscu wyświetlacza dowolnego tekstu.

Listing programu :

 

$lab535.inc                            

;inicjuje identyfikatory predwefiniowane dla 8051

RSEG CODE

 

   CALL  INIT_LCD_C  

;wywołanie procedury inicjującej wyświetlacz

   CALL  LCD_C_OFF   

;wywołanie procedury czyszczącej wyświetlacz

   MOV   A,#12H       

;załadowanie wartości 12h do akumulatora

                                                           

;(pozycja kursora)             

   CALL  GOTO_X_Y    

;wywołanie procedury ustalającej pozycję kursora na wyświe;tlaczu.

   MOV   DPTR, #TEXT

;załadowanie adresu tekstu do rejestru DPTR

   CALL  LCD_STR_PUT

;wywołanie procedury wyświetlającej tekst na wyświetlaczu.

   CALL  RETURN                 

 

TEXT:    DB 'LCD $' 

Zarezerwowanie pamięci dla tekstu

  END

 

 

Zadanie2.
Opóźnienie o ustalony odcinek czasu działania dalszej części  programu.

(pętla opóźniająca).

 

Listing programu :

$lab535.inc                            

;inicjuje identyfikatory predwefiniowane dla 8051

   RSEG CODE

 

Delay:  MOV  R7,#14H   

;Załadowanie wartości 14h do rejestru R7

Dly1:   MOV  R5,#FFH   

;załadowanie wartości FFh do rejestru R5

Dly2:   MOV  R6,#FFH   

;załadowanie wartości FFh do rejestru R6

;       CPL  BUZZER    

;make sound – nieaktywny

        DJNZ R6,$                 

;dekrementacja i skok do tej samej linii jeśli nie 0 trwa ;382,5ms

        DJNZ R5,dly1   

;dekrementacja i skok do linii o etykiecie dly1 jeśli nie 0

                                                                 

;trwa 385,5*255=98302,5ms ~ 100000

...

Zgłoś jeśli naruszono regulamin