Mikroprocesorová technika



Podobné dokumenty
Seznámení s mikropočítačem. Architektura mikropočítače. Instrukce. Paměť. Čítače. Porovnání s AT89C2051

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Mikrokontroléry. Doplňující text pro POS K. D. 2001

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Jednočipové mikropočítače (mikrokontroléry)

Procesory z řady 8051


Pohled do nitra mikroprocesoru Josef Horálek

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Dělení pamětí Volatilní paměti Nevolatilní paměti. Miroslav Flídr Počítačové systémy LS /11- Západočeská univerzita v Plzni

MIKROPOČÍTAČOVÉ SYSTÉMY

Princip funkce počítače

Přerušovací systém s prioritním řetězem

Programátorský model procesoru x51

Struktura a architektura počítačů (BI-SAP) 10

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Přednáška A3B38MMP. Bloky mikropočítače vestavné aplikace, dohlížecí obvody. 2015, kat. měření, ČVUT - FEL, Praha J. Fischer

SEKVENČNÍ LOGICKÉ OBVODY

Architektura počítače

Paměti. Paměť je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje

Profilová část maturitní zkoušky 2014/2015

Technické prostředky počítačové techniky

Strojový kód. Instrukce počítače

Historie počítačů. 0.generace. (prototypy)

Struktura a architektura počítačů (BI-SAP) 7

Architektury počítačů a procesorů

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

od jaké adresy bude program umístěn? Intel Hex soubor, co to je, z čeho a jak se získá, k čemu slouží? Pseudoinstrukce (direktivy) překladače ORG, SET

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Profilová část maturitní zkoušky 2015/2016

velikosti vnitřních pamětí? Jaké periferní obvody má na čipu a k čemu slouží? Jaká je minimální sestava mikropočítače z řady 51 pro vestavnou aplikaci

Vestavné systémy BI-VES Přednáška 5

PROCESOR. Typy procesorů

Principy komunikace s adaptéry periferních zařízení (PZ)

Řízení IO přenosů DMA řadičem

MSP 430F1611. Jiří Kašpar. Charakteristika

Paměťové prvky. ITP Technika personálních počítačů. Zdeněk Kotásek Marcela Šimková Pavel Bartoš

Způsoby realizace paměťových prvků

Použití programovatelného čítače 8253

Paměti počítače ROM, RAM

Paměti EEPROM (1) Paměti EEPROM (2) Paměti Flash (1) Paměti EEPROM (3) Paměti Flash (2) Paměti Flash (3)

Paměť počítače. 0 (neprochází proud) 1 (prochází proud)

uz80 Embedded Board ver. 1.0 uz80 Vestavná Řídící Deska ver. 1.0

Obsluha periferních operací, přerušení a jeho obsluha, vybavení systémových sběrnic

Mikrořadiče řady 8051.

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

Paměti Josef Horálek

2. Prehľad vlastností jednočipových mikropočítačov (I-8048, I-8051, I-80196)

Program "Světla" pro mikropočítač PMI-80

Základní uspořádání pamětí MCU

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

DUM č. 10 v sadě. 31. Inf-7 Technické vybavení počítačů

Paměti počítače 9.přednáška

Sekvenční logické obvody

Cílem kapitoly je seznámit studenta s pamětmi. Jejich minulostí, současností a hlavnímu parametry.

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE. Simulátor mikroprocesorů architektury 8051.

7. Monolitické počítače, vlastnosti a použití.

Klimatizace. Třída: 4.C. Střední Průmyslová Škola Elektrotechnická Havířov Protokol do MIT. Skupina: 3. Zpráva číslo: 3

PROTOKOL O LABORATORNÍM CVIČENÍ

Popis obvodu U2403B. Funkce integrovaného obvodu U2403B

Procesor z pohledu programátora

Počítače Didaktik. Jan Lorenz. Semestrální projekt z X31SCS

Pohled do nitra mikroprocesoru

Manuál přípravku FPGA University Board (FUB)

OVLÁDACÍ OBVODY ELEKTRICKÝCH ZAŘÍZENÍ

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ. MEIII Paměti konstant

SuperCom. Stavebnice PROMOS Line 2. Technický manuál

PROGRAMOVATELNÉ LOGICKÉ OBVODY

Technická kybernetika. Obsah. Klopné obvody: Použití klopných obvodů. Sekvenční funkční diagramy. Programovatelné logické automaty.

RISC a CISC architektura

Logické funkce a obvody, zobrazení výstupů

Paměti EEPROM (1) 25/07/2006 1

Paměťový podsystém počítače

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

Pokročilé architektury počítačů

Komunikace procesoru s okolím

Paměti operační paměti

Praktické úlohy- 2.oblast zaměření

Komunikace modulu s procesorem SPI protokol

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

STEDNÍ PRMYSLOVÁ ŠKOLA, OSTRAVA - MORAVSKÁ OSTRAVA, KRATOCHVÍLOVA 7. (studijní text)

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Speciální obvody a jejich programování v C 2. díl

Architektura počítačů

Metody připojování periferií BI-MPP Přednáška 2


Mikroprocesor Intel 8051

4. Elektronické logické členy. Elektronické obvody pro logické členy

Rozšiřující desce s dalšími paralelními porty Rozšiřující desce s motorkem Elektrickém zapojení Principu činnosti Způsobu programování

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.

Systém řízení sběrnice

Historie osmibitových mikroprocesoru a mikroradicu ZILOG.

Laboratorní cvičení z předmětu Elektrická měření 2. ročník KMT

Miroslav Flídr Počítačové systémy LS /21- Západočeská univerzita v Plzni

2.9 Vnitřní paměti. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

Integrovaná střední škola, Sokolnice 496

Jak do počítače. aneb. Co je vlastně uvnitř

Parametry pamětí vybavovací doba (tj. čas přístupu k záznamu v paměti) = 10 ns ms rychlost toku dat (tj. počet přenesených bitů za sekundu)

PCKIT LPT MODUL SBĚRNICE IOBUS PRO PC LPT. Příručka uživatele. Střešovická 49, Praha 6, s o f c o s o f c o n.

Transkript:

Univerzita Palackého v Olomouci Přírodovědecká fakulta Mikroprocesorová technika Milan Henkl Zuzana Veselá Olomouc 2014

Oponenti: Ing. František Roháč Ing. Antonín Duda Publikace byla vytvořena v rámci projektu Otevřená síť partnerství na bázi aplikované fyziky, reg. č. CZ. 1.07/2.4.00/17. 0014 1. vydání Milan Henkl, Zuzana Veselá, 2014 Univerzita Palackého v Olomouci, 2014 Neoprávněné užití tohoto díla je porušením autorských práv a může zakládat občanskoprávní, správněprávní, popř. trestněprávní odpovědnost. ISBN 978-80-244-4063-7

Obsah Mikroprocesorová technika Úvod do mikroprocesorové techniky 4 1. Základní pojmy 5 2. Struktura počítače 6 3. Vývoj mikroprocesorů 7 4. Polovodičové paměti 10 5. Architektura a technické vlastnosti jed.mikr.8051 11 6. Paměťový prostor 8051 14 7. Časování 8051 17 8. Délka instrukcí 8051 18 9. Čítače- časovače 8051 19 10. Přerušovací systém 8051 21 11. Přerušení od časovače 8051 24 12. Sériový kanál 25 13. Mikrokontroléry ATMEL 26 14. Historie osmibitových mikr. a mikrořadičů fy.zilog 29 15. Vstupně- výstupní porty - příloha 29 PROGRAMOVÁNÍ 8051 1. Vývojové diagramy 39 2. Instrukční soubor 42 3. Programovací techniky 45 4. Programování LED 45 5. Programování 7segm. displeje- statického 50 6. Použití podprogramu 52 7. Kombinace podprogramů 53 8. LED - rotace, použití logických instrukcí 56 9. Vlastní podprogram časového zpoždění 57 10. Použití časovačů 58 11. Programování reproduktoru 62 12. Programování klávesnice 66 13. Načtení dat tabulkou 68 14. Programování ATMELU 69 15. Programování 7segm. displeje- dynamického 71

Úvod do mikroprocesorové techniky Mikroprocesorová technika je obor, který se vyvíjí každý den a jeho produkty nás všude kolem nás obklopují. Automatická pračka, mikrovlnná trouba, různé dětské hračky, řízení osvětlení, řízení dopravy - to jen část produktů, spadajících do tohoto skvělého a dynamického oboru. V dalším textu jsou použity některé grafické značky, jejichž význam je následující: Otázka? V textu je kladena otázka s vynecháním místa na dopsání odpovědi. Vlastní zápis. V textu je vynecháno potřebné místo na vlastní zápis z hodiny. Praktická ukázka. V hodině byla užita ukázka a je vynecháno místo na zápis vlastních poznatků Domácí úkol. Domácí cvičení, které bude kontrolováno a známkováno. V hledání tajů mikroprocesorové techniky Vám přeji úspěšnou cestu a radost z nových vědomostí. 4

1. Základní pojmy Mikropočítač Hardware Software -se skládá z funkčních bloků, které se nazývají mikroprocesor, operační paměť a vstupní a výstupní obvody -je technické vybavení počítače, je tvořen funkčními bloky a dalšími log.obvody a vodiči -je programové vybavení počítače Mikroprocesor -jádro počítače(srdíčko), -generuje všechny řídící signály potřebné pro současnou činnost a spolupráci všech funkčních bloků -v závislosti na programu řídí výměnu dat s ostatními funkčními bloky -provádí instrukce -je programovatelný sekvenční automat, vyrobený technologii velké integrace v jednom pouzdře MPU -Microprocessor Unit CPU -Central processor Unit Periférní zaříz. -přístroje, umožňující komunikaci mikroprocesoru s okolním světem Instrukce -krok programu Operační paměť -uchovává program a data, která jsou zpracována -uchovává mezivýsledky při výpočtech Sběrnice -skupina několika vodičů ze stejnou funkcí -propojuje mikroprocesor s operační pamětí a V/V obvody dělíme je na: -datová - přenos dat z paměti do MPU a naopak DBUS -adresová -vyslání adresy ABUS -řídící - určuje směr přesunu CBUS Bit -základní jednotka informace (nabývá hodnot 0,1) b Byte -slabika, skládá se z osmi bitů B Word -slovo -počítač zpracovává data po slovech (word), typická délka slova je 8,16 nebo 32 bitů, tj. 1, 2, nebo 4 byty 5

1 0 0 0 1 1 0 0 SLABIKA Jednoslabikové slovo - slabika = 8 bitů (pro tento případ) Dvouslabikové slovo - 2slabiky = 16 bitů 2. STRUKTURA POČÍTAČE 2.1 Blokové schéma počítače clock PAMĚŤ ALU OUT Řadič IN procesor obr.1 Obecná struktura počítače Struktura počítače se dá obecně rozdělit do 3 bloků procesor, paměti a vstupně výstupní zařízení. 6

2.2 Popis počítače Hodiny (Clock) - generují taktovací signál, který je přiveden do procesoru. Tento signál synchronizuje jednak vlastní procesor, jednak spolupráci procesoru s ostatními částmi počítače. Paměť -blok paměti obsahuje většinou dva typy pamětí ROM obsahuje instrukce zajišťující chod programu nebo konstanty a tabulky používané v programu RWM do této paměti může počítač data zapisovat a číst, ukládá data získané počítačem ze vstupních portů,ukládá mezivýsledky Vstupní port- input port = VSTUP umožňuje zanést do počítače data z vnějšího prostředí (klávesnice,myš, A/D převodník a pod.) Výstupní port- output port = VÝSTUP informaci na vybraný výstupní port zapíše procesor při provedení instrukce (tiskárna, monitor) 2.3 Rozdělení současných architektur počítače Struktura počítače bývá v současné době provedena dvěma způsoby: Architektura von Neumann společná paměť pro data i instrukce (klasický PC) Architektura harvardská (harwardská)- rozdělena paměť dat a programu. (většina jednočipů) 3. Vývoj mikroprocesorů 3.1 Technologie výroby mikroprocesorů dříve dvě technologie- bipolární a unipolární bipolární - velká rychlost, velká plocha, malá hustota integrace TTL unipolární - malá rychlost, malá plocha, velká integrace PMOS, NMOS 7

3.2 Hustota integrace IO jsou vyráběné různou hustotou integrace součástek na čipu. Rozeznáváme tyto hustoty integrace : SSI Small Scale Integration - malá hustota integrace MSI Medium Scale Integration - střední hustota integrace LSI Large Scale Integration - velká hustota integrace VLSI Very Large Scale Integration - velmi velká hustota integrace současnost - odstraněna nevýhoda unipolární technologie, zvýšila se rychlost - jen technologie unipolární BiCMOS, 68VLSI - CMOS - Complementary Metal - Oxide Semiconductor Jaký typ procesoru máš ve svém PC? Na jaké frekvenci procesor pracuje? 8

3.3 Vývoj mikroprocesorů firmy INTEL Typ Rok zavedení Interní bus (bit) 8080 74 8 0,2 8088 79 8 0,3 MIPS počet tranzistorů poznámka 80286 82 16 1,2 134000 mikrovln-ka 80386 85 32 6 275000 486DX 89 32 20 1,2 486SX 91 32 16,5 1,185 neobsahuje koprocesor 486DX(2,4) 92 32 40 1,2 2 x rychleji 486SL 40druhů 386a486 s 3,3V Pentium 93 64 100 přes 3 mil. 60, 66 MHz 94 100,200MH z Pentium MMX Pentium Klamath Celeron Mendocino Pentium II Xeon II 96 4,5 multimediáln í aplikace 97 7,5 zvuk.karta, CD-ROM 98 266, 300MHz 98nahrazuje Pentium PRO server, prac.stanice Pentium III 99 0,18 μm 700 MHz Pentium IV 1,56GHz Pentium 4 2001 2miliardy 2GHz(o81% r) 2003 0,13 μm Celeron Cedar Mill 2005 65nm D352 (3,46) 3,26 GHz 2006 2009 9

3.4 Pojmy související s mikroprocesory MIPS (Milion Instruction Par Secunda) - milionů instrukcí za sekundu RISC (Reduced Instriction Set Computer) - počítač s omezeným instrukčním souborem CISC (Complex Instruction Set Computer) - počítač s komplexním instrukčním souborem ASIC (Application Specific Integrated Circuits) zákaznické obvody 4. Polovodičové paměti Dělíme je podle mnoha různých hledisek: 4.1 Přístup k buňkám paměti a) paměti s libovolným přístupem RAM (Random Access Memory) b) paměti se sériovým přístupem SAM (Seriál Access Memory) c) paměti se speciálním přístupem k paměťové buňce: typu zásobník = sklípková paměť LIFO (Last In First Out) poslední dovnitř, první ven typu fronta FIFO (First In First Out) první ven první dovnitř 4.2 Možnost změny dat (zápisu) a) paměti RWM (Read Write Memory) - čtení i zápis za provozu, nevýhoda jsou volatilní (volatile) = při vypnutí napájení se ztrácí data b) paměti ROM (Read Only Memory) - pouze ke čtení - nevolatilní (unvolatile) = data při výpadku se neztrácí c) paměti PROM (Programable ROM) - jednou programovatelné (OTP) d) paměti EPROM (Errassable PROM)- mazatelné ultrafialovým zářením, programovatelná elektricky, má okénko d) paměti EEPROM (Electrically EPROM) =EAPROM = E2PROM programovatelná a mazatelná elektrickým signálem (1000x) 10

4.3 Princip realizace paměťové buňky a, Statické - p.b. tvořena bistabilním KO data není potřeba obnovovat SRAM, (Static RAM) b, Dynamické - p.b. je tvořena parazitní kapacitou řídící elektrody tranzistoru MOSFET data je potřeba pravidelně obnovovat speciálními obvody refresh DRAM (Dynamic RAM) 4.4 Technologie výroby a) Bipolární - TTL - rychlé, jediné napájení, vysoký logický zisk a vysoká rychlost (Schottkyho diody) - ECL - Emitor Coupled Logic - velmi rychlé b) Unipolární - základ tranzistor řízený polem MOS s různými typy kanálů - vysoká hustota integrace 5.Architektura a technické vlastnosti jednočipových mikrořadičů 8051 5.1 Přehled jednotlivých typů mikrořadičů řady 8051 Soubor osmibitových mikrořadičů MCS - 51 tvoří obvody z následující tabulky. Termín 8051 se často používá jako souhrnné označení všech obvodů řady MCS - 51 Obvod Výrobní Technologie Paměť programu na čipu Paměť dat na čipu 8031AH HMOS II Nemá 128 B 8051AH HMOS II 4KB-ROM 128 B 8751H HMOS I 4KBEPROM 128 B 80C31 CHMOS Nemá 128 B 80C51 CHMOS 4KB-ROM 128 B 8032AH HMOS II Nemá 256 B 8052AH HMOS II 8 KB ROM 256 B Obvody 8052 mají na čipu integrovánu větší paměť programu a dat a další šestnáctibitový časovač-čítač. 11

5.2 Pouzdro a rozmístění jednotlivých vývodů mikrořadiče 8051 IO 8051 P1. 0 1 2 3 4 5 6 7 RESET P3. 0 1 2 3 4 5 6 7 XTAL2 XTAL1 GND 1 40 2 39 3 38 4 37 5 36 6 35 7 34 8 33 9 32 10 31 11 30 12 29 13 28 14 27 15 26 16 25 17 24 18 23 19 22 20 21 U CC P0. 7 6 5 4 3 2 1 0 EA ALE PSEN P2. 7 6 5 4 3 2 1 0 5.3 Popis jednotlivých vývodů 8051 P0. 0 7 datová obousměrná sběrnice, multiplexovaná s dolními bity adresy P2. 0 7 horní bity adresy není li vnější paměť, obě brány v / v P1. 0 7 universální vstup / výstup P3. 0 (RxD) vstup sériového kanálu 1 (TxD) výstup sériového kanálu 2 (INT0) vnější přerušení 0 3 (INT1) vnější přerušení 1 4 (T0) vnější hodiny časovače 0 5 (T1) vnější hodiny časovače 1 6 (WR ) zápis do vnější paměti dat 7 (RD ) čtení z vnější paměti dat XTAL 1,2 připojení krystalu nebo vnějších hodin standard 12 MHz RESET inicializace (počáteční stav) mikropočítače EA = TTL nastavení paměťových prostorů = UP programovací režim ALE týl signálu vzorkuje adresu na sběrnici při instrukci čtení / zápis do vnější paměti PSEN přenos z vnější paměti programu UCC napájecí napětí +5V GND nulový potenciál zem 12

5.4 Bloková struktura 8051 XTAL1 XTAL2 UCC GND OSCILÁTOR kanál P0 kanál P1 kanál P2 kanál P3 byte byte byte byte 4 x 8 bit RESET EA ALE PSEN WR RD INT0 INT1 ř a d i č CPU 8b registry SFR (paměť dat) ROM /EPROM 4 KB sériový kanál TxD RxD paměť programu RAM 128 byte čítač 0 čítač 1 T0 T1 5.5 Popis architektury 8051 MIKROPROCESOR 8051 je 8 bitový jednočipový mikroprocesor s harvardskou strukturou, u které je oddělena programová a datová paměť. 5.5.1 Oscilátor Na vývody XTAL1 a XTAL2 je připojen piezoelektrický rezonátor krystal.kmitočet oscilátoru u standardního mikroprocesoru 8051 se může pohybovat v rozsahu 1,2 MHz až 12 MHz.U některých nástupců lze spodní kmitočet snížit až k nule, nejvyšší kmitočet může dosáhnout až 33 MHz.(podle typů) 5.5.2 Paměť programu, dat a porty Na čipu procesoru je umístěna vlastní CPU, která je vnitřní společnou sběrnicí propojena s pamětí programu ROM nebo EPROM o kapacitě 4kB(existují i typy bez této paměti), s pamětí dat RAM o kapacitě 128 bytů a se čtyřmi vstupně výstupními branami P0 až P3, které zajišťují styk procesoru s vnějšími perifériemi. 13

5.5.3 Připojení vnější paměti Nechceme li využívat procesor v jednočipové konfiguraci, případně nemůžeme-li(bez vnitřní ROM EPROM), jsou z procesoru vyvedeny řídící signály pro správu vnější programové /(PSEN) nebo datové /WR a /RD paměti, z nichž každá může mít až 64 kb. 5.5.4 Přerušení Pro snadnější styk s periferiemi je procesor vybaven řadičem přerušení, který zpracovává 5 zdrojů přerušení (2 externí, od každého ze dvou časovačů a od sériového kanálu). 5.5.5 Časovače - čítače Časovače čítače, které jsou dva ( tři), slouží buď k čítání vnějších impulsů vstupy T0,T1 nebo k realizaci přesných časových intervalů. Mohou být až 16 bitové. 5.5.6 Sériový kanál Sériový kanál slouží pro snazší sériový styk s nadřízenými počítači nebo jinými spolupracujícími procesory. Sériový kanál je duplexní ( obousměrný). 5.5.7 Booleovský procesor Procesor je vybaven Booleovským procesorem, který umožňuje pracovat s jednotlivými bity vnitřní paměti RAM i interních periférií. 6. Paměťový prostor 8051 Harvardská architektura - paměť rozdělena na paměť dat a paměť programu. 6.1 Paměť dat Paměť dat (Data Memory) může být až 64 kb. Vnější paměť dat se používá při provádění instrukce MOVX. Z toho je 256B uvnitř čipu- vnitřní paměť dat. Vnitřní paměť dat - je tvořena 256 B - dolní a horní polovina je tedy 128 B. V dolní polovině paměti dat (0-127) jsou umístěny: 4 registrové banky RB0-RB3. V každé registrové bance je umístěno 8 registrů R0- R7. Při inicializaci systému se nastaví sama banka RB0; RB zabírají 32 B. - 16B bitově adresovatelný prostor - s jednotlivými bity mohu pracovat samostatně, je tam tedy 16x8 =128bitů - zbývající část do 128B je volný uživatelský prostor V horní polovině paměti dat (128 255) je umístěno 20(21) SFR 14

6.1.1 Mapa paměti dat Mapa celé vnitřní paměti dat 0 255 (celkem 256 B) Obecně: Podrobně: celkem zobrazeno 256 Bytů 256 SFR 21 speciálních funkčních registrů (viz popis níže) Horní polovina paměti dat 128 127 Volný uživatelský prostor 80 Bytů 48 47 32 31 16 Bytů adresovatelných po bitech (každý bit má svoji adresu) Booleovský prostor RB 3 Dolní polovina paměti dat RB 2 RB 1 0 RB 0 15

6.1.2 Přehled a popis speciálních funkčních registrů - SFR (Special Function Registers) - speciální funkční registry slouží k nastavování a řízení činnosti 8051. -bit PSW.7 CY příznak přenosu (Carry flag) je nulován /nastavován pomocí hardware nebo software během několika aritmetických a logických instrukcí a je to přenos přes osmý bit -bit PSW.6 AC příznak pomocného přenosu (Auxiliary Carry flag) přenos z dolní poloviny bytu do horní poloviny B -bit PSW.5 F0 příznak nuly je nastavován /nulován pomocí software jako uživatelem definovaný stavový příznak -bit PSW.4 RS1 -bit PSW.3 RS0 bity pro nastavení registrové banky. Bbinární kombinací těchto bitů se nastaví registrová banka, při inicializaci se nastaví RB0 RS1 RS0 Číslo banky 0 0 0 0 1 1 1 0 2 1 1 3 - bit PSW.2 - OV příznak přeplnění(overflow flag) je nastavován/nulován díky hardware během aritmetických instrukcí k indikaci přetečení - bit PSW.1 neobsazen - nezapojen - bit PSW.0 - P příznak parity (Parity flag) - je nastavován/nulován díky hardwaru v každém instrukčním cyklu.tento bit indikuje sudou paritu obsahu akumulátoru, tzn.sudý počet jedničkových bitů CY AC F0 RS1 RS0 OV X P SP 81H Stack Pointer ukazatel zásobníku je 8 bit registr. Je inkrementován před tím, než se uloží data při provádění instrukcí PUSH a CALL. 6.2 Paměť programu Paměť programu (Program Memory) může být až 64 kb a skládá se z vnitřní a vnější části paměti. Spodní 4kB mohou být umístěny přímo na čipu. Jak je mapa orientována, určuje řídící signál EA. Je-li EA = 1 je vnitřní paměť programu brána od adresy 0-0FFFH. Adresy 1000H - FFFFH jsou chápany jako paměť vnější. Je-li EA = 0 je celá paměť programu brána od adresy 0 - FFFFH jako vnější. 16

6.2.1 Mapa paměti programu 7. Časování 8051 7.1 Obecné pojmy Perioda T nejmenší časový úsek v počítači vypočítá se z frekvence T = 1/f Strojový cykl SC skládá se z několika period Instrukční cyklus IC skládá se z několika strojových cyklů 7.2 Konkrétně u 8051 Strojový cykl u 8051 se skládá ze 6 stavů označovaných jako S1 - S6. Každý stav je složen ze 2 period, označovaných jako fáze P1 a P2 (PHASE). Tedy strojový cykl se skládá z 12 period oscilátoru. 1T 2T= stav strojový cykl = 12T 17

7.3 Výpočet délky strojového cyklu Pro danou frekvenci oscilátoru f= 12 MHz (což je standardní frekvence) : délka strojového cyklu se vypočítá jako 12 period oscilátoru t SC = 12 T pro f = 12 MHz T = 1/12.10 6 t SC = 12 T = 12/12. 10 6 = 1. 10 6 = 1 µs Tedy pro frekvenci oscilátoru 12 MHz trvá jeden strojový cykl 1 mikrosekundu. 8. Délka instrukcí 8051 8.1 Délka instrukcí u 8051 Instrukce u 8051 jsou jednocyklové - jednobytové(mov A,Rn) - dvoubytové (MOV A,#data) dvoucyklové - jednobytové (RET) - jednobytová ince MOVX dvoubytové(push) tříbytové(mov dir1,dir2) čtyřcyklové - instrukce MUL(násobení) - instrukce DIV(dělení) Příklad výpočtu délky instrukce DJNZ R1, HOP Z instrukčního souboru zjistíme, že tato instrukce trvá 2 SC, tedy při f = 12MHz trvá jedno provedení této instrukce 2µs. Tuto instrukci mohu v programování použít k vytváření časových smyček. 8.2 Výpočet délky časové smyčky Pro f=12 MHz tedy 1SC= jedna mikrosekunda Další časové smyčky se vytvářejí a volají jako podprogramy. Chyba, které se dopouštíme je zanedbatelná- přesné časy budeme řešit časovačem. Př. Jedna milisekunda: MS1: CALL M5S CALL M5S RET A podobně. 18

8.3 Provádění instrukcí Obecně: Při práci nejdříve procesor přečte instrukci (hexa znak - operační kód), uloženou v paměti programu z adresy, která se nachází v registru, kterému se říká čítač programu (Program Counter - PC - programový čítač). Potom dojde ke zvýšení PC o jedničku, takže PC nyní ukazuje na další slovo v paměti programu a procesor dekóduje načtenou instrukci, čili zjistí, co má tato instrukce provádět, nakonec procesor instrukci provede. Konkrétně u 8051: Zpracování instrukcí lze vysvětlit pomocí signálu ALE (Address Latch Enable) - povolení zachycení adresy. Tento signál se generuje s konstantní rychlostí 1/6 frekvence oscilátoru, aktivuje se tedy dvakrát během jednoho strojového cyklu, poprvé během S1-P2 až S2-P1 a podruhé během S4 -P2 až S5 - P1. Provádění instrukce jednocyklové začíná při S1P2, kdy se uloží operační znak do registru instrukcí.v případě dvoubytové instrukce se druhý byte čte během stavu S4 téhož strojového cyklu. Pokud je instrukce pouze jednobytová dochází ve stavu S4 také k výběru, avšak přečtený byte se ignoruje a obsah programového čítače se nezvýší. 9. Čítače - časovače 8051 V architektuře je 2x16 bitový čítač-časovač -dále č/č. Index 0 je pro č/č 0 index 1 je pro č/č1. 9.1 Použití č/č 8051 Ze schématu č/č je vidět, že ho lze použít buď ve funkci čítače(c/ T =1 ) nebo ve funkci časovače(c/ T = 0) 9.2 Použití čítače 8051 Čítač načítá impulsy (pravidelné i nepravidelné) ze vstupu T0(1). Impulsy se plní registry č/č. Používá se k počítání impulsů.zdroj hodin je z vnějšku. 9.3 Použití časovače 8051 Časovač načítá pravidelné impulsy z vnitřních hodin OSC: 12. Při frekvenci 12 MHz, tedy vychází intervaly plnění 1 mikrosekunda. V těchto intervalech se plní registry časovače, takže lze přesně spočítat časovou prodlevu naplnění registru (podle velikosti registru viz módy). V okamžiku naplnění se nastaví bit naplnění TF0 (TF1) na jedna sám se nevynuluje. 19

9.4 Spuštění řízení č/č 8051 Řízení sepne kontakt v případě log.jedničky( viz schéma č/č) - ta je na výstupu hradla AND zabezpečena 2 jedničkami jedna je /TR0 (TR1), druhá je na výstupu hradla OR- ta je na výstupu buď, když je na GATE = 0 nebo INT0 = 0. Pokud nebudeme pracovat s přerušením vyloučíme INT0. Nejdříve nastavíme SFR TMOD, potom č/č spustíme bitem TR0(TR1) v SFR TCON. 9.5 Speciálně funkční registr TMOD Nastavují se v něm také módy č/č dle kombinace bitů M1, M0 zvolíme mód, který nám nejvíc vyhovuje. 9.6 Speciálně funkční registr TCON. Registr je určený k řízení obou čítačů- časovačů. 9.7 Logické schéma zapojení čítače-časovače 20

10.Přerušovací systém v 8051 start přerušení povoleno ne ano obslužný program přerušení návrat do hlavního programu 21

10.1 Princip přerušovacího systému Cílem podsystému přerušení je obsloužit požadavek vyslaný z periferních zařízení nebo z okolí mikropočítače vložením krátké programové obsluhy do probíhajícího programu. 10.2 Přerušovací podsystém 1. Detekuje vznik požadavku na obsluhu. 2. Po povolení přerušení provede předání programového řízení na speciální podprogram zajišťující programové obsloužení vzniklé situace. 3. Po skončení obslužného podprogramu se řízení vrátí do původního programu - systém musí zajistit uschování návratové adresy původního programu před vstupem do obslužného podprogram pro úschovu návratové adresy je využíván zásobník, který slouží i pro uschování adres při volání běžných podprogramů. 10.3 Zdroje přerušení 8051 Procesor řady 8051 rozlišuje 5 zdrojů žádosti o přerušení: 1,2, vnější přerušení INT0 a INT1 (IT0, IT1) 3,4, přerušení od časovače 0 a časovače 1(TF0,TF1) 5 přerušení od sériového kanálu Každý ze zdrojů přerušení je možné individuálně povolit nebo zakázat nastavením nebo vynulováním příslušného bitu v SFR (Interrupt Enable) 10.4 Registr povolení přerušení (Interuption Enable) IE (Interrupt Enable) - registr povolení přerušení adresa RAM A8H EA X X ES ET1 EX1 ET0 EX0 EA - globální povolení přerušení Enable All pokud je EA = 0 je celý přerušovací systém zablokovaný a nemůže být přijata jakákoliv žádost o přerušení ES - povolení přerušení od sériového kanálu ET0 a ET1-povolení přerušení od č/č 01 EX0 a EX1 - povolení vnějšího přerušení Zamysli se nad příkladem přerušení v počítači. 22

10.5 Adresy přerušení Každý zdroj přerušení má definovanou adresu, na kterou po přijetí žádosti o přerušení, dokončení rozpracované instrukce a uložení návratové adresy do zásobníku, předá procesor řízení. IE0 Vnější přerušení 0 0003H TF0 Čítač-časovač 0 000BH IE1 Vnější přerušení 1 0013H TF1 Čítač-časovač 1 001BH RI + TI Sériový kanál 0023H Každý obslužný podprogram zakončujeme instrukci RETI (Return from Interuption). Pro využití přerušení systému mikroprocesoru je nezbytné znát přiřazení priorit jednotlivým přerušením. 10.6 Priorita přerušení Nejvyšší priorita Nejnižší priorita vnější přerušení INT0 ( IE0) časovač 0 (TF0) vnější přerušení INT1(IE1) časovač 1(TF1) sériový kanál ( RI a TI) Vše je řízeno SFR přerušení IP (Ineruption Priorite) X X X PS PT1 PX1 PT0 PX0 Otázka priority přerušení se stává důležitou v případech současného přijetí dvou a více žádostí o přerušení. Přerušení s vyšší úrovni priority již nemůže být přerušeno. Žádosti o přerušení (příznaky IE0, IE1, TF0, TF1, RI + TI) se vzorkují v době S5P2 každého strojového cyklu procesoru a vyhodnocují se v následujícím cyklu. 23

11. Přerušení od časovače 8051 11.1 Použití přerušení od časovače Časovač načítá pravidelné impulsy z vnitřních hodin OSC: 12. Při frekvenci 12 MHz tedy vychází intervaly plnění 1 mikrosekunda. V těchto intervalech se plní registry časovače, takže lze přesně spočítat časovou prodlevu naplnění registru (podle velikosti registru viz módy).v okamžiku naplnění se nastaví bit naplnění TF0 (TF1) na jedna sám se nenuluje nutno nulovat softwerově. Časovač se po spuštění plní v intervalu 1 mikrosekundy (12MHz). Pokud je povoleno přerušení od daného časovače, tak v okamžiku naplnění registrů TL a TH, skočí program na danou adresu obslužného programu. Na této adrese vykoná obslužný program, který je ukončený instrukcí RETI a vrátí se zpět do hlavního programu. Výhodou je, že nemusíme hlídat bit naplnění TF, který jsme museli nulovat. Ten je při přechodu do obslužného programu vynulován automaticky. 11.2 SFR pro přerušení Registr přerušení IE (Interrupt Enable) EA X X ES ET1 EX1 ET0 EX0 EA - Enable All globální povolení přerušení ES povolení přerušení od sériového kanálu ET0 - povolení přerušení od časovače 0 adresa 000Bh ET1 - povolení přerušení od časovače 1 adresa 001Bh EX0 - povolení přerušení vnější 0 EX1 - povolení přerušení vnější 1 Řešení programu přerušení Zadání: Pomocí přerušení od časovače realizujte program blikání portu s LED v 1 s intervalu. 24

12. Sériový kanál 12.1 Rozdělení sériových kanálů Sériový komunikační interface SCI (Serial Comunication Interface) Rozeznáváme dva základní sériové přenosy: 1. ASYNCHRONNÍ 2. SYNCHRONNÍ Asynchronní SCI obsahuje: - START bit - 7-8bitů dat vysílaných od LSB po MSB - STOP bit Délka START bitů a datových bitů se určí z požadované přenosové rychlosti následovně: - doba trvání bitu(s) = 1 / přenosová rychlost (bit/s). Přenos probíhá po jednom vodiči (nepočítáme-li zem). Vysílací strana se označuje TxD (Transmit data). Přijímací strana se označuje RxD (Recieve data). Každé zařízení, které má komunikovat obousměrně má samostatný vysílač a přijímač. Synchronní SCI Synchronizace přijímače a vysílače na začátku přenosu zajišťuje synchronizační znak. Po jeho vyhodnocení probíhá nepřerušovaný přenos znaků bez další synchronizace až do okamžiku přijetí nového synchronizaci znaku. Pokud vysílač nemá k dispozici další data, vysílá automaticky synchronizované znaky. 12.2 Sériový kanál u 8051 výhoda - plně duplexní sériový kanál umístěný na čipu procesoru (vysílat a přijímat může současně) umožňuje komunikaci ve standardním 8 a 9 bitovém režimu asynchronním nebo 8b synchronním režimu přijímací a vysílací reg. sériových portu jsou dostupné jako SBUF v SFR, sér.port může pracovat ve 4 módech v závislosti na naprogramování registru SCON a nejvyššího bitu v registru PCON 25

12.3. SFR sériového kanálu SCI SCON SFR registr SM0 SM1 SM2 REN TB8 RB8 TI RI SM0 a SM1 bity k nastavení módů 0-3 SM2 víceprocesorová komunikace REN povolení příjmu(nastavuje se SW) TB8 devátý datový bit při vysílání RB8 devátý datový bit při příjmu TI příznak prázdného vysílacího posuvného registru RI příznak přijatých platných dat PCON SFR registr SMOD X X X X X PD IDL SMOD doplňující bit pro řízení sériového kanálu slouží ke zdvojnásobení jeho přenosové rychlosti PD IDL POWER DOWN je zastavena činnost celého procesoru včetně periférii i oscilátoru -periférie a oscilátor běží dál 13.Mikrokontroléry ATMEL 13.1 Vlastnosti Kompatibilita s Intel 8051 V provedení DIL20-1,2,4 kb interní programové FLASH 1000 zápisových cyklů ( mazání zápis - elektricky) Rozsah napětí od 2,7 do 6 V Oscilátor 0 Hz až 24 MHz 128 bytů vnitřní paměti RAM 15 programovatelných I/O pinů Dva 16-ti bitové čítače/časovače 5 zdrojů přerušení Plně duplexní sériová linka Dvouúrovňová ochrana dat Úsporné režimy napájení Analogový komparátor 26

13.2 Fotografie DIL20, DIL40 13.3.Popis jednočipu ATMEL AT89C2051 Procesor AT89C2051 je určen pro jednoduché aplikace, u kterých není potřeba mnoho I/O pinů a paměti programu a dat (2kB). Oproti standardní řadě x51 obsahuje navíc analogový komparátor se vstupy na P1.0 a P1.1. Jeho výstup je softwarově přístupný na bitu P3.6. Velice dobře je propracován systém ochrany dat. Každý I/O pin může přímo budit LED diodu (až 20mA), takže nejsou potřeba žádné okolní posilovače. => připojením krystalu a dvou kondenzátorů a napájení získáme plně funkční mikropočítač Význam vývodů portu P3 27

Rozložení vývodů mikrořadiče AT89Cxx51 na pouzdro DIP20 Podrobnější popis naleznete v originálním anglicky psaném PDF souboru (DATASHEET) přímo na www.atmel.com Konstrukce velice jednoduchého programátoru je popsána na HW serveru. 13.4.Blokové schéma jednočipu ATMEL AT89C2051 28

14.Historie osmibitových mikroprocesorů a mikrořadičů ZILOG Americká firma ZILOG vstoupila na trh mikroprocesorů v roce 1973. V době, kdy svět ovládaly obvody Intel 8080, se objevil obvod s typovým označením Z80. Osmibitový mikroprocesor s odlišnou architekturou, založenou na sadě univerzálních registrů, které mohly sloužit pro jakoukoliv funkci, tedy i jako střadač. Architektura umožňovala pružnější přístup k registrům, optimální využití instrukcí a tím i rychlejší chod programu než u procesorů jiných výrobců při stejném hodinovém kmitočtu. Ještě dříve, než IBM dala světu osobní počítače, byla firma Zilog známá počítači Sinclair obsahující mikroprocesor Z80 CPU. Postupem času byl mikroprocesor Z80CPU následován obvody Z80 CTC (Counter-Timer Circuit), Z80 PIO(Parallel Input / Output), Z80 SIO (Seriál Input/Output), Z80 DMA (Direct Memory Access) a dalšími. S rozvojem technologie se měnila struktura obvodů od TTL přes NMOS až po CMOS, zvětšovala se hustota integrace a v jednom pouzdře se slučovalo stále více obvodů. Na konci vývoje stál obvod Z80 IPC (Inteligent Peripheral Controller), který obsahoval procesor, paralelní i sériové vstupně výstupní obvody- porty, oscilátor, čítače. Tedy podle dnes zavedené terminologie mikrořadič. Obvody řady Z80 tvoří značný podíl na světové produkci mikroprocesorů. Obvody řady Z80 většinou neobsahovaly žádnou paměť kromě základní registrové výbavy. Ani současní pokračovatelé řady, obvody Z180 a 16b Z380 nemají na čipu paměť. To je v tvrdé konkurenci nevýhoda. Čekalo se na nový obvod. Jim se stal obvod řady Z8 8b CMOS mikrořadič. Vychází z principu univerzální sady registrů, kterých může být na čipu až 256. Navíc čip obsahuje i paměť pro uložení programu PROM ( OTP- One Time Programmable) nejméně 512 B nejvíce 32 kb. Dále čip obsahuje dva 14 bitové čítače, dva analogové komparátory, oscilátor a nejméně 14 vstupů/ výstupů. Čip dále obsahuje WATCH DOG TIMER ( hlídací pes), Power On Reset(nulování při zapnutí napájení) a další obvody. Všechny obvody řady Z80 mají jeden shodný instrukční soubor. Po roce 1999 je řada Z8 známá ve více jak stovky provedení, lišících se velikostí paměti, počtem vstupů a výstupů, rychlostí, dovolenou pracovní teplotou. Speciální obvody obsahují i AD a DA převodníky, sériový UART kanál. Jádro Z8 tvoří základ mnoha jednoúčelových obvodů pro řízení klávesnic PC nebo obvodů pro infračervené dálkové ovládání. 15.Vstupně/výstupní porty 8051. Vstupně/výstupní porty nám umožňují připojit k mikroprocesoru cokoli dalšího (tranzistory, LED, tlačítka,...), co pracuje s logickými signály (tj. dvoustavovými - log.0 a log.1). Vstupně / výstupní (v/v) porty jsou slučitelné s TTL/CMOS logikou, což nám tak udává napěťové úrovně pro log.0 a 1. U standardní verze 8051 máme k dispozici 4 v/v porty, z nichž každý má po 8 pinech. Tyto čtyři porty jsou označovány P0, P1, P2 a P3. Pokud chceme označit konkrétní pin určitého portu, pak označení vypadá celkem logicky takto - např. P1.4, kde 1 před des. tečkou určuje port a 4 za tečkou je číslo konkrétního pinu příslušejícího k portu 1. Místo slova port se někdy můžete setkat s označením brána. Pokud chceme označit jeden konkrétní pin určitého portu, používám označení pin, 29

příp. v/v pin. Jelikož se jednotlivé piny adresují jako bity, můžete se setkat s označením bit, např. bit P1.5. Z toho, že se bavíme o vstupně/výstupních portech vyplývá, že tyto porty (všechny čtyři) jsou obousměrné - můžeme tedy jednotlivé piny všech portů v rámci jednoho programu používat jako vstupní i jako výstupní (viz dále). Porty hardwarově sestávají ze vstupních vyrovnávacích pamětí, klopných obvodů typu D (namapovány v SFR) a výstupních budičů. Vnitřní (funkční) zapojení portů P0 až P3 ukazují obr. 1 až 4. obr.1 obr.2 30

obr.3 obr.4 31

Stručná charakteristika portů Port 0 jako jediný nemá ve výstupním budiči zvyšovací odpor - jde tedy o obvod s otevřeným kolektorem. Pokud jej chceme použít jako obecné vstupy/výstupy, musíme k pinům připojit externí odpory, jejichž druhý konec připojíme na +Ucc. Port 0 se také může využívat při styku s vnější pamětí - popis najdete v odstavci věnovaném portu 2. Port 1 nemá žádnou alternativní funkci, díky tomu jej můžeme bez nějakého omezení libovolně používat. Port 2 se kromě své normální funkce může využívat spolu s portem 0 ke komunikaci s externí pamětí. K tomuto účelu se využívají jen části obou portů - výstupní budiče portu 0 a 2 a vstupní vyrovnávací paměť portu 0. Na portu 0 je časově přepínán výstup nižšího bytu adresy pro externí paměť s datovým bytem, který je zapisován nebo čten z paměti. Port 2 pak vysílá vyšší byte adresy. Tato adresa je tedy 16-bitová, abychom mohli adresovat až 64kB paměti. Port 2 jinak pracuje jako normální port. Podrobnější popis přístupu do vnější paměti najdete na další stránce. Port 3 - všechny piny portu 3 jsou vícefunkční. Kromě standardní funkce navíc tento port poskytuje své piny pro potřeby jiným vnitřním obvodům mikroprocesoru, seznam pinů a jim příslušné alternativní funkce zobrazuje následující tabulka: Pin Alternativní funkce P3.O RXD (serial input) P3.1 TXD (serial output) P3.2 INTO (external interrupt) P3.3 INT1 (external interrupt) P3.4 TO (Timer/Counter O external input) P3.5 T1 (Timer/Counter 1 external input) P3.6 WR (external Data Memory write strobe) P3.7 RD (external Data Memory read strobe) Alternativní funkce pinů portu 3 může být aktivována pouze, pokud bit v SFR příslušný danému pinu obsahuje log.1. Jinak pin zůstává v log.0. Popis vnitřního zapojení a funkce jednotlivých portů Obrázky 1 až 4 ukazují funkční zapojení jednoho pinu každého ze 4 portů. V/V pin tedy tvoří synchronní KO typu D (což je jeden bit v oblasti portů v SFR). Ten načte log.hodnotu z vnitřní sběrnice po příchodu log.1 na vstupu C (z vnitřního signálu CPU - Zápis do KO). Výstup Q klopného obvodu je poslán na vnitřní sběrnici, pokud je aktivní (v log.1) vnitřní signál z CPU - Čtení obsahu KO. Skutečný logický stav pinu samotného je poslán na vnitřní sběrnici, pokud je aktivní vnitřní signál CPU - Čtení stavu pinu. Některé instrukce, které čtou z portu, aktivují signál Čtení obsahu KO, některé instrukce aktivují signál Čtení stavu pinu. 32

Podrobnější informace o těchto instrukcích se dočtete v odstavci věnovaném instrukcím typu "čtení-modifikace-zápis". Jak je vidět z obr.1 a 3, výstupní budiče portu 0 a 2 jsou přepínatelné na vnitřní sběrnici Adresa a Adresa/Data vnitřním signálem CPU - Řízení (v případě, že využíváme přístup k externí paměti). Během přístupu k externí paměti zůstává stav portu 2 (tedy obsah SFR - oblast P2) nezměněn, naopak do odpovídající oblasti SFR portu 0 jsou zapsány jedničky. Jak ukazuje obr.4, pokud KO pinu z portu 3 obsahuje jedničku, výstupní log. úroveň pinu je dána stavem vnitřního signálu Alternativní výstupní funkce. Skutečný log.stav pinu je vždy dostupný na vnitřním signálu CPU - Alternativní vstupní funkce. Porty 1, 2 a 3 mají ve výstupních budičích vnitřní zvyšovací odpory (angl. pull-up). Port 0 má naproti tomu výstupy s otevřeným kolektorem (nemá tedy vnitřní zvyšovací odpory). Každý pin kteréhokoliv portu může být nezávisle používán jako vstupní nebo jako výstupní. Porty 0 a 2 nemohou být používány jako všeobecné v/v piny, pokud jsou používány jako adresově-datová sběrnice při přístupu do externí paměti. Pokud tedy chceme piny použít jako vstupní, KO příslušného pinu musí obsahovat jedničku, což způsobí zavření FET tranzistoru ve výstupním budiči (FET je připojený přes negovaný výstup KO). Potom pro porty 1,2,3 platí, že pin je v úrovní log.1 díky zvyšovacímu odporu, ale může být přestaven do log.0 vnějším zdrojem připojeným k pinu (viz tento odstavec). Port 0 se od ostatních portů liší tím, že nemá ve výstupních budičích vnitřní zvyšovací odpory. Místo odporu je zde druhý FET tranzistor (na obr.1 je to ten horní), který se ale využívá jen když port vysílá jedničky během přístupu k externí paměti (na GATE tranzistoru je log.1). V ostatních případech je FET tranzistor zavřený (na GATE je log.0). Proto piny portu 0, používané jako výstupní, se chovají jako obvod s otevřeným kolektorem. Zápisem log.1 do KO zůstávají oba FET tranzistory zavřeny a pin se tak dostává do stavu vysoké impedance. Protože porty 1, 2 a 3 mají integrované zvyšovací odpory, jsou někdy nazývány jako "pseudoobousměrné". Když jsou nastaveny jako vstupní, jsou ve stavu log.1 a pokud je externě přizemníme, stanou se tak zdrojem proudu. Naproti tomu port 0 se považuje za "skutečně" obousměrný, protože když je nastaven jako vstupní, chová se jako vysokoimpedanční. Po resetu mikroprocesoru jsou do KO všech portů zapsány jedničky (všechny porty jsou tedy nastaveny jako vstupní). Jsou-li do KO následně během programu zapsány log.0, mohou být porty znovu přednastaveny jako vstupní zapsáním jedniček od jejich KO. Zápis do portu: Při vykonávání instrukce, která mění hodnotu KO portu, nová data přijdou do KO během fáze S6P2 posledního cyklu instrukce. Nicméně, KO portu jsou ve skutečnosti vzorkovány jejich výstupními budiči pouze během fáze 1 kteréhokoliv hod. cyklu. Během fáze 2 drží výstupní budiči hodnotu, která byla získána ve fázi 1. Z toho důvodu, nová data v KO portu nepřijdou na výstupní pin portu až do doby následující fáze 1. Další fáze 1 v tomto případě bude až fáze S1P1 dalšího strojového cyklu. 33

Blíže je vše vidět na obr.5. obr.5 Zápis dat do portu - časový průběh Jestliže změna stavu portu vyžaduje přechod z 0 do 1 u portu 1,2 a 3, zvyšovací odpor je snížen až o dva řády během fází S1P1 a S1P2 cyklu, ve kterém dochází k přechodu z 0 do 1. To je uděláno proto, aby se zvýšila rychlost přechodu. Takto snížený zvyš.odpor může dodat až 100-krát větší proud než při své normální hodnotě. Tady je třeba vědět, že snížení zvyšovacího odporu je umožněno tím, že zvyšovací odpory tvoří FET tranzistory, nikoliv lineární rezistory. Funkce zvyšovacího odporu bude lépe vidět na obr.6. obr.6 Vnitřní zapojení výstupního budiče portů 1 a 3, port 2 vypadá obdobně (viz text níže) Zvyšovací odpor sestává ze 3 tranzistorů FET s P kanálem (T1,T2,T3). Tzn. při log.0 na GATE bude otevřen, při log.1 bude zavřen. Stávající tranzistor ve výst.budiči (na obr. 2 až 4, na obr.6 označen jako T4) je FET s N kanálem při log.0 na GATE je tedy zavřen, při log.1 otevřen. Tranzistor T1 je otevřen na 2 hodinové cykly po přechodu z 0 do 1 v KO portu. Když je otevřen, otevře zároveň T3 (přes invertor). Tento invertor a tranzistor plní KO, který tak drží log.1. Pokud pin portu vysílá jedničku (nastaven jako vstupní), může být externím zdrojem (součástkou) přizemněn, což způsobí zavření T3, takže pin pak přechází do stavu vysoké 34

impedance. T2 je velmi malý jakoby zvyš.odpor, který je otevřen vždy, když je T4 zavřený. Je přibližně 10-krát menší než T3. Má tu funkci, že obnovuje log.1 na pinu v případě, že na pinu 1 byla a došlo k její ztrátě vlivem externího zdroje (přizemněním). Port 2 funguje podobně s rozdílem při přístupu do externí paměti - pokud port vysílá adresu, pak při jedničkách v této adrese port ponechává otevřený tranzistor T3 (velký zvyšovací odpor). Připojování pinů portu a jejich zatížení Výstupní budič pinu (potažmo tranzistor T4 z obr.6) portů 1,2 a 3 může být zatížen proudem 1,6 ma, což umožňuje připojit 4 vstupy obvodů LS-TTL, 12 vstupů ALS-TTL, počet vstupů obvodů HC a HCT je omezen jejich vstupní kapacitou (kolem 5 pf). Piny portů 1,2 a 3 mohou být připojeny i na obvody s otevřeným kolektorem, ale přechod z 0 do 1 nebude v tom případě rychlý, protože log.0 na vstupu zavře T3 a přechod bude řízen pouze tranzistorem T2 (velmi malý zvyš.odpor). Při přístupu k externí paměti můžeme na port 0 připojit až 8 LS- TTL vstupů. Pokud chceme piny portu používat jako obecné vstupy/výstupy, musíme k nim připojit externí odpory, jejichž druhý konec připojíme na +Ucc. Instrukce "čtení-modifikace-zápis" Některé instrukce, načítající stav portu, čtou obsah KO pinů a některé čtou skutečný stav pinů. Instrukce, které čtou obsah KO namísto aktuálního stavu pinu, tedy načtou hodnotu z KO, změní ji (je-li potřeba) a zpět ji přepíší do KO. Proto se o těchto instrukcích říká, že jsou typu "čtení-modifikace-zápis". Seznam těchto instrukcí naleznete níže. Pokud je cílovým operandem port, příp. jen určitý pin portu, tyto instrukce čtou obsah KO namísto aktuálního stavu portu (všech pinů), příp. jen daného pinu. ANL (log.součin, např. ANL P1, A) ORL (log.součet, např. ORL P2, A) XRL (log.fce nonekvivalence XOR, např. XRL P3, A) JBC (skok a vynulování bitu, je-li bit=1, např. JBC P1.1, start) CPL (negace bitu, např. CPL P3.0) INC (inkrementace, např. INC P2) DEC (dekrementace, např. DEC P2) DJNZ (dekrementace a skok je-li výsledek<>0, např. DJNZ P3, konec) MOV PX.Y, C (přesun přenosu do pinu Y portu X) CLR PX.Y (vynulování bitu Y portu X) SETB PX.Y (nastavení bitu Y portu X) Na první pohled se může zdát, že poslední 3 instrukce nejsou typu "č-m-z", ale přesto jsou. I když adresují jen jeden pin (bit) portu, načtou celý port (celý byte, všech 8 pinů), modifikují jen adresovaný bit a zapíšou zpět celý byte do klopných obvodů portu. Pro uživatele tento fakt ale není podstatný, důležité pro něj je, to že po těchto 3 instrukcích zůstává stav klopných obvodů ostatních pinů daného portu nezměněn (neovlivněn případným působením připojených externích zdrojů - viz další text). 35

Důvod, proč instrukce typu "č-m-z" vůbec existují, je ten, že díky nim je možné se vyhnout chybné interpretaci napěťové úrovně na pinu. Nejlépe to bude vidět na příkladu - pin portu chceme využít pro spínání tranzistoru. Na pin tedy připojíme bázi tranzistoru (přes odpor). Když do pinu zapíšeme log.1, tranzistor se otevře. Pokud potom CPU bude číst tento pin - jeho aktuální stav a ne obsah jeho KO - načte napětí báze tranzistoru. Protože ale toto napětí po otevření tranzistoru kleslo na nějakých 0,7V, je stav pinu interpretován jako log.0. Pokud ale použijeme instrukci typu "č-m-z", čímž načteme obsah KO daného pinu, dostaneme správnou hodnotu log.1. Piny všech čtyř portů můžeme adresovat dvěma způsoby - buď můžeme adresovat jednotlivé piny portu pomocí bitových instrukcí nebo můžeme adresovat celý port - tedy všech 8 pinů daného portu současně - jako jeden byte. Příklad: bitové adresování bytové adresování setb p1.0 mov p1,a clr p1.0 inc p1 cpl p1.0 anl p1,a jnb p1.0,odskok djnz p1,odskok atd. atd. Ještě jednou si připomeneme, jak lze měnit funkci pinu na vstupní/výstupní. Každý pin kteréhokoliv portu může být nakonfigurován samostatně jako vstupní nebo výstupní. Můžeme ale samozřejmě nastavit jako vstupní nebo výstupní i celý port pomocí jediné instrukce. To, zda bude pin vstupní nebo výstupní, můžeme měnit v rámci programu kolikrát chceme. Jak nastavíme funkci pinu? Pokud má být výstupní, je to jasné - zápisem nuly dostaneme na výstupu (pinu) log.0, zápisem 1 dostaneme na pinu log.1. Pokud má pin fungovat jako vstupní, pak do něj nejprve musíme natvrdo zapsat 1. Pak teprve můžeme z daného pinu načíst aktuální stav pinu - pokud je připojený signál v úrovni log.1, načteme 1. Pokud je připojený signál v úrovni log.0, načteme 0. Přesněji řečeno - připojené zařízení (např. tlačítko, báze tranzistoru), jehož stav potřebujeme zjistit a které je připojeno na daný pin, nám buď původně zapsanou jedničku ponechá nebo ji naopak "přizemní". POZN: Po resetu mikroprocesoru jsou ve všech portech zapsány 1 - jsou tedy na nastaveny jako vstupní. Trošku odlišně funguje čtení u portu 0, jak bylo popsáno výše. Na obr.1,2,3,4 a 6 jsou použity české schématické značky hradel až na jednu výjimku. Tou je původní amer.značka budiče s negací budiče Tyto budiče mají povolovací vstup (ten kolmo ke vstupnímu a výstupnímu vývodu). Pokud je na tomto vstupu log.1, vstupní signál může budičem procházet na výstup. 36

Českým ekvivalentem by měla být tato značka Povolovací vstup je zde přiveden na druhý vstup dvouvstupového hradla AND (NAND). Přesto jsou z důvodu "kompatibility" s tištěnou (i českou) literaturou ponechány v obrázcích původní amer.značky. 37

PROGRAMOVÁNÍ 8051 Úvod do programování Jednočipový mikropočítač řady 8051 je v současné době nepsaným standardem v mikroprocesorové technice. Jeho architektura a instrukční soubor se staly základem pro celou řadu vyšších typů jednočipových mikropočítačů. Úkolem výukového kurzu je popis elementárních programátorských technik a postupů, které je nutno zvládnout pro programování konkrétních aplikací. Výhodou je velmi nízká cena (od 35Kč- 200 Kč) těchto obvodů, takže jsou dostupné jak pro jednotlivce, tak pro firmy. Uživatel, který se chce naučit programovat jednočipy řady 8051 musí znát minimálně blokové schéma architektury tohoto jednočipu, rozumět funkcím jednotlivých bloků (možno dostudovat viz učební texty). Doporučuji pracovat s instrukčním souborem Tento kurz programování je chápan jako základní a jednotlivé bloky jsou řazeny od nejjednoduššího ke složitějšímu na základě desetileté zkušenosti programování těchto jednočipů ve škole v předmětu mikroprocesorová technika. Vše je vysvětlováno tak, aby 99 % studentů prošlo bez problému. To 1 % jsou Ti, co nechodí do školy. 38

1. VÝVOJOVÉ DIAGRAMY Naše programy a podprogramy využijí pouze několik základních ikonek. Využívám docela dobře zpracované vývojové diagramy ve wordu v nabídce automatických tvarů. Nejdříve si jednotlivé ikonky představíme : Používané diagramy Začátek - konec Rozhodovací člen Načtení dat Spojka - se kreslí při přecházení na další stránku a čísluje se Volání podprogramu ( použití instrukce CALL) 39

Příklady vývojových diagramů Př.1 Program, který rozsvítí a zhasne všechny LED v intervalu 400ms: OPAK :MOV P1, #00000000b CALL DEL400 MOV P1, #11111111b CALL DEL400 JMP OPAK ;rozsvícení sudých LED ;časová prodleva 400ms ;zhasnutí všech LED ;opakuje se stále dokola start rozsv.led 400ms zhas.led 400ms konec Př.2 K programu, který je tvořen ze 2 podprogramů je vývojový diagram velmi jednoduchý: S ZAC: CALL TRIK CALL PET JMP ZAC TRIK PET K 40

Něco těžšího : Př.3 K programu, který 3krát zopakuje rozsvícení sudých a lichých LED- řešení podprogramem TRIK: MOV R1,#3 ;počet opakování TU: MOV P1,#10101010B ;rozsvícení sudých LED CALL DEL200 ;časová prodleva 200ms MOV P1,#11111111B ;zhasnutí všech LED CALL DEL200 DJNZ R1,TU ;opakuje se dokud není registr R1 nulový RET ;ukončení podprogramu ST Počet opak Rozsv LED Čas 200ms Zhas LED Čas 200ms R1=R1-1 NE R1= 0 ANO RET Shrnutí zásad kreslení vývojových diagramů V podstatě každá instrukce má svoji ikonu. Výjimkou je instrukce DJNZ, která se kreslí 2 ikonami. Ikona pro začátek a konec programu instrukci nemá, přesto se do vývojového diagramu kreslí - je to mezi programátory domluvené pravidlo - tak ho respektujte. Pokud se jedná o podprogram, což poznáme podle instrukce RET na konci, píše se místo textu konec (Př.3). Pokud je vývojový diagram příliš dlouhý a nevejde se na stránku, na konci se maluje kolečko z číslem 1. Toto kolečko z číslem 1 pak začíná na následující stránce a můžeme pokračovat v kreslení vývojového diagramu. Této situaci se budeme snažit vyhnout a programovat efektivně. 41

Ke druhé kapitole se budeme často vracet, protože vývojový diagram bude doprovázet programy u Vašich zkoušek. Pokud se ve vývojovém diagramu opakují ikony stále dokola můžeme nakreslit první 2 potom naznačíme přerušovanou čárou opakování a na závěr dáme poslední 2 ikonky. start 1.data čas 100ms poslední data čas 100ms konec 2. INSTRUKČNÍ SOUBOR Instrukční soubor tohoto jednočipu lze rozdělit do 4 částí. Jsou to instrukce přesunové, aritmetické, logické a instrukce větvení. Instrukce jsou přehledně seřazeny v tabulce č. 1. V tabulce je použito v záhlaví B = znamená kolik bytů zabírá jednotlivá instrukce ; SC = strojový cykl za kolik strojových cyklů se instrukce provede. (pro 12 MHz krystal se 1SC skládá z 12 period oscilátoru tedy 1SC trvá 1 mikrosekundu nutno znát pro výpočet časových prodlev) 42

INSTRUKCE MIKROPOČÍTAČE 8051 PŘESUNOVÉ činnost B SC ARITMETICKÉ činnost B SC MOV @Ri,#data (Ri) data 2 1 přičtení jedničky MOV @Ri,A (Ri) (A) 1 1 INC @Ri (Ri) (Ri) + 1 1 1 MOV @Ri,dir (Ri) (dir) 2 2 INC A A (A) +1 1 1 MOV A,#data A data 2 1 INC DPTR DPTR (DPTR)+1 1 2 MOV A,@Ri A (Ri) 1 1 INC Rn Rn (Rn) + 1 1 1 MOV A,Rn A (Rn) 1 1 INC dir dir (dir) +1 2 1 MOV A,dir A (dir) 2 1 součet obecně MOV C,bit C (bit) 2 1 ADD A,#data A (A) + data 2 1 MOV DPTR,#data16 DPTR data 16 3 2 ADD A,@Ri A (A) + (Ri) 1 1 MOV Rn,#data Rn data 2 1 ADD A,Rn A (A) +(Rn) 1 1 MOV Rn,A Rn (A) 1 1 ADD A, dir A (A) + dir 2 1 MOV Rn,dir Rn (dir) 2 2 ADDC A,#data A (A)+C+data 2 1 MOV bit,c bit ( C) 2 2 ADDC A,@Ri A (A)+C+(Ri) 1 1 MOV dir,# data dir data 3 2 ADDC A,Rn A (A)+C+(Rn) 1 1 MOV dir,@ri dir (Ri) 2 2 ADDC A,dir A (A)+C+(dir) 2 1 MOV dir, A dir (A) 2 1 desítková úprava MOV dir,rn dir (Rn) 2 2 DA A A na desitk.tvar 1 1 MOV dir1,dir2 dir 1 dir2 3 2 odečtení obecně MOVC A, @A + DPTR A ( (A) + (DPTR) ) 1 2 SUBB A,#data A (A)-C-data 2 1 MOVC A, @A +PC A ( (A) + (PC ) ) 1 2 SUBB A,@Ri A (A)-C-(Ri) 1 1 MOVX @ DPTR,A (DPTR ) (A) 1 2 SUBB A,Rn A (A)-C-(Rn) 1 1 MOVX @ Ri,A (Ri) (A) 1 2 SUBB A, dir A (A)-C-(dir) 2 1 MOVX A,@ DPTR A (DPTR) 1 2 odečtení jedničky MOVX A,@Ri A (Ri) 1 2 DEC @Ri (Ri) (Ri) -1 1 1 výměna DEC A A (A) - 1_ 1 1 XCH A,Rn (A) < > (Rn) 1 1 DEC Rn Rn (Rn) -1 1 1 XCH A,dir (A) < > (dir) 2 1 DEC dir dir (dir)-1 2 1 XCH A,@Ri (A) < > (Ri) 1 1 Násobení a dělení XCHD A,@Ri (A) < > Ri(b0-b3) 1 1 MUL AB AB (A)*(B) 1 4 práce se zásobníkem DIV AB AB (A) : (B) 1 4 PUSH dir (SP) < >(dir) SP= SP +1 POP dir (dir) (SP) SP= SP - 1 2 2 2 2 43

LOGICKÉ činnost B SC činnost B SC CLR A A 0 1 1 XRL A, # data A (A ) data 2 1 CLR C C 0 1 1 XRL A,@Ri A (A) (Ri ) 1 1 CLR bit bit 0 2 1 XRL A, Rn A (A) (Rn) 1 1 SETB C C 1 1 1 XRL A, dir A (A) (dir ) 2 1 SETB bit bit 1 2 1 XRL dir, # data dir (dir ) data 3 2 CPL C C /C 1 1 XRL dir, A dir (dir) (A) 2 1 CPL A A /A 1 1 VĚTVENÍ CPL bit bit /bit 2 1 ACALL adr11 SP n.adr.,pc-adr. 2 2 RL A rotace A vlevo 1 1 LCALL adr16 SP n.adr,pc- adr. 3 2 RLC A rotace A a C vlevo 1 1 RETI navrat - preruseni 1 2 RR A rotace A vpravo 1 1 RET navrat podprogr 1 2 RRC A rotace A a C vpravo 1 1 AJMP adr11 PC adresa (2k) 2 2 SWAP A rotace A čtyřikrát 1 1 LJMP adr16 PC adresa (64k) 3 2 ANL A, #data A (A) & data 2 1 SJMP rel(- PC PC + rel.adr. 2 2 128,127) ANL A, @ Ri A ( A) & (Ri) 1 1 JMP @ A + DPTR PC ((A)+(DPTR)) 1 2 ANL A, Rn A (A) & (Rn) 1 1 JZ kód,rel skok při A = 0 2 2 ANL A, dir A (A) &(dir) 2 1 JNZ kód,rel skok při A 0 2 2 ANL C, bit C C & (bit) 2 2 JC kód,rel skok při C 0 2 2 ANL C, /bit C C & /(bit) 2 2 JNC kód,rel skok při C = 0 2 2 ANL dir, #data dir (dir) & data 3 2 JB bit,rel skok při bit = 1 3 2 ANL dir, A dir (dir) & (A) 2 1 JNB bit,rel skok při bit = 0 3 2 ORL A, # data A (A) or data 2 1 JBC bit,rel skok při bit=1a nulo 3 2 ORL A, @Ri A (A) or (Ri) 1 1 CJNE @Ri,#data,rel skok při nerovnosti 3 2 ORL A, Rn A (A) or (Rn) 1 1 CJNE Rn,#data,rel skok při nerovnosti 3 2 ORL A, dir A (A) or (dir) 2 1 CJNE A,# data,rel skok při nerovnosti 3 2 ORL C, bit C (C ) or (bit) 2 2 CJNE A,dir,rel skok při nerovnosti0 3 2 ORL C,/bit C (C ) or (/bit) 2 2 DJNZ Rn,rel dec(rn),skok nerov 2 2 ORL dir, A dir (dir ) or (A) 3 2 DJNZ dir,rel dec(dir),skok nerov 3 2 ORL dir, # data dir (dir) or (data) 2 1 NOP prázdná instrukce 1 1 tabulka č.1 Vysvětlivky : = rovná se @ nepřímá adresa Rn registr R0 - R7 # data 8-8 bitové data nerovná se or logický součet Ri registr R0 - R1 # data 16-16 bitové data přiřazení & logický součin dir přímá adresa C - příznak CARRY rel návěstí bit číslo bitu (př.p1.1) 44