Podstawy Techniki Mikroprocesorowej

Podobne dokumenty
Mikroprocesory i Mikrosterowniki

Mikroprocesory i mikrosterowniki

1. Struktura urządzeń z wykorzystaniem mikrokontrolerów...13

Mikrokontrolery AVR ATmega

Wstęp Zagadnienia ogólne... 11

AGH Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Mikrokontrolery AVR ATmega

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

8 bitowy rdzeń AVR. Dariusz Chaberski

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

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

Podstawy Techniki Mikroprocesorowej

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne

Architektura komputerów

Mikroprocesory i mikrosterowniki

Mikroprocesory i Mikrosterowniki

Architektura komputerów. Asembler procesorów rodziny x86

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

Struktura i działanie jednostki centralnej

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

Mikroprocesory i Mikrosterowniki

Architektura typu Single-Cycle

Systemy mikroprocesorowe

NOTATNIK KONSTRUKTORA

Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET

PROCESORY ARM TRUDNO ZNALEŹĆ PROCESORY O TAK LICZNYCH, ORYGINALNYCH, NOWYCH, POMYSŁOWYCH ROZWIĄZANIACH!

Programowanie mikrokontrolerów (CISC)

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Lista Rozkazów: Język komputera

Komunikacja w mikrokontrolerach. Wydział Elektroniki Mikrosystemów i Fotoniki Piotr Markowski

architektura komputerów w 1 1

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Lista rozkazów mikrokontrolera 8051

Programowanie mikrokontrolerów. 5 grudnia 2007

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Techniki mikroprocesorowe i systemy wbudowane

Programowanie komputera

Systemy wbudowane. Przykłady kodu Assembler

Sterowanie multipleksowe 4-cyfrowego wyświetlacza siedmiosegmentowego w oparciu o system przerwao mikrokontrolera ATmega16 w języku Asembler

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

CPU architektura i rejestry

Instytut Informatyki ZMiTAC

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Architektura komputerów

Model programowy komputera I: format rozkazów, lista rozkazów, tryby adresowania, cykl rozkazowy, realizacja programu w komputerze.

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

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

Programowanie mikrokontrolerów. 3 stycznia 2008

LISTA ROZKAZÓW i TRYBY ADRESOWANIA

Programowanie mikrokontrolera 8051

1. Wstęp Różnice pomiędzy mikrokontrolerami ST7 a ST7LITE Rdzeń mikrokontrolerów ST7FLITE... 15

Technika mikroprocesorowa I Wykład 2

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

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

Procesory rodziny x86. Dariusz Chaberski

Mikroprocesory i Mikrosterowniki Laboratorium

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Technika mikroprocesorowa - laboratorium Informatyka studia dzienne

Lista instrukcji mikroprocesora Programowanie w assemblerze

Architektura komputerów

Budowa linii asemblera

Metody Realizacji Języków Programowania

#3 - BarCamp Semihalf. System wbudowany? - Zrób to sam! Jak napisać własny RTOS? Radosław Biernacki

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

ROUTER ROUTER ROUTER. Przełącznik Przełącznik Przełącznik Przełącznik. 25 komp. 12 komp. 10 komp. 25 komp. P3 P4 P5 P6

Mikrokontroler AVR ATmega32 - wykład 9

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

Mikroprocesory i Mikrosterowniki Laboratorium

Asembler - język maszynowy procesora

Rozszerzalne kody operacji (przykład)

Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2

SYSTEM MIKROPROCESOROWY

Architektura typu multi cycle

organizacja procesora 8086

Programowalne układy logiczne

Programowanie mikroprocesorów jednoukładowych

Procesory osadzone ETD 7211 W

Procedury. int mult (int mcand, int mlier){ int product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; } return product; }

Programowanie mikrokontrolerów. 8 listopada 2007

PROGRAMOWALNE SYSTEMY MECHATRONIKI

Mikroprocesory i Mikrosterowniki Analog-Digital Converter Konwerter Analogowo-Cyfrowy

TMiK Podstawy Techniki Mikroprocesorowej. Lidia Łukasiak

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

Schemat blokowy procesora rdzeniowego ATmega16. Głównym zadaniem JC jest zapewnienie poprawnego i szybkiego wykonywania programu.

Dyrektywy asemblera. Składnia: etykieta:.dyrektywa argument. rezerwuje zasoby w SRAM początek segmentu kodu

Wstęp do Reverse engineeringu

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

Systemy mikroprocesorowe

Mikroprocesory i technika mikroprocesorowa

Programowanie Mikrokontrolerów

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Jerzy Nawrocki, Wprowadzenie do informatyki

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

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

LABORATORIUM MIKROKONTROLERY I MIKROSYSTEMY

1 Zarys architektury MIPS

Schemat blokowy architektury AVR

Programowanie w asemblerze ARM wprowadzenie

Mikroprocesory i mikrosterowniki Wydział Elektroniki Mikrosystemów i Fotoniki Politechniki Wrocławskiej Ćwiczenie nr 1

Transkrypt:

Podstawy Techniki Mikroprocesorowej Instrukcje, tryby adresowania Wydział Elektroniki Mikrosystemów i Fotoniki dr inż. Piotr Markowski Na prawach rękopisu. Na podstawie dokumentacji ATmega8535, www.atmel.com.

Lista instrukcji ATmega8535

Lista instrukcji ATmega8535 (1) Arytmetyczne i logiczne

Lista instrukcji ATmega8535 Oznaczenia Rd, Rr rejestr uniwersalny X, Y, Z rejestry uniwersalne 16-bitowe P rejestr specjalny K stała (dane) k stała (adres) b,s numer bitu w rejestrze

Lista instrukcji ATmega8535

Lista instrukcji ATmega8535 (2) Skoku/warunkowe

Lista instrukcji ATmega8535 (3) Transferu danych

Lista instrukcji ATmega8535 (4) Na bitach

Lista instrukcji ATmega8535 (5) Specjalne

Pierwsze instrukcje

LDI Load Immediate

OUT Store Register to I/O Location OUT P,Rr 0 r 31, 0 P 63

IN - Load an I/O Location to Register IN Rr,P 0 r 31, 0 P 63

Program 1 Zadanie: wysłać 1 na co drugi pin portu A

RJMP Relative Jump

RJMP Relative Jump

INC Increment

DEC Decrement

ROL Rotate Left trough Carry ROR Rotate Right trough Carry

Zadanie: biegnąca dioda

MOV Copy Register

Wysyłanie na stos / pobieranie ze stosu Rd SP (RAMEND)

PUSH Push Register on Stack POP Pop Register from Stack

1. Instrukcje skoku i warunkowe 1.1. Instrukcje skoku warunkowego

Instrukcje skoku warunkowego

BRIE Branch if Global Interrupt is Enabled

BRID Branch if Global Interrupt is Disabled

BRTS Branch if the T Flag is Set BRTC Branch if the T Flag is Cleared

BRHS Branch if Half Carry Flag is Set BRHC Branch if Half Carry Flag is Cleared

BRGE Branch if Greater or Equal (Signed) BRLT Branch if Less Than (Signed)

BRVS Branch if Overflow Set BRVC Branch if Overflow Cleared

BRPL Branch if Plus BRMI Branch if Minus

BREQ Branch if Equal BRNE Branch if Not Equal

BRSH Branch if Same or Higher (Unsigned) BRLO Branch if Lower (Unsigned)

BRSH Branch if Same or Higher (Unsigned) BRLO Branch if Lower (Unsigned) BRSH = BRCC (Branch if Carry Clear) BRLO = BRCS (Branch if Carry Set)

BRBS Branch if Bit in SREG is Set BRBC Branch if Bit in SREG is Cleared

CP Compare

* dla liczb ** dla liczb Porównywanie rejestrów CP Rd,Rr CP R0, R31 ; BRxx tam ; jeżeli RJMP tutaj ; jeżeli Rd Rr BRGE * Rd Rr BRLT * BRSH ** BRLO ** BRCC ** BRCS ** Rd Rr BREQ * Rd Rr BRNE *

Przykład Pętla opóźniająca BRNE (flaga Z)

Pętla opóźniająca 1 1 2(1) 1 + 255 (1+2) = 766 cykli 0,8 ms 1 + 255 (766+1+2) = 196 095 cykli 200 ms BRNE skocz do OP jeśli flaga Z = 0 Z = 1 0000 0001 -> 0000 0000 R20 R20

1. Instrukcje skoku i warunkowe 1.2. Instrukcje warunkowe (pominięcia)

Instrukcje pominięcia

CPSE Compare Skip if Equal

SBRS Skip if Bit in Register is Set SBRC Skip if Bit in Register is Cleared

SBIS Skip if Bit in I/O Register is Set SBIC Skip if Bit in I/O Register is Cleared

Przykład Zmiana kierunku obrotu SBRS/SBRC

Zmiana kierunku obrotu 7 6 5 4 3 2 1 0

1. Instrukcje skoku i warunkowe 1.3. Instrukcje skoku

Instrukcje skoku

IJMP Indirect Jump

RCALL Relative Call to Subroutine

ICALL Indirect Call to Subroutine

RET Return from Subroutine

RETI Return from Interrupt

Przykład - podprogramy

2. Instrukcje arytmetyczne i logiczne 2.1. Instrukcje logiczne

Operacje logiczne

AND Logical AND

ANDI Logical AND with Immediate

OR Logical OR ORI Logical OR with Immediate

EOR Exclusive OR

COM One s Complement

NEG Two s Complement

TST Test for Zero or Minus

CLR Clear Register

SER Set Register

2. Instrukcje arytmetyczne i logiczne 2.2. Instrukcje arytmetyczne

Operacje arytmetyczne

ADD Add without Carry SUB Subtract without Carry

ADC Add with Carry SBC Subtract with Carry

ADIW Add Immediate to Word SBIW Subtract Immediate from Word

SUBI Subtract Immediate

SBCI Subtract Immediate with Carry

MUL Multiply Unsigned

MULS Multiply Signed

MULS Multiply Signed 0111 1111-127 0111 1110-126... 0000 0001-1 0000 0000-0 1111 1111 - -1 1111 1110 - -2... 1000 0001 - -127 1000 0000 - -128

MULSU Multiply Signed with Unsigned

Mnożenie MUL: 1000 0110 1100 1110 R1 R0 MULS: 0000 0111 1100 1110 R1 R0 MULSU: 1111 0101 1100 1110 R1 R0

FMUL Fractional Multiply Unsigned

Mnożenie ułamków Zapis liczby zmiennoprzecinkowej: 2 0 + 2-1 + 2-2 + 2-3 + 2-4 + 2-5 +... 1000 0000 = 1100 0000 = 0110 0000 = 1111 1111 = 1.9921875 FMUL: x =

FMULS Fractional Multiply Signed

Ułamki ze znakiem 0111 1111 = 0.9921875... 0000 0001 = 0.0078125 0000 0000 = 0 1111 1111 = -0.0078125 0000 0000 + 1... 1000 000 = -1

FMULSU Fractional Multiply Signed with Unsigned

CP Compare

CPC Compare with Carry

CPI Compare with Immediate

3. Instrukcje bitowe i rejestru SREG 3.1. Instrukcje bitowe

Operacje na bitach

SBR Set Bits in Register CBR Clear Bits in Register

SBI Set Bit in I/O Register CBI Clear Bit in I/O Register

Rejestry specjalne

LSL Logical Shift Left LSR Logical Shift Right

ROL Rotate Left trough Carry ROR Rotate Right trough Carry + 1001 1100 1001 1100 C=0 ADC C=1 0011 1000

ASR Arithmetic Shift Right

SWAP Swap Nibbles

3. Instrukcje bitowe i rejestru SREG 3.2. Instrukcje rejestru SREG

Operacje na rejestrze SREG

Instrukcje CL.. CLI CLT CLH CLS CLV CLN CLZ CLC I T H S V N Z C «0 «0 «0 «0 «0 «0 «0 «0 Clear flag

Instrukcje SE.. SEI SET SEH SES SEV SEN SEZ SEC I T H S V N Z C «1 «1 «1 «1 «1 «1 «1 «1 Set flag

BSET Bit Set in SREG BCLR Bit Clear in SREG

BLD Bit Load from T Flag to Register BST Bit Store from Register to T Flag

4. Tryby adresowania, Instrukcje transferu danych

Instrukcje transferu danych

Tryby adresowania mapy pamięci 40 / 110 20 / 110 2 / 110 8 / 110 2 / 110 30 / 110 2 / 110 Pamięć programu FLASH EEPROM 8 kb (4096 x 16 bitów) 0 Pamięć danych 32 rejestry uniwersalne 64 rejestry specjalne 0 31 0 (32) 63 (95) 0 (96) rejestr Program Counter (licznik programu) SRAM 512 B 511 (607) (RAMEND) 4095

4.1. Tryby adresowania: rejestry uniwersalne bezpośrednio

Rejestry uniwersalne bezpośrednio Pamięć programu 0 Pamięć danych 32 rejestry uniwersalne 0 31 0 (32) FLASH EEPROM 8 kb (4096 x 16 bitów) 64 rejestry specjalne 63 (95) 0 (96) rejestr Program Counter (licznik programu) SRAM 512 B 511 (607) (RAMEND) 4095

Rejestry uniwersalne bezpośrednio INC R16 CLR R17 ROL R18 SWAP R19

Rejestry uniwersalne bezpośrednio ASR Rd DEC Rd ROL Rd ADD R20,R21 OR R22,R23 MUL R24,R24 CP R25,R26 MOV R27,R28 LDI R29,123

MOVW Copy RegisterWord movw R29:R28,R31:R30

4.2. Tryby adresowania: rejestry specjalne bezpośrednio

Rejestry specjalne bezpośrednio Pamięć programu 0 Pamięć danych 32 rejestry uniwersalne 0 31 0 (32) FLASH EEPROM 8 kb (4096 x 16 bitów) IN R16,PINA OUT DDRB,R18 64 rejestry specjalne 63 (95) 0 (96) SBI GICR,6 CBI ADMUX,4 rejestr Program Counter (licznik programu) SRAM 512 B SEI 511 (607) (RAMEND) 4095

Rejestry specjalne bezpośrednio

Tryby adresowania pamięć danych Pamięć programu 0 Pamięć danych 32 rejestry uniwersalne 0 31 0 (32) FLASH EEPROM 8 kb (4096 x 16 bitów) 64 rejestry specjalne 63 (95) 0 (96) rejestr Program Counter (licznik programu) SRAM 512 B 511 (607) (RAMEND) 4095

4.3. Tryby adresowania: pamięć danych bezpośrednio

Tryby adresowania pamięć danych bezpośrednio

Adresowanie bezpośrednie (LDS, STS)

LDS Load Direct from Data Space STS Store Direct to Data Space LDS R16,31 //pod STS 58,R17 //pod

Tryby adresowania pamięć danych Kod op. 0111 001001 010111 Arg. 1 (9) Arg. 2 0111 001001 010111 Kod op. Arg. 1 (9) Arg. 2 (23) Pam. danych 11010001

Tryby adresowania pamięć danych pośrednio 4.4. Pamięć danych pośrednio 4.5. Pam. d. pośrednio z pre-dekrementacją 4.6. Pam. d. pośrednio z post-inkrementacją 4.7. Pam. d. pośrednio z przesunięciem

Tryby adresowania pamięć danych pośrednio

Adresowanie pośrednie (LD, ST) LDI R31,$2a LDI R30,$c2 LDI Yl,$2a LDI Yh,$c2 LD R16, Z //do ST Y, R17 //pod

PUSH R20 //wyślij na STOS //następnie Adresowanie pośrednie (LD, ST) Pre-dekrementowany LD R16,-Z //do ST -Y, R17 //pod

POP R20 //pobierz ze //następnie Adresowanie pośrednie (LD, ST) Post-inkrementowany LD R16, Z+ //do R16 bajt ST Y+, R17 //pod adr. zapisany

Adresowanie pośrednie z przesunięciem (LDD, STD) LDD R16, Y+25 //do R16 bajt STD Z+63, R17 //pod adr. zapisany

4.8. Tryby adresowania: pamięć programu

Tryby adresowania mapy pamięci Pamięć programu 0 Pamięć danych 32 rejestry uniwersalne 0 31 0 (32) FLASH EEPROM 8 kb (4096 x 16 bitów) 64 rejestry specjalne 63 (95) 0 (96) rejestr Program Counter (licznik programu) SRAM 512 B 511 (607) (RAMEND) 4095

Tryby adresowania pamięć programu

LPM Load Program Memory SPM Store Program Memory LPM //do R0 LPM R16, Z //do R16 LPM R17,Z+ //do R17 SPM //do pary //ładuje 16

4.9. Adresowanie skoków względne 4.10. Adresowanie skoków pośrednie 4.11. Adresowanie skoków bezpośrednie

Tryby adresowania mapy pamięci Pamięć programu 0 Pamięć danych 32 rejestry uniwersalne 0 31 0 (32) FLASH EEPROM 8 kb (4096 x 16 bitów) 64 rejestry specjalne 63 (95) 0 (96) rejestr Program Counter (licznik programu) SRAM 512 B 511 (607) (RAMEND) 4095

Adresowanie skoków względne RJMP, RCALL, BRxx RJMP 753 //skocz do RCALL 753 //skocz BRNE 54 //skocz o

Adresowanie skoków pośrednie IJMP, ICALL LDI R31,$2a LDI R30,$c2 IJMP //skocz do ICALL //skocz

Adresowanie skoków bezpośrednie JMP, CALL JMP 2547 //skocz do CALL 2547 //skok

5. Instrukcje specjalne (kontrolne MCU)

Operacje specjalne MCU

NOP No Operation

SLEEP

WDR Watchdog Reset

BREAK

Przykładowe zagadnienia sprawdzające

Przykładowe zagadnienia sprawdzające 1. Zapisz liczbę 147 w 8-bitowym kodzie: binarnym, U2, szesnastkowym. 2. Wskaż błąd w zapisie instrukcji LDI: LDI R16,R17. W jakich kodach liczbowych należy zapisać R16, R17 dla instrukcji MULS R16,R17? (opanowanie wiedzy na temat wybranych instrukcji: LDI, OUT/IN, ROL/ROR, MULS, EOR, MOV, BRNE, RJMP/IJMP/RCALL, RET/RETI, SBRS/SBRC/SBIS/SBIC, PUSH/POP, SEI/CLI). 3. Zapisz liczbę -1,75 w 8-bitowym kodzie zmiennoprzecinkowym. 4. Adresowanie bezpośrednie vs. pośrednie wyjaśnij różnicę. 5. Jakich rodzajów pamięci dotyczy pojęcie adresowania? 6. Adresowanie post-inkrementowane / pre-dekrementowane wyjaśnij terminy.