Title: Wyklad 2
1Wyklad 2
- Podstawowe informacje dotyczace
- programowania systemów wbudowanych
- Programowanie
- rdzenia procesora
- SAB80C537
- dr inz. Andrzej Przybyl
- Katedra Inzynierii Komputerowej
- Politechnika Czestochowska
2Wiadomosci podstawowe
- Przypomnijmy sobie, co bedziemy robic
- ) Oprogramowanie (firmware) dla urzadzen
wbudowanych stanowi specyficzna galaz
programowania narzucajaca restrykcyjne
ograniczenia na rozmiar, budowe oraz szybkosc
dzialania programu (oprogramowanie czasu
rzeczywistego, tworzenie sterowników dla urzadzen
oraz systemów operacyjnych dedykowanych dla
konkretnych platform sprzetowych, ...). - ... a takze realizacja typowych algorytmów
sterowania, takich jak regulatory typu P-I-D,
regulatory histerezowe, regulatory dwustanowe w
rezimie czasu rzeczywistego przy wykorzystaniu
mechanizmu przerwan sprzetowych - implementacja pomocniczych procedur
obliczeniowych limitowanie zakresu sygnalu na
zadanej wartosci (nasycanie), operacje typu MAC
(Multiply-Accumulate), rózniczkowanie i
calkowanie sygnalów - dostep i konfiguracja specjalizowanych rejestrów
sterujacych sterowanych urzadzen - komunikacja za posrednictwem standardów
transmisji szeregowej z urzadzeniami wykonawczymi
lub pomiarowymi, takimi jak przetworniki AC,
nieulotne pamieci szeregowe itp. - realizacja interfejsu uzytkownika
- definicja znaleziona, za pomoca wyszukiwarki
google, na stronie internetowej
http//www.codeconcept.pl/pl/Services_FW_Embedded.
php
3Symbol graficzny mikrokontrolera, do uzycia na
schemacie ideowym w systemie mikroprocesorowym
- Widoczne sa tzw. nózki mikrokontrolera
(piny), i oznaczenia ich funkcji. - Glówna funkcja nózek kontrolera sa porty
wejscia/wyjscia. Porty sa zgrupowane po osiem i
nazwane P0, P1, P2, ... itd. (kazdy port to 8
sygnalów 8 bitów w slowie procesora) - Pozostale sygnaly to zasilanie (VAGND, VSS, VCC)
sygnal resetu (RESET), sygnal zegara taktujacego
(XTAL1, XTAL2) itp.
4Pierwszy program dla systemu wbudowanego z
mikrokontrolerem SAB80C537 (Siemens/Infineon)
sterowanie portami wyjsciowymi (GPIO)
- NAME PROGRAM
- INCLUDE (REG517.INC) dolaczenie pliku
definicji rejestrów procesora 80C537 - PROGRAM SEGMENT CODE definicja segmentu
zawierajacego kod programu - org 0x0000 ustawienie adresu poczatku programu
(pierwszej instrukcji) - JMP START
- RSEG PROGRAM informacja dla linkera - nastepne
dane to kod programu - (bedzie umieszczony w segmencie pamieci CODE)
- START
- tu zamieszczamy instrukcje, które maja sie
wykonac jednorazowo po uruchomieniu programu - PETLA poczatek petli glownej programu
- mov P1,00000000b wpisanie do wszystkich bitów
portu P1 wartosci zero - ustawienie stanu niskiego na 8 liniach
wyjsciowych mikrokontrolera - mov P1,00000010b wpisanie do wszystkich bitów
portu P1 wartosci binarnej - ustawienie stanu niskiego na 7 liniach
wyjsciowych mikrokontrolera, - oraz stanu wysokiego na linii P.1
- (bit numer 1 bity sa numerowane od prawej
do lewej nr bitu 76543210 - jmp PETLA instrukcja skoku zmiana
naturalnej kolejnosci wykonywania
instrukcji skok do miejsca oznaczonego - etykieta tekstowa PETLA
poznane instrukcje MOV, JMP poznane dyrektywy
ORG, SEGMENT CODE, END poznana skladnia
struktura projektu, adresowanie natychmiastowe
() wykorzystanie etykiet,
dolaczanie plików naglówkowych (include)
5Drugi program - obsluga portów wejsciowych GPIO,
np. sygnalów z czujników lub klawiatury
-
- org 0x0000 ustawienie adresu poczatku programu
(pierwszej instrukcji) - ETYKIETA1
- JNB P5.1, STAN_NISKI_NA_LINII_1
- przetestowanie linii wejsciowej P5.1
mikrokontrolera i skok do etykiety - STAN_NISKI_NA_LINII_1 w przypadku wykrycie
stanu niskiego - gdy program dotarl do tego miejsca, to znaczy
ze na linii P5.1 byl stan wysoki - tu wstawiamy instrukcje procesora, które maja
sie wykonac w takim przypadku - mov P1,00000010b
- jmp ETYKIETA1 powrót do poczatku programu
(petla glówna) - STAN_NISKI_NA_LINII_1
- gdy program dotarl do tego miejsca, to znaczy
ze na linii P5.1 byl stan niski - tu wstawiamy instrukcje procesora, które maja
sie wykonac w takim przypadku - mov P1,00000000b
poznane instrukcje JNB oraz JB
6Mikrokontroler SAB80C537
- Jest to jeden z mikrokontrolerów z rodziny 51
(tzw. piecdziesiatka jedynka). Inne kontrolery
z tej rodziny to 80C51, 80C2051, 80C535, itp. - UWAGA dostepna jest bardzo obszerna liczba
publikacji dotyczaca procesorów z rodziny 51
LITERATURA - Procesory z rodziny 51 sa najpopularniejsza
- oraz produkowana i uzywana do dzis rodzina
mikrokontrolerów!
- Po lewej SAB80C537 produkcji Intel (rok produkcji
1980 (!), szybkosc 16 MHz procesor 12-taktowy.
Wykonywanie jednej instrukcji zajmuje 12 taktów
zegara. - Po prawej SAB-C515 produkcji Infineon (Siemens)
rok produkcji 1992 nieco ubozsza, kolejna z
odmian podstawowej wersji procesora 80C51
(zdjecie po lewej stronie u dolu) - Strona prawa u dolu zdjecie plytki
laboratoryjnej uzywanej w Katedrze Inzynierii
Komputerowej Politechniki Czestochowskiej.
Widoczne sa przyciski, potencjometry,
wyswietlacz alfanumeryczny LCD, wyswietlacz
7-segmentowy LED oraz w górnej czesci pamieci RAM
i EPROM i zlacze do komunikacji szeregowej w
standardzie RS232.
7Budowa mikrokontrolera SAB80C537
(Siemens)/Infineon
- W schemacie blokowym wyróznic mozna
- CPU (Central Processor Unit) centralna
jednostka przetwarzajaca odpowiedzialna za
wykonywanie rozkazów procesora. - Wewnetrzna pamiec RAM 256 bajtów oraz opcjonalna
ROM, - Porty wejscia/wyjscia (I/O Input/Output) P0
P8 - Jednostka mnozaco dzielaca Div./Mul. Unit
- Uniwersalne oraz specjalizowane uklady czasowo-
licznikowe, tzw. Timery T0, T1, T2,
Capture/Compare Unit - Moduly do obslugi komunikacji szeregowej Serial
channel 0 i 1 - Przetwornik analogowo/cyfrowy A/D Converter
- Elementy dodatkowe oscylator, watchdog, itp.
- Uwaga mozliwe jest podlaczenie zewnetrznej
pamieci o pojemnosci maksymalnie 64kbajty.
Wykorzystywane sa w tym celu specjalne
wlasciwosci niektórych portów I/O. Porty zajete
do obslugi komunikacji z pamiecia zewnetrzna nie
moga byc uzyte do innych celów.
8Budowa jednostki centralnej CPU - rdzen
mikrokontrolera
- Procesor 8-bitowy to znaczy, ze jego podstawowa
jednostka przetwarzajaca operuje na slowie
8-bitowym - Grupa rejestrów uniwersalnych R0-R7
- Dwa tzw. Akumulatory (A, B ) nazwa wywodzi
sie od ich pierwotnego zastosowania w
procesorach Akumulacji czyli sumowania.
Podstawowy akumulator to A. - Operacje arytmetyczne (dodawanie, odejmowanie,
mnozenie, itp.) oraz logiczne (operacje na bitach
typu AND, OR, NOT, XOR, itp.) dozwolone sa tylko
na akumulatorach A i B - Pozostale rejestry rdzenia procesora sa
specjalizowane sluza do konkretnych celów, np. - DPTR Data PoinTeR wskaznik danych w pamieci
zewnetrznej. Jest to jeden z dwu rejestrów
16-bitowych w tym 8-bitowym procesorze. Sluzy do
zadawania adresu podczas odczytu z komórki
pamieci zewnetrznej. (Do procesora mozna
podlaczyc pamiec zewnetrzna o pojemnosci
maksymalnie 64kbajty 216 bajtów, która wymaga
16-bitowego adresowania). - PSW Program Status Word slowo statusowe
programu skladajace sie z tzw. flag statusowych. - PC - Program Counter 16 bitowy rejestr
wskazujacy adres aktualnie wykonywanego rozkazu z
pamieci procesora. - SP Stack Pointer wskaznik stosu, sluzacy do
obslugi specjalnej struktury danych w pamieci
wewnetrznej procesora.
9Podstawowe instrukcje rdzenia procesora oraz
wybrane tryby adresowaniaMOV
- przyklady uzycia
- tryb adresowania rejestrowy
- MOV A,B kopiowanie wartosci z rejestru B do
rejestru A (kierunek operacji dwu-argumentowych
zawsze z prawej na lewa) - MOV A, R0 kopiowanie wartosci z rejestru R0 do
A - MOV R0, A kopiowanie wartosci z rejestru A do
R0 - tryb adresowania natychmiastowy
- MOV A,10 kopiowanie stalej wartosci
dziesietnej (podanej natychmiastowo) do rejestru
A - MOV A,0Ah j.w. ale liczbe dziesiec zapisano
w kodzie szesnastkowym - MOV A,00001010b j.w. ale liczbe dziesiec
zapisano w kodzie binarnym - tryb adresowania bezposredni
- MOV A,10 kopiowanie zawartosci komórki o
adresie 10, z pamieci wewnetrznej
10Instrukcje arytmetyczneADD, SUBB oraz flaga
przeniesienia/pozyczki AC
- przyklad uzycia
- tryb adresowania rejestrowy (w operacjach
arytmetycznych jeden z argumentów jest zawsze w
Akumulatorze A, wynik zawsze zostanie zapisany w
A) - ADD A,B dodawanie wartosci z rejestru B do
rejestru A - ADD A, R0 dodawanie wartosci z rejestru R0 do A
- tryb adresowania natychmiastowy
- ADD A,10 dodawanie stalej wartosci licbowej
(podanej po symbolu w postaci dziesietnej,
szesnastkowej lub binarnej) do rejestru A - tryb adresowania bezposredni
- ADD A,10 dodawanie zawartosci komórki o adresie
10, z pamieci wewnetrznej do zawartosci A
11Rejestr statusowy PSW Program Status Word
Rejestr zawiera flagi wskazujace na wynik
ostatniej wykonanej operacji arytmetycznej lub
logicznej w rdzeniu procesora.
Symbol Numer Bitu Opis
CY 7 Flaga przeniesienia i pozyczki
AC 6 Flaga przeniesienia dodatkowego dla operacji BCD
F0 5 Flaga 0 ogólnego przeznaczenia
RS1 4 Wybór polozenia banku rejestrów uniwersalnych R0-R7 RS1,RS0 00 Bank 0, adres 00H-07H RS1,RS0 01 Bank 1, adres 08H-0FH RS1,RS0 10 Bank 2, adres 10H-17H RS1,RS0 11 Bank 3, adres 18H-1FH
RS0 3 Wybór polozenia banku rejestrów uniwersalnych R0-R7 RS1,RS0 00 Bank 0, adres 00H-07H RS1,RS0 01 Bank 1, adres 08H-0FH RS1,RS0 10 Bank 2, adres 10H-17H RS1,RS0 11 Bank 3, adres 18H-1FH
OV 2 flaga przepelnienia
F1 1 Flaga ogólnego przeznaczenia
P 0 Flaga parzystosci
12Flaga przeniesienia i pozyczki CY
funkcjonowanie podczas dodawania
- Ustawiana jest, gdy wynik operacji arytmetycznej
(np. dodawanie) nie miesci sie na jednym bajcie. - Przyklad
- mov A, 255
- add A, 1 w trakcie wykonywania tej instrukcji
nastapi tzw. przeniesienie czyli ustawienie
flagi CY - Wytlumaczenie
- Wynik prawidlowy to 256, ale maksymalna wartosc
liczbowa jaka da sie zapisac na 8 bitach (bajcie)
wynosi 255. -
- 1111 1111b 255
- 0000 0001b 1
- 1 0000 0000b 256 (wartosc zero na
8-bitowym rejestrze wyniku ustawiona flaga
sygnalizujaca przeniesienie)
13Flaga przeniesienia i pozyczkiCY funkcjonowanie
podczas odejmowania
- Ustawiana jest równiez, gdy wynik operacji
arytmetycznej (np. dodawanie) nie miesci sie na
jednym bajcie. - Przyklad wystapienie pozyczki
- mov A, 0
- clr c konieczne jest skasowanie flagi CY
przed wykonaniem instrukcji odejmowania, gdyz
instrukcja SUBB odejmuje od A (oprócz - argumentu) równiez wartosc tej flagi wynoszaca
zero lub jeden. - subb A, 1 w trakcie wykonywania tej instrukcji
nastapi tzw. pozyczka czyli - ustawienie flagi CY
- Wytlumaczenie
- Wynik prawidlowy to -1, ale minimalna wartosc
liczbowa jaka da sie zapisac na 8 bitach w
naturalnym kodzie binarnym (NKB) wynosi 0. -
- 0000 0000b 255
- -0000 0001b 1
- 1 1111 1111b 255 w NKB 8-bitów,
ale nalezy uwzglednic, ze wystapila pozyczka,
prawidlowy wynik -1)
14Instrukcje skoków warunkowychJC, JNC
- JC ETYKIETA skok warunkowy do miejsca
oznaczonego jako ETYKIETA -
- Warunkiem wykonania skoku jest
- USTAWIONA flaga CY
- JNC ETYKIETA skok warunkowy do miejsca
oznaczonego jako ETYKIETA -
- Warunkiem wykonania skoku jest
- SKASOWANA flaga CY
15Instrukcje skoków warunkowychJZ, JNZ
- JZ ETYKIETA skok warunkowy do miejsca
oznaczonego jako ETYKIETA - Warunkiem wykonania skoku jest ZEROWA wartosc
akumulatora A - JNZ ETYKIETA skok warunkowy do miejsca
oznaczonego jako ETYKIETA - Warunkiem wykonania skoku jest NIEZEROWA wartosc
akumulatora A
16Trzeci program konstrukcja prostej petli
- analogiczny zapis w jezyku symbolicznym
- R00
- do
- ...
- R0R01
- while (R0lt10)
- org 0x0000 ustawienie adresu poczatku programu
(pierwszej instrukcji) - mov R0,0 ustawienia wartosci poczatkowej
zmiennej R0 - POCZATEK_PETLI
- ... dowolne instrukcje
- mov A,R0 zwiekszenie wartosci R0R01
- add A,1
- mov R0,A
-
17Podsumowanie
poznane instrukcje MOV, JMP, JC, JNC, JZ, JNZ,
JB, JNB, ADD, SUBB, CLR C poznane dyrektywy
ORG poznana skladnia adresowanie
natychmiastowe (), absolutne,
rejestrowe wykorzystanie etykiet dolaczanie
plików naglówkowych (include) poznane elementy
budowy mikrokontrolera porty I/O, rejestry
uniwersalne A,B, R0-R7, rejestr PSW i flagi
statusowe poznane techniki programowania rozgal
ezienia programu konstruowanie prostych
petli wykorzystanie operacji wielokrotnej
precyzji
18Przykladowe pytania testowe
- Opisac rejestry uniwersalne mikrokontrolera z
rodziny 51. - Opisac podstawowe tryby adresowania na
przykladzie instrukcji dodawania? - Co to jest i do czego sluzy rejestr statusowy
PSW? - Jakie sa ograniczenia zwiazane ze stosowaniem
instrukcji arytmetycznych w procesorze z rodziny
51? - Co to sa instrukcje skoków warunkowych?
- Skonstruowac prosta petle programowa o podanych
parametrach?