TMiK Podstawy Techniki Mikroprocesorowej. Lidia Łukasiak

Podobne dokumenty
Programowanie mikrokontrolerów (CISC)

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

Obszar rejestrów specjalnych. Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW

Lista rozkazów mikrokontrolera 8051

architektura komputerów w 1 1

Asembler - język maszynowy procesora

Programowanie mikrokontrolera 8051

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

IV PROGRAMOWANIE MIKROKOMPUTERA Technika Cyfrowa 2. Wykład 4: Programowanie mikrokomputera 8051

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Architektura komputerów

Pracownia elektryczno-elektroniczna klasa IV

CPU architektura i rejestry

Architektura komputerów. Asembler procesorów rodziny x86

MIKROKONTROLERY I MIKROPROCESORY

Opis mikrokontrolera 8051 Lista rozkazowa Timery

architektura komputerów w 1 1

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Mikrokontroler 80C51

6.1. Zastosowanie mikrokontrolera SAB 80C535 do sterowania silnikiem prądu stałego

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Ćwiczenie 1. (sd 2) 0x0000 0x0003 0x000B 0x0013 0x001B 0x0023

MIKROPROCESORY architektura i programowanie

Podstawy techniki mikroprocesorowej. Dr inż. Grzegorz Kosobudzki p.311a A-5. Tel

START: ; start programu od adresu 0100H ; zerowanie komórek od 01H do 07FH ( 1 dec dec)

Mikrokontrolery w systemach pomiarowo sterujących

Ćwiczenie 30. Techniki mikroprocesorowe Programowanie w języku Asembler mikrokontrolerów rodziny '51

Przerwania w architekturze mikrokontrolera X51

Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1

Sprzęt i architektura komputerów

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

organizacja procesora 8086

LABORATORIUM nr 1. Temat: Wstęp do mikrokontrolerów rodziny MCS-51

Celem ćwiczenia jest zapoznanie z obsługą klawiatury sekwencyjnej i matrycowej w systemie DSM-51.

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Technika mikroprocesorowa I Wykład 2

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Mikrokontroler Intel dr inż. Wiesław Madej

MIKROPROCESORY I MIKROKONTROLERY INSTRUKCJE / KOMENDY / ROZKAZY: PRZEGLĄD I KILKA PRZYKŁADÓW DLA PRZYPOMNIENIA, GŁÓWNE REJESTRY ROBOCZE CPU:

Instytut Teleinformatyki

Zerowanie mikroprocesora

LEKCJA TEMAT: Współczesne procesory.

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Instytut Teleinformatyki

Struktura i działanie jednostki centralnej

Politechnika Warszawska

Organizacja typowego mikroprocesora

Sprzęt i architektura komputerów

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Programowanie niskopoziomowe

Architektura mikrokontrolera MCS51

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Architektura mikrokontrolera MCS51

Systemy wbudowane. Wprowadzenie. Wprowadzenie. Mikrokontroler 8051 Budowa

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

MIKROPROCESORY architektura i programowanie

Mikrokontrolery. Wrocław 2003

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Podstawy Techniki Mikroprocesorowej

LISTA ROZKAZÓW i TRYBY ADRESOWANIA

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Struktura programu w asemblerze mikrokontrolera 8051

1. Operacje logiczne A B A OR B

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Logiczny model komputera i działanie procesora. Część 1.

Ćwiczenie 3. Konwersja liczb binarnych

Technika mikroprocesorowa I Wykład 4

Budowa i zasada działania komputera. dr Artur Bartoszewski

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Architektura komputerów

Arytmetyka stałopozycyjna

Architektura typu Single-Cycle

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne

Przykładowe pytania DSP 1

SYSTEM MIKROPROCESOROWY

Pracownia elektryczno-elektroniczna klasa IV

Architektura komputerów

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Podstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Lista instrukcji mikroprocesora Programowanie w assemblerze

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Analizowanie działania układów mikroprocesorowych 311[50].O1.06

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

Architektura systemów komputerowych

Elektronika i techniki mikroprocesorowe

Programowalne układy logiczne

ZAPOZNANIE SIĘ Z ZESTAWEM DYDAKTYCZNYM ZD537, OPROGRAMOWANIEM µvision 2 ORAZ OPERACJE NA PAMIĘCIACH

Techniki mikroprocesorowe i systemy wbudowane

DSM51 operacje przesylania danych i operacje arytmetyczne strona 1

Hardware mikrokontrolera X51

Architektura systemów komputerowych

ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna

Ćwiczenie 3 Wyświetlacz ciekłokrystaliczny

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Architektura komputerów

Transkrypt:

TMiK Podstawy Techniki Mikroprocesorowej Materiały pomocnicze do wykładu Lidia Łukasiak 1

Treść przedmiotu Wprowadzenie System mikroprocesorowy Mikroprocesor - jednostka centralna Rodzaje pamięci Mikrokontrolery - architektura Wewnętrzne układy wejścia-wyjścia Specjalizowane układy zewn. 2

Treść przedmiotu Programowanie Rodziny mikrokontrolerów Perspektywy rozwoju mikrokontrolerów 3

Literatura do przedmiotu Piotr Misiurewicz, Podstawy techniki mikroprocesorowej, WNT, Warszawa, 1991 Andrzej Rydzewski, Mikrokomputery jednoukładowe rodziny MCS-51, WNT, Warszawa, 1992 J. Doliński, Mikrokomputer jednoukładowy INTEL 8051, Wyd. PLJ, Warszawa, 1993 4

Literatura do przedmiotu Tomasz Owczarek, Laboratorium podstaw techniki mikroprocesorowej i elementów konstrukcji systemów cyfrowych, Oficyna Wydawnicza PW, Warszawa, 1999, 2003 5

Literatura do przedmiotu Tomasz Starecki, Mikrokontrolery jednoukładowe rodziny 51, Nozomi, Warszawa, 1996 W. Daca, Mikrokontrolery od układów 8-bitowych do 32-bitowych, MIKOM, Warszawa, 2000 6

Elementy składowe μp 7 Układ sterowania Rejestr instrukcji IR Licznik rozkazów PC STOS Wskaźnik stosu SP ALU Rejestry robocze Magistrala wewnętrzna Źródło: P. Misiurewicz, Podstawy techniki mikroprocesorowej

Sieć działań IR := M(PC) pobranie (fetch) wykonanie (execute) PC := PC + 1 Dekodowanie Wykonanie 8

Pobranie rozkazu Magistrala adresowa PC MIKRO- PROCESOR IR PAMIĘĆ PROGRAMU Magistrala danych 9

STOS ODKŁADANIE ZDEJMOWANIE SP WIERZCHOŁEK STOSU WSKAŹNIK STOSU 10

Jednostka arytmetyczno-logiczna REJESTR STANU ALU Arithmetic Logic Unit AKUMULATOR 11

System mikroprocesorowy MIKRO- PROCESOR PAMIĘĆ DANYCH PAMIĘĆ PROGRAMU URZĄDZENIA WE/WY Magistrala sterująca Magistrala adresowa Magistrala danych 12

Komunikacja z pamięcią danych MIKROPROCESOR dane adres sygnały sterujące WE OE CE PAMIĘĆ DANYCH WE - write enable OE - output enable CE - chip enable (chip select - CS) 13

Odczyt z pamięci danych ADRES CE OE odczyt DANE 14

Zapis do pamięci danych ADRES CE WE zapis DANE 15

Urządzenia WE/WY Magistrala sterująca Magistrala adresowa Magistrala danych INTERFEJS URZĄDZENIE WE/WY 16

8051 schemat blokowy PRZERWANIA ZEWNĘTRZNE SYSTEM PRZERWAŃ PRZERWANIA WEWNĘTRZNE ROM 4kB RAM 128B LICZNIK T1 LICZNIK T0 WEJŚCIA LICZNIKÓW CPU OSCYLATOR STEROWANIE MAGISTRALĄ 4 PORTY WE/WY PORT SZEREGOWY P0 P1 P2 P3 TXD RXD 17

8051 programowanie Jakiej wiedzy potrzebujemy do oprogramowania mikrokontrolera? o zasobach (pamięci danych oraz innych urządzeniach pokładowych, typu liczniki, port szeregowy, itd.) o liście rozkazowej 18

8051 wewnętrzna pamięć danych 00H 01H 02H 03H 04H 7DH 7EH 7FH 19

8051 banki rejestrów 00H 07H 08H 0FH 10H 17H 18H 1FH R0 R1 R2 R3 R4 R5 R6 R7 Bank rejestrów 1 Bank rejestrów 2 Bank rejestrów 3 Bank rejestrów 0 20

Obszar adresowany bitowo 20H 21H 22H 2EH 2FH 16 bajtów = 128 bitów 21

8051 bajtowy RAM 30H 31H 32H 7EH 7FH 22

Obszar rejestrów specjalnych 80H 88H 90H 98H A0H A8H B0H B8H P0 SP DPH DPL TCON TMOD TL0 TL1 TH0 TH1 P1 SCON SBUF P2 IE P3 IP dostępne bitowo SFR - special function register 23

Obszar rejestrów specjalnych C0H C8H D0H D8H E0H E8H F0H F8H T2CON RCAP2L RCAP2H TL2 TH2 PSW ACC B dostępne bitowo 24

Pobranie rozkazu Magistrala adresowa PC MIKRO- PROCESOR PAMIĘĆ PROGRAMU IR Magistrala danych 25

Pobranie rozkazu Faza pobrania rozkazu jest identyczna dla wszystkich rozkazów i polega na pobraniu kodu rozkazu z pamięci (adres znajduje się w liczniku rozkazów PC) i umieszczeniu go w rejestrze rozkazów IR (rejestr ten nie jest dostępny programowo). 26

Wykonanie rozkazu Faza wykonania jest różna dla różnych rozkazów. Rozkaz przeniesiony do IR steruje układem sterowania CU (control unit) W CU następuje dekodowanie rozkazu i generacja odpowiedniego zestawu sygnałów sterujących wewnętrznych i zewnętrznych. Sygnały wewnętrzne doprowadzane są do właściwych elementów wewnętrznych procesora - umożliwiają wewnętrzny obieg danych i adresów przy wykonywaniu kolejnych rozkazów. Sygnały zewnętrzne umożliwiają współpracę 27 z pamięcią i urządzeniami WE/WY

Co to jest rozkaz? Rozkaz -słowo binarne, niepodzielne z punktu widzenia mikroprocesora, które potrafi on zinterpretować i podjąć ściśle określone czynności wewnętrzne i/lub zewnętrzne. Typy rozkazów: - przesłania danych - przetwarzania danych - sterujące wykonaniem programu lub stanem mikroprocesora 28

Tryby adresowania Rozkaz musi zawierać następujące informacje: - jaka operacja? - gdzie są argumenty? - gdzie umieścić wynik? Sposoby w jakie procesor potrafi sięgać do argumentów operacji nazywamy trybami adresowania. 29

8051 lista rozkazów Rozkazy przesłania danych do/z wewnętrznej pamięci danych zewnętrznej pamięci danych pamięci programu (odczyt) dane 8-bitowe dane 16-bitowe bity dane 8-bitowe dane 8-bitowe 30

8051 lista rozkazów Przesłanie danych do/z wewnętrznej pamięci danych 1. Dane 8-bitowe mov przeznaczenie, źródło mov A, Rn A:=Rn n=0...7 1 1 1 0 1 r r r adresowanie przez nazwę rejestru 31

8051 lista rozkazów Przesłanie danych do/z wewnętrznej pamięci danych 1. Dane 8-bitowe mov A, adres A:=M(adres) 1 1 1 0 0 1 0 1 8-bitowy adres argumentu adresowanie bezpośrednie 32

Źródło: P. Misiurewicz, Podstawy techniki mikroprocesorowej Adresowanie bezpośrednie Adres argumentu podany w treści rozkazu PC A Magistrala adresowa Pamięć programu kod op. a L a H Pamięć danych M(adres) argument Magistrala danych } Adres argumentu 33

Adresowanie bezpośrednie Wady: 1. Rozkazy długie (trzeba pobierać kilka bajtów), długi czas wykonania 2. Brak możliwości zmiany adresu w trakcie wykonywania programu Przykład: A:=M(7FH) 1. Z80 LD A, (7FH) 2. 8051 mov A, 7FH (dotyczy wewnętrznej pamięci danych) 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 1 34

8051 - lista rozkazów Przesłanie danych do/z wewnętrznej pamięci danych 1. Dane 8-bitowe mov A, #dana A:=dana 0 1 1 1 0 1 0 0 8-bitowa wartość adresowanie natychmiastowe 35

Adresowanie natychmiastowe Wartość argumentu podana w treści rozkazu PC A M(PC) Magistrala danych Pamięć programu kod op. wartość 36 Źródło: P. Misiurewicz, Podstawy techniki mikroprocesorowej

Adresowanie natychmiastowe Służy do nadawania wartości początkowych Przykład: A := 7FH 1. Z80 LD A, 7FH 2. 8051 mov A, #7FH (dotyczy wewnętrznej pamięci danych) 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 37

8051 - lista rozkazów Przesłanie danych do/z wewnętrznej pamięci danych 1. Dane 8-bitowe mov A, @Ri A:=M(Ri) i=0,1 1 1 1 0 0 1 1 i adresowanie pośrednie 38

Adresowanie pośrednie Adres argumentu przechowywany w rejestrze zwanym wskaźnikiem danych PC rejestr A M(rejestr) Magistrala danych Pamięć programu kod op. Pamięć danych argument 39 Źródło: P. Misiurewicz, Podstawy techniki mikroprocesorowej

Adresowanie pośrednie Przykład: 1. Z80 LD A, (HL) 2. 8051 mov A, @R1 1 1 1 0 0 0 1 1 40

8051 - lista rozkazów Przesłanie danych do/z wewnętrznej pamięci danych 1. Dane 8-bitowe mov przeznaczenie, źródło mov A, Rn A:=Rn n=0...7 mov A, adres A:=M(adres) mov A, #dana A:=dana mov A, @Ri A:=M(Ri) i=0,1 41

8051 - lista rozkazów Przesłanie danych do/z wewnętrznej pamięci danych 1. Dane 8-bitowe mov Rn, A Rn:=A n=0...7 mov Rn, adres mov Rn, #dana Rn:=M(adres) Rn:=dana mov R3, R5 mov R3, @R0 42

8051 - lista rozkazów Przesłanie danych do/z wewnętrznej pamięci danych 1. Dane 8-bitowe mov adres, A M(adres):=A mov adres, Rn M(adres):=Rn n=0...7 mov adres1, adres2 M(adres1):=M(adres2) mov adres, @Ri M(adres):=M(Ri) i=0,1 mov adres, #dana M(adres):=dana 43

8051 - lista rozkazów Przesłanie danych do/z wewnętrznej pamięci danych 1. Dane 8-bitowe mov @Ri, A M(Ri):=A i=0,1 mov @Ri, adres M(Ri):=M(adres) i=0,1 mov @Ri, #dana M(Ri):=dana i=0,1 44

8051 - lista rozkazów Przesłanie danych do/z wewnętrznej pamięci danych 1. Dane 8-bitowe Operacje na stosie push adres SP:=SP+1 M(SP):=M(adres) pop adres M(adres):=M(SP) SP:=SP-1 Przykłady: push ACC push A push R3 45

8051 - lista rozkazów Przesłanie danych do/z wewnętrznej pamięci danych 1. Dane 8-bitowe Wymiana danych xch A, Rn A:=Rn; Rn:=A xch A, adres A:=M(adres); M(adres):=A xch A, @Ri A:= M(Ri); M(Ri):=A xchd A, @Ri zamiana młodszych 4 bitów 46

8051 - lista rozkazów Przesłanie danych do/z wewnętrznej pamięci danych 2. Dane 16-bitowe mov DPTR, #dana16 DPTR:=dana16 Przesłanie danych do/z wewnętrznej pamięci danych 3. Dane bitowe mov C, bit C:=bit mov bit, C bit:=c 47

Rejestr statusu Rejestr specjalny PSW (MSB) (LSB) CY AC F0 RS1 RS2 OV P CY bit przeniesienia (carry) AC przeniesienie połówkowe (auxiliary carry) F0 flaga ogólnego zastosowania RS1, RS2 bity wyboru banku rejestrów OV bit nadmiaru P bit parzystości 48

8051 - lista rozkazów Oznaczanie bitów adres_bajtu.numer_bitu 1. Obszar adresowany bitowo 20H-2FH (128 bitów) mov C, 25H.3 mov 27H.6, C poszczególne bity ponumerowano od 0 do 127 mov C, 0 mov 3, C 2. Bity rejestrów specjalnych dostępnych bitowo mov ACC.1, C mov C, P1.7 49

Adresowanie bitów (bezpośrednie) Przykład: 1. 8051 mov C, ACC.7 (dotyczy wewnętrznej pamięci danych) 1 0 1 0 0 0 1 0 1 1 1 0 0 1 1 1 adres bitu 2. 8051 mov ACC.0, C (dotyczy wewnętrznej pamięci danych) 1 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 adres bitu 50

8051 - lista rozkazów Przesłanie danych do/z zewnętrznej pamięci danych 1. Dane 8-bitowe movx przeznaczenie, źródło movx A, @Ri A:=M(Ri) i=0,1 movx @Ri, A M(Ri):=A i=0,1 movx A, @DPTR A:=M(DPTR) movx @DPTR, A M(DPTR):=A 51

Adresowanie pośrednie Adres argumentu przechowywany w rejestrze zwanym wskaźnikiem danych PC DPTR A M(DPTR) Magistrala danych Pamięć programu kod op. Pamięć danych argument 52 Źródło: P. Misiurewicz, Podstawy techniki mikroprocesorowej

Adresowanie pośrednie Przykład: 1. 8051 movx A, @DPTR (dotyczy zewnętrznej pamięci danych) 1 1 1 0 0 0 0 0 53

8051 - lista rozkazów Przesłanie danych z pamięci programu 1. Dane 8-bitowe movc A, @A+DPTR A:=M(A+DPTR) movc A, @A+PC A:=M(A+PC) adresowanie indeksowe 54

Adresowanie indeksowe Pamięć programu PC kod op. DPTR + A argument M(A+DPTR) Magistrala danych 55 Źródło: P. Misiurewicz, Podstawy techniki mikroprocesorowej

Adresowanie indeksowe Przykład: dotyczy pamięci programu 1. 8051 movc A, @A+DPTR 1 0 0 1 0 0 1 1 2. 8051 movc A, @A+PC 1 0 0 0 0 0 1 1 Adres komórki pamięci programu, z której pobierana jest zawartość, obliczany jest jako suma zawartości akumulatora oraz rejestru specjalnego DPTR lub rejestru PC 56

8051 lista rozkazów Rozkazy przetwarzania danych Operacje arytmetyczne Operacje logiczne dane 8-bitowe dane 16-bitowe dane 8-bitowe dane 1-bitowe dodawanie odejmowanie mnożenie dzielenie inkrementacja dekrementacja korekcja dz. inkrementacja dekrementacja iloczyn suma suma rozł. negacja zerowanie obroty zerowanie ustawianie negacja Iloczyn suma 57

Jednostka arytmetyczno-logiczna REJESTR STANU ALU AKUMULATOR Arithmetic Logic Unit 58

8051 - lista rozkazów Rozkazy przetwarzania danych 1. Operacje artymetyczne Rejestr specjalny PSW (program status word): CY AC F0 RS1 RS2 OV - P CY (carry) - przeniesienie AC (auxiliary carry) - przeniesienie połówkowe F0 - flaga ogólnego przeznaczenia RS0, RS1 - wybór banku rejestrów P (parity) - parzystość 59

Nadmiar (overflow) Nadmiar zawiera informację o tym, że wynik operacji na liczbach ze znakiem jest błędny. Możliwe są 2 przypadki: 1. Suma dwóch liczb dodatnich jest liczbą ujemną 2. Suma dwóch liczb dodatnich jest liczbą dodatnią 60

Kod U2 Do uwzględnienia informacji o znaku liczby służy kod uzupełnieniowy do dwóch U2. Informacja ta jest umieszczona w najstarszym bicie (0 - liczba dodatnia, 1 - liczba ujemna). Liczby dodatnie 00000000 = 0 00000001 = +1 00000010 = +2 01111111 = +127 61

Kod U2 Liczby ujemne (ABS) (DEC) NEG 00000001 00000000 11111111 = -1 00000010 00000001 11111110 = -2 10000000 01111111 10000000 = -128 62

Nadmiar Dodawanie dwóch liczb dodatnich 96 01100000 + 42 + 00101010 138 10001010 Jeżeli wynik traktujemy jako liczbę ze znakiem, to: NEG INC ABS 10001010 01110101 01110110 118 Wystąpiło przeniesienie z bitu 6 na 7, ale nie było przeniesienia z bitu 7 na zewnątrz 63

Nadmiar Dodawanie dwóch liczb ujemnych -126 10000010 + -94 + 10100010-220 1 00100100 Jeżeli wynik traktujemy jako liczbę ze znakiem, to otrzymujemy 36 Nie wystąpiło przeniesienie z bitu 6 na 7, ale było przeniesienie z bitu 7 na zewnątrz 64

Nadmiar -126 10000010 + -94 + 10100010-220 1 00100100 Warto zauważyć, że uwzględnienie przeniesienia na zewnątrz daje poprawny wynik: NEG INC ABS 100100100 011011011 01101110 220 65

Korekcja dziesiętna Kod BCD - zapis cyfry dziesiętnej na 4 bitach 59 01011001 + 69 + 01101001 128 11000010 AC Poprawny wynik w kodzie BCD to 000100101000 66

Korekcja dziesiętna Jeżeli młodsza część wyniku > 9 lub AC=1, dodajemy do wyniku 6H (tutaj AC=1) 11000010 + 00000110 11001000 Młodsza cyfra wyniku została już skorygowana 67

Korekcja dziesiętna Jeżeli starsza część wyniku > 9 lub C=1, dodajemy do wyniku 60H (tutaj starsza część > 9) 11001000 + 01100000 1 00101000 Nastąpiła korekcja starszej cyfry 68

8051 - lista rozkazów Rozkazy przetwarzania danych 1. 1. Operacje arytmetyczne na danych 8-bitowych 1.1.1. Dodawanie bez przeniesienia: add A, Rn A:=A+Rn add A, adres A:=A+M(adres) add A, @Ri A:=A+M(Ri) add A, #dana A:=A+dana Wpływa na wartość bitów AC, CY i OV 69

8051 - lista rozkazów Rozkazy przetwarzania danych 1.1. Operacje arytmetyczne na danych 8-bitowych 1.1.2. Dodawanie z przeniesieniem: addc A, Rn addc A, adres addc A, @Ri addc A, #dana A:=A+Rn+CY A:=A+M(adres)+CY A:=A+M(Ri)+CY A:=A+dana+CY Wpływa na wartość bitów AC, CY i OV 70

8051 - lista rozkazów Rozkazy przetwarzania danych 1. 1. Operacje arytmetyczne na danych 8-bitowych 1.1.3. Odejmowanie (zawsze z pożyczką): subb A, Rn subb A, adres subb A, @Ri subb A, #dana A:=A-Rn-CY A:=A-M(adres)-CY A:=A-M(Ri)-CY A:=A-dana-CY Wpływa na wartość bitów AC, CY i OV 71

8051 - lista rozkazów Rozkazy przetwarzania danych 1. 1. Operacje arytmetyczne na danych 8-bitowych 1.1.4. Mnożenie: mul AB A := młodszy bajt iloczynu A B B := starszy bajt iloczynu A B Jeżeli wynik > 255 OV=1 Jeżeli wynik < 255 OV=0 CY=0 bez względu na wynik 72

8051 - lista rozkazów Rozkazy przetwarzania danych 1. 1. Operacje arytmetyczne na danych 8-bitowych 1.1.5. dzielenie: div AB A := wynik całkowity dzielenia A/B B := reszta z dzielenia A/B OV=0, CY=0 73

8051 - lista rozkazów Rozkazy przetwarzania danych 1. 1. Operacje arytmetyczne na danych 8-bitowych 1.1.6. Dekrementacja: dec A A:=A-1 dec Rn Rn:=Rn-1 dec adres M(adres):=M(adres)-1 dec @Ri M(Ri):=M(Ri)-1 74

8051 - lista rozkazów Rozkazy przetwarzania danych 1. 1. Operacje arytmetyczne na danych 8-bitowych 1.1.7. Inkrementacja: inc A A:=A+1 inc Rn Rn:=Rn+1 inc adres M(adres):=M(adres)+1 inc @Ri M(Ri):=M(Ri)+1 75

8051 - lista rozkazów Rozkazy przetwarzania danych 1.1. Operacje arytmetyczne na danych 8-bitowych 1.1.8. Korekcja dodawania w kodzie BCD: da A wpływa na wartość CY 76

8051 - lista rozkazów Rozkazy przetwarzania danych 1.2. Operacje arytmetyczne na danych 16-bitowych 1.2.1. Inkrementacja: inc DPTR DPTR:=DPTR+1 77

8051 - lista rozkazów Rozkazy przetwarzania danych 2. Operacje logiczne 2.1. Operacje logiczne na danych 8-bitowych 2.1.1. Iloczyn logiczny: anl A, Rn A:=A and Rn anl A, adres A:=A and M(adres) anl A, @Ri A:=A and M(Ri) anl A, #dana A:=A and dana anl adres, A M(adres):=M(adres) and A anl adres, #dana M(adres):=M(adres) and dana 78

8051 - lista rozkazów Rozkazy przetwarzania danych 2.1. Operacje logiczne na danych 8-bitowych 2.1.2. Suma logiczna: orl A, Rn A:=A or Rn orl A, adres A:=A or M(adres) orl A, @Ri A:=A or M(Ri) orl A, #dana A:=A or dana orl adres, A M(adres):=M(adres) or A orl adres, #dana M(adres):=M(adres) or dana 79

8051 - lista rozkazów Rozkazy przetwarzania danych 2.1. Operacje logiczne na danych 8-bitowych 2.1.3. Logiczna suma rozłączna EXOR: xrl A, Rn A:=A xor Rn xrl A, adres A:=A xor M(adres) xrl A, @Ri A:=A xor M(Ri) xrl A, #dana A:=A xor dana xrl adres, A M(adres):=M(adres) xor A xrl adres, #dana M(adres):=M(adres) xor dana 80

8051 - lista rozkazów Rozkazy przetwarzania danych (c.d.) 2.1. Operacje logiczne na danych 8-bitowych (c.d.) 2.1.4. Zerowanie akumulatora: clr A A:=0 2.1.5. Negacja akumulatora (bitowa): cpl A A:=A 2.1.6. Zamiana połówek akumulatora swap A 81

8051 - lista rozkazów Rozkazy przetwarzania danych (c.d.) 2.1. Operacje logiczne na danych 8-bitowych (c.d.) 2.1.7. Obrót akumulatora w lewo: rl A 2.1.8. Obrót akumulatora w prawo: rr A 82

8051 - lista rozkazów Rozkazy przetwarzania danych (c.d.) 2.1. Operacje logiczne na danych 8-bitowych (c.d.) 2.1.9. Obrót akumulatora w lewo przez carry: rlc A CY 2.1.10. Obrót akumulatora w prawo przez carry: rrc A CY 83

8051 - lista rozkazów Rozkazy przetwarzania danych (c.d.) 2.2. Operacje logiczne na bitach 2.2.1. Zerowanie bitu clr bit bit:=0 clr C C:=0 2.2.2. Ustawianie bitu setb bit bit:=1 setb C C:=1 84

8051 - lista rozkazów Rozkazy przetwarzania danych (c.d.) 2.2. Operacje logiczne na bitach (c.d.) 2.2.3. Negacja bitu: cpl bit bit:=bit cpl C C:=C 2.2.4. Iloczyn logiczny anl C, bit C:=C and bit anl C, /bit C:=C and bit 85

8051 - lista rozkazów Rozkazy przetwarzania danych (c.d.) 2.2. Operacje logiczne na bitach (c.d.) 2.2.5. Suma logiczna orl C, bit C:=C or bit orl C, /bit C:=C or bit 86

8051 lista rozkazów Rozkazy sterujące wykonaniem programu Skoki bezwarunkowe warunkowe Wywołania procedury bezwzględne względne 87

8051 - lista rozkazów Rozkazy sterujące wykonaniem programu 1. 1. Skoki bezwarunkowe AJMP addr11 PC:=PC+2 PC 10 -PC 0 :=addr11 a10 a9 a8 0 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0 LJMP addr16 PC:=addr16 SJMP rel8 PC:=PC+2 PC:=PC+rel8 88

Przykład: 8051 lista rozkazów ljmp dalej dalej: mov A, @R0 Etykieta symboliczny sposób przedstawienia adresu w pamięci programu 89

8051 - lista rozkazów Rozkazy sterujące wykonaniem programu 1. 1. Skoki bezwarunkowe (c.d.) skok pośredni JMP @A+DPTR PC:=PC+A+DPTR 90

8051 - lista rozkazów Rozkazy sterujące wykonaniem programu 1.2. Skoki warunkowe jz rel8 PC:=PC+2 jeżeli A=0, PC:=PC+rel8 jnz rel8 PC:=PC+2 jeżeli A 0, PC:=PC+rel8 jc rel8 PC:=PC+2 jeżeli C=1, PC:=PC+rel8 jnc rel8 PC:=PC+2 jeżeli C=0, PC:=PC+rel8 91

8051 - lista rozkazów Rozkazy sterujące wykonaniem programu 1.2. Skoki warunkowe (cd) jb bit, rel8 PC:=PC+3 jeżeli bit=1, PC:=PC+rel8 jnb bit, rel8 PC:=PC+3 jeżeli bit=0, PC:=PC+rel8 jbc bit, rel8 PC:=PC+3 jeżeli bit=1, PC:=PC+rel8, bit=0 92

8051 - lista rozkazów Rozkazy sterujące wykonaniem programu 1.2. Skoki warunkowe (c.d.) djnz Rn, rel8 djnz adres, rel8 PC:=PC+2, Rn:=Rn-1 jeżeli Rn 0, PC:=PC+rel8 PC:=PC+3, M(adres)=M(adres)-1 jeżeli M(adres) 0, PC:=PC+rel8 93

8051 - lista rozkazów Przykład: mov R7, #4; licznik pętli mov R0, #5AH; adres bazowy mov A, #5; wartość pocz. loop: mov @R0, A inc R0 djnz R7, loop 94

Definiowanie symboli Przykład: loop: baza_buf equ 5AH dlug_buf equ 4 war_pocz equ 00000101b mov R7, #dlug_buf; licznik pętli mov R0, #baza_buf; adres bazowy mov A, #war_pocz; wartość pocz. mov @R0, A inc R0 djnz R7, loop 95

8051 - lista rozkazów Rozkazy sterujące wykonaniem programu 1.2. Skoki warunkowe (c.d.) cjne A, adres, rel8 PC:=PC+3, jeżeli A M(adres), PC:=PC+rel8 jeżeli A < M(adres), C:=1 jeżeli A > M(adres), C:=0 kombinacje porównywanych argumentów: A, adres A, #dana @Ri, #dana Rn, adres Rn, #dana 96

8051 - lista rozkazów Rozkazy sterujące wykonaniem programu 2. Wywołanie procedury acall addr11 a10 a9 a8 1 0 0 0 1 PC:=PC+2 SP:=SP+1 M(SP):=PC 7 -PC 0 SP:=SP+1 M(SP):=PC 15 -PC 8 a7 a6 a5 a4 a3 a2 a1 a0 PC 10 -PC 0 :=addr11 97

8051 - lista rozkazów Rozkazy sterujące wykonaniem programu 2. Wywołanie procedury (c.d.) lcall addr16 PC:=PC+3 SP:=SP+1 M(SP):=PC 7 -PC 0 SP:=SP+1 M(SP):=PC 15 -PC 8 PC:=addr16 98

8051 - lista rozkazów Rozkazy sterujące wykonaniem programu 2. Powrót z procedury ret reti 3. Operacja pusta nop PC 15 -PC 8 :=M(SP) SP:=SP-1 PC 7 -PC 0 :=M(SP) SP:=SP-1 99

8051 - lista rozkazów Przykład: call procedura mov A, R0. procedura: mov R2, #5 ret 100

Procedura Poprawnie napisana procedura: pierwszy rozkaz odwołujący się do stosu musi być rozkazem odłożenia danej na stos (PUSH) liczby umieszczonych wewnątrz procedury rozkazów odkładania i zdejmowania ze stosu muszą być sobie równe procedura musi być zakończona instrukcją powrotu RET (lub RETI w przypadku procedury obsługi przerwania) 101

8051 - lista rozkazów Przykład: call procedura mov A, R0. procedura: push ACC mov A, R4 push ACC pop ACC mov R4, A pop ACC ret 102

8051 - lista rozkazów Przykład: init_display: mov R2, #0.. call init_display mov A, R0.. jmp $ setb P1.5 mov DPTR, #LCD_instr.. ret 103

Przykład: dlugosc equ 25 cseg at 4000H jmp Poczatek org 400BH jmp Timer0Int proc1: mov R2, #5. ret proc2: mov A, #dlugosc. ret Timer0Int: mov TL0, #30H. reti 104

Przykład: Poczatek: mov SP, #30H call proc1 call proc2 call proc3 call proc4 jmp Poczatek proc3:. ret proc4:. ret end 105

8051 - lista rozkazów Przykład: odczyt z pamięci progr. tablica: mov DPTR, #tablica mov A, #0 movc A, @A+DPTR mov R0, A.. db X, 00110001, 25H, Ala 106