Wyklad 2 - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

Wyklad 2

Description:

Wyk ad 2 Podstawowe informacje dotycz ce programowania system w wbudowanych Programowanie rdzenia procesora SAB80C537 dr in . Andrzej Przyby – PowerPoint PPT presentation

Number of Views:110
Avg rating:3.0/5.0
Slides: 19
Provided by: A83684
Category:
Tags: gpio | wyklad

less

Transcript and Presenter's Notes

Title: Wyklad 2


1
Wyklad 2
  • Podstawowe informacje dotyczace
  • programowania systemów wbudowanych
  • Programowanie
  • rdzenia procesora
  • SAB80C537
  • dr inz. Andrzej Przybyl
  • Katedra Inzynierii Komputerowej
  • Politechnika Czestochowska

2
Wiadomosci 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

3
Symbol 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.

4
Pierwszy 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)
5
Drugi 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
6
Mikrokontroler 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.

7
Budowa 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.

8
Budowa 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.

9
Podstawowe 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

10
Instrukcje 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

11
Rejestr 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
12
Flaga 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)

13
Flaga 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)

14
Instrukcje 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

15
Instrukcje 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

16
Trzeci 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

17
Podsumowanie
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
18
Przykladowe 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?
Write a Comment
User Comments (0)
About PowerShow.com