Obsah: Přílohy. strana

Rozměr: px
Začít zobrazení ze stránky:

Download "Obsah: Přílohy. strana"

Transkript

1

2

3 Obsah: strana 1. Úvod Seznámení s mikropočítačem PMI Mikroprocesor MHB8080A a jeho podpůrné obvody Obvody paměti a periferií Obvody vstupu a výstupu Jednoduché úlohy s PMI Programování mikroprocesoru MHB8080A První úlohy s PMI Stopky Programování paralelního stykového obvodu MHB8255A Popis základního programového vybavení PMI Výpis monitoru PMI Aplikace s mikropočítačem PMI Dálnopis jako vstupní a výstupní zařízení Připojení sériové tiskárny C2111 Consul Řízení stejnosměrného motorku Číslicově analogový a analogově číslicový převodník Programátor pamětí EPROM Měření teploty termistorem, měření kapacity kondenzátoru Počítačové hry Pípající hrací kostka Dvojkové zobrazení obsahu paměti Světelné noviny Mikrovarhany Doplňky a úpravy Zlepšení práce s magnetofonem Doplňky Zdroj pro mikropočítač a další aplikace Literatura...49 Přílohy A Tabulka instrukcí mikroprocesoru MHB8080A B Tabulka zpětného převodu kódu na instrukci C.1 Mikropočítačové jádro PMI-80 C.2 Obvody paměti a periferií C.3 Obvody vstupu - výstupu D Rozmístění součástek na desce E Rozmístění signálů na konektorech K1, K2, K3 F Schéma napájecího zdroje SN 080 3

4

5 1. Úvod V době velkého rozmachu mikroprocesorové techniky je velmi důležité, aby se s jejími principy seznámil co nejširší okruh zájemců, zejména z řad mládeže. Jako nejúčinnější způsob výuky základů mikroprocesorové techniky lze doporučit aktivní práci na konkrétním systému v součinnosti s teoretickou přípravou. Jako jeden z nejvhodnějších (a zároveň nejdostupnějších) systémů pro výuku základů mikroprocesorových systémů se v současné době jeví školní mikropočítač PMI-80 z produkce k. p. TESLA Piešťany. Předkládaná publikace slouží zejména jako rozšiřující materiál základní uživatelské příručky (15), na niž pochopitelně navazuje a doplňuje ji. Řadu příkladů aplikací jak programových tak obvodových lze však využít i na zcela jiných systémech. Publikace vznikla na základě autorových zkušeností z práce kroužku mládeže, na základě prací vlastních i zkušeností jiných. Autor považuje za milou povinnost poděkovat Ing. P. Hlaváčkovi z 303. ZO Svazarmu v Brně za poskytnutí řady materiálů použitých v publikaci. Dále autor děkuje své ženě Drahomíře za pochopení a pomoc při konečné úpravě rukopisu. Autor Jablonec n. Nisou - 2. září

6 2. Seznámení s mikropočítačem PMI-80 Školní mikropočítač PMI-80 je zařízení, které je určeno především pro potřeby výuky programování a práce s mikroprocesorovým systémem. Blokové schéma na obrázku 1 nám napovídá o struktuře tohoto zařízení. Jádrem mikropočítače PMI-80 je tzv. tříobvodový mikroprocesor MHB8080A společně se dvěma podpůrnými obvody MH8224 (generátor základní frekvence mikroprocesoru) a MH8228 (systémový řadič). Toto mikropočítačové jádro generuje většinu signálů systémové sběrnice mikroprocesoru MHB8080A, které jsou vyvedeny na konektor K1; do jádra též vstupují některé signály nutné pro řízení práce mikroprocesoru. Základní programové vybavení mikropočítače PMI-80 (program MONITOR) je uloženo v paměťovém obvodu typu PROM MHB8608 s kapacitou 1024 osmibitových slabik (říkáme též 1 kbyte). Toto programové vybavení umožňuje veškerou činnost mikropočítače PMI-80, obsluhu klávesnice, zobrazovače a spolupráce s kazetovým magnetofonem přes konektor K3. Kapacitu paměti PROM lze zdvojnásobit přímo na desce osazením naprogramovaného obvodu MHB8708 do objímky. Do tohoto obvodu si může uživatel naprogramovat své vlastní programy. Uživatelské programy a data, případně systémové proměnné se ukládají do paměti typu RWM (RAM) typu MHB2114 (2 kusy) s kapacitou 1 kb. Pro ovládání obvodů klávesnice, zobrazovače a styku s kazetovým magnetofonem slouží programovatelný stykový obvod MHB8255A. Tento obvod je určen pro paralelní komunikaci přes tři obousměrné brány. Zde jsou využity dvě brány pro daný účel, třetí brána (PB) je k dispozici uživateli. Desku lze osadit ještě jedním obvodem tohoto typu, který je potom plně k dispozici uživateli. Ve funkci dekodéru adres je využit obvod MH3205. Každý z jeho osmi adresovacích výstupů je aktivní v rozsahu 1 kb počínaje adresou 0000H a konče 1FFFH. Poznamenejme jen, že písmenko H na konci označuje, že číslo je uvedeno v hexadecimálním (t.j. šestnáctkovém) vyjádření. Na desce mikropočítače jsou využity jen některé adresovací výstupy a ty zbylé jsou vyvedeny společně s vývody bran obvodů MHB8255A na konektor K2. Vzhledem k tomu, že komunikace mikropočítače s prostředím (s klávesnicí, zobrazovačem a magnetofonem) je z velké části zabezpečena programově, je technická realizace poměrně jednoduchá. Obsluha klávesnice a zobrazovače je záležitostí obvodu MH1082 a sedmi tranzistorů, z nichž každý rozsvěcí jeden ze sedmi segmentů zobrazovací jednotky. Styk s magnetofonem je vyřešen skutečně jednoduše a mnohdy může být zdrojem pochyb o správné činnosti. Drobnými úpravami lze dosáhnout podstatně lepších výsledků a tím i spolehlivosti celého styku s magnetofonem (viz kapitola 6). Vezměme si nyní k ruce schémata (viz příloha C) a popišme si jednotlivé části podrobněji. 6

7 2.1 Mikroprocesor MHB8080A a jeho podpůrné obvody Již v úvodu této kapitoly jsme uvedli, že tzv. jádrem mikropočítače PMI-80 je mikroprocesor MHB8080A a jeho podpůrné obvody MH8224 a MH8228. Podrobný popis funkce mikroprocesoru by vydal na celou další publikaci, proto zájemce odkazujeme na (8). Pro účely naší publikace si funkci mikroprocesoru shrneme do obrázku 2, kde je vyobrazeno blokové schéma. Mikroprocesor MHB8080A je vlastně integrovaný obvod s vysokou hustotou integrace jednotlivých prvků - tranzistorů. Je vyroben technologií NMOS, což znamená, že základním stavebním prvkem integrovaného obvodu je tranzistor řízený elektrickým polem s kanálem typu N. Mikroprocesor MHB8080A pracuje s osmibitovou datovou sběrnici a taktéž s osmibitovou aritmeticko-logickou jednotkou. Ve vnitřní struktuře mikroprocesoru MHB8080A se nachází osmibitový střadač A (akumulátor), šest osmibitových registrů B, C, D, E, H a L, které lze po dvojicích spojovat do tzv. registrových párů BC, DE a HL, dále pak pětibitový registr příznakových bitů (společně s A tvoří tzv. stavové slovo PSW - Program Status Word), šestnáctibitový programový čítač PC (Program Counter) a konečně šestnáctibitový ukazatel zásobníku SP (Stack Pointer). Ostatní registry z obr. 2 jsou vnitřní registry mikroprocesoru a nejsou programově přístupné. Vykonání jedné instrukce lze popsat zjednodušeně asi takto: mikroprocesor vyšle na adresovou sběrnici obsah programového čítače PC. Nyní se vyšle čtecí impuls a na datové sběrnici se předpokládá obsah paměťového místa na adrese určené obsahem PC. Obsah datové sběrnice se považuje v této fázi za instrukci a uloží se tedy v instrukčním registru. Z instrukčního registru se informace přesune do dekodéru instrukcí, kde se vygeneruje řada řídicích signálů - mikroinstrukcí. Tyto signály řídí činnost mikroprocesoru podle přijaté instrukce. Po vykonání instrukce se zvýší obsah programového čítače na adresu následující instrukce a rozeběhne se nový instrukční cyklus. Podrobnější popis může zájemce najít např. v (3), (4), (8), (9) nebo (12). Nyní ještě pro úplnost popíšeme všechny vstupní a výstupní signály mikroprocesoru MHB8080A: A 0 - A 15 D 0 - D 7 SYNC DBIN WR READY - šestnáctibitová adresová sběrnice - osmibitová datová sběrnice (obousměrná) - signál indikující probíhající strojní cyklus - signál indikující, že datová sběrnice je přepnuta ve směru do mikroprocesoru - při stavu log. 0 je na datové sběrnici připravena informace (data) k zapsání do paměti nebo periferie - přivedení log. 1 na tento vstup způsobí přechod mikroprocesoru do stavu čekání (WAIT), což je velice výhodné pro práci s pomalými pamětmi nebo periferiemi WAIT - signál indikující přechod mikroprocesoru do stavu WAIT (reakce na READY = log. 1) 7

8 HOLD HLDA INTE INT RESET - přivedení log. 1 na tento vstup způsobí po dokončení strojního cyklu odpojení datové a adresové sběrnice (uvedení těchto sběrnic do třetího stavu - stavu vysoké impedance); řídící sběrnice zůstává aktivní! - signál potvrzující přechod datové a adresové sběrnice do třetího stavu - signál indikující stav vnitřního klopného obvodu umožňujícího příjem žádosti o přerušení. Stav tohoto klopného obvodu lze měnit instrukcemi EI a DI, po signálu RESET se tento klopný obvod nuluje (DI - Disable Interrupt - přerušení zakázáno) - vstup pro příjem žádosti o přerušení pravidelného vykonávání posloupnosti instrukcí; žádost je přijata, je-li INTE = log nulovací vstup mikroprocesoru; používá se zejména pro uvedení mikroprocesoru do počátečního stavu (nuluje PC, klopný obvod INTE a HLDA) 1, 2 - vstupní svorky pro připojení hodinových signálů z obvodu MH8224 (signály 1 i 2 mají úroveň napětí 12V) Připojením specializovaných obvodů MH8224 a MH8228 získáme celé mikropočítačové jádro. Tyto obvody vytváří dalších 5 systémových signálů a vstupní signály časově upravují: MEMR, MEMW - signály určené pro čtení a zápis z a do paměti IOR, IOW INTA BUSEN STSTB - signály určené pro čtení a zápis z a do periferních zařízení (při těchto signálech je aktivních dolních osm adresových vodičů) - potvrzení přijetí povolené žádosti o přerušení. Tento výstup má ještě jednu zvláštní funkci: připojíme-li jej přes odpor 1 kω k napájecímu napětí +12 V, vznikne tak jednoduchý přerušovací systém s jedinou úrovní přerušení (generuje se instrukce RST7) - signál pro odpojení vnější datové sběrnice od mikropočítačového jádra - signál slouží obvodu MH8228 ke vzorkování stavového slova z datové sběrnice V příloze C.1 je uvedeno schéma mikropočítačového jádra mikropočítače PMI-80. Jde o obvyklé zapojení doporučené výrobcem a dnes už prakticky klasické. Všechny signály datové, adresové a řídící sběrnice jsou vyvedeny na kontakty konektoru K1 (viz příloha E). 8

9 2.2 Obvody paměti a periferií Paměťové a periferní obvody přímo navazují na mikropočítačové jádro. Umožňují vlastně celou funkci zařízení. Schéma těchto obvodů na mikropočítači PMI-80 jsou na obrázku v příloze C.2. Všimněme si nyní některých částí. Integrovaný obvod IO8 typu MH3205 má zde funkci dekodéru adres paměti. Každý z jeho osmi výběrových výstupních signálů je aktivní v rozsahu 1 kbyte. Tabulka č. 1 znázorňuje rozdělení paměti po těchto blocích s uvedením který obvod je v dané oblasti aktivní: Tabulka 1 Adresa (hexa) Aktivní obvod Poznámka FF IO4 (PROM č.1) základní Monitor C7FF IO5 (EPROM č.2) rozšíření CBFF vyvedeno na 42K1 0C00 - OFFF vyvedeno na 44K FF vyvedeno na 43K FF vyvedeno na 38K BFF vyvedeno na 36K1 1C00-1FFF IO6, IO7 (RWM) základní paměť RWM FFF přeloží se modulo 2000H zpět FFFF dekodér zablokován Z tabulky 1 plyne, že první blok o kapacitě 1 kbyte je obsazen pamětí PROM (resp. EPROM) se základním programovým vybavením - Monitor, druhý blok je volný a je určen uživateli pro případné rozšíření. Dalších pět výběrových signálů lze vhodně využít při vytváření vnějších obvodů. Poslední osmý signál pro rozsah adres 1C00 až 1FFF vybírá paměťové obvody RWM typu MHB2114 (2 ks). Z paměti RWM je prakticky celý rozsah určen uživateli pro jeho programy a data, pouze malá část paměti je obsazována systémovými proměnnými (viz tab. 2). Do skupiny obvodů periferií patří integrované obvody IO9 a IO10 typu MHB8255A, což jsou tzv. programovatelné paralelní stykové obvody. Podrobný popis těchto obvodů, jejichž složitost lze přirovnat k mikroprocesoru, je uveden v (7) nebo (8). V základní konfiguraci mikropočítače PMI-80 je osazen jen jeden obvod MHB8255A, a to na pozici IO10. Dvě osmibitové brány tohoto obvodu jsou využity uvnitř systému; brána PA jako vý- 9

10 stupní pro ovládání segmentů zobrazovače a pro výstup signálu pro magnetofon, brána PC zčásti jako výstupní pro výběr pozice zobrazovače a zčásti jako vstupní pro čtení informace z klávesnice a pro příjem signálu z magnetofonu. Zbylá osmibitová brána PB je tedy k dispozici uživateli. Uživatel potom může možnosti mikropočítače PMI-80 rozšířit vložením druhého obvodu MHB8255A do pozice IO9, který je potom plně k dispozici. Programovatelné paralelní stykové obvody MHB8255A jsou připojeny k systémové sběrnici datovými signály D0 až D7, signálem RESET, kterým lze obvod vynulovat (všechny brány se nastaví do vstupního režimu), dále pak signály IOR a IOW, které jsou připojeny na vstupy RD a WR pro řízení čtení a zápisu. Adresovací a výběrové vstupy obvodů A0, A1 a CS jsou zapojeny podle tabulky 3. Tabulka 3 Obvod A 0 A 1 CS Adresový rozsah CWR PA PB PC Poznámka IO9 A 0 A 1 A 3 X4 - X7 X7 X4 X5 X6 rozšíření IO10 A 0 A 1 A 2 X8 - XB XB X8 X9 XA základní Jak jsme již naznačili, integrované obvody MHB8255A jsou programovatelné obvody a tudíž před započetím činnosti je nutno je naprogramovat do režimu, v němž požadujeme, aby pracovaly. Znamená to, že do registru řídicího slova CWR musíme zapsat informaci o způsobu práce. Protože v kapitole 3, 4 se budeme podrobněji zabývat programováním obvodu MHB8255A, zde jen uvedeme tvar řídicího byte pro řízení kanálu PB v základním obvodu IO10: PB jako vstup PB jako výstup - do CWR zapsat 8AH - do CWR zapsat 88H V příloze C.2 je uvedeno schéma této části PMI-80 (společně s paměťovými obvody). Vývody obvodů IO9 a IO10 jsou přivedeny na kontakty konektoru K2. Rozmístění vývodů tohoto konektoru je v příloze E. 2.3 Obvody vstupu a výstupu Pro komunikaci a styk mikropočítače PMI-80 s prostředím slouží jako základní vstupní jednotka klávesnice s 25 tlačítky (z toho dvě systémová - RESET a INTERRUPT), jako základní výstupní jednotka devítimístný zobrazovač (displej) tvořený sedmi segmentovými číslovkami. Jako další jednotka vstupu a výstupu slouží obvodové zabezpečení styku s magnetofonem přes konektor K3. Na magnetofonovém pásku (resp. kazetě) lze námi vytvořený program nebo data uchovat a později přehrát zpět do paměti. 10

11 Z celkového počtu 25 tlačítek je 23 programově čteno a dekódováno v součinnosti se zobrazováním informace na zobrazovači. Ze schématu v příl. C.3 je zřejmé, že zobrazování údajů na jednotlivých pozicích zobrazovače se děje postupně, {chybějící pasáž textu cca 5 slov} Pro každou z devíti pozic musí dostat programovatelný stykový obvod IO10 typu MHB8255A novou informaci o obsahu. Znamená to, že pro každou pozici se musí na bitech brány PA0 až PA6 objevit informace o tvaru znaku a na bitech brány PC0 až PC3 informace o pozici znaku na zobrazovači. Má-li se např. na druhé pozici rozsvítit číslo 1, musí se na bráně PA objevit =79H a na bráně PC Zbylé vyšší bity jsou pro funkci zobrazovače nevýznamné. Integrovaný obvod IO12 typu MH1082 je využit jako dekodér a výkonový budič řádů zobrazovače. Při zobrazování se postupné objeví na všech výstupech IO12 stav logické nuly (tzv. putující nula), na zbylých je stav logické jedničky. Není-li stisknuto žádné tlačítko, na vstupech PC4 až PC6 bude log. 1. Při stisku některého tlačítka se na jednom ze vstupů objeví log. 0. Ze znalosti právě zobrazované pozice na zobrazovači lze programově přiřadit příslušný kód tlačítka a zároveň zabezpečit protizákmitovou ochranu. Pro uložení dat a programu na magnetofonovém pásku (kazetě) je PMI-80 vybaven programovým obsloužením a jednoduchým obvodovým řešením pro styk s touto periferií. Nahrávání na magnetofon je programově realizováno jako sériové vysílání jednotlivých bitů. Každý významový bit je uváděn tzv. startovním bitem a ukončen tzv. koncovým bitem. Jestliže potom doba vyslání jednoho bitu je 3,2 ms, bude celková doba vyslání jednoho osmibitového bytu 24 x 3,2 = 76,8 ms, což znamená rychlost přenosu informací 13 bytů/sec. Každý nahrávaný blok paměti (o délce maximálně 256 bitů) je uváděn jedním bytem nesoucím identifikační číslo souboru, podle něhož lze při zpětném přehráváni informace z magnetofonu do PMI-80 soubory identifikovat a najít požadovaný. Je však nutno vést si o nahrávkách evidenci. Na magnetofonový pásek (resp. kazetu) se informace nahrávají jako frekvenčně modulovaný záznam s frekvencí 5 khz. Stav log. 1 má trvání 16 period, stav log. 0 je bez signálu. Po vytvoření součinového signálu PA6 (základní frekvence - BURST) a PA7 (data) pomocí hradla NAND IO11 vývod 8 se signál tvaruje na přibližně sinusový (obr. 3) a v tomto tvaru posílá do magnetofonu. Při přehrávání nahrávky do počítače programový segment pro přehrávání (LOAD) očekává sériový tok vlnových balíků v určitém rozestupu. Tranzistory T2 a T3 s pomocí pasivních součástek tvarují vstupní signál z magnetofonu na tvar logického signálu. Ten je potom přiveden na bit brány PC7, kde je programově čten a dekódován do původní podoby (obr. 4). V kapitole 6 je uvedeno zapojení, kterým lze podstatně zlepšit spolehlivost práce s magnetofonem. 11

12 3. Jednoduché úlohy s PMI-80 V předchozí části naší publikace jsme se seznámili s funkcí jednotlivých bloků mikropočítače PMI-80. Nyní se budeme věnovat využití tohoto mikropočítače. Úvodem však ještě jednu kapitolu. 3.1 Programování mikroprocesoru MHB8080A V části 2.1 jsme poznali, že jádrem PMI-80 je mikroprocesor MHB8080A s podpůrnými obvody. Mikroprocesor je sekvenční obvod, jehož činnost je řízena předpisem - programem. Znamená to, že mikroprocesor pracuje podle předem zadaných instrukci. Tato množina instrukcí, která tvoří předpis činnosti sekvenčního automatu, se nazývá program. Mikroprocesor MHB8080A vyžaduje, aby instrukce a datové údaje byly uloženy mimo mikroprocesor v paměťových obvodech. Teprve odtud mikroprocesor údaje čte a zpracovává (pokud je pochopitelně program v pořádku). Protože vnitřní stavba mikroprocesoru je založena na osmibitové datové a šestnáctibitové adresové sběrnici, je maximální adresovatelnost mikroprocesoru MHB8080A (tedy maximální kapacita připojené paměti) 2^16 = Byte = 64 kbyte, přičemž jednotka 1 Byte znamená 8 bitů. Znamená to, že mikroprocesor MHB8080A je schopen pracovat s osmibitovými paměťovými buňkami. 12 Instrukce mikroprocesoru MHB8080A lze rozdělit podle délky do tří skupin: a) instrukce jednobytové - většina instrukcí pro práci s jednotlivými registry, logické a aritmetické operace, rotace a pod. b) instrukce dvoubytové pro práci a daty o délce 8 bitů, resp. instrukce pro práci s periferiemi, c) instrukce tříbytové - instrukce skoků, volání podprogramů, instrukce pro práci s šestnáctibitovými daty apod. Zde stojí za zmínku, že u těchto instrukcí za operačním kódem (t. j. první byte instrukce) následuje vždy nižší byte a jako poslední vyšší byte. Každá z instrukcí mikroprocesoru (příloha A), kterým mikroprocesor rozumí, má svůj specifický úkol. Proto má každá svůj mnemokód zkratkové slovo, které v krátkosti vystihuje hlavní funkci instrukce. Takže např. instrukce JMP (operační kód C3H) je instrukcí skoku, přičemž anglicky se skok řekne jump (čti džamp). Instrukce MVI má zase svůj mnemokód z anglického výrazu move immediate (vlož následující, rozumí se data). Tak bychom mohli pokračovat se všemi instrukcemi. Tabulka mnemokódů instrukčního souboru mikroprocesoru MHB8080A s převodem do strojové podoby v šestnáctkové soustavě je uvedena v příloze A, v další příloze B je uvedena tabulka převodu opačného. Jak poznáte sami, pro krátké a jednoduché programy je lehké převést mnemokódy instrukcí do strojového kódu, případné program psát přímo v něm. Pro rozsáhlejší programy je však tento způsob už neefektivní a mnohdy i nereálný. Pro automatický převod mnemokódů do strojového kódu byly vytvořeny tzv. překladače - asemblery. Asembler umožňuje přeložit program psaný v jazyku symbolických adres do konkrétní strojové podoby s adresami konkrétními. Výsledkem jsou podklady pro skutečné vložení posloupnosti informací do paměti mikropočítače. Z dalších kapitol naší publikace vyplynou další výhody překladačů. Nyní jen dodejme, že program jednou vložený

13 do paměti mikropočítače již lze jen velmi obtížně opravovat. Je nutno přeadresovat skoky, přepsat některé obsahy v paměti jinou informací a pod. Vzhledem k tomu, že práce s překladačem je mnohem výhodnější, budeme dále předpokládat, že jej máme k dispozici. Programy budeme proto psát vždy v jazyce symbolických adres pro mikroprocesor MHB8080A, který si dále v krátkosti popíšeme. I ti (a bude jich většina), kteří překladač nebudou mít k dispozici záhy poznají, že i ruční překlad je mnohem výhodnější než přímé vkládáni instrukcí do paměti a při každé opravě nutnost oprav a přesunů. Ruční překlad provedete podle tabulek v přílohách A a B. Nejinstruktivněji popíšeme jazyk symbolických adres mikroprocesoru MHB8080A příkladem programu: 1 ORG 1C00H ; DEFINICE POC. ADRESY 2 ENT: JMP ABC ; SKOK NA NAVESTI ABC 3 LXI H,DATA ; VLOZI DO H DVA BYTE 4 ABC: MOV A,L ; DO A OBSAH L 5 DATA: EQU 345AH ; DEFINICE PROMENNE DATA 6 END ; UKONCI PREKLAD Po přeložení dostaneme výpis budoucího obsahu paměti: 1C00 C3 06 1C 1C A 34 1C06 7D Pokud bychom chtěli ať už z jakýchkoliv důvodů vložit mezi řádky 3 a 4 řádek nový, při ruční práci to znamená posunout obsah paměti od adresy 1C06 o tolik byte dále, kolik je délka vkládané instrukce (resp. instrukcí), a to může být někdy hodně. S překladačem stačí řádek vložit a spustit překlad. Bude-li vložený řádek např.: CALL F61DH bude výpis překladu mít tvar: 1C00 C3 09 1C 1C A 34 1C06 CD 1D F6 1C09 7D kdežto ve zdrojovém programu pouze přibude nový řádek. 13

14 3.2 První úlohy s PMI-80 Po připojení mikropočítače ke zdroji (např. SN 080, příloha F) a po jeho zapnutí se na zobrazovači objeví úvodní hlášení - PMI-80. Tak mikropočítač ohlásí, že je připraven s námi komunikovat. Stejně se nám ohlásí po stisku tlačítka RE (REset). Nyní už bude skutečně záležet jen na nás, co budeme chtít naprogramovat. Vyzkoušejme nyní, jak vlastně mikroprocesor plní instrukce. Vytvoříme jednoduchý program pro vykonávání aritmetických a logických operací mezi dvěma čísly. Vývojový diagram takové úlohy je velice jednoduchý (obr.5). Předpokládejme nyní, že hodnoty X a Y máme pro jednoduchost uloženy v paměti na adresách A1 a A2, výsledek operace uložíme na adresu A3. Program pro sčítání čísel X a Y bude potom v asembleru 8080 mít podobu: Program 1 ORG 1C00H LDA A1 ; A <- X MOV C,A ; uloží X do C LDA A2 ; A <- Y ADD C ; A <- Y + X = Z, výsledek STA A3 ; (A3) <- Z JMP 0000H ; skok do monitoru END ; pseudoinstr. pro překladač Již zde jsme hned v počátku narazili na problém všech programátorů: jak efektně a přitom efektivně (tedy jasně a jednoduše) naprogramovat vstupní a výstupní operace. Programátor většinou ví, co chce naprogramovat a problém teoreticky i prakticky vyřeší. Avšak nejvíce práce a času potom zabírá vymyšlení vstupování dat do programu a zobrazení výsledku. V našem programu jsme předpokládali vstupní data uložena někde v paměti a výsledek jsme uložili opět na paměťové místo. Toto řešení jistě není elegantní a za chvíli nám přestane vyhovovat. Prozatím se však s tím smíříme. 14 Nyní tedy program vložíme do paměti PMI-80 podle tabulky 4. Místo asemblerovských hodnot A1 až A3 jsme dosadili hodnoty A1=1F00H, A2=1F02H a A3=1F04H. Na adresy A1=1F00H a A2=1F02H vložíme nyní X=1CH a Y=C6H. Po spuštění programu (tzn. EX 1C00 =) se prakticky ihned objeví úvodní hlášení PMI-80, které oznamuje, že program je vykonán. Nyní si prohlédněme obsahy paměťových lokalit, kde se nachází vstupní data a výsledek. Na adresové pozici 1F04H se má objevit výsledek sečtení C6H+1CH=E2H. Změníme-li nyní v programu 1 instrukci ADD C (kód 81H) na instrukci SUB C (kód 91H), po spuštění programu se musí jako výsledek na adrese 1F04H objevit C6H-1CH=AAH. Tímto

15 způsobem můžeme vyzkoušet i jiné instrukce pro operaci mezi dvěma registry (t.j. AND C, ORA C, XRA C) a ověřit si jejich funkci pro různá vstupní data X a Y. Jistě nám brzy přestane stačit omezená schopnost programu 1 a proto ze znalostí základní firemní dokumentace využijeme některé monitorovské podprogramy. Jsou to CLEAR (adresa 00ABH) pro výmaz obsahu zobrazovače, OUTDA (00F2H) pro uloženi údajů do datové části zobrazovače, MODDA (00FBH) pro práci s datovou částí zobrazovače a konečně OUTKE (0116H), který dynamicky ovládá zobrazovač a klávesnici. Program 1 lze se znalosti těchto podprogramů vylepšit do poněkud dokonalejší podoby: Program 2 ORG 1C00H 1C00 3E 23 MVX A,23H ; znak 1C02 CD AB 00 CALL CLEAR ; vymazání obsahu zobrazovače 1C05 CD FB 00 L: CALL MODDA ; zadání X 1C F STA 1F00H ; uloží X 1C0B CD FB 00 CALL MODDA ; zadání Y 1C0E F STA 1F02H ; uloží Y 1C11 81 ADD C ; operace 1C F STA 1F04H ; 1C15 32 FA 1F STA 1FFAH ; výsledek do prac. registru 1C18 CD F2 00 CALL OUTDA ; přepis obsahu prac.registru ; do datové části zobrazovače 1C1B CD CALL OUTKE ; obrazování 1C1E C3 05 1C JMP L ; pokračování po stisku čísla Program 2 umožňuje poněkud komfortněji zadávat vstupní údaje a na závěr nám i výsledek zobrazí na zobrazovači. Program podle levé části výpisu vložte do paměti mikropočítače, dobře si rozmyslete a vyzkoušejte jeho funkci. 3.3 Stopky Nyní, když už umíme řídit zobrazování údajů na zobrazovači, si můžeme naznačit další možnosti aplikací mikropočítačů. Půjde o program pro postupné zobrazování čísel ve vzestupné řadě od nuly do FFH (půjde tedy o osmibitový údaj), jinými slovy naprogramujeme čítač modulo 256 (což je totéž co FFH). Vývojový diagram této úlohy je na obr. 6. Jde tedy o velice jednoduchý problém a tedy i jednoduchý program. Využijeme přitom další monitorovský podprogram DISP (0140H). 15

16 Program 3 ORG 1C00H 1C00 3E 19 MVI A,19H 1C02 CD AB 00 CALL CLEAR ; vymazání 1C05 3E 00 MVI A,0 1C07 32 FA 1F STA 1FFAH ; vynulování registru 1C0A L1: MVI D,20H ; definice čas. konst. 1C0C 00 L2: NOP 1C0D CD F2 00 CALL OUTDA ; přepíše obsah 1FFAH na zobr. 1C10 CD CALL DISP ; zobrazuje 1C13 15 DCR D ; zpoždění 1C14 C2 0C 1C JNZ L2 1C17 3A FA 1F LDA 1FFAH 1C1A 3C INR A ; inkrement registru 1C1B 00 NOP 1C1C 32 FA 1F STA 1FFAH 1C1F C3 0A 1C JMP L1 Program 3 na počátku vymaže zobrazovač, dále je vynulován pracovní registr na adrese 1FFAH a je definována časová konstanta, neboli konstanta úměrná době zobrazováni jednoho číselného údaje. Poté se hodnota z datového registru naplní do datové části zobrazovače (t.j. vpravo) a obsah registru je nyní zobrazován podprogramem DISP tak dlouho, dokud nebude obsah registru D nulový. Poté je obsah datového registru zvýšen o jedničku a celý děj se opakuje. Zkusme nyní modifikovat časovou konstantu na adrese 1C0BH na 80H. Děj se úměrně zpomalí. Vložme nyní na volné místo na adrese 1C1B místo instrukce NOP instrukci DAA (=27H). Tato instrukce nám zaručí, že na zobrazovači se budou objevovat postupně jen čísla z desítková soustavy. Instrukce DAA (Decimal Adjust Accumulator) provádí totiž tzv. dekadickou korekci obsahu akumulátoru A. Po čísle 09 nebude tudíž následovat šestnáctkové číslo 0A, nýbrž číslo 10. Jistě oceníme výhody této instrukce, i když si musíme uvědomit, že se nám nyní nepodaří dostat na displej větší číslo nežli 99. Nyní nás může napadnout zastavit čítání čísel, tedy vytvoření jakýchsi stopek. Využijeme tlačítka I pro generování přerušení hlavního programu. V kapitole 2.1 jsme již uvedli, že při příchodu žádosti o přerušení lze jednoduše vygenerovat instrukci RST7 přivedením 12V na vývod INTA obvodu MH8228 přes odpor 1 kω. Ze schématu C.1 vyplývá, že právě tato možnost je využita u PMI-80 po stisku tlačítka I (samozřejmě pokud je přerušení povoleno instrukcí EI). Instrukce RST7 má prakticky stejnou funkci jako instrukce CALL 0038H, tedy volá podprogram na adrese 0038H. U mikropočítače PMI 80 je na adrese 0038H jednoduché obsloužení žádosti o přerušení. Na obr. 7 je znázorněn způsob obsluhy žádosti o přerušení u mikropočítače PMI-80. Z obrázku je patrné, že je-li přerušení povoleno (instrukce EI), tak bezprostředně po přijetí žádosti o přerušení (zde tedy stisku tlačítka I) se další přerušení zakáže (klopný obvod INTE se překlopí do stavu DI) a vygeneruje se instrukce RST7. Ta způsobí, že po dokončení právě probíhající instrukce programu uloží mikroprocesor adresu násle- 16

17 dující instrukce do sklípku a přejde na adresu 0038H. Zde se u PMI-80 nachází instrukce skoku do paměti RWM na adresu 1FE6H. Na uživateli nyní bude, jak se s obsluhou vypořádá. Podprogram pro ošetření žádosti o přerušení musí končit instrukcí RET. Náš program 3 nyní upravíme pro demonstraci obsluhy tlačítka I. Po stisku tohoto tlačítka se musí obsah zobrazovače vynulovat. Na adresu 1C0CH vložíme instrukci EI (FBH), čímž povolíme přerušení. Nyní před spuštěním programu musíme ještě vytvořit obslužný podprogram pro ošetření žádosti o přerušení. Nejprve na adresu 1FE6H vložíme programový řádek: 1FE6 C3 00 1D REST7: JMP PRER a na adrese 1D00H se bude nacházet obslužný podprogram PRER: 1D00 3E 00 PRER: MVI A,0 ; vynulování registru 1D02 32 FA 1F STA 1FFAH 1D05 C9 RET Úpravou programu 3 a vytvořením předchozího krátkého podprogramu pro obsluhu přerušení dosáhneme toho, že po stisku tlačítka I (interrupt) se vynuluje obsah datového registru, tedy čítač začne po uvolnění tlačítka čítat opět od nuly. Abychom však mohli náš program nazvat stopky, místo korekce dekadické (instrukce DAA) provést korekci šedesátkovou, neboť jak známo sekundy se měří v šedesátkové soustavě. Program 3 tedy upravíme na program 4: Program 4 ORG 1C00H 1C00 3E 19 MVI A,19 1C02 CD AB 00 CALL CLEAR ; vymazání zobrazovače 1C05 3E 00 L0: MVI A,0 ; vynulování registru 1C07 32 FA 1F STA 1FFAH 1C0A L1: MVI D,SEC ; časová konstanta 1C0C FB L2: EI ; přerušení povoleno 1C0D CD F2 00 CALL OUTDA 1C10 CD CALL DISP 1C13 15 DCR D 1C14 C2 0C 1C JNZ L2 1C17 3A FA 1F LDA 1FFAH 1C1A 3C INR A ; přičtení 1 1C1B 27 DAA ; dekad. korekce 1C1C FE 60 CPI 60H ; hlídání přetečení sekund 1C1E D2 05 1C JNC L0 ; vynulování 1C21 32 FA 1F STA 1FFAH ; uloží novou hodnotu 1C24 C3 0A 1C JMP L1 17

18 Nyní po stisku tlačítka I dojde k zastavení čítání čísel a k následnému vynulování. Po uvolnění tlačítka I se tedy naše stopky opět rozeběhnou. Pozorný čtenář si může nyní vytvořit stopky poněkud dokonalejší, které budou nejen zobrazovat sekundy ale i minuty. Program se potom trochu zpomalí a bude nutno zmenšit časovou konstantu SEC na adrese 1C0B. 3.4 Programování paralelního stykového obvodu MHB8255A Paralelní stykový obvod MHB8255A, který je osazen v PMI-80 na pozici IO10, resp. po rozšíření i na pozici IO9, je programovatelný obvod z rodiny periferních obvodů řady 825X. Patří sem např. obvody 8251, 8253 a další. Tyto obvody se svou složitostí řadí do kategorie jednoúčelových mikroprocesorů, neboť jejich vnitřní struktura je velice podobná struktuře mikroprocesorových obvodů. V základním materiálu (15) je uveden stručný popis obvodu MHB8255A, omezíme se zde spíše na aplikace. Programovatelný paralelní stykový obvod MHB8255A, jehož blokové schéma je na obr. 8, umožňuje vytvoření tří osmibitových lokálních datových sběrnic pomocí tří obousměrných bran (portů) PA, PB a PC, případně dvou řízených komunikačních sběrnic za pomoci tzv. přejímání (handshaking). V tomto případě se datové komunikace účastní brány PA a PB, brána PC je vyhrazena řídícím komunikačním signálům. Tím je umožněno provádět s obvodem MHB8255A celou škálu různých druhů komunikace mezi mikropočítačem a jeho periferními obvody pouze změnou v programu. Před zahájením komunikace pomocí MHB8255A je nutno obvod naprogramovat. Tomu slouží z programového hlediska tzv. řídicí instrukce, kterou zapíšeme do řídícího registru obvodu za stavu A 0 = A 1 = log. 1. Tento stav je zajištěn technickým vybavením. U PMI-80 jsou adresy řídicích registrů a jednotlivých bran podle tab. 3. Tvar řídicí instrukce je na obr. 9a, tvar instrukce bitového programování brány PC na obr. 9b. Obvod MHB8255A se může provozovat ve třech režimech (tzv. módech), z nichž nejjednodušší je režim 0. V tomto režimu lze naprogramovat kteroukoliv bránu jako vstupní nebo jako výstupní, bránu PC můžeme dokonce rozdělit na dvě poloviny a každé z nich přisoudit opět jiný směr komunikace. V režimu 1 se obvod rozdělí na dvě prakticky rovnocenné části, čímž vzniknou dvě vstupní nebo výstupní brány s podporou tzv. přejímání (angl. handshake - potřesení rukou ). Pojem přejímání si vysvětlíme na obr. 10. Předpokládejme, že máme k mikropočítači (μc) připojit periferní zařízení, např. tiskárnu, které je co do rychlosti zpracování vstupní informace pomalejší nežli mikropočítač. Pomalejší periferie tedy musí nutně zdržovat mikropočítač a tudíž ten musí čekat na svého pomalého spolupracovníka. Chce-li totiž vyslat informaci (znak) do periferie, vyšle o tomto budoucím záměru periferii zprávu signálem OBF (output buffer full - výstupní vyrovnávací paměť plná). Periferie potvrdí (nebo nepotvrdí) příjem této zprávy svým signálem ACK (acknowledge - potvrzení). Dokud mikropočítač toto potvrzení nedostane, nemůže vyslat novou informaci (nový znak) do periferie. A pokud by ji přesto vyslal, tato informace se nutně ztratí. 18

19 Obdobně si vysvětlíme připojení vstupní periferie k mikropočítači (obr. 11). V tomto případě musí periferie testovat stav signálu IBF (input buffer full - vstupní vyrovnávací paměť (ještě) plná, tedy nepřečtená). V případě, že si mikropočítač ještě nenašel čas a nepřečetl si poslední zapsanou informaci ve vstupní vyrovnávací paměti, bude signál IBF v aktivním stavu. V okamžiku přečtení se IBF nastaví do stavu neaktivního a tehdy může periferie zapsat novou informaci pomocí signálu STB (strobe - záznamový puls). Tyto dvě výše popsané funkce - vstup a výstup údajů - může obvod MHB8255A vykonávat v režimu 1 a říkáme jim přejímání. Na obr. 12 jsou vyobrazena možná zapojení obvodu v režimu 1. Oproti obr. 10 a 11 se zde objevují nové signály INTR (interrupt request - požadavek na přerušení). Tyto signály lze použít ve větších systémech jako zdrojové signály žádosti o přerušeni a o obsloužení stykového obvodu. Přerušení lze podobně jako u mikroprocesoru dovolit nebo zakázat nastavením klopného obvodu INTE. Žádost o přerušení je možno též číst ve stavovém slově stykového obvodu (obr. 13), což je vlastně stav brány PC. V režimu 2 pracuje brána PA jako řízená obousměrná sběrnice. Způsob řízení komunikace vznikl vlastně sloučením řízení vstupu a výstupu dat v režimu 1 dohromady (obr. 14a). Brána PB je v tomto režimu neaktivní. Signál požadavku na přerušeni INTRA v tomto případě slučuje obě logické podmínky pro generování signálů INTRA v režimu 1, to znamená, že podmínka pro jeho vznik je: INTRA = IBF * INTE2 * STB * RD + OBF * INTE1 * ACK * WR Slovně bychom řekli: požadavek na přerušení vznikne těsně po zápisu nové informace do vstupní vyrovnávací paměti nebo po vyslání obsahu výstupní vyrovnávací paměti do periferie. V obou případech musí být přerušení pro příslušný směr datové komunikace povoleno (t. j. INTE1 = PC6 pro výstup dat a INTE2 = PC4 pro vstup dat). Tvar stavového slova (resp, stav brány PC) při režimu 2 je na obr. 14b. Jako příklad využití obvodu MHB8255A v režimu 2 je na obr. 15 uvedeno blokové schéma připojení řadiče pružného disku. V tomto případě stykový obvod pracuje střídavě v režimu 2 (přenos dat) a v režimu 0 (řízení). Na závěr této kapitoly uvedeme jednoduchý příklad použití programovatelného stykového obvodu MHB8255A. Pro jednoduchost zvolíme základní režim 0 a jako periferní zařízení použijeme jednoduchý výstupní zesilovač a akustický měnič sluchátko. Toto zařízení (pokud tento jednoduchý obvod tak nazveme) umožní vytvářet zvukové vlny, přičemž kmitočet signálu lze programově měnit. Na obr. 16 je nakresleno zapojení tohoto jednoduchého demonstračního obvodu a příslušný program je v tab

20 4. Popis základního programového vybavení PMI-80 Pro celou řadu aplikací mikropočítače PMI-80 je výhodné znát jeho základní firemní programové vybavení. Pro tyto programy se vžil i u nás název Monitor, neboť monitoruje (tedy zde čte a zobrazuje) základní funkce mikropočítače, obsluhuje základní vstupní a výstupní zařízení. Většinou pak Monitory obsahují i další užitečné podprogramy využitelné v uživatelských programech. V každém případě není znalost firemního programového vybavení na škodu žádnému uživateli mikropočítače, neboť zde lze nalézt celou řadu zajímavých programových fint. Na obr. 17 je uveden vývojový diagram Monitoru PMI-80. Odtud je patrno, že většinu času tráví mikropočítač zobrazováním výstupního registru zobrazovače (VRZ) pomocí podprogramu OUTKE (adresa 0116H). Tento podprogram zabezpečuje nejen zobrazování obsahu VRZ nýbrž i osahávání tlačítek (pochopitelně kromě REset a Interrupt). Zabezpečuje rovněž správné převzetí hodnoty z tlačítka. Bez toho by na zobrazovači naskočilo např. několik stejných čísel vlivem mechanických zákmitů tlačítek. Vlastní funkci zobrazování a čtení tlačítek zabezpečuje podprogram DISP (adresa 0140H). Převod kódu tlačítek se provádí pomocí obsahu tabulky TABIN (adresa 01A3H). Z tabulky TABIN je patrné, že kód tlačítek je velmi jednoduchý a lehce identifikovatelný; kódy číselných tlačítek mají formát 1000XXXXB, kódy tlačítek funkčních mají formát 1001XXXXB. Po stisku tlačítka přejde vykonávání Monitoru do další části, kde se testuje kód stisknutého tlačítka a podle toho se program dále větví. Po stisku číselného tlačítka se na zobrazovači objeví varovný nápis Error, který uživateli napovídá, že nestiskl funkční tlačítko. V opačném případě je proveden skok podle funkčního tlačítka. Vedle obsluhy zobrazovače je tedy v Monitoru dále šest funkčních částí, z nichž má každá za úkol obsloužit jedno z šesti funkčních tlačítek. 20

21 Výpis monitoru PMI-80: ;PROCEDURA RESET (POCATECNI NASTAVENI) PMI E8A RESET:MVI A,8AH ;RIDICI SLOVO V/V PORTU: PA:VYSTUP PB:VSTUP PCH:VSTUP PCL:VYSTUP 0002 D3FB OUT PPI ;JE ZAPSANO DO RIDICIHO REG NOP ;UKLIDNENI DATOVE SBERNICE 0005 C32E00 JMP 002EH ;PRESKOK PROGRAMU PRO RST E 21D91F LXI H,1FD9H ;ADRESA VRCHOLU ZASOBNIKU DO HL:1FD E41F SHLD 1FE4H ;A JEJI ULOZENI V ZAS.MONIT. 1FE4:D91F 0034 C33D00 JMP 003DH ;PRESKOK PROG. OBSLUHY RST C3E61F RST7: JMP 1FE6H ;SKOK NA ADRESU OBSLUHY RST7, PRIPRAVENOU UZIVATELEM TOHOTO PRERUSENI D 21E701 LXI H,01E7H ;ADRESA ZPRAVY MONITORU DO HL:01E7: 1E F E (T.J. PMI -80 ) D91F LXI SP,1FD9H;ADRESA VRCHOLU ZASOBNIKU DO SP:1FD FC1F SHLD 1FFCH ;ADRESA ZPRAVY MONITORU DO 1FFC:E701 (UKAZATELE VYSTUPNIHO REGISTRU PRO ZOBRAZENI) 0046 CD1601 CALL OUTKE ;ZOBRAZENI A TEST KLAVESNICE:DISP: PMI -80 (MONITOR CEKA NA STLACENI LIBOVOLNE KLAVESY) EF1F LXI H,1FFCH ;ADRESA LEVE SEGMENTOVKY DO HL:1FEF 004C 22FC1F SHLD 1FFCH ;A JEJI ULOZENI DO UKAZATELE 1FFC:EF1F 004F 3E1D MVI A,1DH ;KOD? DO STRADACE A:1D 0051 CDAB00 CALL CLEAR ;PRIPRAVA ZOBRAZENI:? CD1601 CALL OUTKE ;ZOBRAZENI A TEST KLAVESNICE DISP:?... (MONITOR CEKA NA STLACENI FUNKCNI KLAVESY) B02 LXI H,020BH ;ADR.TAB.FUNKCNICH KLAVES: HL:020B (020E A) ;OBSAH TABULKY PAMETI: 020B: A02 9A7E02 944C03 938C03 005A 0606 MVI B,06 ;POCITADLO FUNKCNICH KLAVES B:06 005C BE CMP M ;SROVNANI KODU KLAVESY VE STRADACI S KODEM V TABULCE 005D 23 INX H ;ZVETSENI HL,NEOVLIVNI CY A Z HL:020C 020F B 005E CA6D00 JZ 006DH ;Z=1, SKOK PRI SROVNANI KODU STLACENE KLAVESY A KODU V TABULCE INX H ;Z=0, NESROVNANO,ZVETSENI ADR. HL:020D C INX H ;UKAZATELE V TABULCE NA HL:020E A 021D DCR B ;ZMENSENI POCITADLA FN KLAVES B: C25C00 JNZ 005CH ;B 0, DALSI FUNKCNI KLAVESA # # # # # = LXI H,0202H ;B=0, ADRESA ZPRAVY ERROR DO HL: A C34000 JMP 0040H ;SKOK NA VYPIS ZPRAVY MONITORU O TOM, ZE NEBYLA STISKNUTA FUNKCNI KLAVESA - VIZ VYSE D 4E MOV C,M ;NIZSI BYTE ADRESY Z TAB. DO C: A 7E 4C 8C 006E 23 INX H ;ADRESA VYSSIHO BYTU V TAB. HL:020D C 006F 66 MOV H,M ;VYSSI BYTE ADRESY Z TAB. DO H: MOV L,C ;NIZSI BYTE ADRESY Z C DO HL: A 027E 034C 038C 0071 E9 PCHL ;SKOK NA PROGRAM FUNKCE PC:0072-M 0229-G 025A-B 027E-R 034C-S 038C-L ;KONEC PROCEDURY RESET 21

22 ; ;FUNKCE: M-MEMORY (UMOZNUJE ZMENU ADRESY A PO STLACENI = ZMENU DAT,DALSI = ZVYSI ADRESU O +1 A LZE MENIT DATA) ; G-EXECUTE (UMOZNUJE ODSTARTOVAT UZIVATELSKY PROGRAM OD ZADANE ADRESY STLACENIM KLAVESY = ) ; B-BREAK STOP (NA VLOZENOU ADRESU Z KLAVESNICE UMISTI INSTRUKCI RST 1 CIMZ UMOZNI VSTUP DO MONITORU) ; R-REGISTRY (UMOZNUJE ZOBRAZENI OBSAHU DVOJIC REGISTRU NA DISPLEJI) ; S-SAVE (UMOZNUJE UCHOVANI OBSAHU PAMETI OD ZADANE ADRESY NA MAGNETOFON, NUTNO ZADAT PORAD. CISLO BLOKU) ; L-LOAD (PROCEDURA NAHRAVANI Z MAGNETOFONU NA ZVOLENOU ADRESU PAMETI. NAHRAVA SE BLOK URCENEHO CISLA) ; ;PROCEDURA FUNKCE M MONITORU E16 MVI A,16 ;KOD FUNKCE M DO STRADACE A: CDAB00 CALL CLEAR ;PRIPRAVA ZOBRAZENI:M CDD700 CALL MODAD ;ZOBRAZENI A MODIFIKACE ADRESY 007A 7E MOV A,M ;OBSAH MODIFIKOVANE ADRESY DO A:XY 007B 32FA1F STA 1FFA ;A JEHO ULOZENI DO VYST.REG. 1FFA:XY 007E 3E18 MVI A,18H ;KOD ZNAKU = DO STRADACE A: STAX B ;A JEHO ULOZENI DO VYST.REG. 1FF5: CDFB00 CALL MODDA ;ZOBRAZENI A MODIFIKACE DAT DISP:M ADR.=XY AF81F LHLD 1FF8H ;BEZNA VSTUPNI ADRESA Z 1FF8 HL:ADR AFA1F LDA 1FFA ;MODIFIKOVANA DATA Z 1FFA DA A:ND -(NOVA DATA) 008A 77 MOV M,A ;A JEJICH ULOZENI NA ADRESE ADR.:ND 008B 23 INX H ;ZVETSENI ADRESY BEZNYCH DAT HL:AD+1 008C 22F81F SHLD 1FF8H ;A JEJI ULOZENI V ZASOBNIKU 1FF8:AD+1 008F CDBB00 CALL OUTAD ;ZOBRAZI ADRESU A NOVA DATA DISP:M ADR.=ND 0092 C37A00 JMP 007A ;POKRACUJE MODIFIKACE DAT. VYSTUP Z PROCEDURY:STLACENIM FUNKCNI KLAVESY ;KONEC PROCEDURY FUNKCE M ; ;PROCEDURA OUTAD PMI-80, ROZKLADAJICI 2 BYTY ADRESY NA 4 HEXADECIMALNI ZNAKY DO VYSTUPNIHO REGISTRU DISPLEJE ;VSTUPY: BC-ADRESA LEVE ZE CTYR SEGMENTOVEK, NA NEZ BUDE ZOBRAZENA DVOUBYTOVA ADRESA VE TVARU CTYR ZNAKU ; HL=(1FF9,8)=FEDC: DVOUBYTOVA ADRESA, KTERA MA BYT ZOBRAZENA DISPLEJEM (VSTUPNI ARGUMENT) ;PRI POUZITI TECHTO VSTUPU SE PROCEDURA VOLA: CALL 00C1, STANDARDNI VOLANI: CALL 00BB (OUTAD) BB 01F11F OUTAD:LXI B,1FF1H ;ADRESA 3. SEGMENTOVKY ZLEVA BC:1FF1 00BE 2AF81F LHLD 1FF8H ;BEZNA (ZOBRAZOVANA) ADRESA HL:FEDC 00C1 7C MOV A,H ;VYSSI BYTE ADR. DO STRADACE A:FE 00C2 CDC600 CALL X+4 ;PRVNI PRUCHOD PODPROGRAMEM 00C5 7D MOV A,L ;PRI 2. PRUCHODU NIZSI BYTE ADRESY A:DC A:BD (PRO PP OUTDA) 00C6 D5 PUSH D ;UCHOVANI DE V ZASOBNIKU 00C7 57 MOV D,A ;STRADAC DO POMOCNEHO REG. D:FE( ) DC( ) BD( ) 00C8 0F RRC ;PRESUN LEVE TETRADY VPRAVO A:7F( ) 6E( ) DE( ) 00C9 0F RRC ;A NAOPAK CTYRNASOBNOU ROTACI A:BF( ) 37( ) 6F( ) 00CA 0F RRC ; A:DF( ) 9E( ) B7( ) 00CB 0F RRC ; A:EF( ) CD( ) D8( ) 00CC 6E0F ANI 0FH ;PONECHANI PRAVE TETRADY A:0F( ) 0D( ) 0B( ) 00CE 02 STAX B ;A ULOZENI DO VYST.REG.DISP. 1FF1:0F 1FF3:0D 1FF6:0B 22

23 00CF 03 INX B ;DALSI ADR.VYST.REG.DISPLEJE BC:1FF2 1FF4 1FF7 00D0 7A MOV A,D ;PUVODNI BYTE ADR. Z POM. REG. A:FE DC BD 00D1 E60F ANI 0F ;PONECHANI PRAVE TETRADY A:0E 0C 0D 00D3 02 STAX B ;ULOZENI DO VYST. REG. DISP. 1FF2:0E 1FF4:0C 1FF8:0D 00D4 03 INX B ;ADRESA DALSI SEGMENTOVKY BC:1FF3 1FF5 1FF8 00D5 D1 POP D ;NAVRAT PUVODNIHO OBSAHU DE 00D6 C9 RET ;NAVRAT Z 1. PRUCHODU NEBO PODPROGRAMU ;POUZE JEDENKRAT PROCHAZI TOUTO PROCEDUROU PODPROGRAM OUTDA (CALL 00F2), ROZKLADAJICI BYTE DAT NA DVA ZNAKY 00F2 01F61F OUTDA:LXI B,1FF6H ;ADRESA DVOU PRAVYCH SEGMENTU BC:1FF6 00F5 2AFA1F LHLD 1FFAH ;BYTE BEZNYCH VSTUPNICH DAT HL:XYBD (XY JE OBSAH ADRESY 1FFB, KTERY NEVYUZIVAME) 00F8 C3C500 JMP 00C5H ;SKOK DO PROCEDURY OUTAD, JEDEN PRUCHOD, UMOZNUJICI ROZDELENI BYTU NA 2 ZNAKY PRO ZOBRAZENI ; ; ;ANALYZA PROCEDURY MODAD PMI-80, KTERA ZOBRAZUJE 4 ZNAKY DVOUBYTOVE ADRESY A UMOZNUJE JEJICH ZMENU Z KLAVESNICE ;VOLA PROCEDURY OUTAD A OUTKE; PREDPOKLADANY OBSAH (1FF8,9)=DCFE JE MODIFIKOVAN NA D7 CDBB00 MODAD:CALL OUTAD ;ROZLOZI 2 BYTY ADR. NA 4 ZNAKY 00DA CD1601 CALL OUTKE ;ZOBR.ADR.A JEJI MOD.Z KLAVES. A: (STLACENO = ) 00DD C8 RZ ;Z=1,STLACENO =,POTVRZENI ADRESY - NORMALNI NAVRAT Z PROCEDURY Z=1,RZ 00DE D29701 JNC 0197H ;CY=0,STLACENA FUNKCNI KLAVESA - VYSTUP Z PROCEDURY PO CHYBE 00E1 2AF81F LHLD 1FF8H ;BEZNA VSTUPNI ADRESA DO HL:FEDC( ) PRIKLAD ADRESY ULOZENE NA 1FF8,9 00E4 E60F ANI 0FH ;PONECHANI PRAVE TETRADY KODU A: E6 29 DAD H ;POSUV OBSAHU HL VLEVO HL:FDBB( ) 00E7 29 DAD H ;O CTYRI BITY, UVOLNENI HL:FB78( ) 00E8 29 DAD H ;PRAVE TETRADY PRO NOVY HL:F6EO( ) 00E9 29 DAD H ;ZNAK Z KLAVESNICE HL:EDC0( )DC10 C EA 85 ADD L ;NOVY ZNAK ADR. DO PRAVE TETR. A: C EB 6F MOV L,A ;A JEHO PRESUN DO REGISTRU L: HL:EDC1 DC12 C EC 22F81F SHLD 1FF8H ;UCHOVANI MODIFIK. ADRESY 1FF8:C1ED 12DC 23C EF C3D700 JMP MODAD ;POKRACOVANI MODIF. ADRESY F001 LXI H,01F0H ;ADR.ZPRAVY, ERR-ADRES HL:01F0 019A C34000 JMP 0040H ;ZOBRAZENI ZPRAVY MONITOREM (BYLA-LI OMYLEM STLACENA FUNKCNI KLAVESA MISTO SESTNACTKOVE) ; ; ;ANALYZA PROCEDURY MODDA PMI-8O, KTERA ZOBRAZI BYTE DAT A UMOZNI JEHO ZMENU Z KLAVESNICE 00FB CDF200 MODDA:CALL OUTDA ;ROZLOZENI BYTU DAT NA 2 ZNAKY HL:(1FFA)=00BD - PREDPOKLADANY OBSAH BYTU DAT 00FE CD1601 CALL OUTKE ;ZOBR. DAT A MODIF. Z KLAVES. A:88 (STLACENA KLAV. 8 ) B9 (STLACENA KLAVESA 9 ) C8 RZ ;Z=1,STLACENO =,POTVRZENA DATA - NORMALNI NAVRAT Z PROCEDURY Z=l 0102 D29D01 JNC 019DH ;CY=0,STLACENA FUNKCNI KLAVESA - VYSTUP Z PROCEDURY PO CHYBE NOP ;PRAZDNE OPERACE (3x) HL:00BD= BD8= E60F ANI 0FH ;PONECHANI PRAVE TETRADY KODU A: A 29 DAD H ;POSUV HL VLEVO O TETRADU HL:017A= B0= B 29 DAD H ; HL:02F4= F60= C 29 DAD H ; HL:05E8= EC0= D 29 DAD H ; HL:08D8= B089= E 85 ADD L ;NOVY ZNAK DAT DO PRAVE TETR. A: D

24 010F 6F MOV L,A ;A JEHO PRESUN DO REGISTRU L HL:0BD8= B FA1F SHLD 1FFA ;UCHOVANI MODIFIKOVANYCH DAT 1FFA: D C3FB00 JMP MODDA ;POKRACOVANI MODIFIKACE DAT D 21F901 LXI H,01F9H ;ADRESA ZPRAVY. ERR= DATA HL:01F9 01A0 C34000 JMP 0D40H ;ZOBRAZENI ZPRAVY MONITOREM (PRI CHYBNEM STLACENI FUNKCNI KLAVESY MISTO SESTNACTKOVE) ; ; ;PROCEDURA ENTRY PMI-8O DF1F ENTRY:SHLD 1FDF ;UCHOVANI HL PRO ZOBRAZENI 1FDF:LLHH 000B E1 POP H ;HODNOTA PC PRI PRERUSENI DO HL:(PC) 000C 22E21F SHLD 1FE2H ;A JEJI UCHOVANI NA ADRESE: 1FE2:(PC) 000F LXI H,0000 ;VYNULOVANI HL UMOZNI UCHOVAT DAD SP ;HODNOTU SP PRED PRERUSENIM: HL:(SP) E41F SHLD 1FE4 ;A PRO ZOBRAZENI JI ULOZI NA 1FE4:(SP) DD1F LXI H,1FDDH ;ADRESA VRCHOLU ZASOB. MONIT. HL:1FDD 0019 F9 SPHL ;A JEJI ULOZENI DO SP:1FDD 001A C5 PUSH B ;UCHOVANI BC V TOMTO ZASOB. 1FDB:CCBB 001B D5 PUSH D ;UCHOVANI DE V TOMTO ZASOB. 1FD9:EEDD 001C F5 PUSH PSW ;UCHOVANI AF PRES ZASOBNIK 1FD7:FFAA 001D E1 POP H ;DO REGISTROVEHO PARU HL:AAFF 001E 22DF1F SHLD 1FDD ;A ODTUD NA ADRESY 1FDD:FFAA AEC1F LHLD 1FEC ;ADRESA BREAK STOPU PROGRAMU: HL:BRST AEE1F LDA 1FEE ;UCHOVANY KOD INSTRUKCE DO A:INSTRUKCE Z MISTA BREAK STOP MOV M,A ;JEJI VRACENI ZPET DO PROG. BRST:PUVODNI INSTRUKCE LXI H,0220H ;ADRESA ZPRAVY BR-STOP DO HL: B C34000 JMP 0040H ;SKOK DO MONITORU,VYPIS NA DISP: BR-STOP ;BRST ZNAMENA ADRESU PUVODNIHO PROGRAMU, NA NIZ BYLA ULOZENA INSTRUKCE CF (RST 1) FUNKCI BREAK STOP ;PUVODNI INSTRUKCE JE UCHOVAVANA V ZASOBNIKU MONITORU NA ADRESE 1FEE ;ADRESA TETO INSTRUKCE JE UCHOVAVANA NA ADRESE 1FEC ;JE-LI ZA ADRESOU UVEDENO VICE BYTU,JSOU ULOZENY NA NASLEDUJICICH VYSSICH ADRESACH ; ; ;PROCEDURA CLEAR PMI-80 00AB CLEAR:LXI D,0008 ;POCITADLO POZIC DISPLEJE DO DE: AE 2AFC1F LHLD 1FFCH ;ADRESA Z UKAZATELE VYST.REG HL:1FEF 00B1 19 DAD D ;VYPOCTENA ADR.SEGMENTOVKY, HL:1FF7 1FF6 1FF5 1FF4 1FF3 1FF2 1FF1 1FF0 00B MVI M,19H ;ZNAK MEZERY NA TUTO ADRESU, (HL): B4 1D DCR E ;ZMENSENI POCITADLA POZIC, DE: B5 C2AE00 JNZ x-7 ;E 0, DALSI SEGMENTOVKA 00B8 2B DCX H ;E=0, ADRESA SEGMENTOVKY V, HL: 1FEF 00B9 77 MOV M,A ;UCHOVANI OBSAHU STRADACE NA 1FEF: AA 00BA C9 RET ;NAVRAT Z PODPROGRAMU CLEAR ;PODPR0GRAM PRIPRAVI KODY MEZER NA ADRESY SEGMENTOVEK A OBSAH STRADACE NA ADRESU LEVE SEGMENTOVKY ;ZOBRAZENI TETO INFORMACE NA DISPLEJI MUSI ZAJISTIT PP DISP NEBO OUTKE ; 24

25 ; ;PROCEDURA OUTKE PMI CD4001 OUTKE:CALL DISP ;ZOBRAZENI A TEST KLAVESNICE 0119 D21601 JMC OUTKE ;CY=0, NEBYLA STLACENA KLAVESA 011C 0F RRC ;CY=1, OBNOVENI OBSAHU STRADACE A:KOD KLAVESY 011D 4F MOV C,A ;KOD KLAVESY DOCASNE DO REG. C:KOD KLAVESY 011E CD4001 CALL DISP ;TEST UVOLNENI KLAVESY 0121 DA1E01 JC x-3 ;CY=1,NENI JESTE UVOLNENA 0124 CD4001 CALL DISP ;ZOBRAZENI A NASTAVENI CY CY=1:PRIZNAK STLACENE KLAVESY JAKO JEDEN Z VYSTUPU PP OUTKE MOV A,C ;KOD KLAVESY VRACEN DO REG. A:KOD KLAVESY - DRUHY VYSTUP PP OUTKE 0128 FE90 CPI 90H ;BYLA STLACENA KLAVESA ANO:Z=1, PRIZNAK STLACENI =, JE DALSIM VYSTUPEM PP OUTKE 012A C9 RET ;NAVRAT Z PP OUTKE DO MONITORU NEBO PROGRAMU ;VYSTUPY PP OUTKE: A,C KOD STLACEME KLAVESY ; CY=1 PRIZNAK STLACENE KLAVESY ; Z=1 PRIZNAK STLACENI KLAVESY = ;POUZIVA REGISTRY: A,C, OSTATNI UCHOVAVA ; ; ;ANALYZA PODPROGRAMU DISP PMI-80 PRI JEHO PRVNIM VOLANI PO ZAPNUTI MIKROPOCITACE ;KODY KLAVES PRVE RADY TLACITEK 01A3: D 8C 89 8Ř 81 ;KODY KLAVES DRUHE RADY TLACITEK 01AC: A 9A 8F 8E ;KODY KLAVES TRETI (NEUPLNE) RADY TLACITEK 0183:FF FF FF FF 90 ;ZPRAVA MONITORU PO RESET ( PMI -80 ) 01E7:1E F E ;ADRESA ZASOBNIKOVE PAMEETI SP :1FD9 ;UCHOVANI TETO ADRESY V ZASOBNIKU MONITORU 1FE4:D91F ;ADRESA MONITORU UCHOVAVAJICI ADRESU ZPRAVY 1FFC:E701 SP :1FD7: NAVRATOVA ADRESA PROGRAMU VOLAJICIHO PROCEDURU DISP 0140 E5 DISP: PUSH H SP :1FD5: LLHH 0141 C5 PUSH B SP :1FD3: CCB D5 PUSH D SP :1FD1: EEDD LXI D,0000 ;VYNULOVANI PARU DE DE : MOV B,D ;VYNULOVANI REG. B B : A MOV A,D ;VYNULOVANI REG. A A : FE1F STA STATUS ;VYNULOVANI BUNKY STATUS 1FFE:00 014B 3E7F LOOP1:MVI A,7F ;BYTE ZHASNUTI SEGMENTOVKY A :7F 014D D3F8 OUT PA ;VYSTUP TOHOTO BYTU PA :7F 014F 00 NOP ;UKLIDNENI DATOVE SBERNICE B MOV A,E ;ADRESA SEGMENTOVKY DO A A : F CMA ;DOPLNEK ADRESY PRO DEKOREM A :FF FE FD FC F8 FA F9 F8 F D3FA OUT PC ;ADRESACE SEGMENTOVEK ZLEVA PC :FF FE FD FC FB FA F9 F8 F NOP ; DE : AFC1F LHLD UKBVF ;ADRESA ZPRAVY Z 1FFC DO HL HL :01E DAD D ;HL+DE DO HL HL :01E7 01E8 01E9 01EA 01EB 01EC 01ED 01EE 01EF E MOV C,M ;ZNAK ZPRAVY DO REG. C BC :001E F E 015A 21BE01 LXI H,TPREV ;ADRESA TAB. PREVODU DO HL HL :01BE 01BE 01BE 01BE 01BE 01BE 01BE 01BE 01BE 013D 09 DAD B ;HL+BC DO HL HL :01DC 01D BF 01D7 01DD 01C6 01BE 01DC 25

26 015E 7E MOV A,M ;ZNAK V KODU SEGMENTOVKY A :5D 0C F 3F D 015F D3F8 OUT PA ;ZOBRAZENI ZNAKU DISPLEJEM ZNAK: P M I NOP ; AFE1F LDA STATUS ;KOD STLACENE KLAVESY A :00 XY XY XY XY XY XY XY XY 0163 B7 ORA A ;TEST NESTLACENI KLAVESY A :00 XY XY XY XY XY XY XY XY 0166 C28801 JNZ NOKEY ;A 0, BYLA STLACENA KLAVESA E09 MVI C,09 ;POCET KLAVES V RADE DO C C :09 016B 219A01 LXI H,TABK-9;ADR.TAB.KLAVES -9 DO HL HL :019A 016E DBFA IN PCH ;VSTUP CASTI KODU KLAVESY PC:0KLM NOP ;K=0-STLACENA,K=1-NESTLACENA A :0KLM E670 ANI 070H ;MASKA VSTUPU KODU KLAVESY A :0KLM RLC ;ROTACE VLEVO PRES CY: CY=0 A :KLM RLC ; CY=K A :LM00000K 0175 D28201 JNC PRVA ;STLACENA KLAVESA PRVE RADY RLC ; CY=L A :M00000KL 0179 D28101 JNC DRUHA ;STLACENI KLAVESY DRUHE RADY 017C 07 RLC ; CY=M A :00000KLM 017D DA8801 JC NOKEY ;NESTLACENA ZADNA KLAVESA BC : DAD B ;BC+HL DO HL A=01A DRUHA:DAD B ;BC+HL DO HL A=01A A3=01AC PRVA: DAD B ;BC+HL DO HL A=01A A3=01AC AC=01B5 ; DE : DAD D ;DE+HL DO HL HL : 01A5 01B1 01BD E MOV A,M ;KOD KLAVESY V KODU SEGMENT. A : 88 8E FE1F STA STATUS ;UCHOVANI KODU V PAMETI 1FFE: 88 8E C NOKEY:INR E ;ADRESA DALSI SECM.A KLAV. DE : A E0A MVI A,0AH ;CISLO POSLEDNI +1 SEGMENT. A :0A 018B BB CMP E ;BYLA JIZ POSLEDNI SEGMENT. # # # # # # # # # = 018C C24601 JNZ LOOP1 ;NE -DALSI SEGM. A KLAVESY 018F 3AFE1F LDA STATUS ;KOD STLACENE KLAVESY DO A A : RLC ;NASTAVENI PRIZNAKU STLAC.KLAV. CY=1 A= D1 POP D ;NAVRAT PUVODNIHO OBSAHU DE SP :1FD3 DE:DDEE 0194 C1 POP B ; SP :1FD3 BC:BBCC 0195 E1 POP H ; SP :1FD7 HL:HHLL 0196 C9 RET ;NAVRAT Z PODPROGRAMU DISP SP :1FD9 ;TABULKA ZANKU V KODU SEGMENTOVEK: 01BE: C8: E F 0C 01D2: F 09 2B 0B 2C 01DC:5D 3F FF FF FF FF ;PROCEDURA BREAK POINT PMI-80 ;NA ZVOLENE ADRESE NAHRADI PUVODNI INSTRUKCI PRIKAZEM CF (RST 1), CIMZ DONUTI PROGRAM SKOCIT DO MONITORU ; ; ;POTOM LZE ANALYZOVAT OBSAHY REGISTRU A PAMETOVYCH BUNEK, ZDA SE VYVIJEJI V SOULADU S POZADAVKY PROGRAMU 025A 3E0B BREAK:MVI A,OSH ;ZNAK B - SYMBOL BREAK POINT A:0B 025C CDAB00 CALL CLEAR ;PRIPRAVA ZOBRAZENI: B... 26

27 025F 2AEC1F LHLD 1FECH ;ADRESA ZASTAVENI PRO BR.POINT HL:BRPO F81F SHLD 1FF8H ;A JEJI ULOZENI DO ZASOBNIKU 1FF8:POBR 0265 CDD700 CALL MODAD ;ZOBRAZENI A MODIF.TETO ADR. 1FF8:241D (PRIKLAD ADRESY PRO BREAK POINT: 1D24) AF81F LHLD 1FF8H ;PRESUN TETO ADRESY PRES REG. HL:1D24 026B 22EC1F SHLD 1FECH ;DO ZASOBNIKU MONITORU 1FEC:241D 026E 7E MOV A,M ;PUVODNI INSTRUKCE PROGRAMU A:XY 026F 32EF1F STA 1FEE ;JE UCHOVANA V ZASOB. MONIT. 1FEE:XY CF MVI M,CFH ;A NAHRAZENA INSTRUKCI RST1 1D24:CF -KTERA ZPUSOBI PRERUSENI PROGRAMU SKOKEM MA ADR AE21F LHLD 1FE2H ;ADRESA POCATKU PROGRAMU HL:1D B DCX H ;JE ZMENSENA O JEDNICKU HL:1CFF E21F SHLD 1FE2H ;A ULOZENA DO ZASOB. MONIT. 1FE2:FF1C 027B C32902 JMP EXEC ;SKOK DO PROCEDURY EXECUTE, KTERA UMOZNI ODSTARTOVANI PROGRAMU ; ; ;PROCEDURA EXECUTE PMI-80, ZAJISTUJE SPUSTENI UZIVATELSKEHO PROGRAMU OD ZADANE ADRESY ;PREDPOKLADEJME, ZE NAVAZUJE BEZPROSTREDME NA PROCEDURU BREAK POINT E20 EXEC: MVI A,20H ;PRIZNAK PROCEDURY G DO A:20 022B CDAB00 CALL CLEAR ;PRIPRAVA ZOBRAZENI, G E 2AE21F LHLD 1FE2H ;STARTOVACI ADRESA PROGRAMU HL:1CFF F81F SHLD 1FF8H ;JE ULOZENA DO ZASOB. MONIT. 1FF8:FF1C 0234 CDD700 CALL MODAD ;ZOBRAZENA A MODIFIKOVANO 1FF8:001D -NA ADRESU SKUTECNEHO ZACATKU PROGRAMU AF81F LHLD 1FF8H ;A PRES REGISTROVY PAR HL:1D00 023A 22E21F SHLD 1FE2H ;UCHOVANA V ZASOB. MONITORU 1FE2:001D 023D 3E06 MVI A,06H ;PRIPRAVA ZNAKU E (EXEC) A:06 023F D3F8 OUT 0F8H ;POSLAN PRES PORT PA NA DISP NOP ;UKLIDNENI SBERNICE E0F MVI A,0FH ;ADRESA LEVE SEGMENTOVKY PRES A:0F 0244 D3FA OUT 0FAH ;POSLANA DO PORTU PC A DISP. DISP:E NOP ;UKLIDNENI SBERNICE D91F LXI H,1FD9H ;OBNOVENI ADRESY V UKAZATELI HL:1FD9 024A F9 SPHL ;VRCHOLU ZASOBNIKU SP:1FD9 024B D1 POP D ;OBNOVA PUVODNICH OBSAHU DE:DDEE 024C C1 POP B ;REGISTRU (PRED PRERUSENIM AJ.)BC:BBCC 024D F1 POP PSW ; AF:AAFF 024E 2AE41F LHLD 1FE4H ;ADRESA VRCHOLU ZASOBNIKU PRES HL:1FD F9 SPHL ;DO UKAZATELE TETO ADRESY SP:1FD AE21F LHLD 1FE2H ;ADRESA ZACATKU PROGRAMU PRES HL:1D E5 PUSH H ;UCHOVANA V ZASOBNIKU JAKO 1FD7:001D -NAVRATOVA ADRESA Z PODPROGRAMU ADF1F LHLD 1FDFH ;OBNOVENI PUVODNIHO OBSAHU HL:HHLL 0259 C9 RET ;DO PC JE ULOZENA STARTOVACI PC:1D00 -ADRESA UZIVATELSKEHO PROGRAMU, CIMZ JE OOSTARTOVAN ; ; ;PROCEDURA ZOBRAZENI OBSAHU REGISTRU PMI-80 (ULOZENYCH V ZASOBNIKOVE PAMETI, NAPR. PROCEDUROU ENTRY) ;PREDPOKLADANE OBSAHY REGISTRU JSOU: AA,FF,BB,CC,DD,EE,HH,LL,SPSP (FF PRO PRIZNAKOVY REGISTR, AC NENI PLNE VYUZIT 027E 3E12 REG: MVI A,12H ;SYMBOL FUNKCE R DO STRADACE A : CDAB00 CALL CLEAR ;PRIPRAVA ZOBRAZENI.R

28 0283 CD1601 CALL OUTKE ;ZOBRAZENI A CTENI KLAVESY, OZNACUJICI DVOJICI REGISTRU 0286 D26700 JNC 0067H ;STLACENA FUNKCNI KLAVESA, SKOK NA ZOBRAZENI ZPRAVY, ERROR 0289 E60F ANI 0FH ;PONECHANI PRAVE TETRADY KODU A :0X - X=PRAVA POLOVINA KODU KLAVESY 028B LXI B,0006H ;NASTAVENI CITACE REGISTRU BC: E 212A01 LXI H,012AH ;ADRESA TABULKY KODU KLAVES HL:012A B DCX B ;ZMENSENI CITACE REGISTRU BC: DAD B ;VYPOCTENI ADRESY S KODEM 0X HL:012F 012E 012D 012C 012B 012A C INR C ;TEST NULOVOSTI CITACE REG. BC: D DCR C ; BC: CA4F00 JZ 004F ;KONEC PROCEDURY,SKOK DO MONITORU 0298 BE CMP M ;SROVNANI KODU KLAVESY S M=((HL)):0A 0B 0D C28E02 JNZ 028EH ;Z=0,NESROVNANI OBSAHU,SKOK 029C 212F01 LXI H,012FH ;Z=1,SROVNANI,ADRESA KODU KLAV.HL:012F 012F 012F 012F 012F 029F CDCD02 CALL 02CDH ;PODPROGRAM CTENI NAZVU REGISTRU CD 0600 MVI 8,00 ;VYNULOVANI REGISTRU B, POTOM BC: CF 09 DAD B ;VYPOCTENI ADRESY V TABULCE HL: D0 6E MOV L,M ;KONSTANTA Z TABULKY DO L : 0F 0C 0E D1 261F MVI H,1FH ;PRIMA KONSTANTA DO H, POTOM: HL:1F0F 1F0C 1F0E 1F14 1F13 02D3 C9 RET ; A2 5D MOV E,L ;KONSTANTA DO POMOC. REGISTRU E : 0F 0C 0E A LXI H,0134H ;ADRESA DALSI TABULKY HL: A6 CDCD02 CALL 02CDH ;PODPROGRAM CTENI NAZVU DRUHEHO REGISTRU Z PARU CD 0600 MVI B,00 ;VYNULOVANI REGISTRU B, POTOM BC: CF 09 DAD B ;VYPOCTENI ADRESY V TABULCE HL: E MOV L,M ;PRENOS ZNAKU Z TABULKY DO L : 0A 08 0D 1A 05 02D1 261F MVI H,1FH ;PRIMA KONSTANTA DO H, POTOM: HL:1F0A 1F0B 1F0D 1F1A 1F05 02D3 C9 RET ; A9 63 MOV H,E ;OBSAH POMOC. REG. DO H, POTOM HL:0F0A 0C0B 0E0D 141A AA 22F61F SHLD 1FF6H ;PRENOS DO VYST REG.DAT DISP 1FF6:0A0F 0B0C 0D0E 1A (REG.PARY V KOOU PMI-80) 02AD C5 PUSH B ;DOCASNE UCHOVANI BC V ZASOB.1F07: AE CDCA02 CALL 02CAH ;PODPROGRAM CTENI ADRESY ZASOBNIKU, UCHOVAVAJICI OBSAHY REGISTROVYCH PARU CA LXI H,0139H ;ADRESA DALSI TABULKY HL: CD 0600 MVI B,00 ;VYNULOVANI REGISTRU B,POTOM BC: CF 09 DAD B ;VYTVORENI ADRESY V TABULCE HL:013E 013D 013C 013B 013A 02D0 6E MOV L,M ;NIZSI BYTE ADRESY ZASOBNIKU L : DD DB D9 DF E4 02D1 261F MVI H,1FH ;VYSSI BYTE ADRESY ZASOBNIKU HL:1FDD 1FDB 1FD9 1FDF 1FE4 02D3 C9 RET ;NA NIZ JSOU UCHOVANY OBSAHY REGISTROVYCH PARU E5 PUSH H ;DOCASNE UCHOVANI HL V ZASOB 1FD5:DD1F DB1F D91F DF1F E41F E MOV C,M ;OBSAH PRAVEHO REGISTRU PARU C : FF CC EE LL SPL 02B3 23 INX H ;ZVETSENI ADRESY ZASOBNIKU HL:1FDE 1FDC 1FDA 1FE0 1FE5 28

29 02B4 66 MOV H,M ;OBSAH LEVEHO REGISTRU Z PARU H :AA BB DD HH SPH 02B5 69 MOV L,C ;PRENOS OBSAHU PRAVEHO REG. DO HL:AAFF BBCC DDEE HHLL SPSP F81F SHLD 1FF8H ;OBSAH REG.PARU DO ZAS.MONIT.1FF8:FFAA CCB8 EEDD LLHH SPSP 0289 CDD700 CALL MODAD ;ZOBR. REG.PARU,ZMENA OBSAHU 1FF8:F7A7 C7B7 E7D7 L7H7 77SP 02BC D1 POP D ;ADRESA ZASOB.PAMETI REGIST. DE:1FDD 1FDB 1FD9 1FDF 1FE4 02BD 7D MOV A,L ;OBSAH PRAVEHO REGISTRU DO A : F7 C7 E7 L BE 12 STAX D ;A JEHO UCHOVANI V ZASOBNIKU (DE): F7 C7 E7 L BF 13 INX D ;ZVETSENI ADRESY ZASOB.PAMETI DE:1FDE 1FDC 1FDA 1FE0 1EE5 02C0 7C MOV A,H ;OBSAH LEVEHO REGISTRU DO A :A7 B7 D7 H7 SP 02C1 12 STAX D ;A JEHO UCHOVANI V ZASOBNIKU (DE):A7 B7 D7 H7 SP 02C2 C1 POP B ;NAVRAT BC ZE ZASOBNIKU BC: C3 0D DCR C ;ZMENSENI CITACE REGISTRU BC: C4 C29C02 JNZ 029CH ;SKOK NA ZOBR. DALSIHO REG. PARU 02C7 C34F00 JMP 004FH ;KONEC PROCEDURY, NAVRAT DO MONITORU ; ; ;PROCEDURA TIN, PRIKLAD CTENI ZAVADECIHO TONU (ASI 21,6 MS) A BYTU CISLA BLOKU ZAZNAMU NA MGP TIN: MVI B,08 ;POCITADLO BITU CTENEHO BYTU B : MVI D,00 ;VYNULOVANI CITACE DELKY BITU D :00 (CITAC DELKY TRVANI ZAZNAMU JEDNOHO BITU NA MGP) 0304 CD4203 CTE1: CALL INBIT ;CTENI SIGNALU Z MAGNETOFONU CY= DA0403 JC x-3 ;CY=1,CTENA 1 (NAHODNE), NAVRAT # 030A CD4203 CALL INBIT ;CY=0,CTENA 0 NEBO MEZERA CY=0 030D DA0403 JC x-9 ;CY=1,NAHODNE, NAVRAT DO CYKLU # 0310 CD4203 CTE0: CALL INBIT ;CY=0,CTENA MEZERA CY= * DRUHY A DALSI PRUCHOD PROCEDUROU 0313 D21003 JNC x-3 ;CY=0,MEZERA,CTE DAL = = # * * 0316 CD4203 CALL INBIT ;CY=1,NAHODNA NEBO ZAVAD. TON CY: 1(ZAV.TON DELKY 21,6MS)* (START BIT) * ( 1 VYZN.BIT) 0319 D21003 JNC x-9 ;CY=0,MEZERA,CTE DALE 8 #(256X80=20,4MS +1,2MS)* 24H VZORKU * 24H VZORKU 031C 15 CTE1: DCR D ;CY=1,ZAVADECI TON,-l DO D : FF FE FF...F2*F1 F0...CF CE*CD CC...AB AA 031D CD4203 CALL INBIT ;ZAV.TON+START+VYZN. 1 BITY CY: * * DA1C03 JC x-4 ;CY=1,ZAV.TON+START BIT = = = = = = *= = = # *= = = # 0323 CD4203 CALL INBIT ;CY=0,DROP OUT, CTE DALE CY: ZAV.TON: VZORKU * 0 * DA1C03 JC x-10 ;CY=1,CTI DAL 1 * # * # CTE0: INR 9 ;CY=0,VYZN. 0 +ST0P BIT,+1 DO D : FF...F3*F2 F1...D0 CF* AB 032A CD4203 CALL INBIT ;CTENI VYZN. 0 + STOP BITU CY: * * D D22903 JNC K-4 ;CY=0, CTE DALE 0 STOP BIT(0),24H VZORKU * 0 VYZN. *CD CC...AC AB 0330 CD4203 CALL INBIT ;CY=1,NAHODNE, POKRACUJ * * STOP BIT (0) 0333 D22903 JNC x-10 ;CY=0,CTE DALE A MOV A,D ;CY=1,OBSAH D SE MUZE MENIT A :CD DB DB RAL ;NASTAVENI CY CTENYM BITEM CY,A:1,9A 1,B6 1,B6 0,48 0,48 0,48 0,48 0, MOV A,C ;NACTENI PREDCHOZIHO OBSAHU A : C0 E C 0E F RAR ;CY=CTENY BIT ZPET DO STRANCE A : 80 C0 E C 0E A 4F MOV C,A ;A JEHO UCHOVANI V REGISTRU C : 80 C0 E C 0E B 1600 MVI D,00 ;NASTAVENI CITACE DELKY BITU D :00 033D 05 DCR B ;ZMENSENI POCITADLA BITU B : E C21C03 JNZ 031C ;B 0, # # # # # # # = 0341 C9 RET ;KONEC CTENI BYTU,NAVRAT,NACTENY BYTE JE ULOZEN V REGISTRU C: RET,C:07 29

30 ; ; ;PROCEDURA TIN PRO 1. BYTE DAT (36H) ZA CISLEM BLOKU ZAZNAMU (07) NA MGP TIN: MVI B,08 ;POCITADLO BITU V BYTU B : MVI D,00 ;CITAC DELKY ZAZNAMU BITU 0304 CD4203 CTE1: CALL INBIT ;CTE 9.START BIT CISLA BLOKU CY: DA0403 JC x-3 ;CY=1,START BIT A VYZN. 1 = # = # 030A CD4203 CALL INBIT ;CY=0,DR0UP OUT NEBO 0 VYZN. CY: D DA0403 JC x-9 ;CY=1,CTENA 1,SKOK DO CYKLU = # 0310 CD4203 CTE0: CALL INBIT ;CTE VYZN. 0 NEBO STOP PIT CY: D21003 JMC x-3 ;CY=0,CTE 0,SKOK DO CYKLU # 0316 CD4203 CALL INBIT ;CY=1,NAHODNA NEBO START BIT CY: D21003 JNC x-9 ;CY=0,CTE 0,SKOK DO CYKLU #(START BIT) *( 1 VYZN.BIT) * (STOP BIT) 031C 15 CTE1: DCR D ;CY=1,START BIT l.bitu l.bytu D : FF FE...DD DC*DB DA...B8 B7* 031D CD4203 CALL INBIT ;CTE START BIT A 1 VYZN.BIT CY: /1* * 0320 DA1C03 JC x-4 ;CY=1,CTE 1,SKOK DO CYKLU = =...= # *= =...= # * 0323 CD4203 CALL INBIT ;CY=0,DROP OUT NEBO VYZN.O CY: 0 * 0 * 0326 DA1C03 JC x-10 ;CY=1,CTE 1,SKOK DO CYKLU # * # * CTE0: INR D ;CY=0,ZVETSENI CITACE DELKY D : *00 FF...DE DD* *B8 B9...DA DB 032A CD4203 CALL INBIT ;CTENI VYZN 0 A STOP BITU CY: * * * D D22903 JNC x-4 ;CY=0,CTE 0,SK0K DO CYKLU (STOP BIT + 0 VYZN.BIT) * 0330 CD4203 CALL INBIT ;CY=1,NAHODNA NEBO DALSI START BIT 0333 D22903 JNC x-10 ;CY=0,CTE 0,SK0K DO CYKLU A MOV A,D ;CY=1,OBSAH D SE MUZE t^nit A : 24 DB DB 24 DB 0B RAL ;NASTAVI CY CTENOU 1 CI 0 CY,A:0,48 1.B6 1,B6 0,48 1,B6 1,B6 0,48 0, MOV A,C ;NACTENI PREDCHOZIHO OBSAHU A : C0 60 B0 DB 6C F RAR ;BIT Z CY ZPET DO STRADACE A : C0 60 B0 D8 6C A 4F MOV C,A ;UCHOVANI NOVEHO OBSAHU A V C : C0 60 B0 D8 6C B 1600 MVI D,00 ;NASTAVENI CITACE DELKY BITU D : D 05 DCR B ;ZMENSENI POCITADLA BITU B : E C21C03 JNZ 031CH ;B 0,CTI DALSI BIT ZAZNAMU # # # # # # # = 0341 C9 RET ;KONEC CTENI BYTU,NAVRAT DO PROCEDURY LOAD,NACTENY BYTE JE V REGISTRU C: RET,C:36 ;KONEC PROCEDURY TIN ;CITAC DELKY BITU V D MUZE NABYVAT HODNOTY KOLEM (00-24H)=DC, JE-LI CTENA 1, T.J. HODNOT. DO, DC, DB ;A HODNOT KOLEM (00+24H)=24 PRI CTENI 0, T.J. 23, 24, 25. JE TO DANO MOZMYM KOLISANIM DELKY ZAZNAMU BITU NA MGP ; ; ;FUNKCE S SAVE PMI-80 UMOZNUJE UCHOVAT NA MAGNETOFONU AZ 256 BYTU DAT, ZAZNAM FAZOVOU MODULACI 034C 3E05 SAVE: MVI A,05H ;ZKRATKA PROCEDURY S DO A :05 034E CDAB00 CALL CLEAR ;PRIPRAVA ZOBRAZENI = S CDD700 CALL MODAD ;ZOBRAZENI A URCENI ADRESY 1FF8:1C00 OD NIZ SE BUOOU DATA ZAZNAMENAVAT 0354 CDFB00 CALL MODDA ;URCENI CISLA BLOKU ZAZNAMU 1FFA:07 - TOTO CISLO IDENTIFIKUJE ZAZNAM NA MAGNETOFONU LXI H,0095H ;ADRESA ZPRAVY MG RUN DO HL: A 22FC1F SHLD 1FFCH ;A JEJI ULOZENI DO ZASOBNIKU 035D CD1601 CALL OUTKE ;ZOBR. MG RUN,CEKA NA POTVRZENI ZPRAVY LIBOVOLNOU KLAVESOU (MIMO.RE+I) E23 MVI A,23H ;ZNAK O V KOOU SEGMENTOVEK A :23 30

31 0362 D3F8 OUT PA ;A JEHO VYSLANI DO PORTU A PA: E0F MVI A,0FH ;ADRESA LEVE SEGMENTOVKY 00 A :0F 0366 D3FA OUT PC ;KOD POZICE LEVE SEGMENTOVKY PC:0F F0 MVI D,0F0H ;DELKA UVODNIHO TONU ZAZNAMU D :F0 =240 PULPERIOD X 90 MKSEC = 21,60 MSEC 036A 3EC7 MVI A,0C7H ;MASKA ZAVADECIHO TONU A :C7 036C CDF002 CALL 02F0H ;ZAZNAM ZAVADECIHO TONU 036F 3AFA1F LDA 1FFAH ;CISLO BLOKU ZAZNAMJ A : F MOV C,A ;JE ULOZENO DO VYSTUP.REG C : CDD402 CALL TOUT ;A ZAZNAMENANO NA MAGNETOFON PRIKLAD ROTACE BYTU 07 VE STRADACI A CY, OUT PA E10 MVI A,10H ;SYMBOL ZAZNAMU T (TAPE) DO A :10 BIT CDAB00 CALL CLEAR ;PRIPRAVA ZOBRAZENI,T C7 037B 2AF81F LHLD 1FF8H ;ADRESA 1.BYTU DAT DO HL:1C C7 037E 4E MOV C,M ;BYTE DAT DO VYST.REGISTRU C :BD 2. C C7 037F CDD402 CALL TOUT ;A JEHO ZAZNAM NA MAGNETOFON 3. E C INR L ;ADRESA NASLEDUJICIHO BYTU DAT HL:1C C27E03 JNZ 037E ;CYKL AZ DO VYNULOVANI REG. L E00 LXI H,009EH ;ADRESA ZPRAVY MG STOP HL:009E 6. 1C C34300 JMP 0043H ;SKOK DO MONITORU S VYPISEM ZPRAVY MG STOP 7. 0E D TOUT: MVI B.09H ;POCITADLO BITU, 8+1 B :09 (BIT NAVIC JE ODDELOVACI PRO SYNCHRONIZACI CTENI V TIN) 02D6 3EC7 MVI A,0C7H ;MASKA START BITU ZAZNAMU A :C7 C7 C7 C7 C7 C7 C7 C7 C7 02D8 CDEE02 CALL 02EE ;ZAZNAM START BITU LOG: DB 79 MOV A,C ; VYST. REGISTR PREPSAN DO A : C0 E C 0E 02DC 1F RAR ;POSUV VPRAVO PRES CY: A,CY:03,1 81,1 C0,1 E0,0 70,0 38,0 1C,0 0E,0 07,0 02DD 4F MOV C,A ;VYSLEDEK ZPET DO VYST.REG. C :03 61 CO EO C 0E 07 02DE 3E8F MVI A,8FH ;MASKA VYZNAMOVEHO BITU A :8F 8F 8F 8F 8F 8F 8F 8F 8F 02E0 1F RAR ;ROTACE VPRAVO PRES CY, A :C7 C7 C E1 CDEE02 CALL 02EE ;ZAZNAM VYZNAMOVEHO BITU LOG: e E4 3E47 MVI A,47H ;MASKA STOP BITU A : E6 CDEE02 CALL 02EE ;ZAZNAM STOP BITU LOG: E9 05 DCR B ;ZMENSENI POCIT.BITU PRENOSU B : EA C2D602 JNZ 02D6H ;B 0,SK0K NA PRENOS DALSIHO BITU # # # # # # # # = 02ED C9 RET ;B=0,ZAPSAN BYTE+ODDELOVACI BIT _ O (VYZN.BITY) 02EE 1620 MVI D,20H ;POCET PULPERIOD ZAZNAM TONU D :20 (PRIKLAD ZAZNAMU START BITU = LOG 1) 02F0 03F8 OUT PA ;VYSTUP DAT DO PORTU A PA:C7 87 C7 87 C7 87 C C F2 1E04 MVI E,04H ;DOBA PULPERIODY TONU (ASI 90 MIKROSEKUND) 02F4 10 DCR E ;CYKL VYTVARENI TONU F5 C2F402 JNZ 02F4 ;(PA7 X PA6) VYTVAREJI VYSTUP F8 EE40 XRI 40H ;DOPLNEK BITU A6 STRADACE A :87 C7 87 C7 87 C7 87 C C7 02FA 15 DCR D ;ZMENSENI POCIT.PERIOD TONU D :1F 1E 10 1C 1B 1A FB C2F002 JNZ 02F0H ;SKOK NA ZAZNAM OPACNE PULPERIODY 02FE C9 RET ;D=0,KONEC ZAZNAMU BITU (20H=32D PULPERIOO: X 90MKSEC = 2,88MSEC -TRVANI ZAZMAMU BITU) EE 1620 MVI D,20H ;POCET PULPERIOD ZAZNAM.TONU D :20 (PRIKLAD ZAZNAMU STOP BITU = LOG 0) 02F0 D3F8 OUT PA ;VYSTUP DAT DO PORTU A PA:

32 02F2 1E04 MVI E,04H ;DOBA PULPERIODY TONU 02F4 1D DCR E ;CYKL VYTVARENI TONU F5 C2F402 JNZ 02F4H ;VYSTUP (PA7 X PA6) 02F8 EE40 XRI 40H ;DOPLNEK BITU A6 STRADACE A : FA 15 DCR D ;ZMENSENI POCIT>PERIOD TONU D :1F 1E 1D 1C 1B 1A FB C2F002 JNZ 02F0H ;SKOK NA ZAZNAM OPACNE PULPERIODY 02FE C9 RET ;D=0, KONEC ZAZNAMU BITU ;KONEC PROCEDURY FUNKCE SAVE ; ; ;FUNKCE L LOAD PMI-80 UMOZNUJE CTENI AZ 256 BYTU DAT Z MAGNETOFONU, ZAZNAMENANYCH FAZOVOU MODULACI ;ZAVADECI TON TRVA ASI 21,6 MSEC, START BIT - VYZNAMOVY BIT - STOP BIT ASI 2,88 MSEC KAZDY 038C 3E14 LOAD: MVI A,14H ;ZKRATKA PROCEDURY L DO A :14 038E CDAB00 CALL CLEAR ;PRIPRAVA ZOBRAZENI L CDD700 CALL MODAD ;URCENI ADRESY UKLADANI DAT 1FF8:001C -PRIKLAD ZVOLENE ADRESY: 1C CDFB00 CALL MODDA ;URCENI CISLA CLCKU ZA7NAMU 1FFA:07 -PRIKLAD CISLA STEJNEHO JAKO PRI SAVE LXI H,0095H ;ADRESA ZPRAVY MC-RUN HL: A 22FC1F SHLD 1FFCH ;JE UCHOVANA VE VYST REGIST. 1FFC: D CD1601 CALL OUTKE ;ZOBRAZENI, PROGRAM CEKA NA POTVRZENI ZPRAVY MC-RUN STLACENIM LIBOVOLNE KLAVESY (MIMO=RE+I) 03A0 2AF81F LHLD 1FF8H ;ADRESA UKLADANI DAT DO HL:1C00 03A3 3E07 MVI A,07H ;SYMBOL T V KODU SEGMENTOVEK A :07 03A5 D3F8 OUT PA ;JE VYSLAN DO PORTU A PA:07 03A7 3E0F MVI A,0FH ;KOD POZICE LEVE SEGMENTOVKY A :0F 03A9 D3FA OUT PC ;JE VYSLAN DO PORTU C PC:0F DISP T... 03AB 1600 MVI D,A0H ;KONSTATNTA MINIMALNI MEZERY D :A0 MEZI BLOKY DAT NEBO PRED 1. BLOKEM DAT 03AD CD4203 CALL INBIT ;CTENI ZACATKU MGP NEBO MEZERY MEZI BLOKY ZAZNAMU NA MGP 03B0 DAAB03 JC x-5 ;CY=1,PRI CTENI BLOKU S NIZSIM CISLEM NEZ OCEKAVANY BLOK -SKOK PRI CTENI LOG 1 03B3 15 DCR D ;CY=0,CTENA LOG 0 BLOKU ZAZNAMU S NIZSIM CISLEM, NEBO CTENA MEZERA MEZI BLOKY (ZACATEK MGP) 0384 C2AD03 JNZ x-7 ;D 0,CTE DALE MEZERU,AZ DO 0387 CD0003 CALL TIN ;D=0,POKRACUJE CTENI MEZERY, ZAVADECIHO TONU BLOKU DAT A BYTU S CISLEM TOHOTO BLOKU 03BA 3AFA1F LDA 1FFAH ;CISLO BLOKU ZAZNAMENANYCH DAT A :07 038D B9 CMP C ;SROVNANO S PRECTENYM CISLEM A :? 03BE C2CC03 JN2 03CCH ;Z=0, JE RUZNE, PODEJ ZPRAVU 03C1 CD0003 CALL TIN ;Z=1, JE STEJNE, CTE SE ZAZNAM 03C4 71 MOV M,C ;A ZAPISE BYTE DO PAMETI 03C5 2C INR L ;ZVETSI SE ADRESA PAMETI 03C6 C2C103 JNZ x-5 ;L 00, SKOK NA DALSI CTENI DAT 03C9 C38603 JMP 0386H ;L=00, KONEC CTENI, SKOK NA VYPIS ZPRAVY MG-STOP, KONEC PROCEDURY CC DAE703 JC 03E7H ;CY=1, CISLO OCEK.BLOKU (A)<(C) CISLO CTENEHO BLOKU 03CF 3E0F MVI A,OFH ;CY=0, ZNAK F DO STRADACE A :0F 03D1 CDABOO CALL CLEAR ;PRIPRAVA ZOBRAZENI=F... 03D4 79 MOV A,C ;CISLO CTENEHO BLOKU DO A : D5 01F61F LXI B,1FF6H ;ADRESA SEGMENTOVKY BC:1FF6 03D8 CDC600 CALL 00C6 ;PRIPRAVA ZOBRAZENI CISLA BLOKU MGP V POLI DAT DISPLEJE 03DB 21EF1F LXI H,1FEFH ;ADRESA LEVE SEGMENTOVKY HL:1FEF 32

33 03DE 22FC1F SHLD 1FFCH ;UCHOVANA VE VYST.REG.ZASOB. 1FFC:EF1F 03E1 CD1601 CALL OUTKE ;ZOBRAZENI,ODMITNUTI BLOKU:F 1C00: STLACENIM LIBOVOLNE KLAVESY 03E4 C3A003 JMP 03A0H ;POKRACUJE CTENI DAT 03E7 21ED03 LXI H,03EDH ;ADRESA ZPRAVY: MG-SPAT DO HL:03ED 03EA C39A03 JMP 039AH ;SKOK NA ZOBRAZENI ZPRAVY, VRACENI PASKY NA ZACATEK, NOVE CTENI PO STLACENI KLAVESY (MIMO RE+I) ;PODPROGRAM CTENI JEDNOHO BITU Z MAGNETOFONU E02 INBIT:MVI E,02 ;CITAC PRO VZORKOVANI SIGNALU E :02 01 START BIT: 2880/80 =36D VZORKU D DCR E ;Z MAGNETOFONU KAZDYCH ASI E :01 00 VYZN BIT: - - =24H VZORKU 0345 C24403 JNZ x-1 ;E 0, 80 MIKROSEKUND # = STOP BII: - - =2,88 MSEC 0348 DBFA IN PC ;E=0, CTENI VZORKU SIGNALU A :X , CY=Y 034A 17 RAL ;POSUN VLEVO PRES CY BIT CY: X,A : Y X=1, START BIT NEBO 1 VYZNAMOVY BIT 034B C9 RET ;NAVRAT DO VOLAJICIHO PROGRAMU X=0, 0 VYZNAMOVY BIT NEBO STOP BIT ;PRUMERNA DOBA VZORKOVANI JE DANA CASEM PROVEDENI PP INBIT (55 MKSEC) A VOLANIM TOHOTO PP SE SKOKY (25 MKSEC) ; ; ; 33

34 0095 1E TMGRN: DB 1E ; E DB 16 ;M DB 20 ;G DB 19 ;SP DB 19 ;SP 009A 12 DB 12 ;R 009B 15 DB 15 ;U 009C 1B DB 1B ;N 009D 1E DB 1E ; 009E 1E TMGSP: DB 1E ; 009F 16 DB 16 ;M 00A0 20 DB 20 ;G 00A1 19 DB 19 ;SP 00A2 05 DB 05 ;S(5) 00A3 10 DB 10 ;T 00A4 11 DB 11 ;o 00A5 13 DB 13 ;P 00A6 IE DB 1E ; 00A7 FF DB FF 00A0 FF DB FF 00A9 FF DB FF 00AA FF DB FF 012B 08 TSFK: DB 08 ;SP 012C 09 DB 09 ;HL 012D 0D DB 0D ;DE 012E 0B DB 0B ;BC 012F 0A DB 0A ;AF (PSW) DB 13 ;P DB 14 ;L E DB 0E ;E C DB 0C ;C F DB 0F ;F DB 05 ;S A DB 1A ;H D DB 0D ;D B DB 0B ;B A DB 0A ;A 013A E4 TAR: DB E4 ;DOLNI BYTE ADRESY PRO SP 013B DF DB DF ;HL 013C D9 DB D9 ;DE 013D DB DB DB ;BC 013E DD DB DD ;AF 013F FF DB FF 34

35 01A3 80 TABIN: DB 0 ;spodni rada 01A4 84 DB 4 01A5 88 DB 8 01A6 91 DB EX 01A7 8D D8 D 01A8 8C DB C 01A9 89 DB 9 01AA 85 DB 5 01AB 81 DB 1 01AC 82 DB 2 ; stredni rada 01AD 86 DB 6 01AE 8A DB A 01AF 9A DB R 01B0 8F DB F 01B1 8E DB E 01B2 8B DB B 01B3 87 DB 7 01B4 83 DB 3 01B5 FF DB FFH ; horni rada 01B6 94 DB S 01B7 93 DB L 01B8 FF DB FFH 01B9 97 DB BR 01BA 92 DB M 01BB FF DB FFH 01BC FF DB FFH 01BD 90 DB = TABULKA PREVODU NA SEDMISEGMENTOVY ZOBRAZOVAC 01BE ZNAKY E A B C D E F 01CE F 0C F 09 2B 0B 2C 5D 3F ZNAKY t o r P L u M J = H n h? - 01DE ZNAKY B 11 FF FF FF FF FF G J, Y TABULKA ZAKLADNIHO OHLASENI 01E7 PMI -80 TABULKA CHYBOVYCH HLASENI 01F0 Err=AdrES Err= data Error 35

36 020B 92 TABFC: DB 92H ;tlačítko M 020C DW MEMD 020E 91 DB 91H ;tlačítko EX 020F DW EXEC DB 97H ;tlačítko BR A 02 DW BREAK A DB 9AH ;tlačítko R E 02 DW REG DB 94H ;tlačítko S C 03 DW SAVE 021A 93 DB 93H ;tlačítko L 021B 8C 03 DW LOAD 021D FF FF FF DB FFH,FFH,FFH TABULKA HLASENI BREAK 0220 Br-StoP 5. Aplikace s mikropočítačem PMI-80 Tato kapitola má být hlavním těžištěm publikace. Obsahuje celou řadu návodů na vylepšení mikropočítače z hlediska obsluhy, přináší a shrnuje poznatky z jeho provozu, ukazuje možnosti jeho použití všude tam, kde to struktura mikropočítače dovoluje. Tato kapitola se má stát vodítkem pro kroužky mládeže, které hlavně budou se školním mikropočítačem PMI-80 pracovat. Má ukázat na možnosti zařízení, které sice není schopno přímo zpracovávat matematické nebo grafické úlohy, pomůže však nejen pochopit strukturu mikroelektronických prvků a zařízení, ale i ukázat, co všechno je možno chtít po tak relativně jednoduchém mikropočítači, jakým je PMI Dálnopis jako vstupní a výstupní zařízení Jak jsme již naznačili v kapitole 3.4 je možné pomocí stykového obvodu MHB8255A vytvořit sériové rozhraní pro připojení pětistopého dálnopisu. Tyto dálnopisy se postupně vyřazují z činnosti a pro účely výpisů mohou ještě docela dobře posloužit. Z elektrického hlediska je dálnopis tvořen na vstupu cívkou (elektromagnet) a na výstupu kontaktem. Nyní si v krátkosti vysvětlíme základní principy dálnopisné komunikace (viz např. (6), (7)). Dálnopisný provoz pracuje za pomoci sériového přenosu dat, u starších dálnopisů pomocí proudové smyčky (u pětistopého dálnopisu asi 40 ma). Uzavření smyčky značí stav logické jedničky (H), rozpojený obvod značí stav logické nuly (L). Na obr. 18 je uveden příklad dálnopisného znaku (jde o písmeno W, resp. číslo 2). Z obrázku je tedy patrné, že na počátku znaku se vyšle po dobu trvání jedné časové jednotky stav log. 0. Tomuto stavu říkáme start-bit. Potom následuje v našem případě pět informačních (tedy datových) bitů postupně počínaje bitem D0 až D4. 36

37 Na konec je vysílán závěrný prvek, kterému říkáme stop-bit. Doba trvání tohoto bitu je u asynchronního provozu nejméně jednu časovou jednotku. Tím je dosaženo srovnání a ustálení signálů ve vysílači a přijímači. Tomuto způsobu komunikace se též někdy říká start-stopní. Pro pětistopé dálnopisy je používána časová jednotka v rozmezí 10 až 20 ms. To odpovídá rychlosti komunikace 50 až 100 bitů za sekundu (jednotkou je 1 Baud = 1 Bd). Nejčastěji se používá rychlost 50 Bd, někdy je možno dálnopis nastavit i na rychlost vyšší. Jak poznáme, jde o rychlost dosti malou, neklesejme však na mysli, vzhledem k ceně za zařízení se s tímto faktem můžeme klidně spokojit. Pro komunikaci mezi PMI-80 a dálnopisem budeme potřebovat rozhraní, které nám převede napěťové úrovně logiky TTL, se kterými pracuje mikropočítač, na proudovou smyčku. Příkladem jednoduché realizace takového rozhraní může být např. obvod z obr. 19, který umožňuje obousměrnou komunikaci. Potřebujeme k tomu 2 kusy malých modelářských relátek (ta tvoří galvanický oddělovač obvodů mikropočítače a dálnopisu) a 1 integrovaný obvod MH7405 (6 invertorů s otevřeným kolektorem). Vstupní obvod mikropočítače potom tvoří kontakt relé Re 1 a jeden invertor. Vzniklý datový signál v úrovni TTL (zde označený D IN ) přivedeme na špičku 41K2, tj. D7. Výstupní obvod je poněkud výkonovější a tvoří jej zesilovače pomocí hradel a relé Re2. Z důvodů ochrany výstupních tranzistorů integrovaného obvodu je zde použita dioda. Výstup D OUT přivádíme ze špičky 48K2, tj. D0. Celá další obsluha je řešena pomocí programu. Pětistopé dálnopisy používají pro komunikaci kód MTA 2 podle doporučení CCITT 2 (viz tab. 6). Protože obsahuje pouze 32 možných kombinací, nebylo by možné v něm vyjádřit všechny znaky. Proto jsou v abecedě MTA 2 vyhrazeny dvě kombinace pro zvláštní řídicí povely pro přeřazení typového válce. Jde o povel A... (písmenová změna) a 1... (číslicová změna). Po vyslání těchto znaků dojde k mechanickému přeřazení typového válce z čísel na písmena nebo naopak. Je jasné, že se tím prodlužuje celková doba potřebná pro přenos dané informace. Programová obsluha komunikace mezi dálnopisem a mikropočítačem PMI-80 sestává ze dvou základních podprogramů - CI (console input) pro vstup znaku z dálnopisu a CO (console output) pro výstup znaku do dálnopisu. Podprogram CI (tab. 7) přijme dálnopisný znak a ve tvaru 000X XXXX jej uloží do registru C. Podprogram CO (tab. 8) předpokládá tvar znaku pro výstup podle tab. 6 v registru C a před vysláním do dálnopisu jej upraví na tvar 11XX XXX0, tj. doplní start-bit a dva stop-bity. Související podprogramy TIME10 a TIME20 vytvářejí časové konstanty 10 a 20 ms (viz též tab. 8). Pomocí podprogramů CI, CO (a pochopitelně TIME10 a TIME20) lze vytvářet další programové vybavení. Protože oba hlavní podprogramy umí jen přijmout, resp. vyslat dálnopisný znak, musíme jinými podprogramy zabezpečit rozeznání znaků podle tabulky a následný převod do (resp. ze zvoleného) vnitřního kódu uvnitř mikropočítače, řídit přeřazení apod. Nyní si názorně ukážeme, jak k tomuto problému přistupovat. 37

38 Zvolme za vnitřní kód mikropočítače šestnáctkovou soustavu (tj. číslo 0 bude vyjádřeno jako 00H, číslo 1 jako 01H až číslo 15 jako 0FH). Vytvořme nyní program pro tisk čísla ve výše uvedeném kódu na dálnopisu. Protože ve zvoleném kódu se vyskytují jak znaky číselné (0 až 9) tak znaky písmenové (A až F) musíme hlídat i příslušné změny (přeřazení). Zvolme například tento způsob: V paměti mikropočítače (v našem případě PMI-80) vytvoříme tabulku podobnou tab. 6. Každý řádek této tabulky bude sestávat ze dvou bytů. První byte obsahuje znak ve významu číslice, druhý ve významu písmena. Znaky bez použitelného významu nahradíme např. znakem FFH. Nahlédneme-li do tab. 6, už můžeme začít plnit naši novou tabulku. První řádek tabulky bude obsahovat FFH FFH, druhý řádek 03H 0EH, třetí FFH FFH atd. Podprogram pro tisk jednoho znaku tedy nejprve vyhledá ten svůj znak a poté vyšle dálnopisný kód rovnající se pozici nalezeného řádku znaků v tabulce. Je však zřejmé, že na jednom řádku tabulky mají vždy dva znaky jeden dálnopisný kód. Máme-li tedy např. vytisknout znak E, který se nalézá na druhém řádku tabulky, podprogram bude vysílat do dálnopisu kód 4/2 = 2 = 00010, pochopitelně se nyní doplní start-bit a stop-bit. Toto uspořádáni má ještě jednu výhodu. Liché znaky v tabulce (tj. první v řádku) vyžadují přeřazení číselné, sudé znaky písmenové. Nyní stačí uložit si do paměti stav aktuálního přeřazení (které musí být shodně nastaveno i na vlastním dálnopisu!) a před každým dalším tiskem znaku se jen přesvědčit, zda je přeřazení správně nastaveno. Pokud se bude tisknout znak se stejným přeřazením, jaké je aktuálně nastaveno, vytiskneme přímo požadovaný znak. Pokud se však má tisknout znak s opačným přeřazením, musíme nejprve do dálnopisu vyslat dálnopisný kód příslušného přeřazení a teprve poté znak. Na obr. 20 je znázorněn vývojový diagram podprogramu CHROUT (Character Output - výstup znaku) pro tisk znaku v šestnáctkové soustavě na dálnopisu. Tento podprogram využívá již předtím vytvořený podprogram CO (tab. 8). Podprogram CHROUT (tab. 9) umožňuje vytisknout znak z registru C na dálnopisu s hlídáním příslušného přeřazení. Jako příklad využití podprogramu CHROUT je v tab. 10 uveden program DUMP (výpis), který umožňuje vypsat na dálnopisu obsah paměti mezi dvěma adresami specifikovanými na počátku programu. Tento program je poměrně velmi jednoduchý a zájemce nechť si za domácí úkol vytvoří příslušný vývojový diagram programu. Program DUMP umožňuje vypsat na dálnopisu obsah paměti mezi dvěma pevně v programu zadanými adresami ADRPOC a ADRKON. Budeme-li chtít tyto adresy modifikovat z dálnopisu, musíme vytvořit podprogram pro překlad dálnopisného kódu do šestnáctkové soustavy, tedy jakýsi opačný podprogram k podprogramu CHROUT. Nazveme náš nový podprogram CHRIN (Character Input - vstup znaku). Vývojový diagram podprogramu CHRIN je na obr. 21, výpis podprogramu je v tabulce 11. Odtud je patrné, že podprogram umožňuje přijímat dálnopisné znaky a překládat je do šestnáctkové (hexadecimální) soustavy podle tab. 6 (resp. podle konkrétní tabulky TAB v podprogramu CHROUT podle tab. 9). Znaky se postupně vytisknou na dálnopisu, přeloží a ukládají do registrového páru HL, dokud nestiskneme buď CR (návrat vozíku) nebo mezerník. Pokud stiskneme jiné tlačítko na dálnopisu nežli z množiny (0,1,...9,A,...F,CR,SP), znak je ignorován (což se však na tisku neprojeví) a tudíž do HL není přibráno žádné nové číslo. Podprogram se dostává opět do stavu příjmu nového znaku 38

39 z dálnopisu. Pomocí podprogramu CHRIN lze nyní vytvořit příslušné komunikační programy mezi dálnopisem a našim mikropočítačem PMI-80. Tuto úlohu vám ponecháváme k realizaci. 5.2 Připojení sériové tiskárny Consul C2111 Zde můžete namítnout, že připojeni tiskárny C2111 je velkým přepychem. Autor přesto doufá, že ukázka připojení tohoto zařízení není na tomto místě vůbec náhodně a řada uživatelů jej jistě uvítá. Sériový tiskací mechanizmus (dále STM) Consul C2111 je zařízení určené pro malé a střední výpočetní systémy. Umožňuje provádět tisk pomoci mozaikové hlavy složené ze sedmi jehliček. Každá jehlička tiskne jeden řádek ve znaku výpisu. STM Je vybaveno vnitřním elektronickým řízením vlastních mechanizmů. Komunikace STM s prostředím se provádí standardním kódem KOI-8, což je určitá modifikace známé původní americké normy ASCII. V základní verzi vyžaduje STM C2111 paralelní zápis znaku v úrovni TTL. Pro řízení činnosti STM je třeba znát funkci všech 25 špiček konektoru kanálu KK. V tab. 12 je uveden krátký popis všech signálů a jejich označení. Časová závislost stykových signálů mezi STM a počítačem (obecně zdrojem signálu) je uvedena na obr. 22. Ostatní signály, které bezprostředně pro komunikaci nevyužijeme, je nutno náležitě ošetřit, aby STM správně pracoval. Vlastní realizace připojení STM sestává ze dvou částí: z části technické a programové. Na obr. 23 je znázorněno obecnější schéma připojení STM k mikropočítači. Musíme tedy zrealizovat 9 linek výstupních (8 datových a jednu řídící) a jednu linku vstupní (rozumí se vzhledem k mikropočítači). V konkrétním případě mikropočítače PMI-80 budeme výstupní komunikační linku pro připojení STM realizovat přídavným obvodem MHB8255A v pozici IO9. V kapitole 3.4 jsme již naznačili možnosti tohoto obvodu a na obr. 12 byly uvedeny příklady připojení výstupního zařízení v režimu přejímání. Nyní budeme toto zapojení konkretizovat. Obvod MHB8255A naprogramujeme do režimu 1 pro bránu B, takže na PC2 bude vstup signálu AC (potvrzení dat), výstup signálu SC (vzorkování) z bitu PC1 musíme pro naše účely invertovat. To lze jednoduše provést např. pomocí tranzistoru. Na obr. 24 je uvedeno schéma zapojení rozhraní mezi PMI-80 a STM Consul C2111. Programový segment LPRT (line printer) uvedený v tabulce 13 je velice jednoduchý, neboť větší část práce při řízení komunikace přebírá obvod MHB8255A, Budeme-li tedy chtít napsat na tiskárně jeden znak, musíme naplnit registr C binární hodnotou podle tab. 14 (tabulka kódu KOI-7) a zavolat podprogram LPRT. Pro účely tisku hexadecimálních číslic musíme provést převod. V tab. 15 je uveden podprogram DMP, obdoba programu DUMP z předchozí kapitoly, který umožňuje vypsat obsah paměti mezi dvěma adresami. 39

40 5.3 Řízení stejnosměrného motorku Velmi názornou aplikací mikropočítače je řízení stejnosměrného motorku (např. modelářského IGRA). Tento motorek vyžaduje pro řízení rychlosti a směru otáček změnu napájecího napětí a jeho polarity. Pomocí mikropočítače lze řízení zjednodušit do programové obsluhy, přičemž napájecí napětí bude konstantní. Na obrázku 25 je uvedeno schéma připojení motorku k mikropočítači PMI-80. V tomto případě není nutné rozšiřovat základní vybavení mikropočítače, neboť využijeme základní programovatelný obvod MHB8255A. Je však nutno doplnit dva tranzistory pro převod napěťových úrovní a čtyři tranzistory do můstkového komplementárního zapojení. Dvojice tranzistorů v můstku se v tomto případě chová jako výkonový invertor (z logického hlediska). Smysl otáčení motorku je dán kombinací bitů PB0 a PB1. Při kombinaci 01 se bude otáčet motorek na jednu stranu, při kombinaci 10 opačně. Při shodné logické úrovni na obou bitech se motorek točit nebude. Rychlost točení motorku bude dána rychlostí spínání napájecího napětí. Celý program (obr. 26) je koncipován jako jakýsi jednoduchý překladač řídicího programu. Řídicí program sestává z kombinace tří po sobě následujících bytů v paměti počínaje adresou 1D00H. První byte řídí směr otáčení: ÚKON 01H směr 1 02H směr 2 03H motor stojí 00H ukončení programu Druhý byte určuje dobu trvání úkonu, třetí byte určuje rychlost otáčení motorku. Výpis programu je v tab. 16. Příklad řídicího programu pro ukázku ovládání motorku je v tab. 17. Po spuštění programu (od adresy 1C00H) se motorek začne rozbíhat ve třech stupních, zpomalovat ve třech stupních, potom nastane reverzování a totéž se opakuje pro opačný směr točení. 5.4 Číslicově-analogový a analogově-číslicový převodník V celé řadě aplikaci číslicové a počítačové techniky je třeba zpracovávat analogové signály, většinou jde o napětí. Protože však počítače umí pracovat pouze se signály logickými, tedy logickou nulou a jedničkou, musíme provést převedeni analogového signálu na určitý kód. Potom určitému logickému stavu bude odpovídat určitá analogová úroveň signálu. Z teorie již víme, že budeme-li pracovat s n bity, budeme schopni jejich pomocí rozlišit 2 n logických stavů. Potom budeme schopni rozlišit i stejný počet úrovní zpracovávaného analogového signálu. 40

41 Číslo n vždy potom zvolíme podle dvou hledisek: a) jakou rozlišovací schopnost a tudíž i přesnost převodu mezi číslicovou a analogovou veličinou budeme požadovat, b) jak rozsáhlé n (tedy počet bitů) jsme schopni v reálném čase zpracovávat. První hledisko je celkem pochopitelné: naší snahou zřejmě bude pracovat s co největší přesností. Avšak druhé hledisko nás vrací trochu na zem. S velkým počtem bitů budeme mít vždy celou řadu starostí a doba zpracovávání bude vždy neúměrně velká. Zvolme pro naše počáteční úvahy n nám velmi blízké, neboť celou dobu s ním pracujeme, a to je n = 8. Znamená to, že budeme schopni rozlišit z daného rozsahu analogové veličiny 2 8 = 256 různých stavů a tudíž i 256 úrovní. Z toho potom plyne i přesnost zpracováváni lepší než 0,4%. Tato přesnost bude v celé řadě demonstračních příkladů velmi dobrá a nevyžaduje složitou obsluhu. Pokud bychom požadovali přesnost lepší, museli bychom zvolit počet bitů větší. Zabývejme se nejprve převodem číslicově-analogovým, kdy chceme jednoznačně přiřadit každému z 2 n logických stavů jednu analogovou úroveň. Jedním z nejjednodušších technických prostředků realizace číslicově-analogového (dále Č/A) převodníku je odporová síť typu R-2R zapojená v obvodu operačního zesilovače. Na obr. 27 je nakresleno schéma velmi jednoduchého Č/A převodníku s operačním zesilovačem OZ1 (polovina integrovaného obvodu MA1458). Tento způsob Č/A převodu je v současné době prakticky nejužívanějším a obdobně pracují všechny známé Č/A převodníky (MDAC-08, AD7520 a j.). Lze odvodit, že přírůstek napětí mezi dvěma sousedními binárními stavy je ΔU v yst = U vst 2 n -1 Každý bit se tedy podílí na celkovém přírůstku výstupního napětí podle své váhy, takže celkově binární informace o n bitech způsobí, že na výstupu operačního zesilovače bude analogové výstupní napětí U analog = U vst 2 n -1 n K i i=1 2 i 1 Kde K i je váha příslušného i-tého bitu (může nabývat buď log. 0 nebo log. 1). V případě realizace Č/A převodníku podle obr. 27 je tedy n = 8 a U vst -2V (vyplývá to z logických úrovní uvnitř stykového obvodu). Programová obsluha Č/A převodníku je velmi jednoduchá, neboť spočívá jen ve vyslání osmibitového údaje do stykového obvodu IO9 (po příslušném naprogramování brány PA na výstup). 41

42 Pro realizování převodu opačného, tedy analogově číslicového (dále A/Č), bude velmi užitečné využít v předchozí části popsaného Č/A převodníku. Jestliže Č/A převod bylo možno realizovat poměrně jednoduše a s libovolnou přesností jen pomocí obvodového řešení, A/Č převod vyžaduje jisté programové obsloužení, což se projeví navenek časovou prodlevou mezi zadáním analogového údaje a výstupem jeho číslicového ekvivalentu. Na obr. 28 je uvedeno blokové schéma principiálního A/Č převodníku. Jádrem A/Č převodníku je tedy již popsaný Č/A převodník, na jehož číslicový vstup je připojen v tomto případě mikropočítač. Ten zapíše do Č/A převodníku číslicový údaj. V napěťovém komparátoru dojde k porovnání analogového napětí ekvivalentního vstupní číslicové informaci s přivedeným napětím, které hodláme převést na číslicový údaj. Výsledkem je logický signál KOMP indikující vztah mezi oběma veličinami. Vnější zařízení (zde mikropočítač) musí tedy tak dlouho vkládat číslicové hodnoty na vstup Č/A převodníku, až je dosaženo shody mezi U vst a U analog. Nyní bude již záležet jen na konkrétní realizaci obsluhy převodu vnějším zařízením (mikropočítačem), neboť jedině tam lze za daných technických prostředků dosáhnout co možná nejrychlejšího A/Č převodu. Podle obr. 29 doplníme obvod Č/A převodníku (obr. 27) na zapojení A/Č převodníku pro naše školní účely. Využijeme přídavného stykového obvodu MHB8255A (v pozici IO9), přičemž pro číslicový výstup údajů do Č/A převodníku využijeme bránu PA, pro vstup logického signálu z komparátoru (signál KOMP) využijeme jeden bit brány PB (např. PB0). Programové obsloužení A/Č převodníku nám pomůže osvětlit obr. 30. Tento způsob aproximace (přiblížení) analogového signálu se nazývá metoda půlení intervalu nebo též metoda progresivní aproximace. Předpokládejme pro jednoduchost jen čtyřbitový převod. Na počátku vložíme do Č/A převodníku číslicový údaj znamenající polovinu možného intervalu, tedy 1000 (binárně). Komparátor nám ohlásí porovnání logickým stavem KOMP=1, tedy že skutečné vstupní napětí leží v horní části půleného intervalu. Ponecháme tedy nejvyšší bit v log. 1 (vždyť hledané napětí leží v horní části intervalu) a nastavíme polovinu horního intervalu pomoci log. 1 na následujícím bitu, tedy Komparátor ohlásí KOMP=0, tudíž přetečení. Znamená to, že hledané napětí leží ve spodní části tohoto nového intervalu. Proto vynulujeme bit posledně nastavený a nastavíme následující, takže dostaneme Komparátor ohlásí KOMP=1, takže jedničku ponecháme a nastavíme poslední bit do jedničky, dostaneme Protože v posledním cyklu komparátor ohlásí opět K0MP=1, ponecháme stav číslicové informace v posledním bitu a můžeme říci, že jsme provedli A/Č převod. Protože jsme provedli n = 4 kroků, převod jsme ukončili. Tato metoda převodu má velkou výhodu v tom, že rychlost převodu je stále konstantní, neboť vždy provedeme stejný počet kroků. Na obr. 31 je uveden vývojový diagram A/Č převodu pomocí metody postupné (progresivní) aproximace. V tabulce 18 je uveden program ADCNV (Analog-digital Convertor) umožňující A/Č převod vstupního napětí U vst v obvodu podle obr. 29 na ekvivalentní číselnou hodnotu v rozmezí 00H až FFH (tj. dekadicky v rozsahu 0 až 255). Po uskutečnění převodu je hodnota uložená v datovém registru (adresa 1FFAH) zobrazována na zobrazovači mikropočítače až do doby stisku libovolného tlačítka (kromě RE nebo I). Tehdy se spustí nový A/Č převod. 42

43 Za pozornost ještě stojí vysvětlit význam podprogramu WAIT (čekej). Tento podprogram způsobí jistou prodlevu mezi vysláním testovací kombinace do Č/A převodníku a jeho následnou odezvou. Na našem mikropočítači je použití tohoto zpožďovacího podprogramu spíše pro parádu, protože vnitřní hodiny mikropočítače jsou dosti pomalé a tudíž doba mezi vysláním testovací kombinace a příjmem signálu KOMP je dostačující. Pokud bychom však pracovali s vyšším kmitočtem hodin, museli bychom odezvu Č/A převodníku zpozdit, aby došlo k ustálení děje. 5.5 Programátor pamětí EPROM Budeme-li si vytvářet vlastní programy, které budou vhodné pro častější použití (např. naprogramování nového monitorovského programu pro obsluhu dálnopisu apod.), budeme potřebovat zařízení schopné naprogramovat paměti typu ROM (Read Only Memory = paměť jen pro čtení), resp. programovatelné paměti se schopností opětného vymazání ultrafialovými paprsky. Tyto paměti se označují jako EPROM (Erasable Programmable ROM = mazatelné programovatelné paměti ROM). Typickým představitelem paměti typu EPROM je integrovaný obvod MHB8708, jež je použit i v našem mikropočítači PMI-80. Tato paměť má organizaci 1024 x 8 bitů, tj. kapacita paměti je 1 kbyte. V nenaprogramovaném stavu jsou v paměťových buňkách paměti zapsány log. 1 a programováním se na plovoucí hradlo tranzistoru MOS v paměťové buňce přivede náboj, který způsobí otevření tohoto tranzistoru. Tranzistor sepne, a tak se změní stav paměťové buňky z log. 1 na log. 0. Náboj na plovoucím (tj. volném) hradle tranzistoru MOS setrvá asi 50 let, což je předpokládaná maximální doba života zařízení, v němž je paměť použita. Pro nás je to doba dosti dlouhá. Přivedení náboje na plovoucí hradlo tranzistoru v paměťové buňce vyžaduje poněkud složitější způsob zápisu, než je tomu u paměti RWM. Na obr. 32 jsou znázorněny časové průběhy signálů na vstupech obvodu MHB8708 v režimu čtení (a) a při režimu programováni (b). Z obrázku je patrné, že vstup obvodu označený CE/WE má dvojí funkci: při čtení uvolňuje přístup k čtecímu zesilovači, v režimu programování umožňuje připojením +12V zápis do paměti. Úloha naprogramovat paměťový obvod je jako stvořená pro mikropočítačové řízení za určité jednoduché podpory technických prostředků. S výhodou využijeme programovatelný stykový obvod MHB8255A v pozici IO9 (přídavný). Na obr. 33 je schéma navrhovaného programátoru připojitelného k mikropočítači PMI-80. Celý programátor je ovládán a napájen z PMI-80, až na programovací napětí +24V, které je nutno přivést z externího zdroje. Brána PA obvodu IO9 (MHB8255A) slouží k přenosu dat z předem připravené paměťové oblasti mikropočítače (v našem případě např. 1C00H) do programované paměti EPROM, případně opačně (při verifikaci) tj. ověřování správnosti. Brána PB slouží k přenosu dolních osmi bitů adresy EPROM, brána PC obsluhuje zbylé signálové špičky paměti a řídí činnost programátoru. Dva nejnižší bity PC0 a PC1 přenáší zbylé dva adresové bity A8 a A9, bit PC7 řídí spínání programovacího napětí +24V, bit PC6 řídí režimy paměti EPROM (programování a verifikace) a konečně PC5 ovládá signalizační svítivou diodu pro indikaci práce programátoru. 43

44 Vysvětlíme si ještě funkci spínacího obvodu programovacího napětí tvořeného tranzistory T1, T2 a T3. Tranzistor T3 při sepnutí otevře tranzistor T2. Tím se na špičku 18. paměťového obvodu přivede napětí +24V a odporem R4 začne téct proud. Pokud dosáhne hodnoty dané vztahem I R4max = U BET1 R 2 R 4 (R 2 +R 3 ) 25mA začne se otevírat i tranzistor T1, a tím se začne přivírat tranzistor T2. Obvod tak stabilizuje programovací proud a nedovolí, aby programovací příkon přesáhl asi 0,3W. Obsluha programátoru vyžaduje určité časování signálů podle obr. 32, takže ji raději svěříme mikropočítači. Vývojový diagram programu pro obsluhu programátoru je na obr. 34. Protože v základním vybavení mikropočítače PMI-80 máme k dispozici kapacitu paměti RWM pouze 1kB, nebudeme schopni naprogramovat celou paměť EPROM najednou. Budeme proto postupovat tak, že si vždy připravíme 256 Bytů (tj. 1/4 kb) od adresy 1C00H do 1CFFH, které přitom naprogramujeme na příslušné místo do paměti EPROM. Výpis programu EPR pro řízení programovacího zařízeni je v tab. 19. Program EPR pracuje tedy takto: po spuštění (např. EX 1E00) se rozsvítí indikační dioda D1 indikující programovací režim. V každém cyklu se do paměti EPROM zapíše jeden byte z předem připravené paměťové oblasti v PMI-80. Poté se přečte obsah EPROM a porovná se zapisovanou informací. Pokud nastane shoda, tj. byte se zapsal do EPROM, přejde se k další adrese. Pokud však informace nesouhlasí, cyklus se ještě 15x opakuje. Pokud ani poté nenastane souhlas, je chyba zřejmě v obvodu (např. špatně vymazaný) a musíme programování ukončit. V tomto případě začne blikat dioda D1. Z tohoto cyklu se lze dostat stiskem tlačítka I (interrupt), který způsobí přechod do obslužného programu ENTRY (adresa 0008H), který se ohlásí hlášením br-stop na zobrazovači PMI-80. Nyní si můžeme prohlédnout dvojím stiskem R a B obsah registrového páru BC, v němž je uložena adresa paměťové buňky, kterou se nepodařilo naprogramovat. V případě úspěšného naprogramování (cca. po 1 minutě) dioda D1 zhasne a na zobrazovači se objeví taktéž hlášení br-stop. Nyní můžeme po odladění nebo přípravě nových dat nebo programu v paměťové oblasti 1C00H až 1CFFH změnit adresu EPAD na 0100H a zarážku ZAR na adrese 1E70H na 02H, program EPR opět spustit a naprogramovat druhé čtvrt-kilo. V tabulce 20 jsou uvedeny hodnoty EPAD (EPROM ADresa) a ZAR pro 4 možné kombinace při programování jednotlivých čtvrtkil do EPROM. 5.6 Měření teploty termistorem, měření kapacity kondenzátorů Pro měření teploty se v praxi často používá termočlánků nebo tepelně závislých odporových snímačů, příp. termistorů. Pro další zpracování získaných údajů pomocí mikropočítače se napěťový signál musí převést na číslicovou informaci. Zde si naznačíme způsob převodu napěťového signálu na číslicový, jiný než u A/Č převodníku z kapitoly

45 Na obr. 35 Je znázorněn jednoduchý RC obvod se spínačem. Jestliže v čase t = 0 rozepneme spínač S, bude průběh napětí u C na kondenzátoru C popsán rovnicí: u C (t) = U (1 e t RC ) Znamená to, že napětí u C, bude vzrůstat exponenciálně od nuly k hodnotě napětí U. Změníme-li některou z hodnot R nebo C, změní se časová konstanta obvodu τ = RC a strmost vzrůstání napětí u C. Položme nyní některou z hodnot u C rovnu U T (= prahové napětí). Pro dvě různé hodnoty τ 1 a τ 2 potom bude platit t 1 t 2 = τ 1 τ 2 = R 1 C 1 R 2 C 2 Praktický význam posledního vztahu je v tom, že změnou časové konstanty o Δτ se projeví jako změna v době nárůstu napětí na kondenzátoru C do hodnoty U T o Δt. Jde tedy o přímou úměru. Jako praktický příklad si uvedeme měření teploty pomocí termistoru. Na obr. 36 je schéma měřícího obvodu, který je prakticky obdobou principiálního schématu z obr. 35. Pouze funkci spínače S vykonává tranzistor T. Na obr. 37 je uveden vývojový diagram programového řešení této úlohy. Na začátku vynulujeme registr HL pro určení časové prodlevy t a sepne se tranzistor T ve funkci spínače S. Po chvíli, nutné pro vybití kondenzátoru C, se spínač rozepne a čeká se, kdy napětí na kondenzátoru C dosáhne prahové úrovně U T (v našem případě úroveň log. 1). Při každém cyklu přičítáme do registru HL jedničku. Ve chvíli, kdy napětí na C dosáhne log. 1, provedeme číselnou úpravu obsahu HL na číslo pro zobrazení a toto číslo zobrazíme. V tab. 21 je uveden výpis programu TEPL umožňující měřit teplotu pomocí termistoru R 29. Není ale vyloučeno, že nahradímeli termistor konstantním rezistorem, dostaneme mikropočítačový měřič kapacity. Nacejchování údaje provedeme úpravou podprogramu UPRAVA. V této kapitole jsme demonstrovali využití jednoduchého RC obvodu pro účely převodu časových údajů do číslicové podoby. Přesnost těchto obvodů však není velká, neboť vstupy logických obvodů nejsou dokonalé komparátory a pokaždé je hodnota prahového napětí trochu jiná. K přesnějším aplikacím slouží účelové logické obvody, např. monostabilní klopné obvody typu nebo 74123, resp. známý časovací obvod 555. Na obr. 38 je ukázka realizace stejného obvodu jako na obr. 36, avšak s integrovaným monostabilním obvodem Výsledky získané při aplikaci tohoto zapojení jsou podstatně přesnější, takže ji předurčují k dalšímu využití. Podstatnou měrou je však výsledek úměrný vhodně volené úpravě získaného údaje pomocí podprogramu UPRAVA. Zde jsme, jak je ostatně patrné, předpokládali jednoduchou závislost. 45

46 5.7 Počítačové hry Na závěr této kapitoly věnované aplikačním příkladům použití mikropočítače PMI-80 jsme vybrali čtyři programy spadající do kategorie počítačových her. I když otázka počítačových her při procesu učení je velmi diskutovatelná, lze očekávat, že po prostudování a následném pochopení programů získáme mnoho postřehů a podnětů pro další konkrétní aplikace (už třeba ne ve formě hry). Proto doporučujeme předkládané programy podrobně přečíst a analyzovat. Jistě zde naleznete mnoho zajímavých programových obratů Pípající hrací kostka Tento program je určen pro hráče společenské hry Člověče, nezlob se a podobných. Program se po odstartování (EX 1C60 =) spouští stiskem tlačítka 0. Po uvolnění tlačítka se vygeneruje pseudonáhodné číslo v rozsahu 1 až 6 (odpovídá házecí kostce) a na připojeném zesilovači (např. magnetofon připojený v konektoru K3 pro nahrávání) se ozve vygenerovaný počet pípnutí a následně se objeví číslo i na zobrazovači. Výpis programu je uveden v tab Dvojkové zobrazení obsahu paměti Jak už je ostatně z názvu patrné, tento program není vlastně hrou. Program totiž umožňuje zobrazovat obsah paměti od zadané adresy (= ZONA) nejen v běžném šestnáctkovém tvaru, nýbrž i ve tvaru dvojkovém (binárním). Výpis programu je v tab Světelné noviny Tento program umožňuje simulovat funkci běžících světelných novin. Pro ilustraci se po spuštění programu na zobrazovači postupně objeví text: dovolte mi, abych se predstavil, jsem PMI-80 Pomocí tohoto programu lze vytvářet instrukce při běhu programů (např. komentáře apod.), což mnohdy usnadní aplikaci vytvořeného programu. Výpis je v tabulce Mikrovarhany Tento program umožňuje na připojeném zesilovači (např. magnetofonu s příposlechem) zahrát melodii. Z mikropočítače PMI-80 se stává jednohlasý melodický nástroj. Výpis programu je v tabulce

47 6. Doplňky a úpravy Školní mikropočítač PMI-80 je sice finálním výrobkem, nicméně naše zvídavost a nadšení nás vede a nutí jej stále vylepšovat a doplňovat. Všem, kteří chtějí možnosti PMI-80 rozšířit, je určena tato kapitola naší publikace. 6.1 Zlepšení práce s magnetofonem V kapitole 2.3 jsme naznačili funkci vstupních a výstupních obvodů pro styk s magnetofonem. Tyto obvody jsou řešeny velmi jednoduše, což vede ve většině případů k jejich chybné funkci. Obvod pro výstup dat z magnetofonu (MGOUT) vyžaduje pro správnou funkci poměrně velkou úroveň výstupního signálu z magnetofonu (min. 3V efektivní hodnota). Proto bude vhodné doplnit vstupní dvoutranzistorový zesilovač ještě jedním tranzistorem podle (14). Zapojení pracuje spolehlivě od výstupního napětí z magnetofonu 1,5V (mezivrcholová hodnota), což znamená, že při přehrávání z magnetofonu do PMI-80 není nutno vyřazovat reproduktor magnetofonu z funkce pro velkou hlasitost. Z desky plošných spojů vyjmeme součástky R5, C3 a R6, přerušíme spoj mezi bází T2 a kondenzátorem C4. Na uvolněné místo zapájíme součástky podle obrázku Doplňky Pro celou řadu aplikací bude vhodné doplnit konektor K2 výstupem napájecích napětí, které jsou ostatně výrobcem vyvedeny na konektoru K1. Propojení provedeme podle tab. 26. V některých případech se při provozu PMI-80 (ale i jiných mikropočítačů) stává, že po stisku tlačítka RE (reset) zhasne zobrazovač a není možné mikropočítač uvést do výchozího stavu. Příčinou bývá teplotní závislost obvodu IO1 (MH8224). Závadu lze ve většině případů odstranit zapojením kondenzátoru o kapacitě 100 pf mezi špičky 1 a 8 tohoto obvodu. 6.3 Zdroj pro mikropočítač a další aplikace Tato kapitola je určena především těm, kteří nemají pro svůj mikropočítač napájecí zdroj (např. SN 080 viz příloha F), pozornost k ní mohou upřít však i ti, kteří hledají zdroj pro uskutečnění aplikací mikropočítače (např. práce s operačními zesilovači a pod.). Na obr. 40 je blokové schéma zdroje. Je odtud patrno, že je tvořen čtyřmi oddělenými zdroji, výjimku tvoří dvojice zdrojů +12V a -12V. Pro tento účel je zde použit operační zesilovač ve funkci komparátoru. Na jeden jeho vstup je přiveden střed děliče tvořeného dvěma shodnými odpory R. Uprostřed děliče je tedy poloviční napětí, v našem případě potenciál 0V. Druhý vstup operačního zesilovače je uzemněn. Na výstupu komparátoru dostáváme regulační signál v závislosti na rozdílu dvou napětí +12V a -12V. Toto regulační napětí reguluje zápornou větev zdroje. 47

48 Za pozornost stojí ještě signálová cesta vedená z výstupu zdroje -5V do zdroje +12V. Tak je zabezpečena podmínka, aby napětí -5V nabíhalo jako první a jako poslední vypínalo. V případě, kdy napětí -5V nenaběhne (z důvodů např. zkratu), napětí +12V nevzroste nad nebezpečnou mez. Tím jsou chráněny součástky mikropočítače, které to vyžadují (tzn. mikroprocesor, paměťové obvody a j.). Na obr. 41 je schéma konkrétní realizace zdroje. Všechny zdroje jsou realizovány tzv. tříbodovým stabilizátorem typu MA78xx. Výjimku tvoří záporná větev zdroje -12V, kde je jako regulační prvek použit tranzistor KD617. Funkci komparátoru zastává operační zesilovač MAA741. Potenciometrem R6 lze nastavit přesně symetrii obou větví zdroje. Funkci pojistky proti výpadku napětí -5V tvoří vypínací obvod Ty1, D15, D16, R3 a R4. V klidovém stavu (tj. při ustálení napětí -5V a +12V) je na katodě D16 napětí blízké 0V. Tyristor Ty1 není sepnut. Jestliže z jakýchkoliv důvodů napětí -5V zmizí (tj. přiblíží se 0V), napětí na katodě D16 se zvětší nad hodnotu zápalného napětí tyristoru, Ty1 sepne a tím zkratuje výstup zdroje +12V. V tom okamžiku vysadí samozřejmě i záporná větev tohoto zdroje. Po opětném náběhu napětí -5V je nutno zdroj buď vypnout nebo zkratovat svorky +12V a 0V. Pro realizaci zdroje je nutno použít bezpečnostní transformátor, pro naše účely např. jádro EI 20 x 32, počet závitů vinutí L vodičem Cu 0,18mm, vinutí L2 63 závitů vodičem Cu 0,72mm, L3 63 závitů vodičem Cu 0,26mm, vinutí L4 2x 95 závitů (vinout bifilárně) vodičem Cu 0,32 mm. Při dodržení, těchto parametrů bude zdroj schopen dodat na svorce +5V proud 1,5A, na svorce -5V proud 0,2A a na svorkách +12V proudy 0,3A. Maximální příkon je tedy asi 18W, pro jištění použijeme rychlou pojistku 0,2A. 48

49 Literatura (1) Aleksenko, A. G., Galicyn, A. A., Ivannikov, A. D.: Proektirovanie radioelektronnoj apparatury na mikroprocessorach, Moskva Radio i svjaz 1984 (2) Artwick, B. A.: Microcomputer Interfacing, Prentice-Hall, Inc, 1980, ruský překlad Seprjaženie mikro-evm s vněšnimi ustrojstvami, Moskva Mašinostroenie 1983 (3) Balašov, E.P., Puzankov, D. B.: Mikroprocessory i mikroprocessornye sistěmy, Moskva Rádio i svjaz 1981 (4) Bernard, J. M. a kol.: Od logických obvodů k mikroprocesorům, díl, Praha SNTL (5) Blatný, J., Krištoufek, K., Pokorný, Z., Kolenička, J.: Číslicové počítače, Praha SNTL-ALFA 1980 (6) Daneš, J. a kol.: Amatérská radiotechnika a elektronika, 1. díl, Naše vojsko, Praha 1984 (7) Dlabola, F., Starý, J.: Systémy s mikroprocesory a přenos dat, Praha NADAS 1984 (8) Dědina, B., Valášek, P.: Mikroprocesory a mikropočítače, 2. vydání, Praha SNTL 1983 (9) Slípka, J.: Navrhování mikroprocesorových systémů, Praha SNTL 1985 (10) Starý, J.: Mikropočítač a jeho programování, Praha SNTL 1984 (11) Tóth, Š.: Školský mikropočítač PMI-80, časopis Amatérské rádio řada A č. 7/84, 8/84 a 11/84 (12) Zdeněk, J.: (13) -: (14) -: (15) -: Technika mikropočítačů, Praha ČVTS 1983 Ročenka Sdělovací techniky 1985 Praha SNTL 1984 Uživatelům PMI-80, časopis Amatérské rádio řada A č. 12/84, 2/85, 3/85 Uživatelská příručka PMI-80, Tesla Piešťany

50 Tabulka 1 Rozdělení adres paměti mikropočítače PMI-80 2 Seznam systémových proměnných 3 Adresování obvodů MHB8255A 4 Překlad programu 1 5 Výpis programu TON pro demonstraci funkce MHB8255A 6 Tabulka mezinárodní dálnopisné abecedy MTA2 7 Výpis podprogramu CI pro vstup znaku 8 Výpis podprogramu CO pro výstup znaku 9 Výpis podprogramu CHROUT 10 Výpis programu DUMP pro výpis obsahu paměti 11 Výpis podprogram CHRIN 12 Popis signálů tiskárny C Výpis podprogramu LPRT pro tisk na tiskárně C Tabulka abecedy KOI-7 (dříve též ASCII) 15 Výpis programu DMP 16 Výpis programu pro řízení ss motorku 17 Sekvence úkonů pro program dle tab Výpis programu ADCNV pro A/Č převod 19 Výpis programu EPR pro obsluhu programátoru pamětí EPROM 20 Tabulka hodnot proměnných v programu EPR 21 Výpis programu TEPL 22 Výpis programu - pípající hrací kostka 23 Výpis programu - dvojkové zobrazení 24 Výpis programu - světelné noviny 25 Výpis programu - mikrovarhany 26 Doplnění konektoru K2 50

51 Tabulka 1 1FD9 E (vrchol sklípku) 1FDA D 1FDB C 1FDC B 1FDD příznakové bity 1FDE A 1FDF L 1FE0 H místo pro uložení stavu registrů 1FE1 1FE2 1FE3 adresa místa zarážky (break point) + 1 1FE4 SP L 1FE5 SP H 1FE6 1FE7 místo pro uložení obsluhy přerušení (tlačítko X) 1FE8 1FE9 1FEA 1FEB 1FEC 1FED adresa místa zarážky (break point) 1FEE paměť instrukce z místa zarážky 1FEF 1FF0 1FF1 1FF2 1FF3 výstupní registr zobrazovače (VRZ) 1FF4 1FF5 1FF6 1FF7 lff8 adresa nebo čtyřbytové data pro zobrazení 1FF9 v adresové části zobrazovače (MODAD) 1FFA 1FFB data pro zobrazení v datové části zobrazovače (MODDA) 1FFC 1FFD ukazatel VRZ (implicitně 1FEFH) 1FFE 1FFF STATUS (kód stisknutého tlačítka) 51

52 Tabulka 4 52 Překlad programu 1 1C00 3A 00 1F 4F 3A 02 1F F C Tabulka 5 1C00 3E 88 TON: MVI A,88H ; naprogramování obvodu 8255A 1C02 D3 FB OUT 0FBH ; do režimu 0 a bránu PB-výstup 1C04 3E 55 MVI A,55H ; A <- O b 1C06 D3 F9 VYST: OUT 0F9H ; postupně vyšle 0,1,... 1C MVI B,PER ; určuje dobu periody 1C0A 05 DOBA: DCR B ; odčítá počítadlo 1C0B C2 0A 1C JNZ DOBA ; dokud není B = 0 1C0E 07 RLC ; rotace akumulátoru vlevo 1C0F C3 06 1C JMP VYST ; opakuje Tabulka 6 Dálnopisný kód CCITT 2 (MTA 2) Kód Význam Kód Význam bin. hex čísl. písm. bin. hex čísl. písm nepoužito T E Z LF ) L A W SP H S Y I P U Q CR # D ? B A 4 R A G D BEL J B C, N C. M D F D / X E : C E = V F ( K F A...

53 Poznámky: LF (line feed) - nový řádek, CR (carriage return) - návrat vozíku, SP (space) - mezera, BEL (L) - zvonek, číslicová změna, A... - písmenová změna, symbol # je v dálnopisném provozu nazýván KDO TAM (německy WER DA?), pokud je to možné, nahrazuje se s ním chybějící znak * Tabulka 7 Podprogram CI 1F CI: LXI B,0500H ; B<-5, C<-0 1F03 DB F9 CI5: IN F9H ; A7<-PB7 1F05 07 RLC 1F06 DA 03 1F JC CI5 ; čeká na start bit 1F09 CD 3B 1F CALL TXME10 ; čeká 10ms 1F0C DB F9 IN F9H 1F0E 07 RLC ; test start bitu 1F0F DA 03 1F JC CI5 ; chyba - znovu 1F12 CD 45 1F CI10: CALL TIME20 ; čeká 20ms 1F15 DB F9 IN F9H ; datový bit 1F17 17 RAL 1F18 79 MOV A,C 1F19 1F RAR ; vloží nový bit 1F1A 4F MOV C,A 1F1B 05 DCR B ; bylo přijato již 5 bitů? 1F1C C2 12 1F JNZ CI10 ; ještě ne 1F1F 0F RRC 1F20 0F RRC 1F21 0F RRC 1F22 4F MOV C,A ; v C je přijatý byte 1F23 C9 RET ; ve tvaru 000X XXXX Tabulka 8 Podprogramy CO, TIME10 = TIME20 1F CO: MVI B,8 ; nastavení počítadla bitu 1F26 79 MOV A,C 1F27 07 RLC 1F28 E6 FE ANI FEH ; doplní start-bit 1F2A F6 C0 ORI C0H ; doplní stop-bity 1F2C 4F MOV C,A 1F2D D3 F9 CO5: OUT F9H ; vyšle ven bit A0 (PB0) 1F2F 0F RRC ; připraví následující bit 53

54 1F30 4F MOV C,A ; uloží 1F31 CD 45 1F CALL TIME20 ; čeká 20ms 1F34 79 MOV A,C 1F35 05 DCR B ; vyslány všechny bity? 1F36 C2 2D 1F JNZ CO5 ; ještě ne 1F39 C9 RET ; konec 1F3A 00 NOP 1F3B 11 B6 01 TIME10: LXI D,01B6H ; čekací smyčka 10ms 1F3E 1B CEK: DCX D 1F3F 7A MOV A,D 1F40 B3 ORA E 1F41 C2 3E 1F JNZ CEK 1F44 C9 RET 1F B 03 TIME20: LXI D,036BH ; čekací smyčka 20ms 1F48 C3 3E 1F JMP CEK Tabulka 9 1E80 21 B6 1E CHROUT: LXI H,TAB ; adresa tabulky 1E MVI B,0 ; překlad (TAB) 1E85 7E CHR5: MOV A,M ; znak z tabulky 1E86 B9 CMP C ; (HL) = C? 1E87 CA 93 1E JZ SHODA 1E8A 78 MOV A,B 1E8B FE 40 CPI 40H ; B = 64? 1E8D D0 RNC ; konec při chybs 1E8E 04 INR B 1E8F 23 INX H 1E90 C3 85 1E JMP CHR5 ; další znak 1E93 78 SHODA: MOV A,B ; kód 1E94 1F RAR ; CY <- 0/1.../, 1 (A...) 1E95 F5 PUSH PSW 1E96 3A B5 1E LDA PAMZM ; A <- (paměť přeřazení) 1E99 1F RAR 1E9A 07 RLC 1E9B 07 RLC 1E9C 07 RLC 1E9D 4F MOV C,A ; C <- aktuální přeražení 1E9E 3A B5 1E LDA PAMZM 1EA1 07 RLC 1EA2 07 RLC 1EA3 B9 CMP C ; je shoda v přeřazení? 1EA4 C4 AC 1E CNZ ZMENA ; ne -> vyšle přeřazení 1EA7 F1 POP PSW ; kód znaku 1EA8 4F MOV C,A 54

55 1EA9 C3 24 1F JMP CO ; vyšle znak pro tisk 1EAC 79 ZMENA: MOV A,C 1EAD 0F RRC 1EAE 0F RRC ; úprava na správný tvar 1EAF 32 B5 1E STA PAMZM ; uloží změnu 1EB2 C3 24 1F JMP CO ; vysláni změny 1EB5 C6 PAMZM: DS 1 ; paměť změny (např ) 1EB6 FF FF TAB: FFH FFH ; tabulka pro překlad 1EB8 03 0E ; (jde vlastně o tab. 6) 1EBA FF FF 1EBC FF 0A 1EBE FF FF 1EC0 FF FF 1EC2 0* FF 1EC4 07 FF 1EC6 FF FF 1EC8 FF 0D 1ECA 04 FF 1ECC FF FF 1ECE FF FF 1ED0 FF 0F 1ED2 FF 0C 1ED4 FF FF 1ED6 05 FF 1ED8 FF FF 1EDA FF FF 1EDC 02 FF 1EDE FF FF 1EE0 06 FF 1EE2 00 FF 1EE4 01 FF 1EE6 09 FF 1EE8 FF 0B 1EEA FF FF 1EEC FF FF 1EEE FF FF 1EF0 FF FF 1EF2 FF FF 1EF4 FF FF Tabulka 10 1E DUMP: LXI H,ADRPOC ; počáteční adresa 1E LXI D,ADRKON ; koncová adresa 1E06 E5 PUSH H 55

56 1E07 D5 PUSH D 1E08 CD 51 1E CALL INITO ; inic. 8255A 1E0B 0E 1F MVI C, A... ; srovnání přeřazení 1E0D CD AC 1E CALL ZMENA 1E10 C0 3C 1E CALL CRLF ; nový řádek 1E13 0E 09 MVI C, D 1E15 CD 24 1F CALL CO 1E18 CD 46 1E LOOP: CALL SPACE ; mezera 1E1B D1 POP D 1E1C E1 POP H 1E1D CD 4B 1E CALL COMP ; HL<DE? 1E20 23 INX H 1E21 D JNC MONITOR 1E24 E5 PUSH H 1E25 D5 PUSH D 1E26 7E MOV A,M ; A <- (HL) 1E27 F5 PUSH PSW 1E28 07 RLC 1E29 07 RLC 1E2A 07 RLC 1E2B 07 RLC 1E2C E6 0F ANI 0FH 1E2E 4F MOV C,A ; horní nibble 1E2F CD 80 1E CALL CHROUT 1E32 F1 POP PSW 1E33 E6 0F ANI 0FH 1E35 4F MOV C,A ; dolní nibble 1E36 CD 80 1E CALL CHROUT 1E39 C3 18 1E JMP LOOP 1E3C 0E 08 CRLF: MVI C, CR 1E3E CD 24 1F CALL CO 1E41 0E 02 MVI C, LF 1E43 C3 24 1F JMP CO 1E46 0E 04 SPACE: MVI C, SP 1E48 C3 24 1F JMP CO 1E4B 7C COMP: MOV A,H 1E4C BA CMP D 1E4D C0 RNZ 1E4E 7D MOV A,L 1E4F BB CMP E 1E50 C9 RET 1E51 3E 88 INITO: MVI A,88H ; inic. PB výstup 1E53 D3 FB OUT 0FBH 1E55 C9 RET 56

57 Tabulka 11 1D CHRIN: LXI H,0000H ; počáteční vynulování 1D83 11 B6 1E CHR10: LXI D,TAB ; počáteční adresa tabulky 1D86 CD D1 1D CALL INITI ; inicializace -PB vstup 1D89 CD 00 1F CALL CI ; 0 <- znak (=A) 1D8C CD 51 1E CALL INITO ; inicializace -PB výstup 1D8F FE 04 CPI SP ; jde o mezeru? 1D91 CA 46 1E JZ SPACE ; mezera a konec 1D94 FE 08 CPI CR ; jde o CR? 1D96 CA 3C 1E JZ CRLF ; nový řádek a konec 1D99 FE 1F CPI A... ; písmenová změna 1D9B CA CB 1D JZ PRER 1D9E FE 1B CPI 1... ; číslicová změna 1DA0 CA CB 1D JZ PRER 1DA3 FE 00 CPI 00H 1DA5 CA 83 1D JZ CHR10 1DA8 41 MOV B,C ; uloží znak 1DA9 CD 24 1F CALL CO ; vyšle do dálnopisu 1DAC E5 PUSH H ; uchová stav HL 1DAD MVI H,0 1DAF 78 MOV A,B ; znak 1DB0 07 RLC ; 2x (vynásobí dvěma) 1DB1 4F MOV C,A ; C <- přijatý znak x2 1DB2 3A B5 1E LDA PAMZM ; A <- (paměť změny) 1DB5 E6 01 ANI 01H ; A < Z 1DB7 81 ADD C ; A <- 2x znak + Z 1DB8 6F MOV L,A 1DB9 19 DAD D ; HL <- TAB+Z+2x znak 1DBA 7E MOV A,M ; A <- HL 1DBB E1 POP H 1DBC 0E FF MVI C,0FFH ; ignorovaný znak 1DBE B9 CMP C 1DBF CA 83 1D JZ CHR10 ; znak je ignorován 1DC2 29 DAD H 1DC3 29 DAD H 1DC4 29 DAD H 1DC5 29 DAD H ; rotace HL vlevo 1DC6 B5 ORA L ; o 1 hexa řád 1DC7 6F MOV L,A ; vloží nové číslo do HL 1DC8 C3 83 1D JMP CHR10 ; další znak 1DCB CD AC 1E PRER: CALL ZMENA ; uloží přijatou změnu 1DCE C3 83 1D JMP CHR10 1DD1 3E 8A INITI: MVI A,8AH ; inicializace 8255A 1DD3 D3 FB OUT FBH ; PB jako vstup 1DD5 C9 RET 57

58 Tabulka 12 Popis signálů STM C2111 AO - signál připravenosti STM přijímat data - KK/O SO - signál připravenosti data vysílat (do) - KK/J AC - řízení přenosu dat (STM) - KK/M SC - řízení přenosu dat (mikropočítač) - KK/K SI signály vysílané kódové kombinace - KK/A-H SP - paritní bit (9. bit datového slova) - KK/S SI-9 - signál pro STM - povoluje kontrolu parity - KK/T SI-10 - konec bloku informací - KK/Q SI-11 - nulování STM ( L - nuluje) - KK/R SI-12 - volba plynulého režimu - KK/W AI-1 - signál chybné parity ze STM - KK/U AI-2 - signál provádění řádku ze STM - KK/Z AI-3 - signál mechanické chyby ze STM - KK/Y AI-4 - signál autonomního režimu STM - KK/X Tabulka 13 Podprogram LPRT pro tisk znaku na STM C2111 a inicializační podprogram INIT 1F00 79 LPRT: MOV A,C ; přesun znaku do A 1F01 D3 F5 OUT F5H ; znak -> PB (v režimu 1) 1F03 F5 PUSH PSW 1F04 DB F6 LP: IN F6H ; A <- PC 1F06 E6 01 ANI 01H 1F08 CA 04 1F JZ LP ; test INTRB 1F0B F1 POP PSW 1F0C C9 RET 1F0D 3E 9D INIT: MVI A,9DH ; naprogr.- brána PB do rež. 1 1F0F D3 F7 OUT F7H ; tj. do tzv. přejímání 1F11 3B 05 MVI A,05H ; nastavení INTEb = 1 1F13 D3 F7 OUT F7H 1F15 C9 RET 58

59 Tabulka 14 Kódová tabulka kódu ISO 7 (K0I 7), dříve tzv. ASCII a a a a3 a2 a1 a0 HEX 0x 1x 2x 3x 4x 5x 6x 7x x0 NUL DLE SP P ` p x1 SOH DC1! 1 A Q a q x2 STX DC2 2 B R b r x3 ETX DC3 # 3 C S c s x4 EOT DC4 $ 4 D T d t x5 ENQ NAK % 5 E U e u x6 ACK SYN & 6 F V f v x7 BEL ETB 7 G v G w x3 BS CAN ( 8 H X h x x9 HT EM ) 9 I Y i y xa LF SUB * : J Z j z xb VT ESC + ; K [ k { xc FF FS, < L \ l xd CR GS - = M ] m } xe SO RS. > N ^ n xf SI US /? 0 _ o DEL Tabulka 15 1E DMP: LXI H,ADRPOC ; počáteční adresa 1E LXI D,ADRKON ; koncová adresa 1E86 CD 0D 1F CALL INIT ; inicializace 8255A (2.) 1E89 CD B1 1E TADR: CALL CROUT ; nový řádek 1E8C 7C MOV A,H 1E8D CD C0 1E CALL BYTP ; tisk horního bytu adresy 1E90 7D MOV A,L 1E91 CA C0 1E CALL BYTP ; tisk dolniho bytu adresy 1E94 CD BB 1E TOBS: CALL SPACE ; mezera 1E97 7E MOV A,M ; A <- (HL) (obsah paměti) 59

60 1E98 CD C0 1E CALL BYTP ; jeho tisk 1E9B CD D2 1E CALL COMP ; HL == DE? 1E9E D2 AB 1E JNC KONEC 1EA1 23 INX H ; HL=HL+1 1EA2 7D MOV A,L ; A dolní byte adresy 1EA3 E6 0F ANI 0FH ; končí L na nulu? 1EA5 CA 89 1E JZ TADR ; ano tisk nového řádku 1EA8 C3 94 1E JMP TOBS ; ne pokračuje v tisku 1EAB CD B1 1E KONEC: CALL CROUT 1EAE C JMP MONITOR ; konec výpisu 1EB1 0E 0D CROUT: MVI C, CR ; návrat vozu 1EB3 CD 00 1F CALL LPRT 1EB6 0E 0A MVI C, LF ; nový řádek 1EB8 C3 00 1F JMP LPRT 1EBB 0E 20 SPACE: MVI A, SP ; mezera 1EBD C3 00 1F JMP LPRT 1EC0 F5 BYTP: PUSH PSW ; podprogram pro tisk bytu 1EC1 07 RLC 1EC2 07 RLC 1EC3 07 RLC 1EC4 07 RLC 1EC5 CD D8 1E CALL HEXAS ; převod hexa na ASCII 1EC8 CD 00 1F CALL LPRT ; tisk horního nibble 1ECB F1 POP PSW 1ECC CD D8 1E CALL HEXAS 1ECF C3 00 1F JMP LPRT ; tisk dolního nibble 1ED2 7C COMP: MOV A,H 1ED3 BA CMP D 1EDk C0 RNZ 1ED5 7D MOV A,L 1ED6 BB CMP E 1ED7 C9 RET 1ED8 E6 0F HEXAS: ANI 0FH 1EDA FE 0A CPI 10D ; jde o číslo menší než 10? 1EDC DA E1 1E JC HX5 ; ano 1EDF ADI A EE1 C6 30 HX5: ADI 0 1EE3 4F MOV C,A 1EE4 C9 RET 60

61 Tabulka 16 1C00 3E 88 MVI A,88 1C02 D3 03 OUT 03 ; naprogramování 8255A 1C D LXI H,1D00 1C07 01 FF 1F LXI B,1FFF 1C0A 56 MOV D,M ; D <- (HL) = B1 1C0B 3E 00 MVI A,00 1C0D BA CMP D ; jde o 00H? 1C0E CA JZ 0000 ; ano -> konec 1C11 23 INX H 1C12 5E MOV E,M ; E <- (HL) = B2 1C13 23 INX H 1C14 7A MOV A,D ; A <- B1 - úkon 1C15 D3 01 OUT 01 1C17 7E MOV A,M ; A <- B3 - rychlost 1C18 CD 30 1C CALL 1C30 ; vytváří periodu 1C1B 3E FF MVI A,FF 1C1D D3 01 OUT 01 1C1F 3E 03 MVI A,03 1C21 CD 30 1C CALL 1C30 1C24 C3 14 1C JMP 1C14 1C27 FF RST 7 1C28 FF RST 7 1C29 FF RST 7 1C2A FF RST 7 1C2B FF RST 7 1C2C FF RST 7 1C2D FF RST 7 1C2E FF RST 7 1C2F FF RST 7 1C30 F5 PUSH PSW ; B3 1C31 78 MOV A,B 1C32 B1 ORA C 1C33 C2 43 1C JNZ 1C43 1C36 1D DCR E ; B2 <- D2-1 1C37 C2 40 1C JNZ 1C40 ; doba vypršela? 1C3A 23 INX H ; ano - krok v tab. příkazů 1C3B F1 POP PSW ; A <- B3 1C3C C1 POP B 1C3D C3 07 1C JMP 1C07 ; nový příkaz řízení 1C40 01 FF 1F LXI B,1FFF ; zákl. časová základna 1C43 0B DCX B 1C44 F1 POP PSW ; A <- B3 1C45 3D DCR A 1C46 C2 30 1C JNZ 1C30 ; konec periody? 1C49 C9 RET ; ano 1C4A FF RST 7 61

62 Tabulka 17 1D D Tabulka 18 1F00 3E 8B ADCNV: MVI A,8BH ; naprogramování IO9 (8255A) 1F02 D3 F7 OUT 0F7H ; PA-výstup, PB-vstup 1F AD1: LXI B,8000H ; C <- 0, B=ukazatel 1F07 78 MOV A,B ; první testovací kombinace 1F08 D3 F4 AD5: OUT 0F4H ; vyšle test. kom. do Č/A 1F0A CD 2D 1F CALL WAIT ; převodníku a čeká dobu TIME 1F0D DB F5 IN 0F5H ; B0 <- KOMP 1F0F 1F RAR ; CY <- KOMP 1F10 D2 16 1F JNC NUL ; KOMP=0 (U[vst] < U[analog]) 1F13 79 MOV A,C ; A <- dílčí výsledek 1F14 B0 ORA B ; přenese jedničku do A 1F15 4F MOV C,A ; dílčí výsledek do C 1F16 78 NUL: MOV A,B ; ukazatel 1F17 0F RRC ; rotace směrem k nižším bitům 1F18 47 MOV B,A ; uložení 1F19 DA 20 1F JC ADEND ; CY=1 -> konec převodu 1F1C B1 ORA C ; dílčí výsl. s novou pozicí 1F1D C3 08 1F JMP AD5 ; další cyklus 1F20 79 ADEND: MOV A,C ; A <- výsledek 1F21 32 FA 1F STA 1FFAH ; výsledek do datového reg. 1F24 CD F2 00 CALL OUTDA ; naplní VRZ 1F27 CD CALL OUTKE ; zobrazuje 1F2A C3 04 1F JMP AD1 ; po stisku tlačítka znova 1F2D WAIT: LXI D,TIME ; konstanta zpoždění 1F30 7A W5: MOV A,D 1F31 B3 ORA E 1F32 1B DCX D 1F33 C2 30 1F JNZ W5 1F36 C9 RET 62

63 Tabulka 19 1E C EPR: LXI H,1C00H ; poč. adresa v RWM 1E03 3E 80 MVX A,80H ; všechny brány na výstup 1E05 D3 F7 OUT CWR 1E LXI B,EPAD ; relat. adresa EPROM 1E0A 3E 20 MVI A,20H ; D=1 (rozsvítí D1) 1E0C 79 PROG1: MOV A,C ; A <- AL 1E0D D3 F5 OUT PB 1E0F 78 MOV A,B ; A <- AH 1E10 E6 20 ORI 20H ; A <- A v E12 D3 F6 OUT PC ; PC <- AH, D=1 1E14 1E 10 MVI E,10H ; max. počet pokusů 1E16 7E PROG2: MOV A,M ; A <- (HL) 1E17 D3 F4 OUT PA ; progr. data 1E19 3E 04 MVI A,04H 1E1B CD 79 1E CALL TIME ; τ[1] 1E1E 78 MOV A,B ; A <- AH 1E1F E6 A0 ORI A0H ; P <- 1 (+24V) 1E21 D3 F6 OUT PC 1E23 3E 18 MVI A,18H 1E25 CD 79 1E CALL TIME ; τ[2] 1E28 78 MOV A,B 1E29 E6 20 ORI 20H ; P <- 0 1E2B D3 F6 OUT PC 1E2D 3E 04 MVI A,04H 1E2F CD 79 1E CALL TIME ; τ[3] 1E32 78 MOV A,B 1E33 E6 60 ORI 60H ; [WE] = 0V 1E35 3E 04 MVI A,04H 1E37 CD 79 1E CALL TIME ; τ[4] 1E3A 3E 90 MVI A,90H ; brána PA na vstup 1E3C D3 F7 OUT CWR 1E3E DB F4 IN PA ; A <- data z EPROM 1E40 57 MOV D,A 1E41 3E 80 MVI A,80H ; všechny brány výstup 1E43 D3 F7 OUT CWR 1E45 78 MOV A,B 1E46 E6 20 ORI 20H ; [WE] = 12V 1E48 D3 F6 OUT PC 1E4A 7E MOV A,M ; data 1E4B BA CMP D ; souhlasí data? 1E4C CA 6C 1E JZ POKR ; ano 1E4F 1D DCR E ; ne - ještě jeden pokus 1E50 C2 16 1E JNZ PROG2 1E53 FB CHYBA: EI ; povoleno přerušení 1E54 3E CF MVI A,CFH ; instrukce RST1 63

64 1E56 32 E6 1F STA 1FE6H ; obsluha přerušení 1E59 3E 40 MVI A,40H 1E5B D3 F6 BLIK: OUT PC ; dioda svítí (nesvítí) 1E5D EE 20 XRI 20H ; provede negaci D 1E5F 21 E0 FF LXI H,FFE0H 1E LXI D,0001H 1E65 19 CEK: DAD D ; HL <- HL+DE 1E66 D2 65 1E JNC CEK 1E69 C3 5B 1E JMP BLIK 1E6C 03 POKR: INX B 1E6D 23 INX H 1E6E 78 MOV A,B 1E6F FE 01 CPI ZAR ; zarážka 1E71 C2 0C 1E JNZ PROG1 1E74 3E 00 MVI A,0 1E76 D3 F6 OUT PC 1E78 CF RST1 ; skok do ENTRY 1E79 3D TIME: DCR A 1E7A C2 79 1E JNZ TIME 1E7D C9 RET Tabulka 20 EPAD ZAR 1. čtvrtkilobyte 0000H 01H 2. čtvrtkilobyte 0100H 02H 3. čtvrtkilobyte 0200H 03H 4. čtvrtkilobyte 0300H 04H Tabulka 21 1C00 3E 10 TEPL: MVI A,10H ; t 1C02 CD AB 00 CALL CLEAR 1C05 3E 88 T5: MVI A,88H ; PB - výstup 1C07 D3 FB OUT CWR ; IO10 1C LXI H,0000H ; vynulování HL 1C0C 3E 01 MVI A,01H ; sepne T 1C0E D3 F9 OUT F9H ; brána PB 1C10 CD 2E 1C CALL WAIT ; vybití C 1C13 3E 8B MVI A,8BH ; PB - vstup 64

65 1C15 D3 FB OUT FBH 1C17 DB F9 T10: IN F9H ; A <- PB 1C19 0F RRC 1C1A 0F RRC ; CY <- D1 1C1B 23 INX H 1C1C D2 17 1C JNC T10 1C1F CD 35 1C CALL UPRAVA ; numer. úprava HL 1C22 22 F8 1F SHLD 1FF8H 1C25 CD BB 00 CALL OUTAD 1C28 CD CALL OUTKE ; zobrazuje 1C2B C3 05 1C JMP T5 ; po stisku tlačítka 1C2E 3E 00 WAIT: MVI A,0 1C30 3D W5: DCR A 1C31 C2 30 1C JNZ W5 1C34 C9 RET 1C35 7D UPRAVA: MOV A,L 1C36 D6 80 SUI 80H ; odečte 80H 1C38 6F MOV L,A 1C39 7C MOV A,H 1C3A DE 7F SBI 7FH ; odečte 7FH 1C3C 67 MOV H,A 1C3D C9 RET Tabulka 22 Pípající hrací kostka podle AR A7/84, upraveno pro PMI-80 Výstup na připojený magnetofon jako monitor zvuku. Výstup počtu pípnutí na zobrazovači. Start stlačením klávesy 0 (nula), obdobně pokračování. Startovací adresa: EX:1C60= 1C60 CD START: CALL DISP ; PP zobrazovač, stisk klávesy CY=1, kód kl.v a (změněn PO RLCJJJ) 1C63 D2 60 1C JNC START ; návrat při nestisknuté klávese 1C66 FE 01 CPI 01 ; test, zda byla stlačena klávesa 0 (PO RLC má KOD 01 místo 80) 1C68 C2 60 1C JNZ START ; nebyla stlačena klávesa 0 nebo byla stlačena jiná klávesa 1C6B GENER: MVI B,07H ; max. generované čís- 65

66 lo +1 do generátoru náhodných čísel 1C6D 05 DCR B 1C6E CA 6B 1C JZ GENER ; B=0, skok na začátek generátoru 1C71 CD CALL DISP ; PP DISP testuje, zda byla uvolněna klávesa 0 1C74 DA 6D 1C JC GENER+2 ; cykl. je-li klávesa ještě stlačena 1C77 58 MOV E,B ; uchování vygenerovaného náhodného čísla v E pro zobrazení 1C78 16 FF TON: MVI D,0FFH ; délka trvání pípnutí do D 1C7A 3E C0 66 MVI A,0C0H ; nejvyšší bity střadače vytvoří tón vystupující portem PA6.7 1C7C 2F CMA ; doplněk A vytváří střídu tónu (opačnou půlperiodu) 1C7D D3 F8 OUT PA ; výstup půlperiody tónu do PA (magnetofonu) 1C7F 00 NOP ; uklidnění sběrnice 1C80 0E 50 MVI C,50H ; polovina periody tónu, (výška tónu) 1C82 0D DCR C 1C83 C2 82 1C JNZ x-1 ; cykl vytvářející výšku tónu 1C86 15 DCR D ; zmenšeni délky tónu 1C87 C2 7C 1C JNZ TON+4 ; D 0, tón trvá 1C8A F PAUZA: LXI H,3F00H ; délka, mezery mezi pípnutími 1C8D 2B DCX H 1C8E 7C MOV A,H ; vyšší byte délky mezery do střadače pro srovnání s nižším 1C8F B5 ORA L ; srovnání H s L na nulové obsahy, aby log. součet byl roven 00 1C90 C2 8D 1C JNZ PAUZA+3 ; skok při nenulovém log. součtu (při současně nenulových H,L) 1C93 05 DCR B ; konec pauzy po vyslaném pípnutí, zmenšení počtu pípnutí 1C94 C2 78 1C JNZ TON ; skok na další pípnutí a pauzu 1C97 21 FA 1F LXI H,1FFAH ; adresa běžných vstupních dat do H,L

67 1C9A 73 MOV M,E ; přesun počtu pípnutí na tuto adresu 1C9B CD F2 00 CALL OUTDA ; zobrazení počtu pípnutí v datovém poli displeje 1C9E C3 60 1C JMP START ; konec práce, čekání na stlačení klávesy 0 pro další kolo KONEC POUŽÍVÁ REGISTRY - VŠECHNY Tabulka 23 Program převádí šestnáctkové obsahy buněk paměti na dvojková zobrazení displejem. Po spuštění se zobrazí dvojkový obsah prvé adresy, zadané v HL registru. Po stlačení klávesy (mimo RE a 1) se zobrazí další adresa a její obsah (hexadec). Po uvolněni klávesy se zobrazí obsah ve dvojkovém tvaru. Startovací adresa: EX:1CB0= 1CB START: LXI H,ZONA ; počáteční adresa zóny, která bude prohlížena programem 1CB3 11 F6 1F SEGM: LXI D,1FF6H ; adresa předposledního segmentu pro uložení hodnoty bitu 1CB MOV B,09 ; počet převáděných bitů +1 1CB8 4E MOV C,M ; analyzovaný byte z paměti do pomocného registru 1CB9 79 DALSI: MOV A,C ; analyzovaný byte do střadače 1CBA E6 01 ANI 01H ; ponechání posledního bitu 1CBC 12 STAX D ; a jeho uchování ve vyrovnávací paměti displeje 1CBD 1D DCR E ; adresa další, tj. E-1 segment 1CBE 79 MOV A,C ; analyzovaný byte do střadače 1CBF 0F RRC ; a jeho posunutí vpravo o jeden (zobrazený) bit 1CC0 4F MOV C,A ; a uchování v pomocném registru 1CC1 05 DCR B ; zmenšení čítače bitu/segmentu 1CC2 C2 B9 1C JNZ DALSI ; B 0, skok na pře- 67

68 vod dalšího bitu 1CC5 23 INX H ; B=O, konec převodu, zvětšeni adresy (další analyzovaný byte) 1CC6 CD ZOBR: CALL DISP ; zobrazení převedeného bytu ve dvojkovém tvaru 1CC9 D2 C6 1C JNC ZOBR ; CY 0, nebyla stlačena klávesa, pokračuje dvojkové zobrazeni 1CCC E5 PUSH H ; uchování HL, neboť jej následující podprogramy přepisují 1CCD 22 F8 1F SHLD 1FF8H ; uložení adresy ve výstupním registru displeje 1CD0 7E MOV A,M ; byte z následující adresy načten do střadače 1CD1 32 FA 1F STA 1FFAH ; a uložen ve výstupním registru displeje 1CD4 3E 0A ADRES: MVI A,0AH ; konstanta A pro zobrazení v levé segmentovce displeje 1CD6 CD AB 00 CALL CLEAR ; vynulování displeje před zobrazením, a adresa data 1CD9 CD BB 00 CALL OUTAD ; zobrazení adresy 1CDC CD F2 00 CALL OUTDA ; zobrazení dat na této adrese 1CDF CD CALL DISP ; zobrazeni a test stlačení klávesy 1CG2 DA D4 1C JC ADRES ; CY=1, klávesa ještě stlačena, zobrazuje se adresa, její data 1CE5 CD AB 00 CALL CLEAR ; CY=0, klávesa uvolněna, vynulováni displeje 1CE8 E1 POP H ; navrácení adresy ze zásobníku 1CE9 C3 B3 1C JMP SEGM ; skok na dvojkové zobrazení obsahu této adresy KONEC POUŽÍVÁ REGISTRY - VŠECHNY 68

69 Tabulka 24 Program Světelné noviny v délce max. 80H znaků (hex. počet znaků na adresu 1D84) Zpráva v kódu PMI-80 je uložena od adresy 1D00 - startovací adresa: EX:1D80= Při zadání jiné adresy lze vypisovat např. zprávy v monitoru a podobně. 1D00 DATA: DB ; zpráva světelných novin - viz příklad za koncem programu 1D D START: LXI H,DATA ; adresa začátku zprávy do HL 1D83 1E 30 MVI E,30H ; délka zprávy do E (délka 30H je určena pro příklad programu) 1D85 22 FC 1F ULOZ: SHLD 1FFCH ; uchováni HL ve výstupním registru displeje 1D88 16 FF MVI D,0FFH ; čítač doby posunutí znaku (FF odpovídá asi 0,3 sec.) 1D8A CD ZOBR: CALL DISP ; zobrazení zprávy na displeji 1D8D 15 DCR D ; zmenšeni čítače doby posunutí znaku na displeji 1D8E C2 8A 1D JNZ ZOBR ; D 0, skok na zobrazení 1D91 23 INX H ; D=0, zvětšení adresy, mající za následek posunuti zprávy 1D92 1D DCR E ; zmenšení délky o odvysílanou část zprávy 1D93 C2 85 1E JNZ ULOZ ; B O, uchování nového HL ve výstupním registru displeje 1D96 C7 RST 0 ; B=0, ukončení práce programovým provedením RESET (PMI-80) Příklad zprávy tvořené adresami písmen abecedy a znaků v tabulce monitoru (01BE-02BD) 1D D08 0D 11 8E E 19 1D A 0B 23 0C 1A 1D E E 0D 1D A 8E D E = mezery = dovolte = mi, abych = se pred = stavil: = jsem 69

70 Adresy písmen a znaků: A = 0A, G = 20, M = 16, S = 05, Z = 02, B = 0B, H = 1A, N = 1B, T = 10, = = 18, C = 0C, I = 01, O = 11, U = 15, - = 1F, D = 0D, J = 21, P = 13, V = 8E, = 1E, E = 0E, K = 85, Q = 43, X = 9B,, = 22, F = 0F, L = 14, R = 12, Y = 23,? = 1D KONEC ZPRÁVY Program používá registry A, DE, HL, ostatní uchová Tabulka 25 Startovací adresa: EX:1E00= Mikrovarhany, stupnice : CDEF89AB , Tón trvá po dobu stisku klávesy Výstup tónu je realizován přes připojený magnetofon jako zvukový monitor. 1E0E 3E C0 70 1E00 CD START: CALL DISP ; PP testu klávesnice, CY=1 při stisku klávesy 1E03 D2 00 1E JNC START ; návrat na začátek při nestisknuté klávese 1E06 0F RRC ; obnovení správného kódu klávesy ve střadači 1E07 E6 0F ANI 0FH ; ponechání pravé tetrády kódu klávesy 1E E LXI H,TAB ; adresa tabulky konstant. tónu kláves do HL 1E0C 85 ADD L ; přičtení upraveného kódu klávesy (00-0F) k adrese tabulky 1E0D 6F MOV L,A ; modifikovaná adresa zpět do L MVI A,0C0H ; nastavení nejvyšších bitů střadače pro výstup tónu do PA6.7 1E10 CD 1F 1E TON: CALL VYST ; voláni PP výstupu tónu (kladné půlvlny) 1E13 CD 1F 1E CALL VYST ; výstup tónu (záporná půlvlna) 1E16 CD CALL DISP ; test klávesnice, je-li ještě stlačena klávesa 1E19 DA 10 1E JC TON ; pokračování tónu při

71 stisknuté klávese 1E1C C3 00 1E JMP START ; skok na začátek programu po uvolnění klávesy 1E1F D3 F8 VYST: OUT PA ; výstup půlperiody kmitu tónu do PA (magnetofonu či sluchátek) 1E21 4E MOV C,M ; konstanta délky půlperiody tónu z tabulky do C registru 1E22 0D DCR C ; zmenšeni čítače v C registru 1E23 C2 22 1E JNZ VYST+3 ; cykl při nenulovém čítači 1E26 2F CMA ; doplněk C0=3F ve střadači vytvoří inverzní půlperiodu tónu 1E27 C9 RET 1E FF TAB: DB ; A, H, C, C 1E2C C 1C ; D, E, F, G 1E30 9E 80 6A 53 ; G, A, H, C 1E34 FF E0 C0 B0 ; C, D, E, F KONEC POUŽÍVÁ REGISTRY: A, C, H, L Doplnění vývodů konektoru K2 12 (stávající) 26 +5V V V 29 71

72 Příloha A Tabulka instrukcí mikroprocesoru MHB8080A symbol kód dél symbol kód dél symbol kód dél symbol kód dél symbol kód dél symbol kód dél ACI D8 CE 2 CNZ adr C4 3 JMP adr C3 3 MOV D,C 51 1 MVI E,D8 1E 2 RST 4 E7 1 ADC A 8F 1 CP adr F4 3 JNC adr D2 3 MOV D,D 52 1 MVI H,D RST 5 EF 1 ADC B 88 1 CPE adr EC 3 JNZ adr C2 3 MOV D,E 53 1 MVI L,D8 2E 2 RST 6 F7 1 ADC C 89 1 CPI D8 FE 2 JP adr F2 3 MOV D,H 54 1 MVI M,D RST 7 FF 1 ADC D 8A 1 CPO adr E4 3 JPE adr EA 3 MOV D,L 55 1 NOP 00 1 RZ C8 1 ADC E 8B 1 CZ adr CC 3 JPO adr E2 3 MOV D,M 56 1 ORA A B7 1 SBB A 9F 1 ADC H 8C 1 DAA 27 1 JZ adr CA 3 MOV E,A 5F 1 ORA B B0 1 SBB B 98 1 ADC L 8D 1 DAD B 09 1 LDA adr 3A 3 MOV E,B 58 1 ORA C B1 1 SBB C 99 1 ADC M 8E 1 DAD D 19 1 LDAX B 0A 1 MOV E,C 59 1 ORA D B2 1 SBB D 9A 1 ADD A 87 1 DAD H 29 1 LDAX D 1A 1 MOV E,D 5A 1 ORA E B3 1 SBB E 9B 1 ADD B 80 1 DAD SP 39 1 LHLD adr 2A 3 MOV E,E 5B 1 ORA H B4 1 SBB H 9C 1 ADD C 81 1 DCR A 3D 1 LXI B,D MOV E,H 5C 1 ORA L B5 1 SBB L 9D 1 ADD D 82 1 DCR B 05 1 LXI D,D MOV E,L 5D 1 ORA M B6 1 SBB M 9E 1 ADD E 83 1 DCR C 0D 1 LXI H,D MOV E,M 5E 1 ORI D8 F6 2 SBI D8 DE 2 ADD H 84 1 DCR D 15 1 LXI SP,D MOV H,A 67 1 OUT D8 D3 2 SHLD adr 22 3 ADD L 85 1 DCR E 1D 1 MOV A,A 7F 1 MOV H,B 60 1 PCHL E9 1 SIM 30 1 ADD M 86 1 DCR H 25 1 MOV A,B 78 1 MOV H,C 61 1 POP B C1 1 SPHL F9 1 ADI D8 C6 2 DCR L 2D 1 MOV A,C 79 1 MOV H,D 62 1 POP D D1 1 STA adr 32 3 ANA A A7 1 DCR M 35 1 MOV A,D 7A 1 MOV H,E 63 1 POP H E1 1 STAX B 02 1 ANA B A0 1 DCX B 0B 1 MOV A,E 7B 1 MOV H,H 64 1 POP PSW F1 1 STAX D 12 1 ANA C A1 1 DCX D 1B 1 MOV A,H 7C 1 MOV H,L 65 1 PUSH B C5 1 STC 37 1 ANA D A2 1 DCX H 2B 1 MOV A,L 7D 1 MOV H,M 66 1 PUSH D D5 1 SUB A 97 1 ANA E A3 1 DCX SP 3B 1 MOV A,M 7E 1 MOV L,A 6F 1 PUSH H E5 1 SUB B 90 1 ANA H A4 1 DI F3 1 MOV B,A 47 1 MOV L,B 68 1 PUSH PSW F5 1 SUB C 91 1 ANA L A5 1 EI FB 1 MOV B,B 40 1 MOV L,C 69 1 RAL 17 1 SUB D 92 1 ANA M A6 1 HLT 76 1 MOV B,C 41 1 MOV L,D 6A 1 RAR 1F 1 SUB E 93 1 ANI D8 E6 2 IN D8 DB 2 MOV B,D 42 1 MOV L,E 6B 1 RC D8 1 SUB H 94 1 CALL adr CD 3 INR A 3C 1 MOV B,E 43 1 MOV L,H 6C 1 RET C9 1 SUB L 95 1 CC adr DC 3 INR B 04 1 MOV B,H 44 1 MOV L,L 6D 1 RIM 20 1 SUB M 96 1 CM adr FC 3 INR C 0C 1 MOV B,L 45 1 MOV L,M 6E 1 RLC 07 1 SUI D8 D6 2 CMA 2F 1 INR D 14 1 MOV B,M 46 1 MOV M,A 77 1 RM F8 1 XCHG EB 1 CMC 3F 1 INR E 1C 1 MOV C,A 4F 1 MOV M,B 70 1 RNC D0 1 XRA A AF 1 CMP A BF 1 INR H 24 1 MOV C,B 48 1 MOV M,C 71 1 RNZ C0 1 XRA B A8 1 CMP B B8 1 INR L 2C 1 MOV C,C 49 1 MOV M,D 72 1 RP F0 1 XRA C A9 1 CMP C B9 1 INR M 34 1 MOV C,D 4A 1 MOV M,E 73 1 RPE E8 1 XRA D AA 1 CMP D BA 1 INX B 03 1 MOV C,E 4B 1 MOV M,H 74 1 RPO E0 1 XRA E AB 1 CMP E BB 1 INX D 13 1 MOV C,H 4C 1 MOV M,L 75 1 RRC 0F 1 XRA H AC 1 CMP H BC 1 INX H 23 1 MOV C,L 4D 1 MVI A,D8 3E 2 RST 0 C7 1 XRA L AD 1 CMP L BD 1 INX SP 33 1 MOV C,M 4E 1 MVI B,D RST 1 CF 1 XRA M AE 1 CMP M BE 1 JC adr DA 3 MOV D,A 57 1 MVI C,D8 0E 2 RST 2 D7 1 XRI D8 EE 2 CNC adr D4 3 JM adr FA 3 MOV D,B 50 1 MVI D,D RST 3 DF 1 XTHL E3 1 72

73 Příloha B HEX x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xa xb xc xd xe xf 0x NOP LXI B,d16 STAX B INX B INR B DCR B MVI B,d8 RLC - DAD B LDAX B DCX B INR C DCR C MVI C,d8 RRC 1x - LXI D,d16 STAX D INX D INR D DCR D MVI D,d8 RAL - DAD D LDAX D DCX D INR E DCR E MVI E,d8 RAR 2x - LXI H,d16 SHLD a16 INX H INR H DCR H MVI H,d8 DAA - DAD H LHLD a16 DCX H INR L DCR L MVI L,d8 CMA 3x - LXI SP,d16 STA a16 INX SP INR M DCR M MVI M,d8 STC - DAD SP LDA a16 DCX SP INR A DCR A MVI A,d8 CMC 4x MOV B,B MOV B,C MOV B,D MOV B,E MOV B,H MOV B,L MOV B,M MOV B,A MOV C,B MOV C,C MOV C,D MOV C,E MOV C,H MOV C,L MOV C,M MOV C,A 5x MOV D,B MOV D,C MOV D,D MOV D,E MOV D,H MOV D,L MOV D,M MOV D,A MOV E,B MOV E,C MOV E,D MOV E,E MOV E,H MOV E,L MOV E,M MOV E,A 6x MOV H,B MOV H,C MOV H,D MOV H,E MOV H,H MOV H,L MOV H,M MOV H,A MOV L,B MOV L,C MOV L,D MOV L,E MOV L,H MOV L,L MOV L,M MOV L,A 7x MOV M,B MOV M,C MOV M,D MOV M,E MOV M,H MOV M,L HLT MOV M,A MOV A,B MOV A,C MOV A,D MOV A,E MOV A,H MOV A,L MOV A,M MOV A,A 8x ADD B ADD C ADD D ADD E ADD H ADD L ADD M ADD A ADC B ADC C ADC D ADC E ADC H ADC L ADC M ADC A 9x SUB B SUB C SUB D SUB E SUB H SUB L SUB M SUB A SBB B SBB C SBB D SBB E SBB H SBB L SBB M SBB A Ax ANA B ANA C ANA D ANA E ANA H ANA L ANA M ANA A XRA B XRA C XRA D XRA E XRA H XRA L XRA M XRA A Bx ORA B ORA C ORA D ORA E ORA H ORA L ORA M ORA A CMP B CMP C CMP D CMP E CMP H CMP L CMP M CMP A Cx RNZ POP B JNZ a16 JMP a16 CNZ a16 PUSH B ADI d8 RST 0 RZ RET JZ a16 X CZ a16 CALL a16 ACI d8 RST 1 Dx RNC POP D JNC a16 OUT d8 CNC a16 PUSH D SUI d8 RST 2 RC *RET JC a16 IN d8 CC a16 - SBI d8 RST 3 Ex RPO POP H JPO a16 XTHL CPO a16 PUSH H ANI d8 RST 4 RPE PCHL JPE a16 XCHG CPE a16 - XRI d8 RST 5 Fx RP POP PSW JP a16 DI CP a16 PUSH PSW ORI d8 RST 6 RM SPHL JM a16 EI CM a16 - CPI d8 RST 7 73

74 74

75 75

76 76

77 77

78 Příloha E Rozmístění signálů na konektorech Kl, K2 a K3 K1: HLDA V INT I/OW WAIT INTE A HOLD A GND A V +12V RESET A V A V A INTA A A A A9 A A A GND A CS6 A CS5 A A10 MR CS2 CS CS DB0 DB V DB2 RDYIN CSC DB DB3 DB I/OR DB7 2 TTL STSB DB MW K2: PB PB2 PB PB1 FB FB0 PB PC3 PB PC2 PC GND FC PC PC PC PC PA PA0 PA PA1 PA PA2 PA PA3 PB PB6 PB PB4 PB PB2 PB PB0 K3: 1 - MGIN 2 - GND 3 - MGOUT Pozn.: Symbol GND (ground) označuje společný vodič ( zem ) 78

79 79

80 Seznam obrázků a tabulek Obrázek 1 Blokové schéma mikropočítače PMI-80 2 Blokové schéma mikroprocesoru MHB8080A 3 Průběh signálů při nahrávání (SAVE) 4 Průběh signálů při přehrávání (LOAD) 5 Vývojový diagram operace mezi dvěma čísly 6 Vývojový diagram čítání modulo Obsluha žádosti o přerušení (interrupt) 8 Blokové schéma paralelního programovatelného stykového obvodu MHB8255A 9 Tvar řídící instrukce MHB8255A 10 Princip režimu přejímání (handshake) při výstupu dat 11 Princip režimu přejímání při vstupu dat 12 Zapojení obvodu MHB8255A v režimu 1 13 Tvar stavového slova pro režim 1 14 a) Zapojení obvodu MHB8255A v režimu 2 b) Tvar stavového slova v režimu 2 15 Příklad použití obvodu MHB8255A ve funkci řadiče pružného disku 16 Příklad použití obvodu MHB8255A (viz text) 17 Vývojový diagram Monitoru PMI Průběh dálnopisného znaku (příklad znak 2 nebo W) 19 Obvod pro obousměrnou komunikaci s dálnopisem 20 Vývojový diagram podprogramu CHROUT 21 Vývojový diagram podprogramu CHRIN 22 Časová závislost signálů tiskárny C Obecnější blokové schéma připojení C2111 k mikropočítači 24 Schéma rozhraní pro C Schéma připojení ss motorku k PMI Vývojový diagram programu pro řízení ss motorku 27 Jednoduchý Č/A převodník s operačním zesilovačem 28 Principiální schéma A/Č převodníku 80

81 29 Schéma A/Č převodníku 30 Princip A/Č převodu metodou postupné aproximace 31 Vývojový diagram programu pro A/Č převod 32 Časové průběhy signálů paměťového obvodu MHB8708 a) při čtení b) při programování 33 Schéma programátoru pamětí typu EPROM 34 Vývojový diagram programu pro obsluhu programátoru 35 a) Principiální schéma RC obvodu se spínačem b) Průběh napětí na kondenzátoru C 36 Měřící obvod s termistorem 37 Vývojový diagram měření teploty pomocí termistoru 38 Schéma měřícího obvodu s obvodem Schéma doplňku pro zlepšení přehrávání 40 Blokové schéma napájecího zdroje pro PMI Schéma napájecího zdroje 81

82 82

83 83

84 84

85 85

86 86

87 87

88 88

89 89

90 90

91 91

92 92

93 93

94 94

95 95

96 96

97 97

98 98

99 99

Obsah: strana. 1. Úvod... 5

Obsah: strana. 1. Úvod... 5 Obsah: strana 1. Úvod.......................................................................... 5.............................................. 6.................................. 7........................................................

Více

.org 00000h START: ; 0000h - RESET mvi a,08ah ; nastaveni sluzebniho 8255A. out 0FBH ; CW 8Ah => rezim 0, PA out, PB inp, PC0-3 out, PC4-7 inp nop

.org 00000h START: ; 0000h - RESET mvi a,08ah ; nastaveni sluzebniho 8255A. out 0FBH ; CW 8Ah => rezim 0, PA out, PB inp, PC0-3 out, PC4-7 inp nop Zdrojovy kod obsluzneho monitoru pocitace PMI-80 ************************************************* * (c) www.nostalcomp.cz 2014 * ************************************************* Disassembled by: DASMx

Více

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

Program Světla pro mikropočítač PMI-80 Program "Světla" pro mikropočítač PMI-80 Dokument věnovaný mikropočítači PMI-80, jeho programování a praktickým ukázkám. Verze dokumentu:. Autor: Blackhead Datum: rok 1997, 4.3.004 1 Úvod Tento program

Více

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.

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. Model procesoru Jedná se o blokové schéma složené z registrů, paměti RAM, programového čítače, instrukčního registru, sčítačky a řídicí jednotky, které jsou propojeny sběrnicemi. Tento model má dva stavy:

Více

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

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor: Západočeská univerzita v Plzni Písemná zkouška z předmětu: Zkoušející: Katedra informatiky a výpočetní techniky Počítačová technika KIV/POT Dr. Ing. Karel Dudáček Akademický rok: 2004/05 Datum: Příjmení:

Více

Ovládání tiskárny BT-100

Ovládání tiskárny BT-100 Z Archívu: Ovládač jednoihličkovej tlačiarne BT100 [8035]. Nejlevnější tiskarnou na našem trhu je tiskárna BT100. Nemá význam polemizovat o její ceně a užitných vlastnostech; je to jediná tiskárna, cenově

Více

SEKVENČNÍ LOGICKÉ OBVODY

SEKVENČNÍ LOGICKÉ OBVODY Sekvenční logický obvod je elektronický obvod složený z logických členů. Sekvenční obvod se skládá ze dvou částí kombinační a paměťové. Abychom mohli určit hodnotu výstupní proměnné, je potřeba u sekvenčních

Více

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

Přerušovací systém s prioritním řetězem Přerušovací systém s prioritním řetězem Doplňující text pro přednášky z POT Úvod Přerušovací systém mikropočítače může být koncipován několika způsoby. Jednou z možností je přerušovací systém s prioritním

Více

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í

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í 8. Rozšiřující deska Evb_IO a Evb_Motor Čas ke studiu: 2-3 hodiny Cíl Po prostudování tohoto odstavce budete něco vědět o Výklad Rozšiřující desce s dalšími paralelními porty Rozšiřující desce s motorkem

Více

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

Principy komunikace s adaptéry periferních zařízení (PZ) Principy komunikace s adaptéry periferních zařízení (PZ) Několik možností kategorizace principů komunikace s externími adaptéry, např.: 1. Podle způsobu adresace registrů, které jsou součástí adaptérů.

Více

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

Strojový kód. Instrukce počítače Strojový kód Strojový kód (Machine code) je program vyjádřený v počítači jako posloupnost instrukcí procesoru (posloupnost bajtů, resp. bitů). Z hlediska uživatele je strojový kód nesrozumitelný, z hlediska

Více

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

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus Činnost CPU Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus Hodinový cyklus CPU je synchronní obvod nutné hodiny (f CLK ) Instrukční cyklus IF = doba potřebná

Více

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

Mikrokontroléry. Doplňující text pro POS K. D. 2001 Mikrokontroléry Doplňující text pro POS K. D. 2001 Úvod Mikrokontroléry, jinak též označované jako jednočipové mikropočítače, obsahují v jediném pouzdře všechny podstatné části mikropočítače: Řadič a aritmetickou

Více

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

Seznámení s mikropočítačem. Architektura mikropočítače. Instrukce. Paměť. Čítače. Porovnání s AT89C2051 051 Seznámení s mikropočítačem Architektura mikropočítače Instrukce Paměť Čítače Porovnání s AT89C2051 Seznámení s mikropočítačem řady 8051 Mikroprocesor řady 8051 pochází z roku 1980 a je vytvořené firmou

Více

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

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14 ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 14 0:40 1.3. Vliv hardware počítače na programování Vliv

Více

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic. Základní principy konstrukce systémové sběrnice - shrnutí Shrnout základní principy konstrukce a fungování systémových sběrnic. 1 Co je to systémová sběrnice? Systémová sběrnice je prostředek sloužící

Více

Princip funkce počítače

Princip funkce počítače Princip funkce počítače Princip funkce počítače prvotní úlohou počítačů bylo zrychlit provádění matematických výpočtů první počítače kopírovaly obvyklý postup manuálního provádění výpočtů pokyny pro zpracování

Více

Periferní operace využívající přímý přístup do paměti

Periferní operace využívající přímý přístup do paměti Periferní operace využívající přímý přístup do paměti Základní pojmy Programová obsluha periferní operace řízení této činnosti procesorem. Periferní operace využívající přerušení řízení řadičem přerušení,

Více

FREESCALE TECHNOLOGY APPLICATION

FREESCALE TECHNOLOGY APPLICATION FREESCALE TECHNOLOGY APPLICATION 2013-2014 3D LED Cube Jméno: Libor Odstrčil Ročník: 4. Obor: IT Univerzita Tomáše Bati ve Zlíně, Fakulta aplikované informatiky 2 1 Konstrukce Obr. 1.: Výsledná LED kostka.

Více

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

Klimatizace. Třída: 4.C. Střední Průmyslová Škola Elektrotechnická Havířov Protokol do MIT. Skupina: 3. Zpráva číslo: 3 Střední Průmyslová Škola Elektrotechnická Havířov Protokol do MIT Třída: 4.C Skupina: 3 Klimatizace Zpráva číslo: 3 Dne: 08.01.2007 Soupis použitých přístrojů: přípravek s μc 8051 přípravek s LCD přípravek

Více

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

Struktura a architektura počítačů (BI-SAP) 7 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 7 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii

Více

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

Struktura a architektura počítačů (BI-SAP) 10 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 10 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii

Více

Komunikace modulu s procesorem SPI protokol

Komunikace modulu s procesorem SPI protokol Komunikace modulu s procesorem SPI protokol Propojení dvouřádkového LCD zobrazovače se sběrnicí SPI k procesotru (dále již jen MCU microcontroller unit) a rozložení pinů na HSES LCD modulu. Komunikace

Více

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

Profilová část maturitní zkoušky 2014/2015 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2014/2015 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 26-41-M/01 Elektrotechnika Zaměření: technika

Více

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

Řízení IO přenosů DMA řadičem Řízení IO přenosů DMA řadičem Doplňující text pro POT K. D. 2001 DMA řadič Při přímém řízení IO operací procesorem i při použití přerušovacího systému je rychlost přenosu dat mezi IO řadičem a pamětí limitována

Více

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

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC Informatika 2 Technické prostředky počítačové techniky - 2 Přednáší: doc. Ing. Jan Skrbek, Dr. - KIN Přednášky: středa 14 20 15 55 Spojení: e-mail: jan.skrbek@tul.cz 16 10 17 45 tel.: 48 535 2442 Obsah:

Více

Sekvenční logické obvody

Sekvenční logické obvody Název a adresa školy: Střední škola průmyslová a umělecká, Opava, příspěvková organizace, Praskova 399/8, Opava, 746 01 Název operačního programu: OP Vzdělávání pro konkurenceschopnost, oblast podpory

Více

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

Profilová část maturitní zkoušky 2015/2016 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2015/2016 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 26-41-M/01 Elektrotechnika Zaměření: technika

Více

Pohled do nitra mikroprocesoru Josef Horálek

Pohled do nitra mikroprocesoru Josef Horálek Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická

Více

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

Manuál přípravku FPGA University Board (FUB) Manuál přípravku FPGA University Board (FUB) Rozmístění prvků na přípravku Obr. 1: Rozmístění prvků na přípravku Na obrázku (Obr. 1) je osazený přípravek s FPGA obvodem Altera Cyclone III EP3C5E144C8 a

Více

PMI-80 jako informační panel

PMI-80 jako informační panel PMI-80 jako informační panel Tento dokument popisuje základy práce s mikropočítačem PMI- 80, jeho funkce a ve zkratce i program Běžící text. Verze dokumentu: 1.1 Autor: Blackhead Datum: 30.3.2004, 7.4.2004

Více

3. Principy komunikace s perifériemi: V/V brány, programové řízení, přerušení, řešení priorit. Řadiče, DMA kanály. Popis činnosti DMA kanálu.

3. Principy komunikace s perifériemi: V/V brány, programové řízení, přerušení, řešení priorit. Řadiče, DMA kanály. Popis činnosti DMA kanálu. 3. Principy komunikace s perifériemi: V/V brány, programové řízení, přerušení, řešení priorit. Řadiče, DMA kanály. Popis činnosti DMA kanálu. Obsah 3. Principy komunikace s perifériemi: V/V brány, programové

Více

požadovan adované velikosti a vlastností Interpretace adresy POT POT

požadovan adované velikosti a vlastností Interpretace adresy POT POT požadovan adované velikosti a vlastností K.D. - přednášky 1 Interpretace adresy Ve kterémkoliv místě lze adresu rozdělit na číslo bloku a offset uvnitř bloku. Velikost bloku je dána délkou příslušné části

Více

ASYNCHRONNÍ ČÍTAČE Použité zdroje:

ASYNCHRONNÍ ČÍTAČE Použité zdroje: ASYNCHRONNÍ ČÍTAČE Použité zdroje: Antošová, A., Davídek, V.: Číslicová technika, KOPP, České Budějovice 2007 http://www.edunet.souepl.cz www.sse-lipniknb.cz http://www.dmaster.wz.cz www.spszl.cz http://mikroelektro.utb.cz

Více

Návod k obsluze trenažéru

Návod k obsluze trenažéru Návod k obsluze trenažéru K ovládání trenažéru slouží kompaktní řídící systém, který je vybaven dvouřádkovým displejem a membránovou klávesnicí. Na klávesnici jsou klávesy : ENT + - - STOP nebo návrat

Více

Přerušení na PC. Fakulta informačních technologií VUT v Brně Ústav informatiky a výpočetní techniky. Personální počítače, technická péče cvičení

Přerušení na PC. Fakulta informačních technologií VUT v Brně Ústav informatiky a výpočetní techniky. Personální počítače, technická péče cvičení Fakulta informačních technologií VUT v Brně Ústav informatiky a výpočetní techniky Personální počítače, technická péče cvičení 5 Přerušení na PC Zadání Seznamte se s konstrukcí cvičné zásuvné adaptérové

Více

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.

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. PCKIT LPT MODUL SBĚRNICE IOBUS PRO PC LPT Příručka uživatele Střešovická 49, 162 00 Praha 6, e-mail: s o f c o n @ s o f c o n. c z tel./fax : (02) 20 61 03 48 / (02) 20 18 04 54, http :// w w w. s o f

Více

Způsoby realizace této funkce:

Způsoby realizace této funkce: KOMBINAČNÍ LOGICKÉ OBVODY U těchto obvodů je výstup určen jen výhradně kombinací vstupních veličin. Hodnoty výstupních veličin nezávisejí na předcházejícím stavu logického obvodu, což znamená, že kombinační

Více

3. D/A a A/D převodníky

3. D/A a A/D převodníky 3. D/A a A/D převodníky 3.1 D/A převodníky Digitálně/analogové (D/A) převodníky slouží k převodu číslicově vyjádřené hodnoty (např. v úrovních TTL) ve dvojkové soustavě na hodnotu nějaké analogové veličiny.

Více

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

Použití programovatelného čítače 8253 Použití programovatelného čítače 8253 Zadání 1) Připojte obvod programovatelný čítač- časovač 8253 k mikropočítači 89C52. Pro čtení bude obvod mapován do prostoru vnější programové (CODE) i datové (XDATA)

Více

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

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC Informační systémy 2 Obsah: Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC ROM RAM Paměti typu CACHE IS2-4 1 Dnešní info: Informační systémy 2 03 Informační systémy

Více

Přerušení POT POT. Přerušovací systém. Přerušovací systém. skok do obslužného programu. vykonávaný program. asynchronní událost. obslužný.

Přerušení POT POT. Přerušovací systém. Přerušovací systém. skok do obslužného programu. vykonávaný program. asynchronní událost. obslužný. 1 Přerušení Při výskytu určité události procesor přeruší vykonávání hlavního programu a začne vykonávat obslužnou proceduru pro danou událost. Po dokončení obslužné procedury pokračuje výpočet hlavního

Více

zení Koncepce připojení V/V zařízení POT POT ... V/V zařízení jsou připojena na sběrnici pomocí řadičů. Řadiče Připojení periferních zařízení

zení Koncepce připojení V/V zařízení POT POT ... V/V zařízení jsou připojena na sběrnici pomocí řadičů. Řadiče Připojení periferních zařízení Připojení periferních zařízen zení 1 Koncepce připojení V/V zařízení V/V zařízení jsou připojena na sběrnici pomocí řadičů. Řadiče specializované (řadič disku) lze k nim připojit jen zařízení určitého

Více

Čísla, reprezentace, zjednodušené výpočty

Čísla, reprezentace, zjednodušené výpočty Čísla, reprezentace, zjednodušené výpočty Přednáška 5 A3B38MMP kat. měření, ČVUT - FEL, Praha J. Fischer A3B38MMP, 2015, J.Fischer, ČVUT - FEL, kat. měření 1 Čísla 4 bitová dec bin. hex. 0 0000 0 1 0001

Více

18A - PRINCIPY ČÍSLICOVÝCH MĚŘICÍCH PŘÍSTROJŮ Voltmetry, A/D převodníky - principy, vlastnosti, Kmitoměry, čítače, fázoměry, Q- metry

18A - PRINCIPY ČÍSLICOVÝCH MĚŘICÍCH PŘÍSTROJŮ Voltmetry, A/D převodníky - principy, vlastnosti, Kmitoměry, čítače, fázoměry, Q- metry 18A - PRINCIPY ČÍSLICOVÝCH MĚŘICÍCH PŘÍSTROJŮ Voltmetry, A/D převodníky - principy, vlastnosti, Kmitoměry, čítače, fázoměry, Q- metry Digitální voltmetry Základním obvodem digitálních voltmetrů je A/D

Více

Systém adresace paměti

Systém adresace paměti Systém adresace paměti Základní pojmy Adresa fyzická - adresa, která je přenesena na adresní sběrnici a fyzicky adresuje hlavní paměť logická - adresa, kterou má k dispozici proces k adresaci přiděleného

Více

Počítač jako prostředek řízení. Struktura a organizace počítače

Počítač jako prostředek řízení. Struktura a organizace počítače Řídicí počítače - pro řízení technologických procesů. Specielní přídavná zařízení - I/O, přerušovací systém, reálný čas, Č/A a A/Č převodníky a j. s obsluhou - operátorské periferie bez obsluhy - operátorský

Více

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

Laboratorní cvičení z předmětu Elektrická měření 2. ročník KMT MĚŘENÍ S LOGICKÝM ANALYZÁTOREM Jména: Jiří Paar, Zdeněk Nepraš Datum: 2. 1. 2008 Pracovní skupina: 4 Úkol: 1. Seznamte se s ovládáním logického analyzátoru M611 2. Dle postupu měření zapojte pracoviště

Více

Systém řízení sběrnice

Systém řízení sběrnice Systém řízení sběrnice Sběrnice je komunikační cesta, která spojuje dvě či více zařízení. V určitý okamžik je možné aby pouze jedno z připojených zařízení vložilo na sběrnici data. Vložená data pak mohou

Více

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

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 ělení pamětí Volatilní paměti Nevolatilní paměti Počítačové systémy Vnitřní paměti Miroslav Flídr Počítačové systémy LS 2006-1/11- Západočeská univerzita v Plzni ělení pamětí Volatilní paměti Nevolatilní

Více

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

Paměti. Paměť je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje Paměti Paměť je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje Paměti počítače lze rozdělit do tří základních skupin: registry paměťová místa na čipu procesoru jsou používány

Více

Koncepce DMA POT POT. Při vstupu nebo výstupu dat se opakují jednoduché činnosti. Jednotlivé kroky lze realizovat pomocí speciálního HW.

Koncepce DMA POT POT. Při vstupu nebo výstupu dat se opakují jednoduché činnosti. Jednotlivé kroky lze realizovat pomocí speciálního HW. p 1 Koncepce DMA Při vstupu nebo výstupu dat se opakují jednoduché činnosti. Jednotlivé kroky lze realizovat pomocí speciálního HW. Čekání na připravenost V/V Přenos paměť V/V nebo V/V paměť Posun pointeru

Více

Programování PICAXE18M2 v Assembleru

Programování PICAXE18M2 v Assembleru Nastavení programming editoru PICAXE PROGRAMMING EDITOR 6 Programování PICAXE18M2 v Assembleru Nastavit PICAXE Type PICAXE 18M2(WJEC-ASSEMBLER, stejně tak nastavit Simulation Pokud tam není, otevřeme přes

Více

Praktické měřící rozsahy 50-4000, 50-8000, 50-16000 50-32000, 50-64000 ot/min Přesnost měření 0.02%

Praktické měřící rozsahy 50-4000, 50-8000, 50-16000 50-32000, 50-64000 ot/min Přesnost měření 0.02% Číslicový otáčkoměr TD 5.2A varianta pro napojení na řídící systém SIMATIC zakázka Vítkovice - neplatí kapitola o programování, tento typ nelze programovat ani z klávesnice ani po seriové lince z PC. Určení

Více

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

MSP 430F1611. Jiří Kašpar. Charakteristika MSP 430F1611 Charakteristika Mikroprocesor MSP430F1611 je 16 bitový, RISC struktura s von-neumannovou architekturou. Na mikroprocesor má neuvěřitelně velkou RAM paměť 10KB, 48KB + 256B FLASH paměť. Takže

Více

Čísla, reprezentace, zjednodušené výpočty

Čísla, reprezentace, zjednodušené výpočty Čísla, reprezentace, zjednodušené výpočty Přednáška 4 A3B38MMP kat. měření, ČVUT - FEL, Praha J. Fischer A3B38MMP, 2014, J.Fischer, ČVUT - FEL, kat. měření 1 Čísla 4 bitová dec bin. hex. 0 0000 0 1 0001

Více

1 z 16 11.5.2009 11:33 Test: "CIT_04_SLO_30z50" Otázka č. 1 U Mooreova automatu závisí okamžitý výstup Odpověď A: na okamžitém stavu pamětí Odpověď B: na minulém stavu pamětí Odpověď C: na okamžitém stavu

Více

Dekódování adres a návrh paměťového systému

Dekódování adres a návrh paměťového systému Dekódování adres a návrh paměťového systému K.D. 2004 Tento text je určen k doplnění přednášek z předmětu POT. Je zaměřen jen na některé body probírané na přednáškách bez snahy o úplné vysvětlení celé

Více

SIC1602A20. Komunikační protokol

SIC1602A20. Komunikační protokol SIC1602A20 Komunikační protokol SIC1602A20 Mechanické parametry Rozměr displeje 80 x 36 mm Montážní otvory 75 x 31 mm, průměr 2.5mm Distanční sloupky s vnitřním závitem M2.5, možno využít 4mm hloubky Konektor

Více

Ganitor. Monitorovací a řídicí I/O moduly pro systém C dubna 2011 w w w. p a p o u c h. c o m v.1.2

Ganitor. Monitorovací a řídicí I/O moduly pro systém C dubna 2011 w w w. p a p o u c h. c o m v.1.2 Monitorovací a řídicí I/O moduly pro systém C4 27. dubna 2011 w w w. p a p o u c h. c o m v.1.2 G anitor Katalogový list Vytvořen: 3.11.2008 Poslední aktualizace: 27.4 2011 13:46 Počet stran: 12 2011 Adresa:

Více

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

Technická kybernetika. Obsah. Klopné obvody: Použití klopných obvodů. Sekvenční funkční diagramy. Programovatelné logické automaty. Akademický rok 2016/2017 Připravil: adim Farana Technická kybernetika Klopné obvody, sekvenční funkční diagramy, programovatelné logické automaty 2 Obsah Klopné obvody:. D. JK. Použití klopných obvodů.

Více

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

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ. MEIII Paměti konstant Projekt: ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ Téma: MEIII - 1.5 Paměti konstant Obor: Mechanik elektronik Ročník: 3. Zpracoval(a): Jiří Kolář Střední průmyslová škola Uherský Brod, 2010 Projekt je spolufinancován

Více

BASPELIN CPM. Popis komunikačního protokolu verze EQ22 CPM EQ22 KOMPR

BASPELIN CPM. Popis komunikačního protokolu verze EQ22 CPM EQ22 KOMPR BASPELIN CPM Popis komunikačního protokolu verze EQ22 CPM EQ22 KOMPR říjen 2007 EQ22 CPM Obsah 1. Přehled příkazů 2 2. Popis příkazů 3 3. Časování přenosu 8 4. Připojení regulátorů na vedení 10 1. Přehled

Více

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

Struktura a architektura počítačů (BI-SAP) 9 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 9 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii

Více

Logické řízení s logickým modulem LOGO!

Logické řízení s logickým modulem LOGO! Logické řízení s logickým modulem LOGO! Cíl: Seznámit se s programováním jednoduchého programovatelného automatu (logického modulu) LOGO! a vyzkoušet jeho funkčnost na konkrétních zapojeních. Úkol: 1)

Více

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Přednáška Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského

Více

Návrh ovládání zdroje ATX

Návrh ovládání zdroje ATX Návrh ovládání zdroje ATX Zapínání a vypínání PC zdroj ATX se zapíná spojením řídicího signálu \PS_ON se zemí zapnutí PC stiskem tlačítka POWER vypnutí PC (hardwarové) stiskem tlačítka POWER a jeho podržením

Více

Číslicový zobrazovač CZ 5.7

Číslicový zobrazovač CZ 5.7 Určení - Číslicový zobrazovač CZ 5.7 pro zobrazování libovolné veličiny, kterou lze převést na elektrický signál, přednostně 4 až 20 ma. Zobrazovaná veličina může být až čtyřmístná, s libovolnou polohou

Více

Mikropočítačová vstupně/výstupní jednotka pro řízení tepelných modelů. Zdeněk Oborný

Mikropočítačová vstupně/výstupní jednotka pro řízení tepelných modelů. Zdeněk Oborný Mikropočítačová vstupně/výstupní jednotka pro řízení tepelných modelů Zdeněk Oborný Freescale 2013 1. Obecné vlastnosti Cílem bylo vytvořit zařízení, které by sloužilo jako modernizovaná náhrada stávající

Více

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy VÝUKOVÝ MATERIÁL Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková

Více

Sběrnicová architektura POT POT. Jednotlivé subsystémy počítače jsou propojeny sběrnicí, po které se přenáší data oběma směry.

Sběrnicová architektura POT POT. Jednotlivé subsystémy počítače jsou propojeny sběrnicí, po které se přenáší data oběma směry. Systémov mová sběrnice 1 Sběrnicová architektura Jednotlivé subsystémy počítače jsou propojeny sběrnicí, po které se přenáší data oběma směry. Single master jeden procesor na sběrnici, Multi master více

Více

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 6

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 6 UNIVERZITA TOMÁŠE BATI VE ZLÍNĚ FAKULTA APLIKOVANÉ INFORMATIKY PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 6 Práce s analogově digitálním převodníkem Jan Dolinay Petr Dostálek Zlín 2013 Tento studijní materiál

Více

Témata profilové maturitní zkoušky

Témata profilové maturitní zkoušky Střední průmyslová škola elektrotechniky, informatiky a řemesel, Frenštát pod Radhoštěm, příspěvková organizace Témata profilové maturitní zkoušky Obor: Elektrotechnika Třída: E4A Školní rok: 2010/2011

Více

3. Počítačové systémy

3. Počítačové systémy 3. Počítačové systémy 3.1. Spolupráce s počítačem a řešení úloh 1. přímý přístup uživatele - neekonomické. Interakce při odlaďování programů (spusť., zastav.,krok, diagnostika) 2. dávkové zpracování (batch

Více

Paměti a jejich organizace

Paměti a jejich organizace Kapitola 5 Paměti a jejich organizace 5.1 Vnitřní a vnější paměti, vlastnosti jednotlivých typů Vnější paměti Jsou umístěny mimo základní jednotku. Lze je zařadit mezi periferní zařízení. Zápis a čtení

Více

1. GPIB komunikace s přístroji M1T330, M1T380 a BM595

1. GPIB komunikace s přístroji M1T330, M1T380 a BM595 1. GPIB komunikace s přístroji M1T330, M1T380 a BM595 Přístroje se programují a ovládají tak, že se do nich z řídícího počítače pošle řetězec, který obsahuje příslušné pokyny. Ke každému programovatelnému

Více

Vstupně - výstupní moduly

Vstupně - výstupní moduly Vstupně - výstupní moduly Přídavná zařízení sloužící ke vstupu a výstupu dat bo k uchovávání a archivaci dat Nejsou připojována ke sběrnici přímo, ale prostřednictvím vstupně-výstupních modulů ( ů ). Hlavní

Více

Komunikace procesoru s okolím

Komunikace procesoru s okolím Komunikace procesoru s okolím Obvody umožňující komunikaci procesoru s okolím, zahrnujeme do tzv. podpůrných obvodů, které jsou součástí čipové sady základní desky. Ke komunikaci s okolím procesor používá

Více

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

Obsluha periferních operací, přerušení a jeho obsluha, vybavení systémových sběrnic Obsluha periferních operací, přerušení a jeho obsluha, vybavení systémových sběrnic 1 Cíl přednášky Zabývat se principy využití principů přerušení. Popsat, jak se tyto principy odrazily v konstrukci systémových

Více

2.9 Čítače. 2.9.1 Úkol měření:

2.9 Čítače. 2.9.1 Úkol měření: 2.9 Čítače 2.9.1 Úkol měření: 1. Zapište si použité přístroje 2. Ověřte časový diagram asynchronního binárního čítače 7493 3. Ověřte zkrácení početního cyklu čítače 7493 4. Zapojte binární čítač ve funkci

Více

BASPELIN CPM. Popis komunikačního protokolu verze EQ3 CPM EQ3 KOMPR

BASPELIN CPM. Popis komunikačního protokolu verze EQ3 CPM EQ3 KOMPR BASPELIN CPM Popis komunikačního protokolu verze EQ3 CPM EQ3 KOMPR říjen 2007 EQ3 CPM Obsah 1. Přehled příkazů 2 2. Popis příkazů 3 3. Časování přenosu 10 4. Připojení regulátorů na vedení 11 1. Přehled

Více

Uživatelská příručka

Uživatelská příručka Rele Control Elektronické ovládání výstupů Uživatelská příručka ver. 1.36 (09/02/2006) revize 07.10.2006 HW PROGRESS Milan Jaroš OBSAH: 1 Seznámení... 3 1.1 Určení... 3 1.2 Základní údaje... 3 1.3 Složení

Více

Architektura počítačů

Architektura počítačů Architektura počítačů Studijní materiál pro předmět Architektury počítačů Ing. Petr Olivka katedra informatiky FEI VŠB-TU Ostrava email: petr.olivka@vsb.cz Ostrava, 2010 1 1 Architektura počítačů Pojem

Více

Title: IX 6 11:27 (1 of 6)

Title: IX 6 11:27 (1 of 6) PŘEVODNÍKY ANALOGOVÝCH A ČÍSLICOVÝCH SIGNÁLŮ Převodníky umožňující transformaci číslicově vyjádřené informace na analogové napětí a naopak zaujímají v řídícím systému klíčové postavení. Značná část měřených

Více

... sekvenční výstupy. Obr. 1: Obecné schéma stavového automatu

... sekvenční výstupy. Obr. 1: Obecné schéma stavového automatu Předmět Ústav Úloha č. 10 BDIO - Digitální obvody Ústav mikroelektroniky Komplexní příklad - návrh řídicí logiky pro jednoduchý nápojový automat, kombinační + sekvenční logika (stavové automaty) Student

Více

2-LC: ČÍSLICOVÉ OBVODY

2-LC: ČÍSLICOVÉ OBVODY 2-LC: ČÍSLICOVÉ OBVODY Cíl měření: Ověření základních vlastností číslicových integrovaných obvodů. 1) čítač (asynchronní, synchronní) 2) multiplexer a demultiplexer 3) mikroprocesor ( S 2441, str. 155)

Více

5. A/Č převodník s postupnou aproximací

5. A/Č převodník s postupnou aproximací 5. A/Č převodník s postupnou aproximací Otázky k úloze domácí příprava a) Máte sebou USB flash-disc? b) Z jakých obvodů se v principu skládá převodník s postupnou aproximací? c) Proč je v zapojení použit

Více

Architektury počítačů a procesorů

Architektury počítačů a procesorů Kapitola 3 Architektury počítačů a procesorů 3.1 Von Neumannova (a harvardská) architektura Von Neumann 1. počítač se skládá z funkčních jednotek - paměť, řadič, aritmetická jednotka, vstupní a výstupní

Více

Registry a čítače část 2

Registry a čítače část 2 Registry a čítače část 2 Vypracoval SOU Ohradní Vladimír Jelínek Aktualizace září 2012 Úvod Registry a čítače jsou častým stavebním blokem v číslicových systémech. Jsou založeny na funkci synchronních

Více

PROGRAMOVATELNÉ LOGICKÉ OBVODY

PROGRAMOVATELNÉ LOGICKÉ OBVODY PROGRAMOVATELNÉ LOGICKÉ OBVODY (PROGRAMMABLE LOGIC DEVICE PLD) Programovatelné logické obvody jsou číslicové obvody, jejichž logická funkce může být programována uživatelem. Výhody: snížení počtu integrovaných

Více

USB2RS232. Převodník pro připojení USB klávesnice a několika kontaktů přes RS232. Komunikace jednoduchým protokolem

USB2RS232. Převodník pro připojení USB klávesnice a několika kontaktů přes RS232. Komunikace jednoduchým protokolem Převodník pro připojení USB klávesnice a několika kontaktů přes RS232 Komunikace jednoduchým protokolem 1. září 2016 w w w. p a p o u c h. c o m USB2RS232 Katalogový list Vytvořen: 1.9.2016 Poslední aktualizace:

Více

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií Autor: Tomáš Válek, xvalek02@stud.fit.vutbr.cz Login: xvalek02 Datum: 21.listopadu 2012 Obsah 1 Úvod do rozhraní I 2 C (IIC) 1 2 Popis funkčnosti

Více

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

Paměťový podsystém počítače Paměťový podsystém počítače typy pamětových systémů počítače virtuální paměť stránkování segmentace rychlá vyrovnávací paměť 30.1.2013 O. Novák: CIE6 1 Organizace paměťového systému počítače Paměťová hierarchie...

Více

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT Škola Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Název sady Téma Anotace Autor Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram CZ.1.07/1.5.00/34.0556

Více

Procesor z pohledu programátora

Procesor z pohledu programátora Procesor z pohledu programátora Terminologie Procesor (CPU) = řadič + ALU. Mikroprocesor = procesor vyrobený monolitickou technologií na čipu. Mikropočítač = počítač postavený na bázi mikroprocesoru. Mikrokontrolér

Více

Analyzátor sériového rozhraní RSA1B

Analyzátor sériového rozhraní RSA1B Simulační systémy Řídicí systémy Zpracování a přenos dat Analyzátor sériového rozhraní RSA1B Návod k použití TM 07-02-08 OSC, a. s. tel: +420 541 643 111 Staňkova 557/18a fax: +420 541 643 109 602 00 Brno

Více

Registrový model HDD

Registrový model HDD Registrový model HDD Charakteristika Pevný disk IDE v sestavě personálního počítače sestává z disku a jeho řadiče tyto dvě komponenty tvoří jeden mechanický celek. Procesor komunikuje s řadičem přes registry

Více

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů). Strojový kód k d a asembler procesoru MIPS Použit ití simulátoru SPIM K.D. - cvičení ÚPA 1 MIPS - prostředí 32 ks 32bitových registrů ( adresa registru = 5 bitů). Registr $0 je zero čte se jako 0x0, zápis

Více

2.4 Cykly 2. ZÁKLADY JAZYKA C

2.4 Cykly 2. ZÁKLADY JAZYKA C Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího

Více