OPROGRAMOWANIE APARATURY POMIAROWEJ - IME

Transkrypt

OPROGRAMOWANIE APARATURY POMIAROWEJ - IME
OPROGRAMOWANIE APARATURY POMIAROWEJ
OPROGRAMOWANIE APARATURY µP
Zegar czasu rzeczywistego
Laboratorium
1. Cel ćwiczenia
Podstawowym celem ćwiczenia jest poznanie obsługi portu szeregowego w mikrokontrolerach rodziny
MCS-51 oraz realizacji zadań w oparciu o system przerwań tego mikrokontrolera. Wykonanie ćwiczenia
laboratoryjnego będzie wymagało znajomości struktury mikroprocesora 8051, jego systemu przerwań, portu
szeregowego oraz układów licznikowych.
2. Opis stanowiska laboratoryjnego
Stanowisko laboratoryjne składa się z komputera klasy PC oraz makiety dydaktycznej, której schemat
ideowy przedstawiono na rys.1. System mikroprocesorowy pracuje z rezonatorem kwarcowym o częstotliwości
12MHz. Częstotliwość ta stanowi podstawę do programowania licznika-zegara współpracującego z
wewnętrznym układem UART (asynchronicznym układem transmisji szeregowej) mikrokontrolera.
Przedstawiony na rys.1 układ MAX 232 służy do dopasowania sygnałów TTL (linie RxD i TxD
mikrokontrolera) do poziomów odpowiednich dla standardu RS-232.
Do komunikacji z makietą przez port szeregowy komputera PC wykorzystano program HyperTerminal,
który umożliwia z jednej strony przesyłanie programu do makiety (patrz punkt 3), natomiast z drugiej strony
pozwala na przesyłanie danych do uruchomionego programu użytkownika oraz wyświetlanie informacji
przesyłanych z programu.
µP 8051
P0
INSTRUKCJE
DANE
ROM
RAM
P1
Rejestr
ALE
ADRES
ADRES
P2
OE
PSEN
MAX232
RS232
WE
OE
WR
TxD
RxD
RD
P3
Rys. 1. Schemat ideowy wykorzystywanego systemu mikroprocesorowego
3. Działanie makiety pod kontrolą programu monitora
PAULMON2 jest darmowym programowym monitorem instalowanym w systemach bazujących na
mikrokontrolerach rodziny MCS-51. Umieszczenie opisywanego monitora w pamięci ROM mikrokontrolera
pozwala na wczytywanie programów do pamięci RAM i wykonywanie ich, co jest znacznie wygodniejsze i
szybsze, niż przeprogramowywanie pamięci EPROM.
1
Do komunikacji z programem monitora można wykorzystać dowolny program pozwalający na
komunikację za pomocą złącza RS-232, np. HyperTerminal. Po uruchomieniu niniejszego programu na
komputerze PC, oraz po wciśnięciu klawisza resetu makiety, monitor wysyła następujący komunikat:
Welcome to PAULMON2 v2.1, by Paul Stoffregen
See PAULMON2.DOC, PAULMON2.EQU and PAULMON2.HDR for more information.
Program Name
List
Single-Step
Memory Editor (VT100)
Location
1000
1400
1800
Type
External command
External command
External command
a następnie pojawia się znak zachęty
PAULMON2 Loc:2000 > _
Wartość 2000 określa adres, na jaki wskazuje wewnętrzny wskaźnik monitora. Jego znajomość jest użyteczna
przy wywoływaniu komend operujących na pamięci systemu.
Poniżej zostaną przedstawione wybrane komendy monitora. Wielkość liter przy wprowadzaniu poleceń
nie ma znaczenia.
3.1. D (ang. Download) – ładowanie programu
Polecenie to pozwala na załadowanie do pamięci RAM systemu mikroprocesorowego pliku z programem
w formacie Intel Hex. W formacie tym zawarte są informacje o adresie, pod który mają być zapisywane kolejne
bajty przesyłanego programu, zatem wewnętrzny wskaźnik pamięci monitora nie jest brany pod uwagę.
Załadowanie programu polega na wciśnięciu klawisza [D], co powoduje wyświetlenie następującej informacji
PAULMON2 Loc:2000 > Download
Begin ascii transfer of Intel hex file, or ESC to abort
Teraz należy z menu Transfer programu TyperTerminal wybrać Wyślij plik tekstowy..., a w otwartym oknie
wskazać miejsce położenia pliku *.hex. Zatwierdzenie wyboru powoduje rozpoczęcie przesyłania danych.
Za każdym razem, kiedy monitor odbierze pojedynczą linię z ładowanego pliku *.hex, na ekranie
zostaje wyświetlona kropka. Jeśli z jakiś powodów konieczne jest przerwanie ładowania programu należy wtedy
wcisnąć klawisz [Esc]. Po zakończeniu ładowania pliku z programem lub gdy ładowanie zostanie przerwane na
życzenie użytkownika, na ekranie pojawia się podsumowanie.
................................................................................
.......................................................
Download completed
Summary:
135 lines received
2084 bytes received
2084 bytes written
No errors detected
Jeśli po wykonaniu polecenia wczytania pliku w informacji podsumowującej monitora raportowane są
błędy o braku możliwości zapisu
Summary:
246 lines received
3834 bytes received
630 bytes written
Errors:
3204 bytes unable to write
to oznacza, że plik HEX został odebrany poprawnie, jednak obszar pamięci wyspecyfikowany w kolejnych
rekordach zawartych w pliku jest tylko do odczytu.
W przypadku odebrania przez monitor danych o niepoprawnym formacie zostanie wyświetlone
podsumowanie podobne do poniższego.
2
Summary:
3 lines received
62 bytes received
62 bytes written
Errors:
1 bad checksums
2 unexpected begin of line
17 unexpected hex digits
2 unexpected non hex digits
3.2. J (ang. Jump) – skocz pod określony adres w pamięci
Polecenie to pozwala na przejście do wykonywania wczytanego wcześniej programu użytkownika. Po
wciśnięciu klawisza [J] pojawi się napis
PAULMON2 Loc:2000 > Jump to memory location
Jump to memory location (2000), or ESC to quit: _
W tym momencie należy wprowadzić wartość adresu, od którego został umieszczony program. Po wpisaniu
ostatniego (czwartego) znaku na ekranie pojawi się napis
running program:
_
informując o rozpoczęciu wykonywania programu użytkownika.
Przed przejściem pod wyspecyfikowany adres program monitora odkłada na stosie wartość 0000H, zatem
programy, które kończą się instrukcją RET powodują ponowne wywołanie programu monitora. Jeśli program
działa w nieskończonej pętli, to jedyną możliwością powrotu do programu monitora jest reset mikrokontrolera.
4. Wskazówki do ćwiczenia
4.1.
Konfiguracja przestrzeni adresowej
monitor EPROM
program RAM:
dane RAM:
obszar wspólny dla programu i danych:
0000h÷0FFFh,
2000h÷F7FFh,
0000h÷F7FFh,
2000h÷F7FFh.
5. Literatura
[1]
[2]
[3]
[4]
[5]
Chwaleba A., Poniński M., Siedlecki A.: „Metrologia elektryczna”. WNT, Warszawa 1994.
Rydzewski A.: „Mikrokomputery jednoukładowe”. WNT, Warszawa 1992.
Starecki T.: „Mikrokontrolery jednoukładowe rodziny 51”. NOZOMI, Warszawa 1996.
Starecki T.: „Mikrokontrolery 8051 w praktyce”. BTC, Warszawa 2003.
Majewski, Kardach K.: „Mikrokontrolery jednoukładowe 8051. Programowanie w języku C w
przykładach”. Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław 1995.
[6] Kernighan W., Ritchie D.M.: „ANSI C”. WNT, Warszawa 1992.
[7] Beach M.: „C51 Primer”, Hitex (UK) Ltd.
www.esacademy.com/automation/docs/c51primer/c51prim.htm
3