MCS-51-es MIKROKONTROLLER ÖSSZEFOGLALÓ KÉSZÍTETTE: DR. KÓNYA LÁSZLÓ Tartalomjegyzék
|
|
- Gergely Csonka
- 9 évvel ezelőtt
- Látták:
Átírás
1 1 2 ELEKTRONIKA SZAKCSOPORT BUDAPESTI MŰSZAKI FŐISKOLA KANDÓ KÁLMÁN VILLAMOSMÉRNÖKI KARA AUTOMATIKA INTÉZET Oktatási segédlet 2000 MCS-51-es MIKROKONTROLLER MCS-51-es MIKROKONTROLLER ÖSSZEFOGLALÓ KÉSZÍTETTE: DR. KÓNYA LÁSZLÓ Tartalomjegyzék 1. Az MCS-51-es mikrokontroller család felépítése, ismertetése A 8051 mikrokontroller család utasításkészlete Az MCS-51-es család mikrokontrollereivel épített mikrogépek programozása Szimulátor program az 51/52 mikrokontrollerekhez (SIMULA5X) es programok fejlesztése PC-n A 8051 mikrokontrolleres gyakorló Az MCS-51-es mikrokontroller család felépítése, ismertetése 1.1 Mi a mikrokontroller? A nagyon gyorsan fejlődő integrálási technológia azt eredményezte, hogy egyre több tranzisztor-funkció került egy lapkára (chip-be). Eleinte csak a mikroprocesszorok teljesítőképességét növelték. Ezzel párhuzamosan keresték annak a lehetőségét is, hogy az egy lapkára integrált funkciók számát növeljék. A cél az volt, hogy az egyedi periféria IC-ket is a processzor lapkára vigyék be, s ezzel egyszerűbbé váljon az áramkörépítés. Az Intel cég 1975-ben állította elő az első mikrokontrollert, a 8048-t. Erre a kontrollerre alapozva 1980-ban vitte a piacra az Intel a 8051 típust. Ezt a mikrokontrollert világszerte felhasználták. Napjainkban számos gyártó - részegységeit továbbfejlesztve - kínálja a különböző változatait. Természetesen más félvezetőgyártók is kínálnak mikrokontroller családot, ennek ellenére a 8051-es család bővül. Ebben az összeállításban csak a 8051 mikrokontrollert ismertetjük részletesen. 1.2 A mikrokontroller és a mikroprocesszor közötti különbség A mikrokontroller nem más, mint egy "csökkentett tudású" mikroprocesszor és periféria áramkörök egyetlen közös egységbe integrálva. Ma már az összes periféria-funkciót beintegrálják egy mikrokontroller IC-be. A legismertebb mikrokontrollerbe - a az alábbi funkciók vannak beépítve: két 16 bites időzítő/számláló, négy 8 bites párhuzamos port, 128 bájt RAM, 4 Kbájt programtároló (ROM), ( a 8031 típusban nincs ) soros vonali illesztő. 1.3 A mikrokontroller alkalmazási területe A mikrokontrollerek ára, a nagyon sok funkció ellenére sem magas. Azzal mindvégig tisztában kell lennünk, hogy a mikrokontroller számítási képessége elmarad a mikroprocesszorokétól. A hardver kialakítás sem olyan rugalmas, mint a mikroprocesszorokkal. Nincs is erre szükség. A mikrokontrollerek klasszikus alkalmazási területe a vezérlés. Nagyon kevés külső áramkörrel - mint pl. programtárolóként használt EPROM, vagy néhány meghajtó tranzisztor - egyetlen kártyán, vagy más kivitelben - alakítható ki a teljes mikrogép. További felhasználási területük a szórakoztatóelektronika (képmagnók, televíziók). Ezekben a különböző adókra történő rugalmas átprogramozást biztosiíja. A gyártónak csak egyszer kell a programot kifejleszteni a vezérelt készülékhez. 1.4 A 8051/8031 típusú mikrokontroller hardver kialakítása. A mikrokontroller egy mikroprocesszor műveletvégző egységéből és periféria részekből áll. A periféria funkciókkal a továbbiakban részletesen foglalkozunk. A 8051-es mikrokontroller család továbbfejlesztett tagjai (pl. 8052/32, 80515/535, 80517/537, 80C552 stb.) felülről kompatibilisek a 8051/31 alaptípussal. Ez azt jelenti, hogy az alapegységek mindegyik változatban azonosak, az eltérések a bővített funkciókban találhatók. Utasításkészlete viszont a család minden tagjának azonos. Ebből fakad, hogy az alaptípus felépítésének, programozásának alapos ismerete a további változatok alkalmazására is - kevés bővítő ismeret megszerzése után - képessé teszi a felhasználót. A 8051 típusú mikrokrontroller funkcionális blokk-sémája látható az 1.ábrán Órajel-egység ( oszcillátor) A 8051 mikrokontrollerben - a legtöbb mikroprocesszorhoz hasonlóan - belső órajel-egysége van. Az áramkör egy invertáló erösítő, amelynek a be-, és a kimenete az XTAL1 és az XTAL2 lábakhoz csatlakozik ( 19 és 18-as lábak ). A felhasználáshoz szükséges órajel frekvenciát a csatlakoztatott külső áramköri elemek határozzák meg. Rendszerint erre a célra kvarcot, vagy kerámia-rezonátort használhatunk. 80C51 Blokk Diagram MHz C1 30p Q C2 30p VCC 10u C3 R1 10K External Interrupts Interrupt Control CPU OSC IC GND-20 Vcc EA/VP P P X1 P P P X2 P P P RESET P P INT0 P INT1 P T0 P T1 P P P1.0/T2 P P1.1/T2X 4 P1.2 RD 17 5 P1.3 WR 16 6 P1.4 PSEN 29 7 P1.5 ALE/P 30 8 P1.6 TXD 11 P1.7 RXD 10 Áramköri bekötés 4k byte ROM Bus Control 128 byte RAM I/O Ports P0 P2 P1 (Address / Data) P3 Timer 1 Timer 0 Serial Port Counter Inputs 8031/32 ROM nélküli típusok SECONDARY FUNCTIONS RxD TxD INT0 INT1 T0 T1 WR RD P O R T 3 1. ábra TXD VSS XTAL1 VCC RST P0.7 XTAL2 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 EA PSEN P1.7 P1.6 ALE P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P Belső memóriák P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 RXD Funkcionális vázlat P O R T 0 P O R T 1 P O R T 2 SECONDARY FUNCTIONS ADDRESS AND DATA BUS A 8051 mikrokontroller család minden tagjában van belső adatmemória ( RAM ), illetve egyes típusokban belső programmemória ( ROM/EPROM ) is található. ADDRESS BUS
2 Belső adatmemória A 8051 típusú mikrokontroller belső RAM-ja két 128 bájtos területet az operatív memóriát, és ( 00H - 7FH címterület ), és az un. Speciális-Funkció-Regiszter (SFR) memóriát ( 80H - FFH címterület ) tartalmazza ( 2. ábra ). Az operativ memória további három részre tagolódik. Ezek: négy 8 bájtos Regiszter Bank ( BANK0, BANK1, BANK2, BANK3 ), bájtos bit-címezhető memória, bájt általános felhasználású memória. FFH 7FH 30H 1 FH 00H Á lt. felh a sz - nálásu m e m ó r ia B it cim - z é s ü m e m. B a n k 3 B a n k 2 B a n k 1 B a n k 0 2. ábra 2FH 20H SFR regiszterek A Bank-ok közül mindig egy lehet aktív. Az aktív Bank regisztereihez rendeltek az R0, R1... R7 regiszter elnevezések ( szimbólumok ). Ezek az un. munkaregiszterek, amelyek közül az R0, R1 indirekt címzéshez, míg a többi egyéb funkciókra pl. ciklusszámlálás használhatók. A másik három bank memóriahelyei abszolút címzéssel elérhetők, és például adattárolásra használhatók. Az aktuális Bank kiválasztása szoftverből történhet a PSW ( Program Status Word ) regiszter RS1 (PSW.4) és RS0 (PSW.3) bitjeinek megfelelő beállításával. ( A két bitből alkotott bináris szám a kiválasztandó Bank sorszáma. ) Hardver Reset illetve bekapcsoláskor a Bank 0 a kiválasztott. A bit címezhető memória 16 bájtja elérhető bájtos címzéssel is, de a memóriaterület 128 bitje ( 16*8 ) bites változóként külön-külön írható/olvasható, illetve használható bitműveletek változóiként. A bitek címzése kétféle, mégpedig bájtcím. bit sorszám pl a 21Hcímű bájt 5-ös sorszámú ( hatodik ) bitje, abszolút címzéssel a 00H - 7FH címtartományban. A 00H a 20.0, vagyis a 20H című bájt legkisebb helyiértékű bitje, míg a 7FH a 2F.7 vagyis a terület legutolsó bájtjának a legnagyobb helyiértékű bitje. pl. az 53H című bit 2AH című bájt 3-as sorszámú bitje ( 2A.3 ). 80H Az általános felhasználású memóriaterület csak bájtos szervezésű. Az operatív memória teljes területe direkt ( közvetlen címmel ) vagy indirekt címzéssel ( cím az aktuális Bank R0, vagy R1 regiszterében van ) érhető el. A belső adatmemória 80H - FFH címterületén találhatók az un. Speciális Funkció Regiszterek ( SFR ). Itt találhatók a CPU regiszterek ( ACC, B, PSW, SP ), címző regiszterek ( PC, DPTR ), a portok regiszterei ( P0, P1, P2, P3 ), a belső perifériák ( időzítők: TMOD, TCON, TH0, TL0,TH1, TL1, soros vonal: SCON, SBUF, megszakítás: IP, IE ) regiszterei. Az SFR regiszterek csak direkt címzéssel írhatók/olvashatók. Ezen regiszterek között vannak olyanok, amelyek bitjei is külön-külön kezelhetők. Ezek abszolút címtartománya a 80H- FFH értékeket öleli fel. Ezek a bitek is ugyanúgy kétféle módon címezhetőek, mint az előzőekben leírt alsó 128 bit. Az SFR-ek elnevezései, címei és funkciójuk összefoglalva látható a táblázatban, ahol a *-al jelöltek a bitenként is címezhető regisztereket. A 8051/31 mikrokontroller SFR regiszterei Szimbólum Jelentés Cím (Hex) *P0 Port 0 80 SP Stack-Pointer 81 DPL Data-Pointer: LOW bájt 82 DPH Data-Pointer: HIGH bájt 83 *TCON Időzítő/Számláló vezérlő regiszter 88 TMOD Időzítő/Számláló mód-regiszter 89 TL0 0-ás Időzítő/Számláló: LOW bájt 8A TL1 1-es Időzítő/Számláló: LOW bájt 8B TH0 0-ás Időzítő/Számláló: HIGH bájt 8C TH1 1-es Időzítő/Számláló: HIGH bájt 8D *P1 Port 1 90 PCON Power vezérlő regiszter 97 *SCON Soros Port vezérlő regiszter 98 SBUF Soros port buffer 99 *P2 Port 2 0A0 IE Megszakítás engedélyező regiszter 0A8 *P3 Port 3 0B0 *IP Megszakítás prioritás regiszter 0C8 *PSW Programstátusz regiszter 0D0 *ACC Akkumulátor 0E0 *B B regiszter 0F0 A címterületen szándékosan hagytak lyukakat a későbbiekben fejlesztett változatok - mint pl vagy a további regisztereinek az egységes keretbe illesztése céljából. A mikrokontroller SFR regisztereibe a RESET jel hatására meghatározott alapérték íródik. Ezeket a katalógusok pontosan megadják. A felhasználás során ezt figyelembe kell venni Belső programmemória ( ROM/EPROM ) A belső programtároló (ROM/EPROM) - ha van, akkor - 4 kbájt kapacitású. A két különböző változat: a 8051 típus, amelyben van ROM, a 8031 típusjelű pedig ROM nélküli kialakítású. A ROM-ba a programot a gyártás során maszkolják és azt a későbbiekben már nem lehet megváltoztatni. Előnye a maszkprogramozásnak, hogy részben esetleg teljesen elhagyható a külső programmemória. Azonban a feladathoz illesztett maszk fejlesztése drága. Ezért e változat alkalmazása csak nagy darabszám esetén kifizetődő (pl.videómagnókban). A 8051 használható a 8031-nek megfelelően is. A belső programtároló az EA jelü bemenetre (31 láb) adott vezérléssel be-, vagy kiiktatható. A lábra adott magas (HIGH) szintű jel esetében a mikrokontroller az utasításokat a belső programtárból hívja, ameddig a programkódok száma kevesebb, mint 4096 (4 kbájt). Az e feletti kódokat pedig már a külső memóriából veszi. Alacsony (LOW) szintű vezérlésnél - minden esetben - a külső programmemóriát használja. A 8031 típusnál ezt a lábat mindig alacsony szintre kell kötni, mivel nincs belső programtárja. A család egy megkülönböztetett változata a 8751 típusjelű. ( Ehhez hasonlóan kapható a 8752 típus is. ) E típusokba nem ROM-ot, hanem EPROM-ot integrálnak. A program fejlesztésnél a tesztelés és esetleges módosítás lehetőségét biztosítja az EPROM. A végleges maszk elkészítése előtt, az esetleges programhibánál az EPROM törölhető és újra írható. Igy csak a valóban helyes program kerül maszkolásra a gyártásban Belső időviszonyok A CPU regiszterei A belső oszcillátor kimenete, illetve a bevezetett órajel egy belső ütemgenerátort hajt meg. Ez állítja elő a szükséges belső ütemező jelet, amelynek frekvenciája mindenkori órajel frekvencia fele. A belső jel ütemezi a műveleteket. A 8051/8031 típusoknál minden gépi-ciklus hat ütemű, melyeket S1-től S6-ig jelölünk. Mindegyik ütem két oszcillátor periódusból - P1 és P2 - áll. Minden gépi-ciklus P tehát 12 órajel-periódusból áll, vagyis az S1P1-el kezdődik és az S6P2-vel fejeződik be. A gépi ciklus periódusideje (P) a következő összefüggés alapján számolható ki: P = 12/f
3 Az f-t 1/s - ban helyettesítve a P periódusidőt sec-ban, illetve mikrosec-ben kapjuk. Például ha egy kontrollert 8 MHz-es órajellel működtetünk, akkor P = 12/8*10 6 s = 1,5 µs hosszú lesz egy gépi ciklus. A ciklusidő ismeretében egy adott program futási ideje is kiszámolható. A 8051/8031 kontrollerek utasításai 1-3 bájt hosszúak és végrehajtásuk egy vagy két ciklus alatt történik. Kivétel a szorzás (MUL), illetve az osztás (DIV), melyeket a mikrokontroller 4 ciklus alatt hajt végre. 5 üzemmódját, leállítását, indítását, és tartalmának módosítását két SFR - a TMOD (timer-mod ) és a TCON ( timercontrol ) - regiszterrel lehet beállítani. A TMOD csak bájtosan írható/olvasható, míg a TCON bitjei egyedenként is elérhetőek. E regiszterek bitjeinek szimbólumait és funkcióit foglaltuk össze a táblázatokban. A Timer-Control-regiszter (TCON) bitjei és funkcióik Bájtcím: 88H Abszolut bit-címek: 88H - 8FH 6 Verem mutató (Stack-Pointer) A Stack-Pointer funkciója a mikrokontrollerekben is hasonló, mint a mikroprocesszorokban. A RESET jel után az SP-be 07H érték íródik. Tehát a verem-terület a 08H - nál a BANK1-nél kezdődik. Ugyanakkor adott a lehetőség arra, hogy a verem mutatót egy tetszőleges értékkel töltsük fel. A verem a 256 bájtos belső RAM-terület tetszőleges helyén kijelölhető. A verembe író műveleteknél az SP tartalma inkrementálódik. Ez azt jelenti, hogy a verem-memória a kezdő címtől növekvő című területet foglal el. A program állapot szó (Program-Status-Word (PSW)) A PSW-ben különböző jelzőbitek ( flag-ek ) vannak, amelyek többek között meghatározott programugrások feltételei lehetnek. A Program-Status-Word regiszter (PSW) bitjei, és funkcióik Bájt-cím: 0D0H Abszolut bit-címek: 0D0H-0D8H Bit cím Szimbólum Funkció PSW.0 P Paritás bit PSW.1 - nem használt PSW.2 OV aritmetikai túlcsordulás bit PSW.3 RS0 Regiszterbank választó bit 0 PSW.4 RS1 Regiszterbank választó bit 1 PSW.5 F0 Általános célú bit. Tetszőlegesen felhasználható PSW.6 AC Fél-átvitel bit PSW.7 CY Átvitel - áthozat bit Az RS1 és az RS0 bitek segítségével választható ki az aktuális regiszterbank. A bitekből alkotott bináris szám értéke az aktív bank sorszáma. A CY, AC, OV és P flag-ket az aritmetikai utasítások írják 1-be, vagy törlik. Az egyes flag-ek funkciója a következő: CY az összeadás átvitelekor, illetve a kivonás áthozatakor íródik 1-be, AC közbenső átvitel, ( átvitel az alsó dekádról a felsőre ), OV aritmetikai túlcsordulást jelző bit, amely 1 - be íródik, ha az összeadás illetve a kivonás eredménye a és a +127 tartományon kívül esik, P a paritást jelző bit.1-be íródik, ha az akkumulátorban páros számú 1-es van és törlődik páratlan számú 1-es esetében. A P értéke minden gépi ciklusban újra képződik. Az akkumulátor (ACC) A mikrokontroller és a mikroprocesszor akkumulátorainak funkciói azonosak. Külön magyarázata ezért nem szükséges. A B-regiszter A B-regiszternek meghatározott szerepe csak a szorzásnál és az osztásnál van. Egyébként adattárolóként használható. A program során - a B-be írt adatot - csak a már említett szorzó, vagy az osztó utasítások írják felül. Data-Pointer (DPTR) A Data-Pointer 16 bites regiszter, amely LOW-bájt-ból (DPL) és HIGH-bájtból (DPH) áll. A két regiszter tartalma, a megfelelő utasításokkal külön-külön 8 bites bájtként, vagy együtt 16 bites szóként használható. Rendszerint a külső adatmemóriába történő írásnál, vagy olvasásnál közvetett címzéshez használjuk. Programszámláló (PC) A programvégrehajtás során mindig a beolvasandó program-kód címét tartalmazza. Szoftverben is használható a kódmemória relatív címzéskor. A külső tárolók vezérlőjelei Az S1-S6 ütemekben a P1,P2 órajelciklusok szerint változik minden - a külső tárolóáramkörök működtetéséhez szükséges - vezérlőjel. Ezek a következők: ALE PSEN RD WR (Address Latch Enable) (Program Store Enable) (Read) (Write) Programozható időzítő/számláló perifériák Bit cím Szimbólum Funkció TCON.0 IT0 Az INT0 külső megszakítás vezérlő bit. 1 értéknél a megszakítás lefutó élre, 0 értélnél LOW szintre történik. TCON.1 IE0 Az INT0 megszakítás él-jelző bitje. 1-be íródik, ha a bemenetre lefutó él érkezik. A hardver törli a rutin végén (RETI). TCON.2 IT1 Az INT1 külső megszakítás vezérlő bit. Azonos az IT0-al. TCON.3 IE1 Az INT1 megszakítás él-jelző bitje. Azonos az IE0-al. TCON.4 TR0 A T0 vezérlő bitje. 1 engedélyez, 0 tilt. Irható olvasható. TCON.5 TF0 A T0 tulcsordulás bitje. TCON.6 TR1 A T1 vezérlő bitje. Azonos az TR0-al. TCON.7 TF1 A T1 tulcsordulás bitje.azonos az TF0-al. A Timer-Modus-regiszter (TMOD) bitjei és funkcióik Bájt-cím: 89H Bit sorszáma Szimbólum Funkció 0 M0 0 T0 időzítő/számláló üzemmód beállító-bit 0 1 M1 0 T0 időzítő/számláló üzemmód beállító -bit 1 2 C/T 0 T0 vezérlő bit, 0 értéknél időzítő, 1értéknél eseményszámláló 3 GATE 0 T0 kapuzó bit, 0 tiltja, 1 engedi az INT0 bemenetről a vezérlést 4 M0 1 T1 időzítő/számláló üzemmód beállító -bit 0 5 M1 1 T1 időzítő/számláló üzemmód beállító -bit 1 6 C/T 1 T1 vezérlő bit, 0 értéknél időzítő, 1értéknél eseményszámláló 7 GATE 1 T1 kapuzó bit, 0 tiltja, 1 engedi az INT bemenetről a vezérlést Megjegyzés: az indexek a számláló sorszámát jelölik A T0 és T1 időzitő/számlálók és üzemmódjaik (0-3) A T0 és a T1 áramkörök időzítőként, vagy eseményszámlálóként használhatók. A működési módot a TMOD-regiszter 2. és 6. C/T jelü bitjeivel (TMOD.2 ill. TMOD.6) kell beállítani. A logikai 1 - hez a számláló üzemmód tartozik. Az időzítő üzemmódban a számtartalom gépi ciklusonként dekrementálódik. Ebből következik, hogy az időzítés alapegysége az oszcillátor periódusidejének a 12-e. A számláló üzemmódban mindegyik számláló a hozzátartozó bemenetre - T0, T1, - kapcsolt jel lefutó élénél inkrementálódik. A maximális számlálási frekvencia tehát az órajel frekvenciájának 24-e. A 12 MHz-es oszcillátor használatánál a számlálási frekvencia maximálisan 500 khz. Az áramkört kiegészítő - szoftverből vezérelhető kapu - előnyösen használható a pontos eseményszámlálásnál. A kapuzás a TR0 és TR1 bitekkel (TMOD.7 és a TMOD.3) történik. A T0 ill. T1-es jelű áramkörök négy különböző üzemmódban működtethetők. Az üzem-módokat - a T1-nél - a TMOD.4 (M1 0) és a TMOD.5 (M1 1), illetve a - a T0-nál - pedig a TMOD.0 (M0 0) és TMOD.1 (M1 0) bitekkel kell kiválasztani. Az M0-M1 bitekből alkotott bináris szám értéke az üzemmód index-e. Az egyes üzemmódok a következők: 0 - ás üzemmód A 0-ás üzemmód a 8048-as mikrokontroller időzítő/számlálójának a működésével egyezik meg. A TH0 (TH1) regiszter 8 bites, míg a TL0 (TL1) csak 5 bites. Az áramkörök tehát egy 32-es elosztóval rendelkező 8-bites számlálóként használhatók (3. ábra). A 8051-es család tagjaiban különböző számú időzítő/számláló áramkör van. Ezekhez még további funkciók is kapcsolódhatnak. A 8051/31 típusban a T0 és T1 jelű két időzítő/számláló van. Mindkét áramkör lehetséges
4 7 8 oszc. T1bemenet TR1 GAT INT1bemenet 12 _ C/T=0 _ C/T=1 TMOD SFR 1 1 & vezérlés 3.ábra TL1 (5BIT) TH1 (8BIT) TCON SFR TF1 Interupt A számláló túlcsordulása 1-be írja a megfelelő megszakításkérő bitet (Timer-Interrupt-Flag TF0/TF1). A számlálandó impulzusokat külső és belső vezérlés együttesen kapcsolja a számlálóra. A feltételek, - a 3. ábrának megfelelően - hogy a TR0/TR1 bit 1- szintű és ugyanakkor a TMOD.3/TMOD.7 bit alacsony vagy az INT0/INT1 csatlakozási ponton magas szint legyen. A számlálók külső-, (hardver) és belső-, (szoftver) vezérelhetősége nagyon széleskörű, rugalmas felhasználást biztosít. 1-es üzemmód Az 1-es üzemmód hasonló a 0-áshoz, azzal az eltéréssel, hogy a számláló 16-bites. 2-es üzemmód A számláló a 2-es üzemmódban 8 bites, de automatikus visszatöltés is történik (4.ábra). oszc. T1bemenet TR1 GAT INT1bemenet 12 _ C/T=0 _ C/T=1 TMOD SFR 1 1 & vezérlés 4.ábra TL1 (8BIT) átirás TH1 (8BIT) TF1 Interupt TCON SFR A TL0/TL1 regiszter tulcsordulása a megfelelő megszakításkérő bitet (TF0/TF1) beállítja és ugyanakkor a TH0/TH1 regiszter tartalmát beírja a TL0/TL1 regiszterbe. A TH0/TH1 regiszter tartalma nem változik. Ezek felülírása szoftver úton végezhető. A meg-oldással programból változtatható késleltetés valósítható meg. 3-as üzemmód A 3-as üzemmódba csak a T0-ás időzítő/számláló áramkör üzemeltethető. Ha a T1-et állítjuk 3-as módba, akkor az leáll. Ebben a módban TL0 és a TH0 regiszterek önálló 8 bites számlálóként használhatóak és egymástól teljesen függetlenül dolgoznak (5.ábra). Az üzemmódot akkor használják, ha több időzítő funkció is szükséges. (Megjegyzés: a TH0 csak késleltetőként működtethető!) Ha a T0 a 3-as módban üzemel, akkor T1-es áramkör a többi üzemmódban azzal a kikötéssel dolgozik, hogy a belső leállítás nem működik, és nem kezdeményezhet megszakítást. ( A T1 a soros kommunikációs csatorna Baud-rate generátoraként is használható ). oszc. T0bemenet TR0 GAT INT0bemenet TR1 12 _ C/T=0 _ C/T=1 1 1 TMOD SFR & f oszc /12 vezérlés vezérlés 5.ábra A portok TL0 (5BIT) TCON SFR TH0 (8BIT) TF0 TF1 Interupt Interupt A portokon keresztül történik a mikrokontroller és a külvilág közötti adatcsere. A 8051-es család tagjainál egyre több periféria-funkciót integráltak egy tokba portjai eltérnek a hagyományos számítástechnikai I/O áramköröktől. A mikrokontrollernél egy 8 bites port több funkciót is elláthat. Így pl. busz-meghajtást, vagy soros adatátviteli interfész feladatát. A négy port tulajdonképpen 32 db. önálló egy-bites port, amelyek bitenként címezhetőek is. Ez azt jelenti, hogy bármelyik port-bit egyedileg írható, olvasható. A portok mindegyik bitjéhez egy-egy tároló (Latch) tartozik, melyek a megfelelő SFR bitjei. Ezek mindegyikéhez kimeneti meghajtó, és bemeneti illesztő áramkör kapcsolódik. A legtöbb porthoz - az alap funkció mellett egy-egy alternatív funkció is tartozik, de egy adott alkalmazásban csak az egyik funkció használható. Az ábrán egy ilyen láb általános kialakítását mutatjuk be, egyes portok áramkörei ettől kisebb mértékben eltérnek, de jól illusztrálja a portok tényleges működését. TÁROLÓ KIOLVASÁS BELSŐ BUSZ TÁROLÓBA ÍRÁS LÁB OLVASÁS D Cl ALTERNATÍV KIMENŐ FUNKCIÓ Q Q ÉS ALTERNATÍV BEMENŐ FUNKCIÓ EGY BE/KIMENETI (LÁB) ILLESZTŐ ÁRAMKÖR 6. ábra Vcc KIMENETI FELHÚZÓ ELL. LÁB Az egyes portokhoz kapcsolódó másodlagos funkciók a következők: P0 a külső memória írás/olvasás ciklusokban időmultiplex módon a cím-, és adatbusz funkciót teljesít az alábbi sorrendben: egy gépi ciklus kezdetétől az ALE jel végéig a cím alsó bájtját (A0..A7) adja ki, ezt követően a gépi ciklus végéig adat írás/olvasás feladatát látja el. P1 csak I/O funkciót lát el. P2 a külső memória írás/olvasás ciklusokban címbusz felső bájtját (a8..a15) adja. P3 minden egyes bitje más-más funkciójú az alábbiak szerint:
5 9 10 P3 port egyes lábainak a funkciója Láb Szimbólum Funkció P3.0 RXD Soros vonal bemenete P3.1 TXD Soros vonal kimenete P3.2 INT0 0-ás külső megszakítás P3.3 INT1 1-es külső megszakítás P3.4 T0 0-ás időzítő/számláló bemenete P3.5 T1 1-es időzítő/számláló bemenete P3.6 WR Író-jel P3.7 RD Olvasó-jel Figyelni kell arra, hogy a P0 port kimenetéhez - kivéve, ha csak külső tárolók eléréséhez használjuk - felhúzó-ellenállást kell csatlakoztatni READ-MODIFY-WRITE utasítások A 8051-es családnál mód van arra, hogy csak egy lábon lévő jelet (READ PIN), vagy csak a hozzátartozó tároló tartalmát olvassuk be (READ LATCH). Az olvasási módok között szoftverben választhatunk. Azokat az utasításokat, - amelyek a tárolók tartalmát olvassák ki - nevezik READ-MODIFY-WRITE (olvas - változtat - ír) utasításoknak. A READ-MODIFY-WRITE típusú utasítások a címzett tároló tartalmát kiolvassák, az adott értékre változtatva írják vissza azt A megszakítások és használatuk Amikor az egyes portokat az alternatív funkciójukban kívánjuk használni, akkor az alábbiakra kell figyelni: A portoknak van belső felhúzó (Pull-up) ellenállásuk. Az alternatív funkció csak akkor működik, ha a megfelelő port tárolóban HIGH szint van. Ha a port 1-be írása elmarad, akkor a megfelelő lábat egy belső tranzisztor lehúzza 0-ra. Ilyen esetben egy külső Ucc (+5V) szintű jel tönkre teheti az áramkört. Az egyes portokhoz kapcsolt alternatív funkciók miatt ezek már nem használhatók a klasszikus értelemben vett I/Oportnak. A többfunkciós kialakítás alapvető oka, hogy a mikrokontroller lábszáma korlátozott. Az egyes portok bitjeinek áramköri felépítése kismértékben különbözik. A különböző felépítésű portok között azonos, hogy mindegyik bithez egy-egy tároló tartozik. Ezek D-flip-flopok, amelyek mindegyike valamelyik SFR egyik bitje. A belső buszról az adatot a WRITE LATCH (a D-flip-flop clock-ja) jel írja be a flip-flopba. A tárolóba írt tartalom - a P1 portot kivéve - a belső vezérlő jeltől függően jelenik meg a hozz tartozó lábon, vagyis csak az alapfunkcióban. Az alternatív funkció esetében a kontroller egy másik SFR tartalmát kapcsolja a lábakra. Fordított irányban, vagyis amikor egy jelet olvasunk be, akkor két lehetőség van: vagy a kiválasztott lábon lévő jelet (READ PIN), vagy a tároló (READ LATCH) jelét olvassuk be. Egyes utasítások a tároló olvasásra, mások pedig a lá bon lévő jel beolvasására alkalmasak. A tárolók csak a kimenő-jeleket tárolják. A bemeneti jeleket a beolvasás után külön tárolni kell mert azok elvesznek. A felhasználáskor a programban kell gondoskodni a jelek változásának figyeléséről. Erre az ismételt lekérdezés (polling) alkalmas. Amikor ez nem alkalmazható, akkor külső hardverrel kell megszakítást kérni a figyelt szintváltásnál. A 0- s (P0) port A P0 alternativ funkciója a külső tárolók és a kontroller közötti adatforgalomhoz kapcsolódik. E port adja egyrészt a cím busz alsó 8 bitjét,másrészt pedig a klasszikus értelembe vett adatbusz. A belső CONTROL jel kapcsolja a port-funkciót (CONTROL=0) ill. a külső memóriakezelői funkciót. Mielőtt a porton keresztül a külső memóriából olvas s tőrténik, a tárolóba 1 íródik. Ezzel a port eredeti tartalma elvész. Az 1-es (P1) port A 8051mikrokontroller egyetlen portja, amelyikhez nincs alternatív funkció is rendelve. A felépítése is ezért egyszerű. Egy D-tárolóból, két és kapuból valamint egy végtranzisztorból és felhúzó ellenállásból áll. Az ÉS kapuk a lábról (READ PIN) illetve a tárolóból (READ LATCH) történő olvasást vezérlő belső jeleket kapuzzák. A 2-es (P2) port A P2 port alternatív funkciója - a P0-áshoz hasonlóan - a külső memória és mikrokontroller közötti adat írás-, olvasáshoz kapcsolódik. Ilyenkor ez a port adja a címbuszra a cím felső 8 bitjét. Ha nem használjuk ezt a portot bemenetként, akkor nem is kell a tárolóba 1-t írni. A port tárolóiba írt információ a címzési funkció végrehajtása alatt változatlan. Ezért a belső CONTROL jel inaktiválódásakor ismét a lábakra kerül az eredetileg beírt információ. A 3-as (P3) port A P3 port alternatív funkciója bitenként más és más. Egyesek be-, mások pedig kimeneti jeleket szolgáltatnak. A P0 és a P2-es portokkal ellentétben, itt bitenként külön használhatók az alternatív, vagy az alap port funkciók. Egy lábról történő olvasáskor nincs szétválasztva áramkörileg az alternatív-, és a portfunkció. Amikor egy bemeneti jelet (pl.az INT0-át) kívánunk használni, akkor azt a programban inicializálni kell, vagyis a lábhoz tartozó D-tárolóba 1-t kell írni. A tároló kimenete és az alternatív jel között ÉS kapcsolat van. Ezért alapfunkció - normál port - használatakor előbb az alternatív jelet kell 1-be írni. Az alternatív funkció érvényesülése viszont csak a tároló 1-be írásával biztosítható A portok terhelhetősége (fan-out) Miután az egyes portok áramköri kialakítása különböző, ezért különbözik az általuk vezérelhető TTL bemenetek száma is. A P0 maximálisan 8 LS-TTL bemenetet tud meghajtani. A P1 - P3 portok átlagosan 4 egységgel terhelhetők. A mikrokontroller megszakításainak segítségével oldhatók meg az események valós idejű lekezelése. A megszakítás (Interrupt) egy hardver esemény kiszolgálására szolgál. A kiszolgálást kérő jel - hozzá tartozó - megszakítás- kérő (Interrupt -Request) flag-ot 1-be állítja A megszakítást külső-, (pl. a megfelelő bemenetre érkező feszültségszint, vagy szintváltás) illetve belső esemény (pl. az egyik számláló túlcsordulása) kérhet. Mindegyik megszakításhoz meghatározott prioritás rendelhető. Amikor egy megszakítást kérő jel érkezik, akkor az éppen futó program végrehajtása felfüggesztődik és a megszakítást kiszolgáló (Interrupt-Service) rutin fog futni. Ha mikrokontroller éppen egy azonos,vagy magasabb prioritású megszakítást szolgál ki, akkor csak a futó rutin befejezése után hívja az újabb megszakítás-rutint A megszakítás engedélyező (Interrupt-Enable) regiszter (IE) A 8051 mikrokontroller megszakításainak engedélyezése az IE-regiszter tartalmának megfelelő beírásával végezhető. Az EA (IE.7) jelű bit az általános megszakítás engedélyező. Amikor EA=0,akkor mindegyik megszakítás tiltott. Az általános engedélyezés (EA=1) mellet az IE regiszter megfelelő bitjét is be kell írni a kívánt megszakítás engedélyezéséhez. A megszakítás engedélyező regiszter (IE) tartalma Szimbólum Bit Jelentése EX0 IE.0 A külső INT0 engedélyezése ET0 IE.1 A T0 időzítő túlcsordulás megszakítás-engedélyezése EX1 IE.2 A külső INT1 engedélyezése ET1 IE.3 A T1 időzítő túlcsordulás megszakítás-engedélyezése ES IE.4 A soros-vonal megszakítás engedélyezése ET2 IE.5 A T2 időzítő túlcsordulás megszakítás-engedélyezése IE.6 foglalt EA IE.7 Általános megszakítás-engedélyezés Megszakítás-prioritás (IP) regiszter A 8051 megszakítás vezérlő része két prioritás szintet különböztet meg. Az egyes megszakítás források prioritását az IP regiszter megfelelő beírásával végezhetjük. Az 1 jelenti a magasabb prioritást. A megszakítás prioritás regiszter (IP) tartalma Szimbólum Bit Jelentése PX0 IP.0 A külső INT0 prioritása PT0 IP.1 A T0 időzítő prioritása PX1 IP.2 A külső INT1 prioritása PT1 IP.3 A T1 időzítő prioritása PS IP.4 A soros vonal prioritása PT2 IP.5 A T2 időzítő prioritása (csak a 8052-nél) - IP.6 foglalt A 8051 mikrokontroller megszakítás-rutinjainak a kezdőcíme állandó. Erre a címre egy ugró-utasítást kell beírni, amely a megszakítás-rutinra adja át a vezérlést. A rutinból a főprogramba történő visszatérést a RETI utasítás hajtatja végre.
6 Megszakítás-források A 8051 ill. a 80C51 típusoknál öt megszakítás forrás és két prioritási szint van. A 8052 típusú mikrokontrollerbe még egy további megszakításforrást (T2) integráltak. Megkülönböztetünk külső és belső megszakítás-forrásokat. A külső megszakításokat (INT0,INT1) a megfelelő bemenetre (12-es ill. 13-as lábak) adott feszültségszint, vagy negatív él indítja. Az egyes bemenetek szint-, vagy él-érzékenységét a TCON (Timer-Control) regiszter IT0,illetve IT1 bitjeivel lehet megválasztani. Az egyes megszakítások végre-hajtását a TCON.1 (IE0) illetve a TCON.3 (IE1) bitek 1-be írásával engedélyezhetjük. A belső megszakításokat - az előzőekkel ellentétben - nem külső, hanem a tokon belüli jel kezdeményezi. A felhasználó ezért csak közvetetten kezdeményezheti. A belső megszakításra példa az ES, amelyet a soros vonal indít az RI vagy a TI beíráséval. További belső megszakítási források még a TF0 és a TF1.Ezeket a megfelelő időzítő/számláló (T0,illetve T1) túlcsordulása indítja. Megszakítás-források és kezdő-címeik Megszakítás-forrás Kérő-flag Kezdő-cím 0-ás külső megsz. IE H Timer 0 megsz. TF0 000B H 1-es külső megsz. IE H Timer 1 megsz. TF1 001B H Soros vonal megsz. RI vagy TI 0023 H A külső megszakítás-forrás megszakítást kérő jelének LOW, vagy HIGH szintje minden esetben legalább egy teljes gépi ciklus időtartamáig kell fennálljon. Csak ezzel biztosítható a megszakítás-kérés biztonságos felismerése. A 8051 megszakítás-vezérlő logikája bármelyik megszakítási kérelem felismerése után egy LCALL utasítást generál. Ellenőrzés, hogy kiadható-e az LCALL utasítás. Ha a kérés pillanatában azonos, vagy magasabb prioritásu megszakítás kiszolgálása folyik, akkor a kontroller nem ad ki LCALL utasítást. Az alacsonyabb szintü megszakítás-végrehajtást egy magasabb prioritású megszakítja. ł Ha a megszakítás-kérés utasítás végrehajtása közben érkezik, akkor először befejeződik az, és csak utána történik a megszakítás-rutin hívása. A programszámláló pillanatnyi értékét leteszi a VEREM-be. A programszámlálót feltölti az aktuális megszakítást kiszolgáló rutin kezdőcímével. A megszakítás-rutint egy RETI utasítás kell lezárja. Ennek hatására folytatódik a megszakított program végrehajtása Soros vonali-illesztő A 8051-es család minden tagjában van szabványos soros adatátviteli port, amit itt nem részletezünk. 2. A 8051 mikrokontroller család utasításkészlete 2.1 A bit-, és bájtszervezésű működés A 8051 mikrokontroller utasításkészlete nagyon hasonlít a 8080 típusú mikroprocesszor utasításaihoz. Lényeges eltérés azonban, hogy a 8051-t elsősorban különböző vezérlési feladatokhoz fejlesztették ki. A mikrokontrollert olyan utasításokkal látták el, amelyekkel nagyon egyszerűen lehet bitműveleteket végezni. Ezt szolgálja a bitcímzés és a bitekre is értelmezett logikai műveletek (boole utasítások). A hagyományos mikroprocesszorokhoz hasonlítva még egy lényeges eltérésre kell felhívni a figyelmet. A mikroprocesszorok főleg bájt szervezésű számításokat végeznek. A vezérlési feladatoknál ritkábban van erre szükség. Többségében egyes kapcsolók állapotát kell lekérdezni, és reléket ki-, bekapcsolását vezérelni. Az ilyen jellegű működés bitszervezést igényel Az utasítások hossza A 8051 mikrokontrollernek összesen 111 utasítása van. Az utasítások között egy-, két- és három bájt hosszúakat találunk. Az utasítás bájtszámban a műveleti kód és - rendszerint közvetetten - az operandusok is benne vannak. Az utasítások között: 49 egy-bájt 45 két-bájt és 17 három-bájt hosszúságú van Futási idő Egy program futási idejének pontos meghatározásához ismerni kell azt, hogy az egyes utasítások feldolgozása hány gépi ciklus alatt történik. A 8051mikrokontroller utasításainak a végrehajtása - a MUL és DIV aritmetikai utasítások kivételével - egy-, vagy két gépi ciklus befejeződik. Az említett mindkét utasítás végrehajtásához négy gépi ciklus szükséges. Egy műveleti ciklus 12 oszcillátor-periódus hosszú. Az órajel frekvenciájának ismeretében a program végrehajtásához szükséges idő - a futási idő - a következők szerint számolható ki: Az program összes utasításaihoz tartozó ciklusok összegét szorozni kell a quartz periódusidejének 12-szeresével. A 8051 utasításai - a végrehajtási ciklusszám alapján - az alábbiak szerint oszlanak meg: 63 egy-ciklusú, 46 két-ciklusú és 2 négy-ciklusú Címzési módok A címzésről általában A 8051-nél az alábbi öt különböző címzési mód alkalmazható: regisztercímzés, direkt címzés, indirekt címzés, közvetlen címzés, indirekt regisztercímzés. A mikrokontroller különböző memóriaterületekkel kommunikál. A fizikailag, vagy logikailag elkülönített területek más-más címzési móddal érhetőek el. A 8051 öt féle címzési módja alapvetően két nagy csoportot alkot, mégpedig a direkt és az indirekt címzésűeket. A direkt címzésnél az utasítás része a megfelelő tároló-cella címe (hexadecimális szám). Az indirekt címzésnél a tárolócella címét egy regiszterben vagy egy másik tároló-cellában van. Az utasítás ez utóbbiak címét tartalmazza. Az indirekt címzés kissé nehézkesebb, mivel a programozónak először arról kell gondoskodnia, hogy a szükséges cím a megfelelő tároló-egységbe kerüljön. Ugyanakkor rugalmasabb programozást tesz lehetővé. Az indirekt címzés egy másik lehetősége az un. adatmutató, vagyis a Data-Pointer használata. Az adatmutatóba egy 16 bites szám írható, amely 64 Kbájt kapacitású adatmemória címzését teszi lehetővé. Az adott értékhez relatív címzés is megoldható. A relatív címzés a strukturált programozást teszi könnyebbé. Sok esetben előnyös ez a módszer Regiszter-címzés Az aktuális bank R0 és R7 regiszterei címzésre is használhatóak. Segítségükkel a belső RAM egyes memória elemei - így az A,B a CY és DPTR is - közötti kommunikáció megvalósítható. Az utasításkód három legalacsonyabb helyiértékű bitje határozza meg az aktuális regisztert Direkt címzés A direkt címzésnél az utasítás része az elérendő memória címe. A cím az utasítás műveleti kódja utáni hexadecimális szám. Például: MOV A,32H alakú utasítás a 32H című belső memória tartalmát az Akkumulátor-ba (A) viszi. A speciális funkció-regiszterek (SFR-k) csak a direkt címzéssel érhetők el. Az SFR regisztereken kívül a belső RAM alsó 128 bájtja is címezhető direkt módon Indirekt címzés Az indirekt címzésnél nem az utasítás, hanem - az aktuális regiszterbank - R0,vagy R1 regisztere tartalmazza az elérendő memóriacella címét. A 8 bites tartalommal 256 bájt széles RAM terület címezhető. E terület lehet a belső, vagy a külső RAM-ban is. Természetesen a 8051 típusnál a belső RAM csak 128 bájtos. Az indirekt címzésre példa a MOVX A,@Ri utasítás, amely az akkumulátorba viszi a külső RAM egy cellájának tartalmát. A cella címe az Ri regiszterben van. A magasabb helyiértékű 8 címbit ezalatt nem változik meg. Az utasítás segítségével relatív címzést is meg tudunk valósítani. Először a P2 SFR-be kell beírni a cím magasabb bájtját, s az Ribe pedig az alacsonyabb bájtot. Az indirekt címzésű egy bájtosak. Segítségükkel a teljes 64 Kbájtnyi külső RAM egy kisebb területe érhető el. A teljes memóriaterület címzése a DPTR adat-mutató regiszterrel történhet (@DPTR). Mivel a verem-terület kisebb 256 bájtnál, akkor a PUSH és POP utasításoknál is indirekt a címzés. A címe itt a verem-mutatóban (SP) van. Ezen az alapon a verem-terület is a RAM tetszőleges területére helyezhető. A programozónak kell biztosítani a magasabb helyiértékű 8 címbit megfelelő beállítását.
7 Közvetlen címzés A közvetlen címzésnél az adat, amellyel műveletet akarunk végezni nem valamelyik RAM egyik cellájában, hanem az utasításban van. Ez azt jelenti, hogy az értéket - az utasítás részeként - a programmemóriába (ROM, vagy EPROM) kell beírni. Például: a MOV A,#23H utasítás 23 hexadecimális értéket ír az akkumulátorba. A közvetlen címzést leggyakrabban a matematikai, vagy a fizikai képleteket megoldó programoknál használjuk Indirekt regiszter-címzés Az indirekt-regisztercímzésnél a tényleges fizikai címet két regiszter tartalmának az összege adja. A cím tehát egy bázis-, és egy eltolási (offset) címrészből áll. A bázis cím vagy az adatmutatóban (DPTR), vagy a programszámlálóban (PC) van. E címhez adja hozzá egy belső regiszter tartalmát A különböző utasítás fajták A 8051-nek 111 különböző utasítása van. Ezek a következő négy csoportba sorolhatók: adatátviteli utasítások, aritmetikai utasítások, logikai, ill. bit műveleti utasítások, vezérlő utasítások Az adatátvíteli utasítások: általános-, akummulátor-, és a Data-Pointeres adatmozgató utasítások. Az adatátvíteli - az un. MOV - utasítások regiszter vagy RAM cella tartalmát viszi át másikba. A PUSH és POP utasítások is a MOV csoportba tartoznak. Ez az utasítástípus három csoportra bontható. Az általános adatátvíteli utasítások A csoportot az alábbi utasítások alkotják: MOV egy bitet, vagy bájtot visz át regiszterből regiszterbe, vagy RAM-ba, illetve fordítva. PUSH inkrementálja a verem-mutató (SP) tartalmát majd a vonatkozó adatot az SP által címzett memóriába írja. POP az SP által címzett memória tartalmát átírja a vonatkozó helyre, majd dekrementálja az SP tartalm*át. A MOV utasítások a címzett helyről az adatot átmásolják a cél helyre, de közben a forrás tartalmát nem változtatják meg. Akkumulátor-utasítások Ezeknél az utasításoknál az ACC-regiszter a célja, vagy a forrása az adatátvitelnek. Az akkumulátor önmaga lehet a cél is és a forrás is. XCH (exchange) az akkumulátor és a címzett memória tartalmát cseréli fel. XCHD hasonló az XCH utasításhoz, de csak az akkumulátor és a címzett memória tartalmának az alsó négy bitjét cseréli meg. MOVX a külső adatmemória és az akkumulátor között végez adatátvitelt. MOVC programtárolóból visz egy bájtot az akkumulátorba. A címzésnél a DPTR-ben, vagy PC-ben van a báziscím. Data-Pointer utasítás MOV DPTR, # áll a megadott 16 bites állandóval tölti fel a Data-Pointer DPH és DPL regisztereít Az arítmetikai utasítások: összeadás, kivonás, szorzás és osztás. A 8051 mikrokontroller matematikai műveletei korlátozottak. Csupán 8 bites előjeles számokkal lehet műveleteket végezni. Az Overflow-flag (OV) segíti a felhasználót az elő-jeles számok összeadásánál és kivonásánál. A 8051 aritmetikai utasításai hasonlítanak a 8080 és a 8085 mikroprocesszorok azonos utasításaihoz. Összeadó utasítások ADD a címzett memória és az akkumulátor tartalmát adja össze. Az eredmény az akkumulátorba kerül. ADDC mint az ADD utasítás, de még a CY flag értékét is az eredményhez adja. DA a BCD számok összeadásakor végez korrekciót. INC az adott memória tartalmát inkrementálja (1-el növeli). Kivonó utasítások DEC az INC utasítás ellentettje. Az adott memória tartalmát dekrementálja (1-el csökkenti). SUBB az akkumulátor tartalmából levonja az adott bájtot. Ha a CY=1, akkor az eredményből még 1-t levon. A művelet eredménye az akkumulátorba kerül. Szorzó és osztó utasítások A B regisztert (az SFR-ben) kizárólag csak ezeknél az utasításoknál használja a kontroller. MUL két előjel nélküli 8 bites számot szoroz össze. A szorzandókat az ACC és a B regiszterekbe kell vinni. A szorzat két bájtos lesz. Az eredmény alacsonyabb helyiértékű bájtja az ACC-be, míg a magasabb helyiértékű pedig a B-be kerül. A 256-nál nagyobb eredménynél az OV 1-be íródik. DIV az ACC tartalmát osztja a B tartalmával. Előjelet nem vesz figyelembe! Az osztás egészrészét az ACC fogja tartalmazni. A maradék kerül a B regiszterbe. Ha a hányados 0, akkor az OV flag 1-be íródik Logikai és boole utasítások. A logikai utasítások formailag nagyon hasonlóak a mikroprocesszorok azonos jellegű utasításaihoz. E csoport viszont - az aritmetikai műveletekkel ellentétben - sokkal bővebb alkalmazási lehetőséget nyújt. A 8051-es mikrokontrollert elsődlegesen vezérlésekhez végrehajtani. ANL fejlesztették és ezért mind bitekkel, mind pedig bájtokkal tud logikai műveleteket logikai ÉS művelet az operendusok azonos helyiértékű bitjei között. Az eredmény az első operandus helyére íródik, míg a második nem változik meg. CLR törli a direkt címzett bitet, vagy az akkumulátort. ORL az ANL-hez hasonlóan végez logikai VAGY műveletet. RL az akkumulátor tartalmát egy hellyel balra forgatja. RLC az akkumulátor tartalmát a CY közbeiktatásával forgatja egy hellyel balra. RR az akkumulátor tartalmát egy hellyel jobbra forgatja. RRC az akkumulátor tartalmát a CY közbeiktatásával forgatja egy hellyel jobbra. Az RLC és RRC utasításoknál a CY az akkumulátor kilencedik bitjének tekinthető. SETB a direkt címzett bitet 1-be írja. SWAP felcseréli az akkumulátor felső- és alsó négy bitjét. XRL az EXKLUSIV-VAGY művelet két operandus azonos helyiértékű bitjei között. Az eredmény - az ANL és ORL műveletekhez hasonlóan - az első operandus helyére kerül. Az ANL, ORL műveletek egyes bitek között is alkalmazhatóak. A hagyományos diszkrét logikai hálózatok kiválthatók a 8051 bázisú rendszerrel (például a különböző tárolt programú vezérlések) Vezérlő utasítások: feltétel nélküli CALL és JUMP, feltételes JUMP. A vezérlő utasítások alkalmazhatók a programokon belüli különböző ugrások végre-hajtására. Ilyen lehet egy szubrutin hívása, vagy egy feltételtől függő programelágazás. A vezérlő utasítások az alábbi három osztályba sorolhatók: feltétel nélküli CALL és JUMP, feltételes JUMP, megszakítások. Ezen utasítások közös jellemzője, hogy a programszámláló tartalmát változtatják meg. A PC határozza meg, hogy a kontroller mely címről hív be utasítást. Ennek megváltoztatásával vezérelhető egy programelágazás. A JUMP és a CALL utasítások megtörik a program tiszta sorrendi (lineáris) lefutását.
8 15 16 A JUMP-ok (esetleg egy meghatározott feltételtől függően) a program meghatározott helyére történő ugrást vezérlik. A program végrehajtása e helyről fog folytatódni. A CALL utasítás egy szubrutint hiv. A rutin feldolgozása egy RET utasításig tart. A RET hatására a főprogram - a CALL utasítást követő helyről - fut tovább. Ugyanaz a szubrutin a főprogram tetszőleges helyéről és többször is hívható. Elsődlegesen a különböző összetettebb matematikai műveletekhez használjuk a szubrutinokat. A megszakítási elágazás, hasonlóan a CALL-hoz egy szubrutin hívását jelenti. Lényeges eltérés az hogy ezt az ugrást egy hardveresemény váltja ki. A szubrutin hívása a meg-szakítás után azonnal megtörténik. Feltétel nélküli CALL és JUMP A feltétel nélküli ugrás, mint ahogyan a nevében is benne van, nem függvénye valamilyen eredménynek. Az ugrás minden esetben bekövetkezik, amikor a program egy ilyen utasításhoz ér. Szigorúan véve a RETURN utasítás is e csoportba tartozik. A CALL végrehajtása előtt a fő-program következő utasításának címe a verem-be íródik. Ezután a Verem-pointer értéke kétszer inkrementálódik (16 bites cím kerül be a verem-be). A RET utasítás hatására ez a cím visszaíródik a PC-be. Végül az SP tartalma kettővel csökken. ACALL két bájtos szubrutin hívó utasítás.2 K-bájtos szegmensen belüli programugrást hajt végre. Az ACALL-hoz 11 bites cím tartozik. A PC-ben lévő legnagyobb helyiértékű öt bit érvényes marad (együtt adják a 16 bites címet). Az ACALL hívásakor a PC tartalma inkrementálódik. Ha az ACALL egy 256-bájtos szegmens utolsó két bájtja, akkor a PC inkrementálása miatt az a következő szegmensbe kerül. LCALL három bájtos szubrutinhívó utasítás. Hasonló az ACALL-hoz, de alkalmas a teljes 64-Kbájton belüli tetszőleges című rutin hívására. AJMP/LJMP lényegében az ACALL és LCALL utasításokhoz hasonlóan használhatók. SJMP egy rendkívüli ugrás utasítás. A SHORT JUMP használatával csak 256 bájtos területen belüli ugrás oldható meg. az ugrás címét a DPTR és az akkumulátor tartalmának összege adja. A 8 bites akkumulátor-tartalom egy lapot fog át. A DPTR a teljes 64 Kbájtos programmemória tetszőleges helyére mutathat. RET az ACALL vagy az LCALL utasításokkal meghívott szubrutinból való visszatérést vezérli. Hatására a PC-be íródik a szubrutin hívást követő utasítás címe. Feltételes JUMP Az előzőekkel ellentétben az ugrás csak akkor következik, ha meghatározott feltétel teljesül. A feltételes ugrás mindig relatív. Az éppen aktuális helytől számítottan 8 bites címtávolságon belül lehet a célhely. Ez azt jelenti, hogy a feltételes ugrásoknál az utasítás helyétől számítva -128, vagy +127 területen belül lehet a cél cím. A 8051-nek a következő feltételes ugróutasításai vannak: JZ akkor következik az ugrás, ha az akkumulátor tartalma 0. JNZ akkor következik az ugrás, ha az akkumulátor tartalma nem 0. JC akkor következik az ugrás, ha a Carry-Flag 1. JNC akkor következik az ugrás, ha a Carry-Flag 0. JB akkor következik az ugrás, ha egy tetszőleges, direkt címzett bit 1. JNB akkor következik az ugrás, ha egy tetszőleges, direkt címzett bit 0. JBC akkor következik az ugrás, ha egy tetszőleges, direkt címzett bit 1.Utána törli a bitet. CJNE összehasonlítja két regiszter tartalmát. Akkor következik az ugrás, ha a két tartalom nem egyforma. Amikor az elsőnek adott regiszter tartalma a kisebb, akkor a CY is 1-be íródik. Ellenkező esetben törlődik. DJNZ először dekrementálja az adott címen lévő értéket. Majd ellenőrzi, hogy a csökkentett érték 0 vagy nem és az utóbbi esetben hajtja végre az előírt ugrást. A továbbiakban megadjuk a pontos Assembly jelölésüket (mnemonic) is. Az INTEL cég processzoraira és kontrollerjeire érvényes a következő írási sorrend: első művelet, második az adat-cél és végül következik a forrás. A felhasználói könyvek, katalógusok az alábbi rövidítéseket használják: Rn az R0 - R7 munkaregiszterek valamelyikét jelöli. Az utasítás e regiszter tartalmára vonatkozik. direct a belső RAM-ban egy cím, I/O port vagy státusregiszter. Az utasításban hexadecimálisan kell az R0,vagy R1 regiszterek tartalma, amely az elérendő bájt címe. #data az utasításban megadott 8 bites adat. #data 16 az utasításban megadott 16 bites adat (a 2. és a 3. bájt). rel egy relatív cím. A következő utasítás címéhez viszonyítottan -128 és +127 területen belülre mutathat. bit jelentheti a 128 "softver-flag" valamelyikét, egy I/O bitet illetve vezérlő vagy státuszbitet Az utasítások hossza és végrehajtási idejük A táblázatokban az egyes utasítások hosszát és az oszcillátor periódusában megadott végrehajtási idejét adtuk meg. A felhasználó ezek alapján kiszámíthatja a szükséges memóriaterületet és a futás időt. Már említettük, hogy egy gépi ciklus hossza 12 oszcillátor periódus. 1.1.táblázat Adatátvíteli utasítások Hossz Utasítás bájtban MOV A,Rn 1 12 MOV A,direct 2 12 MOV A,@Ri 1 12 MOV A,#data 2 12 MOV Rn,A 1 12 MOV Rn,direct 1 24 MOV Rn,#data 2 12 MOV direct,a 2 12 MOV direct,rn 2 24 MOV direct,direct 3 24 MOV direct,@ri 2 24 MOV direct,#data MOV DPTR,#data MOVC A,@A+DPTR 1 24 MOVC A,@A+PC 1 24 MOVX A,@Ri 1 24 MOVX A,@DPTR PUSH direct 2 24 POP direct 2 24 XCH A,Rn 1 12 XCH A,direct 2 12 XCH A,@Ri 1 12 Oszcillátor periódus XCHD A,@Ri táblázat Arítmetikai utasítások Utasítás Hossz bájtban Oszcillátor periódus ADD A,Rn 1 12 ADD A,direct 2 12 ADD A,@Ri 1 12 ADD A,#data 2 12 ADDC A,Rn 1 12 ADDC A,direct 2 12 ADDC A,@Ri 1 12 ADDC A,#data 2 12 SUBB A,Rn 1 12 SUBB A,direct 2 12 SUBB A,@Ri 1 12 SUBB A,#data 2 12 INC A 1 12 INC Rn 1 12 INC direct INC DPTR 1 24 DEC A 1 12 DEC Rn 1 12 DEC direct MUL AB 1 48 DIV AB 1 48 DA táblázat Logikai és boole- utasítások Hossz Utasítás bájtban ANL A,Rn 1 12 ANL A,direct 2 12 ANL A,@Ri 1 12 ANL A,#data 2 12 ANL direct,a 2 12 ANL direct,#data 3 24 ORL A,Rn 1 12 ORL A,direct 2 12 ORL A,@Ri 1 12 ORL A,#data 2 12 ORL direct,a 2 12 ORL direct,#data 3 24 XRL A,Rn 1 12 Oszcillátor periódus XRL A,direct 2 12 XRL A,@Ri 1 12 XRL A,#data 2 12 XRL direct,a 2 12 XRL direct,#data 3 24 CLR A 1 12 CPL A 1 12 RL A 1 12 RLC A 1 12 RR A 1 12 RRC A 1 12 SWAP A 1 12 CLR C 1 12 CLR bit 2 12 SETB C 1 12 SETB bit 2 12
9 17 18 CPL C 1 12 CPL bit 2 12 ANL C,bit 2 24 ANL C,/bit 2 24 ORL C,bit 2 24 ORL C,/bit 2 24 MOV C,bit 2 12 MOV bit,c 2 24 JC rel 2 24 JNC rel 2 24 JB bit,rel 3 24 JNB bit,rel 3 24 JBC bit,rel táblázat Vezérlő utasítások Utasítás Hossz bájtban Oszcillátor periódus ACALL addr LCALL addr RET 1 24 AJMP addr LJMP addr SJMP rel 2 24 JMP 1 24 JZ rel 2 24 JNZ rel 2 24 CJNE A,direct,rel 3 24 CJNE A,#data,rel 3 24 Utasítás Hossz bájtban Oszcillátor periódus CJNE Rn,#data,rel DJNZ Rn,rel 3 24 DJNZ direct,rel 3 24 NOP 1 12 RETI A FLAG-ket befolyásoló utasítások A 8051 utasításai közül csak nagyon kevés változtatja a mikrokontroller flag-jeít.a 1.5. táblázatban foglaltuk össze, hogy az egyes flag-ekre melyik utasíts hat.az X azt jelenti,hogy az adott flag-t az utasítás változtatja. A 0 ill. az 1 jelőli azt a konkrét értéket,amelyre a flag min-dig beáll a művelet hatására. Utasítás CY OV AC ADD X X X ADDC X X X SUBB X X X MUL 0 X DIV 0 X DA X RRC X RLC X SETB C X CLR C X CPL C X ANL C,bit X ANL C,/bit X ORL C,bit X ORL C,/bit X MOV C,bit X CJNE X 1.8.READ-MODIFY-WRITE utasítások A READ-MODIFY-WRITE utasítások egy port tartalmát kiolvassák, a kívánt értékre változtatják és azonnal visszaírják a port-latchbe. A READ-MODIFY-WRITE utasításokhoz mindig egy port címe tartozik. Az csoportba a következő utasítások tartoznak: Utasítás Példa ANL ANL P2,A ORL ORL P1,A XRL XRL P1,A JBC JBC P2.2,re CPL CPL P1.1 INC INC P1 DEC DEC P1 DJNZ DJNZ P1,rel MOV MOV P2.1,C CLR CLR P1.0 SETB SETB P1.0 A lista első utasításainál azonnal belátható, hogy azok READ-MODIFY-WRITE utasítások. Az utolsó háromnál első látásra kétséges. Ezekre is érvényes, hogy először a port kiolvasása, az érték módosítása és a visszaírás követik egymást. 1. Afeladat egyértelmű megfogalmazása 2. A program elemeinek, szerkezetének meghatározása. Ennek fő egységei: főprogram, egyedi programblokkok ( szubrutinok ), változók, adatstruktúrák. Mindezeket szövegesen, és folyamatábrákon célszerű rögzíteni. Ez jelentősen segíti a programírást, illetve a menet-közbeni ellenőrzéseket, majd a programélesztést. 3. A programozás lépései : a szöveges forrásnyelvi fájl megírása a választott programnyelv szintaktikai (formai) és szemantikai ( értelmezési ) szabályainak betartásával, az un. tárgykódú (object) fájl létrehozása a megfelelő fordító program (assembler, compiler) programmal, az obj. fájlból, vagy fájlokból futtatható program előállítása a szerkesztő (linker) programmal. 4. Programtesztelés, élesztés módszerei: program szimuláció arra ad lehetőséget, hogy a programunk működését számítógépes környezetben - lépésenként, vagy nagyobb blokkokban - ellenőrizhessük, valós idejű ellenőrzés emulátor-on, vagy a végleges hardveren elemző monitorprogram segítségével. A mikrokontroller programozásához használt nyelvek az un. processzor-közeli assembly nyelv, a magas szintű nyelvek közül a C nyelv. 3.2 Programozás assembly nyelven Assembly nyelven irt program elemi lépéseit az adott mikrokontroller (mikroprocesszor) utasításai határozzák meg. Ezért nevezik ezt processzor-közeli, vagy gépi szintű programozásnak. A korszerű fordítók ( assemblerek) támogatják: a moduláris programozást, az abszolút és relatív program-, és adatszegmensek használatát, a szimbólumok használatát, a makrók írását, használatát, a könyvtárak használatát. A magas szintű programnyelvekkel ellentétben a programozónak kell: a különböző programblokkokat az elemi utasításokból összeállítani, a program és adatszegmensek elhelyezkedését meghatározni, gondoskodni kell az adatok, változók elhelyezési formájáról, helyéről. Mindezen feladatok végrehajtását támogatják az assemblernek szóló különböző direktívák, fordítási és formátum parancsok. 1.5.táblázat. A flag-ket állító utasítások 3. Az MCS-51-es család mikrokontrollereivel épített mikrogépek programozása 3.1 Alapfogalmak A programfejlesztés célja: Olyan gépikód-, és adatsorozat létrehozása, amely alapján az adott mikroprocesszor, mikrokontroller a kívánt feladatot végrehajtja. (A szükséges aritmetikai, logikai műveleteket elvégzi, a perifériákat kezeli stb.) A programfejlesztés lépései:
10 FORRÁSFÁJL EDITOR (SZÖVEGSZERKESZTŐ).A51 MAKROASSEMBLER (A51) OBJECT FÁJL 1... OBJECT FÁJL n LIBRARY ABSZOLUT OBJECT FÁJL.HEX KONVERTÁLÓ HEX TO BIN LETÖLTÉS.OBJ.LIB.HEX.M51.HEX.TSK LINKER/LOCATOR (L51) KONVERTÁLÓ (OHS51) SZIMULÁTOR (SIMUL5X) EPROM ÉGETŐ.HEX 51- ES FEJLESZTŐ MONITORPROGRAMMAL ASSEMBLER PROGRAM FEJLESZTÉSÉNEK LÉPÉSEI A forrásnyelvi fájl írása.obj.lst.m51 ÁTHELYEZHETŐ (RELOKÁLHATÓ) OBJECT FÁJL LISTAFÁJL ABSZOLUT OBJECT FÁJL CROSS. REF. MAP FÁJL.HEX INTEL HEX FORMAT TESZTELÉS KIPRÓPÁLÁS A forrásnyelvi fájl tetszőleges szövegszerkesztővel irható, de mindenképen text formátumban kell tárolni a további feldolgozáshoz. A szöveges program alapvetően két követelményt kell kielégítsen, mégpedig: a fordító program feldolgozhassa, vagyis meg kell feleljen a formai (szintaktikai) előírásoknak, és az utasítások, operátorok, direktívák helyes használatát megszabó (szemantikai) követelményeknek, a program olvasható, elemezhető legyen. Az utóbbi elvárás a programfejlesztési, ellenőrzési, és az esetleges módosítási munkát segíti, rövidíti le. Egy terjedelmesebb program több fájlban is megírható. Az önálló fájlba irt szöveges programot nevezik modul -nak. Minden modult külön-külön kell lefordítani, vagyis létre kell hozni az egyes modulok object fájljait. (Természetesen az egyes modulok a program önálló funkciójú egységei kell legyenek.) A forrás-fájlokat MODUL_NÉV.A51 fájlnéven kell tárolni. Az egyes modulok - így az egy modulos program - legalább az alábbi egységekből kell álljon: szegmensek kijelölése ( program, adat, stack ), változók deklarációja ( név, hely, kezdőérték), program blokkok ( főprogram, szubrutinok stb. ). A forrásnyelvi fájl egy sorának általános felépítése: deklarációban: [Szimbólum] DIREKTIVA [Op1][,Op2][,Op3] ;Megjegyzés. programsorban: [Címke:] 8051_mnemonic [Op1][,Op2][,Op3] ;Megjegyzés (Az operandusok száma utasításfüggő!) az operandus lehet: speciális assembler szimbólum (pl.regiszter), program szimbólum, indirekt cím, konstans, belső RAM cím, bit-cím, program cím. A használható speciális assembler szimbólumok: A (ACC) B R0...R7 DPTR PC C AB AR0..AR7 Akkumulátor B regiszter az aktuális regiszter-bank munkaregiszterei a külső memóriák címzéséhez használt regiszterpár (DPH-DPL) programszámláló túlcsordulás bit regiszter-pár szorzásnál, és osztásnál az aktuális regiszterbank munkaregisztereinek abszolút címe A további szimbólumokat a deklarációs részben, vagy az un. ínclude fájlban ( pl. a 80C552 kontroller SFR és bit címei inc fájlban vannak) definiálhatunk. Az operandusok, vagy új szimbólumok előállíthatók a már deklarált szimbólumok operátorokkal történő összekapcsolásával. Operátorok: aritmetikai: +,- előjel ( +5, -0AH ) +,- összeadás, kivonás ( cím + offset ) * szorzás ( 1200H*7 ) / osztás ( 17/4 ) MOD maradék ( 17 MOD 4 ) ( ) csoportosítás ( (cím-offset)*3 ) logikai: NOT egyes kompl. ( NOT 5 ) HIGH szó felső bájtja ( HIGH 1234 ) LOW szó alsó bájtja ( LOW 1234 ) SHR,SHL jobbra/balra lépt. ( 2 SHR 8 ) AND ÉS művelet ( SIMB AND 0AH ) OR VAGY művelet ( SIMB1 OR SIMB2 ) XOR KIZÁRÓ-VAGY m. ( 12H XOR 5 ) hasonlító: >= / GTE nagyobb egyenlő ( SIMB >= 13H ) <= / LTE kisebb egyenlő (SIMB LTE 0A1H ) <> / NE nem egyenlő ( SIMB NE 045H ) = / EQ egyenlő ( SIMB = 0A2H ) < / LT kisebb mint ( SIMB < 0B2H ) >/ GT nagyobb mint ( SIMB GT 051H ) Assembler DIREKTIVÁK a Szimbólumhoz rendelhetők: változók címe, változók értéke, programrészek címe. A direktívák tulajdonképpen a fordítást vezérlő parancsok. Ezek segítségével definiálhatók szimbólumok, foglalhatók le és inicializálhatók memória területek, kapcsolhatók össze modulok, állíthatók be program-, és szegmenscímek.
11 Szimbólum definiáló direktívák: EQU SET DATA IDATA XDATA CODE SEGMENT A szimbólumhoz rendel egy értéket, vagy regiszter nevet. A szimbólum értéke késöbb már nem változtatható. pl. HATAR EQU 1200 ERTEK EQU HAT+R - 'A' AKKU EQU A SZAML EQU R7 A szimbólumhoz úgy rendel értéket, vagy regisztert, hogy az újra definiálható. pl. TAR SET R0 VALT SET 1AH. TAR SET R1 VALT SET 0D2H A szimbólumhoz rendel egy direkt címezhető belső memória címet. pl. BEM1 DATA 20H KIM2 DATA 22H A szimbólumhoz rendeli a csak indirekt címezhető belső memória egy címét. pl. OSSZEG IDATA 60H MARAD IDATA OSSZEG - 1 A szimbólumhoz rendeli egy külső memória címét. pl. TABL XDATA 100H KIF1 XDATA TABL + 23H A szimbólumhoz rendeli a programmemória egy címét. pl. START CODE 00H INTV_0 CODE START + 3 Egy relokálható SZEGMENS deklarálását biztosítja. A következő formában használható: Szegm_Nev SEGMENT Szegm_tipus [elh_tip] ahol a Szegm_Nev a szegmens funkciójára utaló név, Szegm_tipus megadja, hogy a szegmens melyik memóriaterületre legyen letöltve, elh_tip a letöltés kezdetét határozza meg [ opcionális ]. Szegmens-típusok: Elhelyezési típusok: CODE program memória, XDATAkülső adatmemória, DATA a direkt címezhető belső memória, IDATA indirekt címezhető belső memória, BIT a bit-címezhető belső memória. PAGE lapkezdetre igazítás ( csak CODE és XDATA után ), INPAGE a szegmens csak egy lapon belül lehet (csak CODE és XDATA után), INBLOCK a szegmens csak egy 2048 bájtos blokkot foglalhat el (csak CODE után), BITADDRESSABLE a belső memória bit-címezhető 16 bájt-ja ( 20H - 2FH )lehet ( csak DATA és IDATA után ), UNIT egy biten, vagy egy bájton kezdődő szegmens, OVERLAYABLE olyan szegmens, amelyet a C-51 deklarált, és ebbe beszerkesztés engedélyezett Helyfoglaló, és inicializáló direktívák DS adott számú összefüggő memóriaterületet foglal le (bármelyik memóriában), használata: [Cimke:] DS szám, vagy kifejezés DBIT DB DW adott számú bitet foglal le, használata: [Cimke:] DBIT szám, vagy kifejezés a programmemóriában ad kezdőértéket a felsorolt bájtoknak, használata: [Cimke:] DB szám[,kifejezés][,szimbólum]... a programmemóriában ad kezdőértéket a felsorolt szavaknak, használata: [Cimke:] DW szám[,kifejezés][,szimbólum] Modulok közötti kapcsolatok direktívái Feladatuk a különböző modulokban deklarált szimbólumok elérésének biztosítása. PUBLIC a direktívával deklarált szimbólumok minden modulból elérhetők. Használata: PUBLIC Szimb[,Szimb[,...]] EXTRN egy másik modulban deklarált szimbólum elérését biztosítja az aktuális modulban. Használata: EXTRN Szegm_tipus(Szimb_lista) NAME az egyes tárgy-modulok (object) megkülönböztetését teszi lehetővé. Ha nem adjuk meg, akkor a forrásfájl neve lesz a tárgy-modul neve is. Használata: NAME Tárgy_mod_név Cím beállító és szegmens választó direktívák A direktívák segítségével adhatók meg programrészek, szegmensek kezdő címei, illetve választhatók már létező szegmensek. ORG meghatározza a következő utasítás, vagy adat címét. ORG 100H ORG START END a forrásprogram végét jelzi. ( Mindig kell használni ) RSEG egy - már korábban definiált - relokálható szegmenst kiválaszt RSEG Szegmens_név CSEG, DSEG, XSEG, ISEG, BSEG az egyes szegmensek kezdőcímét lehet megadni a direktívák segítségével. Használatuk: CSEG [AT absz-cím] DSEG [AT absz-cím] XSEG [AT absz-cím] ISEG [AT absz-cím] BSEG [AT absz-cím] Amennyiben nincs cím, akkor a fordításnál mindegyik szegmens 0 címnél kezdődik. USING az aktuális regiszterbankot választja ki. Használata: USING sorsszám (a sorszám lehet) A szegmensek kijelölésére, a változók elhelyezésére, és a különböző helyfoglalásokra mutat mintát a PELDA1.LST fájl. A bemutatott példa a forrásnyelvi fájl fordítása után létrehozott lista-fájlt szemlélteti. A lista végén látható szimbólumtáblázat megadja, a szimbólum nevét, típusát ( C,D,B,N ), relokálható (R), vagy abszolut címre (A) került a deklarálásnál, valamint azt, hogy a lista hányadik sorában került deklarálásra #, és melyik sorokban használt még az adott szimbólum. A relokálhatóaknál még a szegmensnév is látható. Megfigyelhető, hogy minden relatívan
12 23 24 (relokálhatóan) deklarált szegmens változóinak címe 0-án kezdődik. A tényleges címet a szerkesztés ( linkelés ) után kapják meg. A51 MACRO ASSEMBLER PELDA1 DATE 02/09/96 PAGE 1 MS-DOS MACRO ASSEMBLER A51 V4.4 OBJECT MODULE PLACED IN C:\XE2A51\GYAK\PELDA1.OBJ ASSEMBLER INVOKED BY: A51 C:\XE2A51\GYAK\PELDA1.A51 LOC OBJ LINE SOURCE 1 ;xxxxxxx fordítási parancsok xxxxxxx 2 3 $XREF 4 $DEBUG 5 6 ;******************************************************* 7 ;* K K M F Automatika Intézet * 8 ;* Elektronika Szakcsoport * 9 ;******************************************************* 10 ;* F program: Helyfoglalás adatoknak * 11 ;* Változat: V1.0 * 12 ;* Dátum: * 13 ;* Készítette: Zalotay Péter * 14 ;******************************************************* 15 ;* A modul leírása: * 16 ;* Példák a különböző helyfoglalási megoldásokra * 17 ;******************************************************* NAME Pelda_ ;xxxxxxx Deklarációk xxxxxxx ;**** Relatív címmegadások (relokálható szegmensek)***** VALT1 SEGMENT DATA ;Adatszegmens a direkt címezhető belső mem.-ban 26 VALT2 SEGMENT DATA BITADDRESSABLE ;Adatszegm. a bit címezhető belső m.-ban 27 VALTB SEGMENT BIT ;Bit szegmens 28 STACK SEGMENT IDATA ;Stack szegmens 29 PROG SEGMENT CODE ;Program szegmens ;****** Program szegmens ****** RSEG PROG F 35 MOV SP,#STACK-1 ;A program első utasítása 36 ;. 37 ;. 38 ;. ;A program vége ;****** Adatszegmens a direkt címezhető belső memóriában ****** RSEG VALT V1: DS 1 ;Helyfoglalások a V1,V2,V3 változóknak V2: DS V3: DS DS 20 ;Nevezetlen memóriaterület lefoglalása ;***** Adatszegmens a bit címezhető belső memóriában ***** RSEG VALT BEM: DS 1 ;Helyfoglalás a BEM és KIM változóknak KIM: DS ;***** Bit szegmens ***** RSEG VALTB B1: DBIT 1 ;Helyfoglalás a B1,B2,B3 kétértékű változóknak B2: DBIT B3: DBIT ;***** Stack szegmens **** RSEG STACK DS 10H ;Stack memória lefoglalása ;***** Abszolút címmegadások **** CSEG AT 1000H F 75 FOLYT: MOV R0,#KIM DSEG AT 30H BEM2: DS KIM2: DS V4 DATA 32H 00AF 82 K1 EQU 0AFH BSEG AT 30H B4: DBIT B5: DBIT B6 BIT BEM END XREF SYMBOL TABLE LISTING N A M E T Y P E V A L U E ATTRIBUTES / REFERENCES B1.... B ADDR 0000H.0 R SEG=VALTB 60# B2.... B ADDR 0000H.1 R SEG=VALTB 61# B3.... B ADDR 0000H.2 R SEG=VALTB 62# B4.... B ADDR 0026H.0 A 86# B5.... B ADDR 0026H.1 A 87# B6.... B ADDR 0000H.0 R SEG=VALT2 88# BEM.... D ADDR 0000H R SEG=VALT2 53# 88 BEM2... D ADDR 0030H A 79# FOLYT... C ADDR 1000H A 75# K1.... N NUMB 00AFH A 82# KIM.... D ADDR 0001H R SEG=VALT2 54# 75 KIM2... D ADDR 0031H A 80# PELDA_ PROG... C SEG 0003H REL=UNIT 29# 33 SP.... D ADDR 0081H A 35 STACK... I SEG 0010H REL=UNIT 28# V1.... D ADDR 0000H R SEG=VALT1 44# V2.... D ADDR 0001H R SEG=VALT1 45# V3.... D ADDR 0003H R SEG=VALT1 46# V4.... D ADDR 0032H A 81# VALT1... D SEG 0018H REL=UNIT 25# 42 VALT2... D SEG 0002H REL=BITADDRESSABLE 26# 51 VALTB... B SEG 0003H REL=UNIT 27# 58 REGISTER BANK(S) USED: 0 ASSEMBLY COMPLETE, NO ERRORS FOUND A több modulos programoknál az egyes forrásnyelvi fájlok szerkezete a bemutatotthoz hasonló. Ilyen programokban a szimbólumoknak két fajtája létezik. Mégpedig: a modulra lokális, és a globális típusok. A modulra lokális csak az adott modulban érhető el, itt történik a deklarálásuk is. A globálisak minden modulból elérhetőek. Ezeket abban a modulban, ahol deklaráljuk a PUBLIC direktíva után fel kell sorolni. azokban a modulokban pedig, ahol felhasználjuk az EXTERN direktívával kell megjelölni az alábbiak szerint. ;xxxxxxx Használt külső függvények xxxxxx EXTRN CODE (STRKI,KIIR,BEOLV,T0O)
13 25 26 ;xxxxxxx Használt külső változók xxxxxxx EXTRN DATA (BEM,BEMP,KIM) EXTRN BIT (LEP_J,LEP_BE,G_LEP,FUT_J,FUT_BE,KI,IR,IDOB) PUBLIC ;xxxxxxx Kivülről elérhető szimbólumok xxxxxxx START,VBEC,VKIC,DBEC,DKIC,LEDS,NGS Paraméter értékadásának ismétléséhez használható az IRPC makró-utasítás. pl.: definíció eredmény IRPC X,1987 ADDC A,#1 ADDC A,#X ADDC A,#9 ENDM ADDC A,#8 ADDC A,# Makrók definiálása és használatuk A makró olyan programrészlet, amelyet többször is akarunk használni, de eltérő argumentumokkal (operandusok, változók stb.). Az argumentumok a makró paraméterei. A makrót - a felhasználás előtt - definiálni kell, majd ezután lehet a makrót felhasználni (makróhívás). Definiálás A definiáláshoz használjuk a következő makróutasításokat. MACRO ENDM LOCAL IRP IRPC EXITM Az általános makro-definíció a Makro_név MACRO [ paraméterek ] sorral kezdődik, majd ezt követik a programutasításokat tartalmazó sorok az un. makró-törzs. Az utolsó sor az ENDM makró-utasítás kell legyen. pl. CLEAR MACRO G1,G2 MOV R0,#G1 MOV A,#G2 ENDM Amennyiben a makrón belül címké(ke)t kell használni, akkor ez(eke)t a makro-törzsben a LOCAL direktívával deklarálni kell. pl.: MEMCLR MACRO P1,P2,P3 LOCAL ISM MOV R0,#P1 MOV A,#P2 MOV R7,#P3 ISM: INC R0 DJNZ R7,ISM ENDM Azonos programrészek ismételhetők a REPT makró-utasítással. pl.: definíció eredmény REPT 3 INC DPTR INC DPTR ENDM INC DPTR INC DPTR Ha egy paraméternek több értéket kívánunk adni, akkor ez az IRP makró-utasítással hajtható végre. pl.: definíció eredmény IRP X,<VAR1,V2,Z1> MOV R1,VAR1 MOV R1,X MOV R1,V2 ENDM MOV R1,Z2 Az EXITM makró-utasítás a makróból történő feltételes kilépést teszi lehetővé. pl.: MAC2 MACRO X,Y... IF X = 0 ; vagy X EQU 0 EXITM ENDIF... ENDM Makróhívás A már definiált makrót a programban a következő formában kell használni. Makro_név [ paraméterek ] pl.: CLEAR 20H,0 ; a CLEAR makró hívása. MEMCLR 20H,0,10 ; a MEMCLR makró hívása Fordítási parancsok A forrásnyelvi fájl fordítási módozatára adhatók a fordítási parancsok. A parancsok között az elsődleges típusúak csak egyszer használhatók, és a forrás-program legelső - értékelhető - sorában kell megadni (megjegyzés, magyarázó szöveg megelőzheti). A másodlagos típusú parancsok a programban többször, és bármely helyen megadhatók. Mindkét típusú parancsot sor elejére a $ jellel kezdve kell írni. A fordítási parancsok egy külön csoportját alkotják a feltételes parancsok, melyek segítségével - megadott feltételektől függően - programrészek kitilthatók a fordításból Elsődleges parancsok: DATE (rövidítve: DA) A lista minden oldalán a fejlécbe dátum írása. A dátum maximálisan 9 betűs lehet. Alapértelmezés: MS-DOS szerinti írásmód Pl.: $ DATE (12/07/96) DEBUG/NODEBUG (rövidítve: DB/NODB) A DEBUG parancs hatására a szimbólum információk ( címkék, szimbólumok és értékük ) is belekerülnek a *.obj fájlba. Ezek révén a szimulátor, illetve emulátor is megjeleníti ezeket a szimbólumokat. Alapértelmezés: NODEBUG Pl.: $ DEBUG $ DB $ NODB ERRORPRINT/NOERRORPRINT (rövidítve: EP/NOEP) A fordítás során felismert hibákat lehet egy megadott fájlba kiíratni. Nem változtatja meg azt, hogy a hibák a lista fájlba is bekerülnek Alapértelmezés: NOEP Pl.: $ EP(PROG1:ERR) $ NOEP OBJECT/NOOBJECT (rövidítve: OJ/NOOJ ) Parancs object fájl készítésére, vagy letiltására. Ha nem adunk meg nevet, akkor a forrásfájl nevén készül a fájl. Alapértelmezés: OBJECT ( fájl_név.obj) Pl.: $ OBJECT (C:\XE2A51\PELDA1.OBJ) $ NOOJ PAGELENGHT (rövidítve: PL)
14 27 28 A listázásnál egy lapra írt sorok számát adja meg az utasítás után zárójelbe írt 10-nél nagyobb szám. Alapértelmezés: PL (68) Pl.: $ PAGELENGHT (132) $ PL (75) PAGEWIDTH (rövidítve PW) A listázásnál egy sorba írt karakterek számát adja meg az utasítás után zárójelbe írt közötti szám. Alapértelmezés: PW(120) Pl.: $ PW (79) $ PAGEWIDTH(122) PRINT/NOPRINT (rövidítve: PR/NOPR ) Készítsen, vagy ne készítsen lista fájlt. Ha a PRINT utasítás után nem adunk meg fájl nevet, akkor a forrásnéven készül a lista. Alapértelmezés: PRINT(forrás_név.LST) Pl.: $ PRINT $ NOPR $ PR(temp.lst) SYMBOLS/NOSYMBOLS (rövidítve: SB/NOSB ) Írjon, vagy ne írjon szimbólum azok attribútumaival táblázatot a lista végére. Alapértelmezés: SYMBOLS Pl.: $ SYMBOLS $ NOSB MOD51/NOMOD51 (rövidítve: MO/NOMO ) Az alapértelmezésben (MOD51) az assembler felismeri a 8051 kintroller regiszter és SFR szimbólumait. Amennyiben más típushoz készül a program, akkor a NOMOD51 parancsot kell megadni, és az alkalmazott kontroller szimbólumait tartalmazó un. include fájlt (pl.: REG552.INC) kell a program elején beolvastatni az INCLUDE másodlagos paranccsal. Alapértelmezés: MOD51 Pl.: $ NOMOD51 COND/NOCOND (rövidítés: nincs) A COND parancs hatására feltételes fordítás (IF-ELSEIF-ENDIF szerkezet) érvénytelen részét is listázza, míg a NOCOND megadásnál nem. Alapértelmezés: COND Pl.: $COND $ NOCOND MACRO/NOMACRO (rövidítés: nincs) Alapértelmezésben felismeri, és feldolgozza a makró-definíciókat. A NOMACRO utasítás hatására a fordító nem dolgozza fel a makrókat. Alapértelmezés: MACRO Pl.: $MACRO $ NOMACRO REGISTERBANK/NOREGISTERBANK (röviditve: RB/NORB ) Az RB parancs határozza meg, hogy a programban melyik ( zárójelbe irt szám/számok ) regiszterbankokat kívánjuk használni. A NORB parancs megszünteti a helyfoglalást a bank számára. Alapértelmezés: REGISTERBANK(0) Pl.: $ REGISTERBANK (0,1) $ NORB XREF/NOXREF (rövidítve: XR/NOXR ) Írjon, vagy ne írjon szimbólum táblázat után keresztreferencia listát. Alapértelmezés: NOXREF Pl.: $ XREF $ NOXR TITLE (rövidítve: TT) Írjon a lap tetejére fejlécet. A szöveget zárójelben kell a parancs után írni. Alapértelmezés: TITLE a fájl neve kiterjesztés nélkül, vagy a 'NAME' paranccsal megadott név. Pl.: $ TITLE ( modul meghatározás ) Másodlagos parancsok EJECT (röviditve: EJ ) A parancs hatására a listában lapdobás következik Pl.: $ EJ INCLUDE (rövidítve: IC) A parancstól kezdve a fordító a zárójelbe irt fájlt fordítja és iktatja be az object fájlba, majd folytatja a forrásfájl fordítását. Maximálisan kilenc ilyen közbeiktatást alkalmazhatunk. Pl.: $ INCLUDE (REG552.INC) LIST/NOLIST (rövidítve: LI/NOLI ) A parancsok arra adnak utasítást, hogy a következő részeket listázza, vagy ne. Ezzel meghatározott részek listázása mellőzhető. Alapértelmezés: LIST Pl.: $ LIST $ NOLIST GEN/NOGEN (rövidítés: nincs ) A parancsok azt határozzák meg, hogy a makró-kifejtés bekerüljön, vagy ne a listába. Alapértelmezés: GEN Pl.: $ GEN $ NOGEN Feltételes fordítási parancsok SET/RESET A feltételes fordítás számára deklarál, vagy szüntet meg szimbólumot és rendel a szimbólumhoz értéket. Ha csak a szimbólumot deklaráljuk, akkor értéke 0FFFFH lesz. Pl.: $ SET (TMP, VALT= 55) $ RESET (TEMP,VALT) IF A feltételes szerkezet kezdő parancsa. Utána kell megadni az értékelendő feltételt. Ha a feltétel teljesül, akkor folytatódik a fordítás, ellenkező esetben az ENDIF parancs utáni rész fordítása következik. Pl.: $ IF ( VALT=55) 1.programrész $ ENDIF 2.programrész ELSE Választásos feltételes szerkezet ( IF-ELSE-ENDIF) parancsa. Ha az IF feltétele nem teljesül, akkor az ELSE utáni rész fordítása következik. Pl.: $ IF ( VALT=55) 1.programrész $ ELSE 2. programrész $ ENDIF 3.programrész ELSEIF Egymásba ágyazott választásos feltételes szerkezet parancsa. Az ELSE ágon belül újabb IF, vagy IF-ELSE szerkezet beiktatását teszi lehetővé. Pl.: $ IF ( VALT=55) 1.programrész $ ELSEIF(VALT2) 2.programrész $ ELSEIF ( SWITCH=2) 3.programrész $ ENDIF 4.programrész ENDIF A feltételes fordítási szerkezet lezáró parancsa.
15 Szimulátor program az 51/52 mikrokontrollerekhez (SIMULA5X) A PC-n futó szimulátor program arra szolgál, hogy a mikrokontrollerben futó programot ellenőrzött módon lehessen végrehajtani. Ez azt jelenti, hogy a program végrehajtása közben: meg tudjuk vizsgálni és esetleg módosítani a kontroller bármelyik regiszterének tartalmát (watch), meg tudjuk a program futását adott helyen állítani, azaz töréspontot tudjunk elhelyezni (breakpoint), tudjuk a programot lépésenként futtatni (single step), a külső környezetből jövő (input) adatokat fájlból beolvasva szimulálni (stimulus), illetve kiküldött (output) adatokat fájlba eltárolni, a szimuláció során bekövetkező eseményeket a későbbi elemzés céljából gyűjteni (log). A program elindítása után a következő képet látjuk a számítógép képernyőjén: A fő menüpontok File Run View Break Assemble Options F1=Help R0 R1 R2 R3 R4 R5 R6 R7 A B DPTR PC PSW Flags RB xxxx PROG: + SP= : C LJMP INIT : 75 D0 00 MOV PSW, #00 + FF: INTRCL: + 03: : 78 FF MOV R0, #FF + SP: VICL: : #00 + OP-2: A: D8 FC DJNZ R0, VICL + OP-1:0000 INIT1: ţ 000C: MOV SP, #60 + P0 = F: 90 5F FF MOV DPTR, #5FFF + P1 = : C2 03 CLR GYU + P2 = : LCALL LACINIT + P3 = MAIN: + P4 = : LCALL PICOLV + PWM0:0 PWM1:0 W 001A: F5 F0 MOV B, A - IData A--B--C--D--E--F-IData-SFR-XData-Code- 0000: *...* 0010: *...* 0020: *...* F2=SFR, F4=Goto Addr, F7=Step, F8=Proc, F9=Run, Alt F..,F10=Menue 80552/83552 Mivel a program támogatja az egér használatát, ezért a szokásos módon egérrel és billentyűzettel is kezelhető. A következőkben a File főmenüpontból elindulva megmagyarázzuk az egyes menűpontok jelentését: Load Intel Hex file Load binary file Load symbol file Clear symbol stack Write Intel Hex file Write binary file Load stimulus file Open log file DOS command Quit ALT-F4 Ha van stimulus fájl akkor az aktuális sor száma File menü parancsai: A legfontosabb regiszterek neve, alattuk az aktuális tartalmuk Intel hexa formátumú fájl betöltése. (ld. később!) Bináris fájl betöltése - az a fájl a kódmemória bináris alakját tartalmazza Szimbólum fájl betöltése - a forrásprogramban használt címkék, változók nevei A szimbólumokat tartalmazó verem törlése A memória tartalmának Intel hexa formátumú fájlba írása A memória bináris tartalmának fájlba írása A bemeneti gerjesztéseket tartalmazó fájl betöltése A szimuláció alatt történt portokra vonatkozó eseményeket naplózó fájl nyitása DOS parancs kiadása a programból való kilépés nélkül Kilépés a programból A verem memória környezete A veremmutató aktuális értéke A program listája: programszámláló, utasításkód, mnemonik Memóriatartalom kijelzése: IData-belső RAM SFR-SFR regiszterek Xdata-külső RAM Code-progr.memória Az előzőleg végrehajtott utolsó két utasítás címe Portok kijelzése/ beállítása Segítő sor A gerjesztéseket tartalmazó fájlt egy szövegszerkesztővel lehet megírni. A pontosvesszővel és a /*-al kezdődő sorok megjegyzésnek minősülnek. Csak néhány utasítás használható. Portpknak és bitjeinek értékadása, késleltetés két gejesztés között (gépi ciklusban), várakozás portbemenet állapotára. Betöltéssel már aktivizáljuk a stimulus fájlt, és a képernyő bal felső felében megjelenő sor száma jelzi, hogy a fájl hányadik sora hajtódik végre. Egy kis mintafájllal illusztráljuk az elmondottakat. Run menü parancsai: Single step F7 A program lépésenkénti végrehajtása Single proc F8 A program lépésenkénti végrehajtása, szubrutinok is egy lépésben Run program F9 A program végrehajtása Goto address F4 A program adott címére ugrás Restart user prog A újra indítása Lépésenkénti program végrehajtás Ha a töréspontok elhelyezésével sikerült meghatározni azt a programrészt, ahol a program hibásan működik, akkor ezen a részen belül a hibás utasítás vagy utasítássorozat megtalálása a lépésenkénti program végrehajtás segítségével könnyen elvégezhető. Ebben az üzemmódban a felhasználói programnak mindig csak egy utasítása hajtódik végre, és ilyenkor mindig lehetőség van a regiszterek vagy a tártartalmak vizsgálatára, vagyis a végrehajtott utasítás hatásának, a program helyes működésének az ellenőrzésére. Lehetőség van szubrutinok egy lépésben történő végrehajtására is. View menü parancsai: Register, R0... R0-R7 regisztertömb kijelzése/módosítása Ports, P0... Portok kijelzése/módosítása Internal RAM, Idata SFR Speciális funkciójú regiszterek Extern. memory,xdata Külső adatmemória megnézése/módosítása Code memory, Cdata Program memória megnézése/módosítása IData symbols Belső RAM - hoz a programban rendelt szimbólumok megnézése SFR symbols SFR-ekhez a programban rendelt szimbólumok megnézése Bit symbols Bitekhez a programban rendelt szimbólumok megnézése Code symbols A programban használt szimbólumok megnézése XData symbols Külső RAM - hoz a programban rendelt szimbólumok megnézése Serial input Soros bemenetre küldött adatok Serial output Soros kimeneten megjelenő adatok Cycle count Ciklusszám megjelenítése Break menü parancsai: Set breakpoint ctrl-b Töréspont beállítása Clear breakpoint ctrl-e Töréspont törlése Remove all breakpoints Az összes beállított töréspont eltávolítása List breakpoints Töréspontok listázása /* Stimulus minta fájl ; Portok beállítása (többfajta megadás lehetséges!) P0=055h, P1=0xff, P2 = $0FF ; delay n -> n gépi ciklusnyi késleltetés delay=10 P0=0, P1=055h, P2 = 0AAh, P3=03Ch Portbitek állítása P0.0=0 delay = 5 ; wait várakozás a portbit adott állapotára, ; csak akkor megy tovább wait P1.0=1 P4 = 0 ;analóg bemenetek állítása AD0 = 0.01, AD1=0.1, AD2=0.2, AD3=0.3 delay = 10 AD4 = 0.4, AD5=0.5, AD6=0.6, AD7=0.7 AD0= 0.99 ; break = a stimulus vége wait p3.3=1, break A felhasználónak a program belövése során igen nagy segítséget nyújt, ha a programot egy, még az indítás előtt kijelölt címen meg lehet állítani, azaz a futását felfüggeszteni. Ekkor ugyanis a regiszterek és a programban használt változók tartalmainak vizsgálatával könnyen eldönthető, hogy a program eddig a pontig helyesen, vagy hibásan működött. A
16 31 32 teljes programot több, logikailag jól elhatárolt részre bontva, a hibásan működő programrész gyorsan meghatározható. Az ilyen leállási feltétel--azaz töréspont (angolul breakpoint (e.: brékpoint)-- a programban több is elhelyezhető. Assemble menü parancsai: Assemble Disassemble screen Disassemble PRN Move code memory Fill code memory Assembler forráskód beírása Kódból visszafordított assembler forrás képernyőre írása Kódból visszafordított assembler forrás nyomtatóra Program memória átmozgatása Program memória feltöltése -l : Laptop képernyő -sascii : Soros adatok ASCII alakban -com1 : 1-es soros vonal kiválasztása -com2 : 2-es soros vonal kiválasztása -nm0 : 8k közös program és adatmemória 0 címtől -nm8 : 8k közös program és adatmemória 8000h címtől -nm32 : 32k közös program és adatmemória 8000h címtől -nm64 : 64k közös program és adatmemória 0 címtől -? : help Például: A fejlesztői munka során gyakori, hogy egy gépi kódú programrészlet működését kell megérteni. A gépi kódból az utasítások visszafejtése, egy aránylag egyszerűen programozható tevékenység. Lényegében a fordítóprogram (az assembler) működésénél leírtak "visszafelé történő" végrehajtására, sőt ennél egy kicsit egyszerűbb műveletre kell gondolni. Az assembler ugyanis az állandó és a változó szimbólumtáblát is kezeli, vagyis a felhasználó által definiált szimbólumok értékeit nyilván kell tartania és a fordítás során a keletkező gépi kódba ezt be kell szerkesztenie. A visszafordítás (a disassemblálás) során csak az állandó szimbólumtáblát kezeljük. Az operandus mezőben szereplő értékeket nem szimbolikusan, hanem abszolút formában, hexadecimális számként jelezzük ki. A visszafordító program működése tehát viszonylag egyszerű. Az első (vagy első két) bájtból megállapítja hogy milyen utasításról van szó, a táblázat alapján kiírja a mnemonikját, értelmezi és visszafordítja az operandus mezőben szereplő értéket. A probléma azonban ott kezdődik, ha nem tudjuk, hogy melyik az utasítás első bájtja. Ugyanez az eset áll elő akkor is, ha ismerjük ugyan a program kezdetét, de a program utasításai között adatterület is elhelyezkedik. Mindkét eset azt eredményezi, hogy a visszafordító program adatot értelmez utasításként és így hibásan fordít vissza. Ezért minden visszafordítást kritikával kell fogadnunk. Ellenőriznünk kell, hogy nem tévedt-e el a visszafejtő program. Például gyakran előfordul, hogy egy programrészben egymás után sok MOV utasítás szerepel. Ez a terület szinte biztosan nem programot tartalmaz, hanem szöveget, mivel az MOV utasítás kódjai éppen az ASCII kódtáblában értelmezett kódok tartományába esnek. Ennek gyors ellenőrzésére a legtöbb visszafejtő program egyszerű lehetőséget biztosít azzal, hogy a visszafejtett listán a bájtoknak megfelelő ASCII kódot is megjeleníti, a nem ábrázolható kódokat egy "."-al jelezve. A tapasztalat azt mutatja, hogy a visszafordítás az adatterület vége után 5-6 bájttal helyreáll. Ez annak köszönhető, hogy az MCS-51 utasításai között aránylag sok az egybájtos utasítás. Egy ilyen területre "ráfutva" a visszafordítás ismét helyes lesz. Mivel a maximális utasításhossz négy bájt lehet, ezért elegendő három egymást követő egybájtos utasítás ahhoz, hogy a "tévelygés" megszűnjön. Igényesebb visszafejtők, ha előre megadjuk, akkor a táblázatos részt nem utasításként, hanem táblázatként adják vissza a listában. Másik fejlett szolgáltatásuk abban áll, hogy a visszafejtett listát- -ami tulajdonképpen egy szövegfájl--képes a rendszer szövegszerkesztője fogadni, és ebből a visszafejtett listából fordítható forrásnyelvi listát készíteni. Options menü parancsai: MCU 8051/8031 MCU 8052/8032 MCU 83C552/80C552 Szimulálandó processzortípus kiválasztása MCU 80515/80535 MCU 80C517/80C537 Reset mikrocontroller Kontroller RESET-elése (alapállapotba hozása) 80C552 Watchdog en. 80c552 watchdog áramkörének engedélyezése 80C517 data pointer 80c517 adatmutatójának beállítása (mivel több van) 80C517 PE#/SWDT-pin láb beállítása A/D-Converter voltage A/D átalakító feszültsége - itt adhatók meg a bemeneti feszültségek értékei. Ports for log file Melyik portokat naplózzuk Serial I/O ASCII a soros vonal bájtjainak ASCII alakja A parancsfájlokban való használat miatt a program parancssorból is indítható. A szimulátor program kapcsolói -i [Fájlnév] : Intel hexa fájl betöltése -b [Fájlnév] : Bináris (abszolút) gépi kódú fájl betöltése -a [Adresse] : A gépi kód kezdőcíme -s [Fájlnév] : Szimbólumfájl betöltése : MCU 8051 / : MCU 8052 / : MCU / : MCU / : MCU / nc : nincs a kis és nagybetű megkülönböztetve simula5x -i proba -s proba Az Intel hexa formátum Az Intel hexa formátumnál az adatokat rekordokba szervezik. Egy rekord változó hosszúságú lehet. A rekordban az első mező a rekordjelző mező (Record Mark Field). Ez a mező jelzi a rekord kezdetét és egy ASCII kettőspontot tartalmaz (:). A második mező a rekordhossz mező (Record Length Field). Ez a mező két ASCII karaktert tartalmaz, melyek jelzik a rekordban lévő adatbájtok számát. A hexadecimálisan adott adatbájtok számát két ASCII karakterré konvertálva adódik ki a mező két karaktere, a magasabb helyiértékű digit szerepel előbb. Egy rekordban maximálisan 255 adatbájt lehet. A harmadik mező a betöltési cím mező (Load Address Field). Ez a mező négy ASCII karaktert tartalmaz, a rekord hexadecimálisan adott betöltési címének ASCII karakterré konvertált értékét az alábbi sorrendben: a cím felső bájtjának magasabb helyiértékű digitje, a cím felső bájtjának alacsonyabb helyiértékű digitje, a cím alsó bájtjának magasabb helyiértékű digitje, a cím alsó bájtjának alacsonyabb helyiértékű digitje. A rekordban lévő első adatbájt a betöltési címre töltődik, az utána következő adatbájtok a sorban következő címekre. A fájlvége (End Of File, EOF) rekordban ez a mező négy ASCII nullát tartalmaz vagy a program kezdőcímét. A negyedik mező a rekord típus mező (Record Type Field). A rekord típus adatrekord esetén 00, fájlvége rekord esetén 01. Ez a mező két ASCII karaktert tartalmaz, a rekord típus ASCII karaktereit, a magasabb helyiértékű digit szerepel előbb. Az ötödik mező az adat mező (Data Field). Ez a mező tartalmazza az aktuális adatokat két-két ASCII karakterré konvertálva, a magasabb helyiértékű digit szerepel előbb. A fájlvége rekordban nincs adat mező. Az utolsó mező az ellenőrző összeg mező (Checksum Field). Az ellenőrző összeg a második, harmadik, negyedik és az ötödik mező hexadecimális bájtjainak 8 bitre csonkított összegének kettes komplemense. Az így kapott összeget két ASCII karakterré konvertálva kapjuk a mező két karakterét, a magasabb helyiértékű digit szerepel előbb. A leírásból is látható, hogy egy Intel hexa formátumú fájl egy szöveges (ASCII) fájl, így pl. egy szövegszerkesztő vagy listázó program segítségével megvizsgálhatjuk a tartalmát. Példa Intel hexa formátumra: : A D F4C5453 :0B D A54454E49C7 : FF A leiráshoz kapcsolódva, az első sor mezői: : A D F4C es programok fejlesztése PC-n Az 51-es rendszerfejlesztéshez szükséges lépések az ábrán láthatók. A lemezen az XMCS5X könyvtárba kell a SIM51.BAT fájlt elhelyezni. Ide kell elhelyezni a saját írandó programunk vázát.a51 kiterjesztéssel. Az alattuk lévő PROGR alkönyvtárban vannak a fejlesztést megvalósító programok. A fejlesztés a SIM51 fájlnév parancssorral indítható. Az A51 kierjesztést nem szabad megadni!!! Ezek után a bejelentkező képernyőn megjelenik egy szöveg, amelyben leírtak alapján az egyes lépések sorrendje módosítható, vagy megfelelő funkció kiváltható. A lépések sorrendje megváltoztatásában négy gombnak van szerepe: E - mindig a szövegszerkesztőhöz tér vissza. U - az MCS51 utasításkészletet jeleníti meg R - a fejlesztés közben keletkező fájlokat törli Q - kilépés a programból A.HEX fájl előállítása után a T billentyű megnyomásával a szimulátor indítása helyett a hardver fejlesztőeszközhöz kapcsolódó TERMINÁL programot hívja meg, és a program már egy tényleges hardveren futhat a szimulátor helyett. A fejlesztő környezet egy IBM-PC számítógép, és a hozzá soros vonalon kapcsolódó fejlesztő rendszer. A fejlesztő rendszer induláskor egy olyan EPROM-ot tartalmaz, amelyben egy a programfuttatást segítő monitorprogram van. A program biztosítja, hogy az IBM-PC-n fejlesztett programunkat hexadecimális formában letöltsük a fejlesztő rendszerünkram-jába és ott azt a monitor felügyelete alatt futtassuk.
17 33 34 Az IBM-PC szerepe: Fejlesztői üzemmódban a program fejleszthetését: írását, fordítását, linkelését, majd a tárgykód hexadecimális formában letöltését, és monitor felügyelete alatti futtatását végezhetjük. Monitor üzemmódban a PC a monitor termináljaként működik, itt adhatók ki a parancsok, illetve a válaszok a képernyőn megjelennek. 5.1 A TERMINAL program leírása A funkcióbillentyűzetről kiadható parancsok F1: Help - Segítség. Ez a funkció megjelenít egy ablakot, melyben a funkcióbillentyűk jelentése látható. Az ablak bármelyik gomb megnyomására eltűnik. F3: Chdir - Könyvtár váltás. A DOS chdir (cd) parancsát valósítja meg, de nem parancssorosan, hanem egy menüben megjelennek a könyvtárak, és ezek között a kurzormozgató billentyűk valamint az Enter gomb megnyomásával lehet választani. Az éppen aktuális könyvtár mindig a képernyő legalsó sorában jelenik meg. A funkcióból az ESC gomb megnyomásával lehet kilépni, és az aktuális könyvtár az lesz, ahol éppen az ESC megnyomásakor voltunk. F4: Load - E funkció segítségével INTEL hexa formátumú fájlt lehet áttölteni a fejlesztendő rendszer RAM-jába. A képernyőn megjelenik egy szerkesztő ablak; benne az aktuális fájl névvel és útvonallal. Ide lehet beírni a fájl nevét, vagy az F10 megnyomásával megjelenik egy menü, melyben a könyvtárak valamint a.hex kiterjesztésű fájlok láthatók. A könyvtárak között a kurzor mozgató billentyűk valamint az Enter gomb megnyomásával lehet váltani. Ha az Enter gombot egy.hex fájlon állva nyomjuk meg, akkor ez lesz a letöltendő fájl. Ha megnyomjuk az ESC-et akkor úgy térhetünk vissza a fájl név szerkesztéséhez, hogy ott az a fájl név marad, ami a lista meghívásakor volt. Letöltés közben az Intel HEX fájlnál az aktuális hexadecimális cím látható. A művelet ESC billentyű megnyomásával megszakítható. F5: Shell - ideiglenesen kiléphetünk a TERMINAL programból és visszatérhetünk a DOS-ba. Az "EXIT" parancs beírásával térhetünk vissza a TERMINAL programba. F6: Load & Autostart - Ez megfelel az F4 billentyűvel aktivizált parancsnak, azzal a kiegészítéssel, hogy letöltés után azonnal el is indítja a letöltött gépi kódú programot. (Indítási cím a letöltött program első sorában van.) F8: Execute Command - Parancs végrehajtás. A megjelenő ablakban meg lehet adni egy DOS parancsot, amit a TERMINAL oly módon hajt végre, hogy ideiglenesen kilép a DOS-ba és a DOS végrehajtja a parancsot. A parancs eredménye a képernyőn megtekinthető, majd egy billentyű megnyomásával visszatérhetünk a TERMINAL programba. F10: Exit - kilépés a TERMINAL programból. A képernyőn megjelenik egy ablak, mely a kilépési szándék megerősítésére vár. Ha a "Yes" feliraton állva nyomjuk meg az Enter gombot, akkor kilép, minden más esetben elveti a kilépési szándékot. Parancssoros hívás: TERMINAL [baudrate] [filename] [portnum] Itt baudrate a szabványos adatátviteli sebességek (110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, ) valamelyike, a filename a letöltendő fájl neve és a portnum a COM port sorszáma (1,2). Parancssor nélkül indítva az alapértelmezés a 9600 baud és COM1. A megírt assembler program működő képességéről a program futtatásával lehet meggyőződni. Azonban ehhez a futtatáshoz (és az esetleges hibakereséshez) egy olyan eszközt kell biztosítani, amivel lehetséges: a futtatandó program indítási címének megadása és indítása, a processzor regisztereinek kijelzése és módosítása, stb. Ezt a feladatot egy gépi szintű, általában kisméretű önálló program, az ún. monitor végzi el. A monitor segítségével tudja a felhasználó a saját gépi szintű programjának működését ellenőrizni és az előforduló hibákat javítani. Ezt a folyamatot a program "belövésének" nevezzük. A program belövése során általában a következő funkciókra van szükség: adott memória tartalom megjelenítése (kiíratása) és esetleges módosítása, 6. A 8051 mikrokontrolleres gyakorló COMx AN0-AN7 ANI OUT0-OUT7 HOUT1- HOUT4 RxD,TxD SIO adott regisztertartalom megjelenítése (kiíratása) és esetleges módosítása, program indítása, töréspont elhelyezése a programban, lépésenkénti program végrehajtás, a tárban lévő program rögzítése háttértárolón és visszatöltése a tárba. A mérésben használt monitorprogramot tartalmazó mikrogép blokk-sémája az ábrán látható. 6.1 A gyakorló felépítése C P U I O I L L A 8 bites PCB80C552 mikrokontroller bázisú központi egység ( CPU ), az IOILL (periféria illesztő) egységen keresztül a következő - memóriába ágyazott - perifériákat kezeli: BNG 8 db nyomógomb cím: 0C000H BK 8 db LED cím: 0C001H KKJ 2*16 karakteres LCD kijelző cím: 0C003H (VKIC), 0C007H (DKIC), 0C00BH (VBEC), 0C00FH (DBEC), RO 8 db relés kimenet cím: 0C000H OPIN 8 db optocsatolt bemenet cím: 0C002H OHID 2 db optocsatolt tranzisztoros hid cím: C002H ANI 8 db analóg bemenet cím: P5 OPPORT ap1,p3,p4 portok egyes bitjeinek optocsatolt kivezetései cím: P1,P3,P4 SIO soros port (RS232) PC RO OHID BK BNG P1 P4 P3 P1.0 - P1.7 DPORT P4.0 - P4.7 P1.0-P1.5 KKJ OPIN Karakter kijelző P4.0-P4.7 P3.2-P3.4 OPPORT IN0-IN7 U/f A CPU - ban találhatók: mikrokontroller (PCB80C552) címdekódoló-vezérlő logika 32 Kbájt EPROM 32 Kbájt RAM A mikrokontroller portjai (P0-P5) az alábbi feladatokat látják el:
18 35 36 P0 multiplexelt ADAT és CIM (AD0-AD7) busz ellátja a kártyán belüli adatátviteli és címzési feladatokat. P1 általános célú portként, vagy a hozzárendelt speciális funkciókra (capture, I 2 C-soros átvitel, T2 indítás) használható. P2 a cím-busz felső nyolc bitjét (A7-A15) állítja elő. P3 ellátja normál soros átvitelt (RxD, TxD), a külső megszakitáskérések (T0,T1,INT0,INT1) fogadását a a belső adatmemória vezérlést (RD,WR). P4 általános célú portként, vagy a hozzárendelt speciális funkcióra (komparálás) használható. P5 egyetlen funkciója az ANALOG (AN0-AN7) jelek fogadása. A STADC - a konverziót kívülről indító - bemenet. PWM0, PWM1 szélesség-modulált kimenetek. A címdekódoló-vezérlő logika végzi a - program-, és adatmemóriák (EPROM, RAM) és - a diszkrét I/O vonalak kiválasztását és az írás, olvasás vezérlését. Az áramköri kialakítás biztosítja, hogy programot ne csak az EPROM-ból, hanem a RAM-ból is lehessen futtatni. A megoldás teszi lehetővé, hogy a programfejlesztés során valós-idejü ellenőrzést is végezhessünk. A 32 Kbájt kapacitású EPROM két címterületre oszlik: a 0000H - 3FFFH 16 Kbájt-os címtartományban csak a PSEN érvényes. Ezért e területről a mikrokontroller csak programot olvashat, a 8000H - BFFFH 16 Kbájt-os címtartományban a PSEN mellett az RD is hatásos. Ezért innen program és adat olvasása is történhet. A 32 Kbájt kapacitású RAM - ban is két területet különböztethetünk meg: a 0000H - 3FFFH 16 Kbájt-os címtartományban a RD és WR jelek hatásosak. A területet a mikrokontroller csak külső adatmemóriaként használhatja, a 4000H - 7FFFH 16 Kbájt-os címterületen a RD és WR mellett a PSEN jel is érvényes. Ez biztosítja, hogy innen a mikrokontroller programot is olvashasson. (Megjegyzés: 4000H cimtől a megszakítások kezdődnek!) Az I/O vonalak C000H címnél kezdődő legfelső 16 Kbájt-ra helyezhetők. A periféria címzés redundáns, mivel csak a címvonalak alsó négy bitjével (A0-A3) lehet választani. A PC a rendszerben kettős funkciójú: 6.2 Szoftver rendszer és fejlesztői környezet 1. Programfejlesztő eszköz: A szövegszerkesztővel megírt assembler programot a PC-n fordítjuk le olyan kóddá, amit a mikrokontroller végre tud hajtani. 2. Ezt a kódot a PC soros vonalán töltjük le a mikrokontroller memóriájába, majd ott a monitorprogram felügyelete mellett futtatjuk. A monitor ki- és bemeneti perifériája a PC képernyője és billentyűzete A mikrogép monitor és tesztelő programja A mikrogép EPROM - jában van a monitor és tesztelő program. A monitor segíti a fejlesztett program futtatását, ellenőrzését. Biztosítja a soros kommunikációt a terminálként használt PC-vel. Parancsai az alábbiak: MONITOR - DOWNLOAD I - INPUT PORT (A) R - REGISTER A - ASSEMBLE (B) J - INPUT IOMEM (A) S - SINGLE STEP (B)* B - BREAKPOINT(B)* K - DSP & MFY BIT (A) T - TRACE (B)* C - COPY (B E D) L - LOAD CODM TO DATM U - UNASSAMBLE (B) D - DATA DUMP(B) M - MODIFY DATA (A) V - INT. RAM DUMP E - TEST N - UPLOAD CODE (B E) W - UPLOAD DATA(B E) F - FILL DATM(BED) O - OUTPUT PORT (A D) X - HEX ARITM. (D D) G - GO (B) P - OUTPUT IOMEM (A D) Y - MFY INT.RAM (A) H - THIS HELP Q - CODE DUMP (A) Z - MFY SFR REG. (A) B - BEGIN ADDRESS E - END ADDRESS A - ADDRESS D - DATA ( a * jelölt menüpontok nem használhatók! Fejlesztés alatt ) A terminál kezelése felhasználói programból CNUM: EQU 30H MC: EQU 0C0H Az egyes rutinok a általában következő módszerrel aktivizálhatók (hívhatók): az input adatokat be kell tölteni a megfelelő regiszterekbe (bájtos adat esetén az ACC-ba, szavas adat esetén az ACC és B regiszterbe). Majd a hívás: MOV CNUM,#FUNCODE CALL MC A CNUM regiszterbe kell beírni a hívott rutin kódját. A rutinok általában az A,B,PSW,DPTR és a RB3 regisztertömb értékeit elronthatják! Kimeneti rutinok: MON kód: 0 bemenet: - kimenet: - Visszatérés a monitorba DISP kód:1 bemenet: ACC=kar kimenet: - Az ACC értékének megfelelő ASCII kódú karakter kiirása DISPW kód:2 bemenet: ACC=kar. kimenet: - Az ACC értékének megfelelő ASCII kódú karakter kiirása, Ctrl-S, Ctrl-Q figyelésével. SPACE kód: 3 bemenet: - kimenet: - betűköz kiírása. CRLF kód: 4 bemenet: - kimenet: - új sor kezdete (CR, LF kiküldése) TEXT kód:5 bemenet: DPTR, F0 kimenet: - A DPTR által mutatott címen kezdődő, ETX (End of Text, szöveg vége, 03H) karakterrel lezárt string kiírása.a szöveg lehet a programmemóriában (F0=0), vagy a kódmemóriában F0=1). ADATKI kód: 6 bemenet: ACC kimenet: - Az ACC értékének kiírása hexadecimálisan. CIMKI kód: 7 bemenet: ACC, B kimenet: - Az ACC, B regiszterekben levő 16 bites szám (pl. cím) kiírása. BINOUT kód: 8 bemenet: ACC kimenet: - Az ACC értékének bináris kijelzése. BINDEC kód: 9 bemenet: ACC kimenet: - ACC tartalmának decimális megjelenítése. DTOFIL..kód:AH bemenet: KCIM: R6R7 VCIM: R4R5 azrb3-ban! A KCIM VCIM párossal adott adatmezőt UPLOADED.DAT néven fájlba menti. ADCNV kód: FH bemenet: ACC kimenet: ACC az ACC-ban adott (0...7) sorszámú analóg csatorna konvertált 10 bites értékének felső 8 bitjét az ACC-ba tölti. Bemeneti rutinok: KLAV kód: 10H bemenet: - kimenet: ACC egy karakter beolvasása az ACC-ba billentyűzetről. SCAN kód: 11H bemenet: - kimenet: ACC Nyomtak-e meg billentyűt? Ha igen: ACC=kód, ha nem: ACC=0 ADATBE kód: 12H bemenet: - kimenet: ACC 1 bájtos hexadecimális szám beolvasása az ACC-ba. CIMBE kód: 13H bemenet: - kimenet: ACC, B 2 bájtos hexadecimális szám beolvasása az ACC, B regiszterekbe. GET kód: 14H bemenet: -kimenet: ACC 1 bájtos hexadecimális szám beolvasása az ACC-ba, visszajelzéssel (echoval). A monitorban használt legfontosabb rutinok a felhasználó számára funkciókódos rendszerhívással érhetők el. A felhasználói programban el kell helyezni a következő két definíciót:
Mikrovezérlık története (nagyon) röviden
Cím: Mikrovezérlık története (nagyon) röviden Készítette: Motika László Károly SZTE TTK Mérnök Informatikus I. félév 2006. november Mikrovezérlık története (nagyon) röviden A beágyazott számítógépeket
1. Bevezetés. 2. A mikroszámítógépek felépítése
1. Bevezetés A mikroelektronika és a számítástechnika története rövid. A 19. században terveztek számítógépeket, amelyek utasításkészlettel rendelkeztek (Charles Babbage). E gépeket mechanikus szerkezetként
Bevezetés az assembly nyelvbe
Jelfeldolgozás a közlekedésben 2015/2016 II. félév Bevezetés az assembly nyelvbe Memóriacímzési módok Általános forma: instruction destination, source Addressing Modes Címzési mód Instruction /Utasítás
Mikrokonverterrel vezérelt digitális jelgenerátor fejlesztése
SZEGEDI TUDOMÁNYEGYETEM Természettudományi Kar Kísérleti Fizika Tanszék Informatikus Fizikus szak Mikrokonverterrel vezérelt digitális jelgenerátor fejlesztése Diplomamunka Készítette: Kopasz Péter Gábor
Bevezetés az assembly nyelvbe
Mechatronika és mikroszámítógépek 2016/2017 I. félév Bevezetés az assembly nyelvbe Makro utasítások felépítése - emlékeztető Általános forma: operation code (Általános forma: instruction 3 című utasítás:
Az interrupt Benesóczky Zoltán 2004
Az interrupt Benesóczky Zoltán 2004 1 Az interrupt (program megszakítás) órajel generátor cím busz környezet RESET áramkör CPU ROM RAM PERIF. adat busz vezérlõ busz A periféria kezelés során információt
8051-es mikrovezérlő. mikrovezérlő 1980-ból napjainkban
8051-es mikrovezérlő mikrovezérlő 1980-ból napjainkban Mikrovezérlők A mikrokontroller egy mikroprocesszor és további periféria-áramkörök egyetlen közös egységbe integrálva. Első mikrovezérlő a Texas Instruments
A mikroprocesszor felépítése és működése
A mikroprocesszor felépítése és működése + az egyes részegységek feladata! Információtartalom vázlata A mikroprocesszor feladatai A mikroprocesszor részegységei A mikroprocesszor működése A mikroprocesszor
Digitális rendszerek. Utasításarchitektúra szintje
Digitális rendszerek Utasításarchitektúra szintje Utasításarchitektúra Jellemzők Mikroarchitektúra és az operációs rendszer közötti réteg Eredetileg ez jelent meg először Sokszor az assembly nyelvvel keverik
találhatók. A memória-szervezési modell mondja meg azt, hogy miként
Memória címzési módok Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről) a program utasításai illetve egy utasítás argumentumai a memóriában találhatók. A memória-szervezési
A mikroszámítógép felépítése.
1. Processzoros rendszerek fő elemei mikroszámítógépek alapja a mikroprocesszor. Elemei a mikroprocesszor, memória, és input/output eszközök. komponenseket valamilyen buszrendszer köti össze, amelyen az
Aritmetikai utasítások I.
Aritmetikai utasítások I. Az értékadó és aritmetikai utasítások során a címzési módok különböző típusaira látunk példákat. A 8086/8088-as mikroprocesszor memóriája és regiszterei a little endian tárolást
1. Az utasítás beolvasása a processzorba
A MIKROPROCESSZOR A mikroprocesszor olyan nagy bonyolultságú félvezető eszköz, amely a digitális számítógép központi egységének a feladatait végzi el. Dekódolja az uatasításokat, vezérli a műveletek elvégzéséhez
I. C8051Fxxx mikrovezérlők hardverfelépítése, működése. II. C8051Fxxx mikrovezérlők programozása. III. Digitális perifériák
I. C8051Fxxx mikrovezérlők hardverfelépítése, működése 1. Adja meg a belső RAM felépítését! 2. Miben különbözik a belső RAM alsó és felső felének elérhetősége? 3. Hogyan érhetők el az SFR regiszterek?
Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges
Digitális technika VIMIAA01 9. hét
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges
Architektúra, megszakítási rendszerek
Architektúra, megszakítási ek Mirıl lesz szó? Megszakítás fogalma Megszakítás folyamata Többszintű megszakítási ek Koschek Vilmos Példa: Intel Pentium vkoschek@vonalkodhu Koschek Vilmos Fogalom A számítógép
Programozási segédlet DS89C450 Fejlesztőpanelhez
Programozási segédlet DS89C450 Fejlesztőpanelhez Készítette: Fekete Dávid Processzor felépítése 2 Perifériák csatlakozása a processzorhoz A perifériák adatlapjai megtalálhatók a programozasi_segedlet.zip-ben.
Számítógépek felépítése, alapfogalmak
2. előadás Számítógépek felépítése, alapfogalmak Lovas Szilárd, Krankovits Melinda SZE MTK MSZT kmelinda@sze.hu B607 szoba Nem reprezentatív felmérés kinek van ilyen számítógépe? 2 Nem reprezentatív felmérés
Bevezetés az informatikába
Bevezetés az informatikába 3. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.
Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások
Mechatronika és mikroszámítógépek 2018/2019 I. félév Külső megszakítások Megszakítás, Interrupt A megszakítás egy olyan esemény, vagy feltétel teljesülése, amely felfüggeszti a program futását, a vezérlést
Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás ATmega128 CPU Single-level pipelining Egyciklusú ALU működés Reg. reg., reg. konst. közötti műveletek 32 x 8 bit általános célú regiszter Egyciklusú
Mechatronika és mikroszámítógépek
Mechatronika és mikroszámítógépek 2016/2017 I. félév 8051, C8051F020 mikro vezérlők és programozásuk Fontos tudnivalók Elérhetőség: ST. 108 E-mail: lovetei.istvan@mail.bme.hu Fontos tudnivalók: kjit.bme.hu
Programozott soros szinkron adatátvitel
Programozott soros szinkron adatátvitel 1. Feladat Név:... Irjon programot, mely a P1.0 kimenet egy lefutó élének időpontjában a P1.1 kimeneten egy adatbitet ad ki. A bájt legalacsonyabb helyiértéke 1.
Mérési utasítás Mikrokontroller programozás 2.sz. mérés
Mérési utasítás Mikrokontroller programozás 2.sz. mérés Szükséges ismeretanyag: - IBM PC kezelése, szövegszerkesztés, Double Commander - SB80C515 mikrokontroller felépítése, utasításai - HyperTerminál
A Számítógépek felépítése, mőködési módjai
Mechatronika, Optika és Gépészeti Informatika Tanszék Kovács Endre tud. Mts. A Számítógépek felépítése, mőködési módjai Mikroprocesszoros Rendszerek Felépítése Buszrendszer CPU OPERATÍV TÁR µ processzor
DDS alapú szinusz jelgenerátor fejlesztése
SZEGEDI TUDOMÁNYEGYETEM Természettudományi Kar KÍSÉRLETI FIZIKAI TANSZÉK Informatikus-fizikus DIPLOMAMUNKA DDS alapú szinusz jelgenerátor fejlesztése Készítette: Mellár János Zsolt Témavezető: Dr. Gingl
Mechatronika és mikroszámítógépek
Mechatronika és mikroszámítógépek 2018/2019 I. félév Órajelek, időzítők, megszakítások (4. lab) Órajel Internal Oscillator Control Register (OSCICN 0xB2) Bit Symbol Leírás 7 MSCLKE Missing Clock enable
Az vevő- és vezérlőáramkör programja
Az vevő- és vezérlőáramkör programja Központizár-vezérlés - IR vevő- és vezérlőáramkör INCLUDE 89C2051.mc ******************************************************************************** VÁLTOZÓK ********************************************************************************
Számítógép felépítése
Alaplap, processzor Számítógép felépítése Az alaplap A számítógép teljesítményét alapvetően a CPU és belső busz sebessége (a belső kommunikáció sebessége), a memória mérete és típusa, a merevlemez sebessége
1. ábra: Perifériára való írás idődiagramja
BELÉPTETŐ RENDSZER TERVEZÉSE A tárgy első részében tanult ismeretek részbeni összefoglalására tervezzük meg egy egyszerű mikroprocesszoros rendszer hardverét, és írjuk meg működtető szoftverét! A feladat
_INVHU000_WriteReadParameter.cxf Frekvenciaváltók
INV-HU-000 A FB feladata A dokumentáció tartalma Szimbólum A CP1H vagy a CP1L PLC és frekvenciaváltó(k) automatikus kommunikációja: _INVHU000_WriteReadParameter A frekvenciaváltó üzemi paramétereinek írása,
MPLAB IDE - SIM - - Rövid ismertető a használathoz - Kincses Levente 3E22 89/ November 14. Szabadka
MPLAB IDE - SIM - - Rövid ismertető a használathoz - 3E22 89/2004 2006. November 14 Szabadka - 2 - Tartalomjegyzék TARTALOMJEGYZÉK 3 SIMULATOR I/O 4 SIMULATOR STIMULUS 4 STIMULUS VEZÉRLŐ (CONTROLLER) 5
Mechatronika és mikroszámítógépek
Mechatronika és mikroszámítógépek 2018/2019 I. félév 8051, C8051F020 mikro vezérlők és programozásuk Fontos tudnivalók Elérhetőség: ST. 108 E-mail: lovetei.istvan@mail.bme.hu Fontos tudnivalók: kjit.bme.hu
A 32 bites x86-os architektúra regiszterei
Memória címzési módok Jelen nayagrészben az Intel x86-os architektúrára alapuló 32 bites processzorok programozását tekintjük. Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről)
Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység
Mikroprocesszor CPU C Central Központi P Processing Számító U Unit Egység A mikroprocesszor általános belső felépítése 1-1 BUSZ Utasítás dekóder 1-1 BUSZ Az utasítás regiszterben levő utasítás értelmezését
A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.
Mikroprocesszor A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg. A mikroprocesszor részei A mikroprocesszor a szokásos
SZÁMÍTÓGÉP ARCHITEKTÚRÁK
SZÁMÍTÓGÉP ARCHITEKTÚRÁK Kártyás ajtónyitó tervezése Horváth Gábor BME Hálózati Rendszerek és Szolgáltatások Tanszék ghorvath@hit.bme.hu, belso@hit.bme.hu Budapest, 2018-02-19 Hálózati Rendszerek és Szolgáltatások
SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1
INFORMATIKAI RENDSZEREK ALAPJAI (INFORMATIKA I.) 1 NEUMANN ARCHITEKTÚRÁJÚ GÉPEK MŰKÖDÉSE SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1 Ebben a feladatban a következőket fogjuk áttekinteni: Neumann rendszerű számítógép
LOGSYS LOGSYS LCD KIJELZŐ MODUL FELHASZNÁLÓI ÚTMUTATÓ. 2010. november 8. Verzió 1.0. http://logsys.mit.bme.hu
LOGSYS LCD KIJELZŐ MODUL FELHASZNÁLÓI ÚTMUTATÓ 2010. november 8. Verzió 1.0 http://logsys.mit.bme.hu Tartalomjegyzék 1 Bevezetés... 1 2 Kommunikációs interfész... 2 3 Memóriák az LCD vezérlőben... 3 3.1
Számítógépek felépítése
Számítógépek felépítése Emil Vatai 2014-2015 Emil Vatai Számítógépek felépítése 2014-2015 1 / 14 Outline 1 Alap fogalmak Bit, Byte, Word 2 Számítógép részei A processzor részei Processzor architektúrák
7.hét: A sorrendi hálózatok elemei II.
7.hét: A sorrendi hálózatok elemei II. Tárolók Bevezetés Bevezetés Regiszterek Számlálók Memóriák Regiszter DEFINÍCIÓ Tárolóegységek összekapcsolásával, egyszerű bemeneti kombinációs hálózattal kiegészítve
Az operációs rendszer szerkezete, szolgáltatásai
Az operációs rendszer szerkezete, szolgáltatásai Felhasználói programok Rendszerhívások Válaszok Kernel Eszközkezelők Megszakításvezérlés Perifériák Az operációs rendszer szerkezete, szolgáltatásai Felhasználói
Digitális technika (VIMIAA01) Laboratórium 9
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA01) Laboratórium 9 Fehér Béla Raikovich Tamás,
Számítógép architektúrák
Számítógép architektúrák Kártyás ajtónyitó tervezése 2016. március 7. Budapest Horváth Gábor docens BME Hálózati Rendszerek és Szolgáltatások Tanszék ghorvath@hit.bme.hu Számítógép Architektúrák Horváth
Assembly utasítások listája
Assembly utasítások listája Bevezetés: Ebben a segédanyagban a fontosabb assembly utasításokat szedtem össze. Az utasítások csoportosítva vannak. A fontos kategóriába azok az utasítások tartoznak, amiknek
Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.
Balaton Marcell Balázs Assembly jegyzet Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született. 1. Regiszterek Regiszterek fajtái a. Szegmensregiszterek cs (code):
Labor gyakorlat Mikrovezérlők
Labor gyakorlat Mikrovezérlők ATMEL AVR ARDUINO 1. ELŐADÁS BUDAI TAMÁS 2015. 09. 06. Tartalom Labor 2 mikrovezérlők modul 2 alkalom 1 mikrovezérlők felépítése, elmélet 2 programozás, mintaprogramok Értékelés:
Digitális technika (VIMIAA01) Laboratórium 9
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA01) Laboratórium 9 Fehér Béla Raikovich Tamás,
Labor gyakorlat Mikrovezérlők
Labor gyakorlat Mikrovezérlők ATMEL AVR ARDUINO 1. ELŐADÁS BUDAI TAMÁS Tartalom Labor 2 mikrovezérlők modul 2 alkalom 1 mikrovezérlők felépítése, elmélet 2 programozás, mintaprogramok Értékelés: a 2. alkalom
Adatelérés és memóriakezelés
Adatelérés és memóriakezelés Jelen nayagrészben az Intel x86-os architektúrára alapuló 32 bites processzorok programozását tekintjük. Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről)
Mikrorendszerek tervezése
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Mikrorendszerek tervezése Megszakítás- és kivételkezelés Fehér Béla Raikovich
A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.
Soros LCD vezérlő A vezérlő modul lehetővé teszi, hogy az LCD-t soros vonalon illeszthessük alkalmazásunkhoz. A modul több soros protokollt is támogat, úgy, mint az RS232, I 2 C, SPI. Továbbá az LCD alapfunkcióit
Dr. Oniga István DIGITÁLIS TECHNIKA 8
Dr. Oniga István DIGITÁLIS TECHNIA 8 Szekvenciális (sorrendi) hálózatok Szekvenciális hálózatok fogalma Tárolók RS tárolók tárolók T és D típusú tárolók Számlálók Szinkron számlálók Aszinkron számlálók
5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI
5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI 1 Kombinációs hálózatok leírását végezhetjük mind adatfolyam-, mind viselkedési szinten. Az adatfolyam szintű leírásokhoz az assign kulcsszót használjuk, a
Bevezetés a számítástechnikába
Bevezetés a számítástechnikába Megszakítások Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 9. Bevezetés Megszakítások
VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK
VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK 1 Az adatok feldolgozását végezhetjük olyan általános rendeltetésű digitális eszközökkel, amelyeket megfelelő szoftverrel (programmal) vezérelünk. A mai digitális
Járműfedélzeti rendszerek I. 4. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek I. 4. előadás Dr. Bécsi Tamás Rendszer órajel Órajel osztás XTAL Divide Control (XDIV) Register 2 129 oszthat Órajel források CKSEL fuse bit Külső kristály/kerámia rezonátor Külső
Assembly. Iványi Péter
Assembly Iványi Péter További Op. rsz. funkcionalitások PSP címének lekérdezése mov ah, 62h int 21h Eredmény: BX = PSP szegmens címe További Op. rsz. funkcionalitások Paraméterek kimásolása mov di, parameter
A SAB80515/80535-ÖS MIKROKONTROLLER
A SAB80515/80535-ÖS MIKROKONTROLLER TARTALOMJEGYZÉK Tartalomjegyzék 1. A SAB80515-ös mikrokontroller hardver felépítése...3 1.1. Mikroszámítógépek felépítése...3 1.1.1. A Neumann-elv...3 1.1.2. Mikroszámítógépek
Jelfeldolgozás a közlekedésben
Jelfeldolgozás a közlekedésben 2015/2016 II. félév 8051 és C8051F020 mikrovezérlők Fontos tudnivalók Elérhetőség: ST. 108 E-mail: lovetei.istvan@mail.bme.hu Fontos tudnivalók: kjit.bme.hu Aláírás feltétele:
EB134 Komplex digitális áramkörök vizsgálata
EB34 Komplex digitális áramkörök vizsgálata BINÁRIS ASZINKRON SZÁMLÁLÓK A méréshez szükséges műszerek, eszközök: - EB34 oktatókártya - db oszcilloszkóp (6 csatornás) - db függvénygenerátor Célkitűzés A
Máté: Assembly programozás
Dr. Máté Eörs docens Képfeldolgozás és Számítógépes Grafika Tanszék Árpád tér 2. II. em. 213 6196, 54-6196 (6396, 54-6396) http://www.inf.u-szeged.hu/~mate Tantárgy leírás: http://www.inf.u-szeged.hu/oktatas/kurzusleirasok/
Előadó: Nagy István (A65)
Programozható logikai áramkörök FPGA eszközök Előadó: Nagy István (A65) Ajánlott irodalom: Ajtonyi I.: Digitális rendszerek, Miskolci Egyetem, 2002. Ajtonyi I.: Vezérléstechnika II., Tankönyvkiadó, Budapest,
Assembly programozás levelező tagozat
Assembly programozás levelező tagozat Szegedi Tudományegyetem Képfeldolgozás és Számítógépes Grafika Tanszék 2011-2012-2 Tematika Assembly nyelvi szint. Az Intel 8086/88 regiszter készlete, társzervezése,
Központi vezérlőegység
Központi vezérlőegység A számítógép agya a központi vezérlőegység (CPU: Central Processing Unit). Két fő része a vezérlőegység (CU: Controll Unit), ami a memóriában tárolt program dekódolását és végrehajtását
Az MSP430 mikrovezérlők digitális I/O programozása
10.2.1. Az MSP430 mikrovezérlők digitális I/O programozása Az MSP430 mikrovezérlők esetében minden kimeneti / bemeneti (I/O) vonal önállóan konfigurálható, az P1. és P2. csoportnak van megszakítás létrehozó
A/D és D/A konverterek vezérlése számítógéppel
11. Laboratóriumi gyakorlat A/D és D/A konverterek vezérlése számítógéppel 1. A gyakorlat célja: Az ADC0804 és a DAC08 konverterek ismertetése, bekötése, néhány felhasználási lehetőség tanulmányozása,
Informatika 1 2. el adás: Absztrakt számítógépek
Informatika 1 2. el adás: Budapesti M szaki és Gazdaságtudományi Egyetem 2015-09-08 1 2 3 A egy M = Q, Γ, b, Σ, δ, q 0, F hetes, ahol Q az 'állapotok' nem üres halmaza, Γ a 'szalag ábécé' véges, nem üres
Logikai áramkörök. Informatika alapjai-5 Logikai áramkörök 1/6
Informatika alapjai-5 Logikai áramkörök 1/6 Logikai áramkörök Az analóg rendszerekben például hangerősítő, TV, rádió analóg áramkörök, a digitális rendszerekben digitális vagy logikai áramkörök működnek.
Programozás alapjai. 10. előadás
10. előadás Wagner György Általános Informatikai Tanszék Pointerek, dinamikus memóriakezelés A PC-s Pascal (is) az IBM PC memóriáját 4 fő részre osztja: kódszegmens adatszegmens stackszegmens heap Alapja:
Archi2 Gyak. (Processzorok Utasításszintű Kezelése) 2014 ősz
Archi2 Gyak (Processzorok Utasításszintű Kezelése) 2014 ősz Ajánlott irodalom Agárdi Gábor: Gyakorlati Assembly, LSI Oktatóközpont, 1996, ISBN 963 577 117 7 Agárdi G.: Gyakorlati Assembly haladóknak, LSI
Informatika érettségi vizsga
Informatika 11/L/BJ Informatika érettségi vizsga ÍRÁSBELI GYAKORLATI VIZSGA (180 PERC - 120 PONT) SZÓBELI SZÓBELI VIZSGA (30 PERC FELKÉSZÜLÉS 10 PERC FELELET - 30 PONT) Szövegszerkesztés (40 pont) Prezentáció-készítés
Digitális technika VIMIAA hét
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA02 14. hét Fehér Béla BME MIT Digitális technika
Összeadás BCD számokkal
Összeadás BCD számokkal Ugyanúgy adjuk össze a BCD számokat is, mint a binárisakat, csak - fel kell ismernünk az érvénytelen tetrádokat és - ezeknél korrekciót kell végrehajtani. A, Az érvénytelen tetrádok
elektronikus adattárolást memóriacím
MEMÓRIA Feladata A memória elektronikus adattárolást valósít meg. A számítógép csak olyan műveletek elvégzésére és csak olyan adatok feldolgozására képes, melyek a memóriájában vannak. Az információ tárolása
DIGITÁLIS TECHNIKA 8 Dr Oniga. I stván István
Dr. Oniga István DIGITÁLIS TECHNIA 8 Szekvenciális (sorrendi) hálózatok Szekvenciális hálózatok fogalma Tárolók RS tárolók tárolók T és D típusú tárolók Számlálók Szinkron számlálók Aszinkron számlálók
Perifériakezelési módszerek (Korrigált) Feltétel nélküli
INPUT-OUTPUT I-II. Tartalom INPUT-OUTPUT I-II.... 1 Perifériakezelési módszerek (Korrigált)... 2 A közvetlen memória hozzáférés (DMA)... 4 Feladatok:... 10 A megszakítás... 12 Az Intel 8259 IT vezérlő
IDAXA-PiroSTOP. PIRINT PiroFlex Interfész. Terméklap
IDAXA-PiroSTOP PIRINT PiroFlex Interfész Terméklap Hexium Kft. PIRINT Terméklap Rev 2 2 Tartalomjegyzék. ISMERTETŐ... 3 2. HARDVER... 4 2. LED... 5 2.2 KAPCSOLAT A VKGY GYŰRŰVEL... 6 2.3 CÍMBEÁLLÍTÁS...
SysCVideo: fiktív grafikus kártya SystemC modulként, SDL alapú megjelenítéssel
SysCVideo: fiktív grafikus kártya SystemC modulként, SDL alapú megjelenítéssel Czirkos Zoltán 2015. augusztus 26. Kivonat Az ismertetett SystemC modul egy mikroprocesszoros rendszerhez illeszthető megjelenítő
PMU Kezdı lépések. 6-0 Csatlakozás LG GLOFA-GM és SAMSUNG PLC-hez. 6-1 Kommunikáció LG PMU és LG GLOFA-GM7 / GM6 / GM4 között
-0 Csatlakozás LG GLOFA-GM és SAMSUNG PLC-hez -1 Kommunikáció LG PMU és LG GLOFA-GM / GM között -1-1 PLC programozó csatlakozója ( CPU loader port ) -1- PLC beépített C-NET csatlakozója (CPU C-net) -1-
Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)
Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD) Multiplexer (MPX) A multiplexer egy olyan áramkör, amely több bemeneti adat közül a megcímzett bemeneti adatot továbbítja a kimenetére.
5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix
2. Adattípusonként különböző regisztertér Célja: az adatfeldolgozás gyorsítása - különös tekintettel a lebegőpontos adatábrázolásra. Szorzás esetén karakterisztika összeadódik, mantissza összeszorzódik.
Zalotay Péter DIGITÁLIS TECHNIKA II.
Zalotay Péter DIGITÁLIS TECHNIKA II. Távoktatási előadás anyag BMF Kandó Kálmán Villamosmérnöki Kar 1.oldal Tartalomjegyzék: Bevezetés...6 1. Programozott logikai műveletvégzés...7 1.1. Mi a program és
Yottacontrol I/O modulok beállítási segédlet
Yottacontrol I/O modulok beállítási segédlet : +36 1 236 0427 +36 1 236 0428 Fax: +36 1 236 0430 www.dialcomp.hu dial@dialcomp.hu 1131 Budapest, Kámfor u.31. 1558 Budapest, Pf. 7 Tartalomjegyzék Bevezető...
Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)
Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD) Bevezetés A laborgyakorlatok alapvető célja a tárgy későbbi laborgyakorlataihoz szükséges ismeretek átadása, az azokban szereplő
Perifériák hozzáadása a rendszerhez
Perifériák hozzáadása a rendszerhez Intellectual Property (IP) katalógus: Az elérhető IP modulok listája Bal oldalon az IP Catalog fül Ingyenes IP modulok Fizetős IP modulok: korlátozások Időkorlátosan
ATMEL ATMEGA MIKROVEZÉRLŐ-CSALÁD
Misák Sándor ATMEL ATMEGA MIKROVEZÉRLŐ-CSALÁD Nanoelektronikai és Nanotechnológiai Részleg DE TTK v.0.1 (2007.02.13.) 1. előadás 1. Általános ismeretek. 2. Sajátos tulajdonságok. 3. A processzor jellemzői.
Mérési jegyzőkönyv. az ötödik méréshez
Mérési jegyzőkönyv az ötödik méréshez A mérés időpontja: 2007-10-30 A mérést végezték: Nyíri Gábor kdu012 mérőcsoport A mérést vezető oktató neve: Szántó Péter A jegyzőkönyvet tartalmazó fájl neve: ikdu0125.doc
Adatok ábrázolása, adattípusok
Adatok ábrázolása, adattípusok Összefoglalás Adatok ábrázolása, adattípusok Számítógépes rendszerek működés: információfeldolgozás IPO: input-process-output modell információ tárolása adatok formájában
Digitális technika VIMIAA hét
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK VIMIAA02 14. hét Fehér Béla BME MIT Rövid visszatekintés, összefoglaló
Mintavételes szabályozás mikrovezérlő segítségével
Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés
A számítógép fő részei
Hardver ismeretek 1 A számítógép fő részei 1. A számítógéppel végzett munka folyamata: bevitel ==> tárolás ==> feldolgozás ==> kivitel 2. A számítógépet 3 fő részre bonthatjuk: központi egységre; perifériákra;
Nagy Gergely április 4.
Mikrovezérlők Nagy Gergely BME EET 2012. április 4. ebook ready 1 Bevezetés Áttekintés Az elektronikai tervezés eszközei Mikroprocesszorok 2 A mikrovezérlők 3 Főbb gyártók Áttekintés A mikrovezérlők az
Processzorok Utasításszintű Kezelése tavasz
Processzorok Utasításszintű Kezelése 2014 tavasz Ajánlott irodalom Agárdi Gábor: Gyakorlati Assembly, LSI Oktatóközpont, 1996, ISBN 963 577 117 7 Agárdi G.: Gyakorlati Assembly haladóknak, LSI oktatóközpont,
AF 4073-1. 5 hangú kód adó-vevő. Fő jellemzők:
AF 4073-1 5 hangú kód adó-vevő Fő jellemzők: SELECT 5 jelzések küldése - billentyüzeten beirt 5 hangú szekvencia küldése - szekvencia küldés 9 db programozható hivó-memória egyikéből - REDIAL funkció egy
PWM elve, mikroszervó motor vezérlése MiniRISC processzoron
PWM elve, mikroszervó motor vezérlése MiniRISC processzoron F1. A mikroprocesszorok, mint digitális eszközök, ritkán rendelkeznek közvetlen analóg kimeneti jelet biztosító perifériával, tehát valódi, minőségi
Processzor (CPU - Central Processing Unit)
Készíts saját kódolású WEBOLDALT az alábbi ismeretanyag felhasználásával! A lap alján lábjegyzetben hivatkozz a fenti oldalra! Processzor (CPU - Central Processing Unit) A központi feldolgozó egység a
A Számítógépek hardver elemei
Mechatronika, Optika és Gépészeti Informatika Tanszék Kovács Endre tud. Mts. A Számítógépek hardver elemei Korszerű perifériák és rendszercsatolásuk A µ processzoros rendszer regiszter modellje A µp gépi
CIMR-V7AZ, CIMR-F7Z, CIMR-E7Z, CIMR-L7Z, CIMR-G7 V1000 sorozat CIMR-VZA PLC CPU-k CP1H-X, CP1H-XA, CP1H-Y CP1L-L, CP1L-M
INV-HU-001 A FB feladata A dokumentáció tartalma Szimbólum A CP1H vagy a CP1L PLC és frekvenciaváltó(k) automatikus kommunikációja: _INVHU001_WriteReadParameter A frekvenciaváltó üzemi paramétereinek írása,