Tankönyv modern mikroprocesszoros rendszerek. Mikroprocesszoros rendszerek fejlesztése Vst módszer a mikroprocesszoros rendszerek tervezésére

Tankönyv modern mikroprocesszoros rendszerek.  Mikroprocesszoros rendszerek fejlesztése Vst módszer a mikroprocesszoros rendszerek tervezésére
Tankönyv modern mikroprocesszoros rendszerek. Mikroprocesszoros rendszerek fejlesztése Vst módszer a mikroprocesszoros rendszerek tervezésére

A mikroprocesszoros rendszerek tervezésének folyamata három szakaszból áll (1.1. ábra): 1) rendszer; 2) funkcionális áramkör; 3) hibakeresés és teljesítményértékelés.

Rizs. 1.1. Az MPS tervezés szakaszai

A rendszertervezés szakaszában először elvégzik az MPS-hez rendelt feladat rendszerelemzését, a célt, a főbb tulajdonságokat, az igényeket, a megvalósítási elképzeléseket, a finanszírozás mértékét és egyéb jellemzőket, amelyek elegendőek a tervezési utakról szóló döntés meghozatalához. azonosítják. Ezután megfogalmazódik a rendszer funkcionális viselkedése és a vele szemben támasztott követelmények a végrehajtott funkciók, a szükséges teljesítmény biztosítása, a kritikus funkciók azonosítása, a rendszer perifériás berendezéseinek összetételének, a bemeneti és kimeneti struktúrának meghatározása szempontjából. adatok, az adatfolyamok jellemzői és az ellenőrzési információk. A rendszer működésére kibővített algoritmus és az MPS működéséhez szükséges algoritmus formalizált leírása kidolgozás alatt áll. A következő lépés a rendszertervezési szakaszban az MPS-hierarchia szintjeinek számának, a köztük és a külső környezettel vagy rendszerrel fennálló kapcsolatoknak a meghatározása. Meghatározzák a rendszerarchitektúrára vonatkozó követelményeket, elvégzik a hardverrel és szoftverrel megvalósított funkciók elosztását, megalapozzák az interfészekre vonatkozó követelményeket. Egyensúlyba kell hozni a rendszer hardverével és szoftverével szemben támasztott követelményeket, figyelembe véve az adott sebességet és a bonyolultság és költségcsökkentés, valamint a fejlesztési idő csökkentésének lehetőségét. Hogyan több funkciót hardverben megvalósítva, annál nagyobb a teljesítmény, de annál bonyolultabb a rendszer architektúrája és annál hosszabb a fejlesztési idő.

Jelenleg az LSI és VLSI képességek fejlesztése kapcsán tendencia tapasztalható, hogy olyan funkciókat rendelnek a hardverhez, amelyeket a közelmúltig csak programozottan. Integráció szoftver jellemzői a hardvertervezésben, főleg ROM firmware vagy "matematikai" chipek formájában, ez az irány egyre inkább széles körű alkalmazás mikroprocesszoros rendszerekben. Sok funkció operációs rendszer már hardveres módszerrel valósulnak meg, a programok ROM chipekbe helyezésével. Talán jön a fordulat és a programozási nyelvek funkcióinak hardveres megvalósítása.

Fontos szempont a rendszer tervezési szakasza az elembázis kiválasztása, az alap IPC, azaz. típusú mikroprocesszorcsalád és egyéb LSI. Ennek alapján készül a műszaki feladat (TOR).

A rendszertervezés szakasza főként heurisztikus, ennek eredménye a mikroprocesszoros rendszer blokkdiagramja és a műszaki specifikációk, amelyek jelzik mindazokat a követelményeket, amelyeket a fejlesztett MPS-nek meg kell felelnie.

A funkcionális és áramköri szakasz három területre oszlik: hardverfejlesztés, fejlesztés szoftver eszközök valamint segédeszközök fejlesztése, amelyek viszont hardvert és szoftvert is tartalmaznak. Ennek a szakasznak a legfontosabb jellemzői a következők:

1) a közös fejlesztés és hibakeresés szükségessége technikai eszközökkelÉs szoftver, amely a technikai eszközök meghatározott szerkezetére összpontosít;

2) alapvetően új módszerek és eszközök alkalmazása a mikroprocesszoros rendszerek fejlesztésére és hibakeresésére, mint például az in-circuit emulátorok, logikai és aláírás-elemzők, hibakereső komplexumok és programozási automatizálási eszközök;

3) a tervezési szakaszok erős összekapcsolása és egyenletes integrációja, amelyben a fejlesztőnek egyidejűleg tapasztalattal kell rendelkeznie a mikroprocesszoros rendszerek tervezésében, valamint meg kell értenie azok alkalmazási területét.

A funkcionális áramkör tervezés szakaszában az alapján blokk diagramm Az MPS funkcionális és sematikus diagramokat fejleszt műszaki eszközökről, algoritmusokról és modulokról alkalmazási programok. Ezt a szakaszt a szabványos áramkör és a széleskörű használata jellemzi szoftveres megoldások valamint a hardver és a szoftver erős egymásrautaltsága, amelyeket minden szakaszban párhuzamosan kell fejleszteni. A szakasz a hardver és a szoftver integrációjával zárul, amely megkezdi a teljes MPS hibakeresésének szakaszát.

Az MPS hibakeresése a legidőigényesebb szakasz, ezért a beépített vezérlőeszközök fejlesztésére és a szabványos hibakereső eszközök használatának módszertanára ugyanolyan figyelmet kell fordítani, mint a hardver és szoftver fejlesztésére. A hibakereséshez beépített eszközök, szoftver és hardver, valamint speciális eszközök, például logikai és aláírás-elemzők, hibakereső komplexumok és belső emulátorok szükségesek. A diagnosztikai és vezérlőeszközök beágyazása némileg megnyújtja és megnöveli a rendszer fejlesztésének költségeit, de nagyban megkönnyíti a hibakeresést és a további működést.

A rendszer tervezését a kifejlesztett MPS kísérleti tesztelése teszi teljessé abban a rendszerben, amelyre szánták, a kapott jellemzők értékelésével. Ha az értékelési eredmények nem felelnek meg a TOR követelményeinek, akkor az okok elemzésére kerül sor, és ennek alapján az MPS egyes moduljait vagy a rendszer egészét újratervezik.

A tervezés a tervezett MPS ésszerű használatára vonatkozó ajánlásokat és minden szükséges dokumentációt tartalmazó módszertani támogatás kidolgozásával zárul.

A vizsgált szakaszokat általában kutatási munka formájában végzik viszonylag kis számú magasan képzett szakember részvételével.

A további tervezési szakaszok általában fejlesztési munka formájában valósulnak meg, és nagyszámú előadó bevonását igénylik.

a megszakítási logika megjegyzi a kiszolgált megszakítás prioritási szintjét. A RET utasítás végrehajtásakor a prioritási szint megmarad, és csak a magasabb prioritású megszakítást lehet kiszolgálni. A RETI utasítás abban különbözik a RET utasítástól, hogy visszaállítja a prioritási szintet, ami lehetővé teszi az alacsony prioritású megszakítási kérelmek kiszolgálását.

NAK NEK tipikus feltételes műveletek közé tartoznak a parancsok JZ és JNZ, JC

És JNC. Az utolsó kettő a logikai csoportba tartozik. A CJNE parancsban először két bájt kerül összehasonlításra, az egész számok kivonási szabályai szerint.

És Az összehasonlítás eredménye szerint beállítjuk a C jelzőt, majd ha nem egyeznek, akkor elágazás történik.

A DJNZ utasításban nem csak az aktuális Rn regiszterbank egyik regisztere, n=0...7, hanem egy közvetlenül címezhető DSEG adatmemória cella is használható számlálóként. Az utasítás végrehajtásakor először a számlálót csökkentjük, és ha a számláló tartalma nem egyenlő nullával, akkor elágazás történik.

3. Mikroprocesszoros rendszerek tervezése

A mikrokontrollereken alapuló MPS tervezési technológia teljes mértékben megfelel a mikroprocesszoros technológiában elfogadott hardver- és szoftverkomponensek tervezési és hibakeresési folyamatának folytonosságának koncepciójának. A mikrokontrollerek használatának fontos jellemzője a munka valódi méretarány idő, azaz garantált válaszadás a külső eseményekre egy bizonyos időintervallumon belül. Nyilvánvaló, hogy a hardver és szoftver komponensek valós idejű közös hibakeresésének megoldása egy mikroprocesszoros rendszer tetszőleges felépítésével és áramkörével igen összetett, költséges és hosszú távú munka.

3.1. Tervezési szakaszok

Az MPS sajátossága, hogy maguk is be vannak ágyazva (integrálva) valamilyen objektumba. Ez arra utal, hogy az ilyen típusú MPS fejlesztője egy teljes tervezési ciklus feladataival néz szembe, a működő algoritmus kidolgozásától a termék részeként végzett komplex tesztekig, esetleg a gyártás során történő támogatásig. Az MPS tervezés főbb szakaszai a 2. ábrán láthatók. 28.

Technikai követelmények indítsa el az MPS tervezési ciklust. A mikroprocesszoros rendszer programozásának képessége arra ösztönzi az ügyfelet, hogy bízza rá a legtöbb funkció elvégzését. A kiválasztási kritérium a hardver mennyiségének bármilyen növelésének gazdasági megvalósíthatósága kell legyen, amelyet a műszerpiac tanulmányozása alapján határoznak meg. ebből a típusból, és egy mutató maximális javítása az ár/funkcionális lehetőségek -

sti. Ebben a szakaszban a típusra vonatkozó követelmények explicit vagy implicit megfogalmazásra kerülnek.

használt mikroprocesszor vagy mikrokontroller.

Algoritmusfejlesztési szakasz a legfelelősebb

mivel ennek a szakasznak a hibáit a törvény tesztelésekor észlelik

gyártott termék, és a teljes MPS költséges újrahasznosításához vezet.

Az algoritmus több változatát is fejlesztik annak biztosítására

műszaki követelmények teljesítése a kifejlesztett felhasználásával

korábbi funkcionális-topológiai modulok. Alapbeállítások

különbözik a szoftver és az alkalmazás mennyiségének arányában.

A mikroprocesszoros rendszer műszaki követelményei

Javítás

algoritmus

menedzsment

Algoritmusfejlesztés

Könyvtár

funkcionális-

A hardver szerkezetének kialakítása és

topológiai

szoftver eszközök

Javítás

Programfejlesztés

Hardverfejlesztés

Javítás

eredeti

(eredeti szöveg)

(séma,

tábla topológia)

topológia

Műsorközvetítés

Elrendezés szerelés

Programhibakeresés

Offline hibakeresés

a modellen

felszerelés

Szoftver és hardver közös hibakeresése

rendszereszközök valós időben

Mikroprocesszoros rendszer integrálása a termékbe

Termékteszt

Műszakinak megfelelő mikroprocesszoros rendszer

nikai követelményeknek

ratura. A kiválasztási szempont a szoftverben a maximális számú funkció megvalósítása a legalacsonyabb hardverköltség mellett, biztosítva a megadott teljesítmény- és megbízhatósági mutatókat a működési hatások teljes skáláján. Gyakran a meghatározó követelmény a programkód elhelyezhetősége a mikrokontroller belső memóriájában, amely lehetővé teszi az illetéktelen hozzáférés elleni védelmet. Ebben a szakaszban végül meghatározásra kerül a mikrokontroller típusa és a legfontosabb keretező áramkörök (memória, FPGA, interfész, ADC stb.).

Az MPS szerkezetének kialakításának szakaszában végül meghatározza

A rendelkezésre álló és fejlesztendő hardver modulok teljes összetétele, modulok közötti csere protokollok, csatlakozók típusai. Mivel az MPS be van építve a termékbe, a táblák kialakításának előzetes tanulmányozása történik. Szoftver szempontjából meghatározásra kerül a programmodulok összetétele, kapcsolatai, a programozási nyelv. Itt történik a tervezési és hibakereső eszközök kiválasztása is.

Programkészítés szakasza belső, gyakran ismétlődő ciklust alkot. Ez a forráskód fejlesztésének, fordításának, a program modellen való hibakeresésének és a forráskód javításának szakaszaiból áll. Ezeknek a szakaszoknak a tartalma alapvetően a használt rendszereszközöktől függ. Jelenleg a mikroprocesszorok és mikrokontrollerek erőforrásai elegendőek a magas szintű nyelveken történő programozás támogatásához. Ez lehetővé teszi, hogy kihasználja a strukturált programozás minden előnyét, külön lefordított modulok felhasználásával projektként fejlesszen szoftvert. Jelenleg a mikroprocesszorokhoz és mikrokontrollerekhez való szoftverfejlesztés leghatékonyabb eszköze az integrált keresztprogramozási rendszerek magas szintű nyelveken, mint például a Pascal, C. Például a Pascal-51 integrált szoftverfejlesztő rendszer tartalmaz egy szövegszerkesztőt, egy fordítóprogramot hivatkozásszerkesztővel, egy könyvtárat a szabványos futásidejű függvényekből és egy hibakeresőt. Az ilyen rendszerek jelentősen csökkenthetik az erre a belső ciklusra fordított időt. A magas szintű nyelveken írt programok azonban nagyobbak és lassabbak, mint hasonló programokat assembly nyelven írva. Ezért az assembly nyelvet továbbra is széles körben használják, különösen az MPS korlátozott erőforrásai és az ellenőrzött időintervallumok végrehajtásának szükségessége miatt.

Ezekben a szakaszokban a program szintaktikai és logikai hibáit észleli és kiküszöböli. A szintaktikai hibák a parancsok szintaxisának, a fordítói direktíváknak, valamint a korábban nem meghatározott címkék és nevek használatának a megsértésével járnak. A logikai hibák a program hibás működését okozzák. Programhibákhoz kapcsolódnak (helytelen elágazási átmenet van megadva, helytelen

hogy parancs stb.) és algoritmushibák. Az alábbiakban bemutatjuk az assembly nyelvű programok fejlesztésének ezen szakaszainak tartalmát.

A berendezés létrehozásának szakasza egy másik belső hurkot képvisel, amely párhuzamosan fut az elsővel. Egy általános fejlesztését tartalmazza kördiagramm, tábla topológia elrendezés, elrendezés összeállítás és offline hibakeresés. Ezek a szakaszok azután tekinthetők befejezettnek, hogy az MPS rendszer autópálya "életre kel", és ezen keresztül hozzáférhet a memória, bemeneti / kimeneti eszközökhöz. Ennek a szakasznak a végrehajtási ideje a tesztelt funkcionális-topológiai modulok rendelkezésre álló készletétől és a fejlesztő képzettségétől függ. A kapcsolási rajz bevitele és a topológia kialakítása során használt általános tervezési rendszerek

PCAD és OrCAD (CAD - számítógéppel segített tervezés - számítógéppel segített tervezés). A velük való munka hatékonysága jelentősen függ a fejlesztő rendelkezésére álló felhasznált elemek könyvtárainak mennyiségétől.

A közös hardver- és szoftverhibakeresés szakasza valós időben a legmunkaigényesebbés szükségszerűen megköveteli az olyan nagy teljesítményű eszközök használatát, mint az in-circuit emulátor, egy ROM emulátor és egy logikai elemző. A felsorolt ​​eszközök egyikének kiválasztását az alkalmazott hibakeresési módszer határozza meg. Ebben a szakaszban a szoftver és a hardver valós idejű interakciója során fellépő dinamikus hibákat azonosítják. Ezek a hibák a jelek terjedésének különböző késéseiből adódnak a rendszer gerincvonala mentén, és a vonalak közötti kölcsönös interferenciából, amelyek akkor lépnek fel, ha rossz pozícióban vannak. A dinamikus hibákat sokkal nehezebb észlelni mert szabálytalanságukat.

A lokalizációhoz dinamikus hibák logikai elemzőket használnak. A rendszerbusz vagy az egyes buszok és vonalak jeleinek logikai szintjei vételi módban állandóan rögzítésre kerülnek a FIFO típusú memóriában. A rögzítés leáll, amikor a kiválasztott esemény bekövetkezik (az SM-en a beállított és a tényleges cím egyezése, az SM-en lévő parancskódok vagy egy rövid zajimpulzus megjelenése). Ekkor a memória tartalmazza az eseményt megelőző összes információt. A memóriában rögzített esemény előzményeit elemezve megállapítható az MPS működésében bekövetkezett meghibásodás oka is. A kijelzőn megjelenő információk grafikus formában, bináris, hexadecimális kód vagy parancsmnemonika formájában jeleníthetők meg. A logikai állapotelemzők az MPS órajel-frekvenciáján írnak. A gyors folyamatok javítására ideiglenes logikai elemzőket használnak, amelyekben a memóriába írás órajel frekvenciája jelentősen meghaladja az MPS órajel frekvenciáját.

A hardver és a szoftver közös, valós idejű hibakeresése ROM-emulátorok és áramköri emulátorok segítségével történik egy fejlesztő számítógép vezérlése alatt.

Mikroprocesszoros rendszerek tervezése

Bevezetés

A mikrokontrollereket használó számítógépes rendszerek fejlesztése megköveteli a működési elvek ismeretét és megértését, de a legfontosabb a vezérlőprogramok írása. Ennek a könyvnek a célja a mikrokontroller eszközök tervezésének megtanulása.

A könyvben található összes példa alaplapkája a népszerű mikroprocesszorból származó Atmega 128 chip AVR család Atmeltől. Feltételezhető, hogy az olvasó alapvető ismeretekkel rendelkezik mind a mikroprocesszor-technológia alapelveiről, mind a mikrokontroller architektúrájáról.

A mikrokontroller programja egy kódkészlet, amely a speciális kódra van írva programmemória. A programot olyan programozónak kell megírnia, aki ezt vagy azt a bizonyos mikroprocesszoros rendszert fejleszti, de soha nem foglalkozik kódokkal. Kényelmesebb az ember számára olyan parancsokkal dolgozni, amelyek mindegyikének saját értelmes neve van. Ezért egy programozási nyelvet használnak a programok írásához.

A nyelv fő feladata, hogy egyértelműen leírja azt a műveletsort, amelyet a mikrokontrollernek végre kell hajtania. Ugyanakkor a nyelvnek érthetőnek kell lennie az ember számára.

A program létrehozása során a programozó egyszerűen felírja a szövegét a számítógépre, ugyanúgy, mint bármely más szöveget. Ezután a programozó fut speciális program- fordító, amely a programozó által írt szöveget a mikroprocesszor számára érthető gépi kódokká fordítja.

A programozó által írt program szövegét ún eredeti vagy tárgykód. A fordítás eredményeként kapott kódot hívják eredő vagy gépi kód. Ez a kód kerül a mikrokontroller programmemóriájába. A kapott kód írásához speciális eszközöket használnak - programozók.

Minden programozási nyelv két csoportra osztható:

alacsony szintű nyelvek (géporientált);

magas szintű nyelvek.

Tipikus példa géporientált nyelv az assembly nyelv. A közelmúltban az assembly nyelv volt az egyetlen programozási nyelv a mikrovezérlők számára. Jelenleg a programozáshoz magas szintű nyelveket használnak, mint pl ALAPVETŐ, Xi stb. Ezeket a nyelveket eredetileg erre fejlesztették ki nagy számítógépek. De most széles körben használják mikrokontrollerekhez.

A magas szintű nyelvek előnye a programfejlesztési folyamat jelentős felgyorsítása. A magas szintű nyelvek közül talán a C a leghatékonyabb. Ezért a jövőben ezt a nyelvet fogjuk választani illusztrációként. A nyelvek különböző verzióit fejlesztették ki a különböző mikroprocesszor-családokhoz. Például az AVR család mikroprocesszoraihoz - C AVR.

1. fejezet. Programok írása mikrokontrollerekhez

A C nyelv elemei

Az MK regiszterek (a regiszterek cella-byte-ok az MK AVR memóriájában) egy C programban rendelkeznek elnevezéssel, és mivel a legtöbbben a számok változtathatók, a regiszterek lényegében a program változói.
Változó- ez egy cellakészlet a memóriában, amelyben számot vagy számokat tárolhat és módosíthat. A változónak van címe és neve.

Állandó- olyan, mint egy változó, de a tartalmat nem tudod megváltoztatni.

Állandók

A konstansok a programban felsorolt ​​értékek. A C nyelvben négyféle konstans létezik: egészszámú konstans, lebegőpontos konstans, karakterkonstans és karakterlánc-literál.

Egész konstans: ez decimális, oktális, hexadecimális vagy bináris szám, amely egész értéket jelent az egyikben a következő űrlapokat: decimális, oktális, hexadecimális vagy bináris.

A decimális állandó egy vagy több decimális számjegyből áll, és az első számjegy nem lehet nulla (ellenkező esetben a szám oktálisként lesz kezelve).

Az oktális állandó egy kötelező nullából és egy vagy több oktális számjegyből áll (a számjegyek közül a nyolcnak és a kilencnek hiányoznia kell, mivel ezek a számjegyek nem szerepelnek az oktális számrendszerben).

A hexadecimális állandó a 0x vagy 0X kötelező sorozattal kezdődik, és egy vagy több hexadecimális számjegyet tartalmaz (a hexadecimális számjegyek halmazát reprezentáló számjegyek: 0,1,2,3,4,5,6,7,8,9,A,B , C, D, E, F).

A bináris állandót bináris karakterekkel írjuk fel, amelyeket a 0b sorozatnak kell megelőznie.

pl. - Egész számokírható:

Tizedesjegy: 12 234 -5493

Bináris formában, 0b előtaggal, így: 0b101001

Hexadecimális formában 0x előtaggal, így: 0x5A

Nyolctális formában, 0 előtaggal, így: 0775

Ha negatív egész konstanst szeretne képezni, használja a "-" jelet a konstans beírása előtt (amit unáris mínusznak nevezünk). Például: -0x2A, -088, -16 .

Minden egész konstanshoz hozzá van rendelve egy típus, amely meghatározza a végrehajtandó konverziókat, ha az állandót a kifejezésekben használják. Az állandó típusát a következőképpen határozzuk meg:

A decimális állandókat előjeles értékként kezeli, és az int (egész) vagy long (hosszú egész szám) típust rendeli hozzájuk az állandó értékének megfelelően. Ha az állandó kisebb, mint 32768, akkor az int típust rendeli hozzá, egyébként long.

Az oktális és hexadecimális állandók típushoz vannak rendelve int, aláíratlan int(előjel nélküli egész szám), hosszú vagy aláíratlan hosszú az 1.1. táblázat szerinti állandó értékétől függően.

1.1. táblázat

Hexadecimális állandók tartománya Oktális állandók tartománya típus
0x0 - 0x7FFF 0 - 077777 int
0X8000 - 0XFFFF 0100000 - 0177777 aláíratlan int
0X10000 - 0X7FFFFFF 0200000 - 017777777777 hosszú
0X80000000 - 0XFFFFFFFF 020000000000 - 037777777777 aláíratlan hosszú

A lebegőpontos szám egész részből, tört részből és/vagy kitevőből áll. A lebegőpontos állandók kétszeres pontosságú pozitív értékeket jelentenek (a double típusúak). A negatív érték meghatározásához egy mínusz előjelből és egy pozitív állandóból álló konstans kifejezést kell képezni.

Példák: 115,75, 1,5E-2, -0,025, 0,075, -0,85E2

A karakterállandót egy aposztrófok közé zárt karakter jelöli. A karakterkonstans értéke a numerikus karakterkód.

Például a "Q" a Q betű.

A karakterkonstansok int típusúak, és a típuskonverzió során előjellel vannak kitöltve.

A karakterlánc-konstans (literális) egy karaktersorozat (beleértve a karakterláncot és a nagybetűs orosz és latin betűket, valamint a számokat), idézőjelbe (") .

Például "Heloo"

A karakterlánc-literális karakterek a hatókörben tárolódnak véletlen hozzáférésű memória. A fordító minden karakterlánc-literál végéhez egy null karaktert fűz, amelyet a \0 escape szekvencia képvisel. A karakterlánc-literál char típusú.

1.1.2. Azonosító

Az azonosító számok és betűk, valamint speciális karakterek sorozata, feltéve, hogy a betű vagy a speciális karakter előbb van. Az azonosítók kialakításához a latin ábécé kis- vagy nagybetűi használhatók. Mint különleges karakter az aláhúzás karakter (_) használható. Két olyan azonosítót, amelyek megfelelő kis- és nagybetűk felhasználásával hoznak létre, különbözőnek tekintjük. Például: abc, ABC, A128B, a128b .

Az azonosító a változó, függvény, struktúra stb. deklarálásának szakaszában jön létre. ezt követően a kifejlesztett program további utasításaiban használható. Az azonosító nem egyezhet meg a kulcsszavakkal, a fenntartott szavakkal vagy a C fordítókönyvtár függvényneveivel.

Kulcsszavak

Adattípusok és deklarálásuk

Fontos különbség a C nyelv és a többi nyelv között az alapértelmezett elv hiánya, ami ahhoz vezet, hogy a programban használt összes változót kifejezetten deklarálni kell, a megfelelő típusok feltüntetésével együtt.

A változó deklarációs formátuma az következő nézet:

[]

- Memóriaosztály-specifikátor - az SI nyelv négy kulcsszava közül az egyik határozza meg: auto, extern, register, static, és egyrészt jelzi, hogy a deklarált változóhoz hogyan lesz lefoglalva a memória, másrészt a ennek a változónak a hatóköre, azaz a program mely részeiből érheti el. Nem kötelező, és csak bizonyos esetekben szükséges.

- ha a változó más fájlokban is használható forráskód programok;

- ha a változó lokális, akkor valamilyen függvényben deklarálva van a zárójel után, és meg kell őriznie értékeit a függvény következő hívásáig;

- helyezze el a változót az MK regiszterekbe.

Globális változók deklaráltak, mielőtt bármely függvény szövegében megjelennének. A deklarálás után a globális változók bármely programfüggvényben elérhetők.

Lokális változók a függvények legelején deklarálják – azaz. a göndör merevítő után.

- a változó által tárolható adatok típusmeghatározója.

Különféle kulcsszavakat használnak az egész típusú adatok meghatározására, amelyek meghatározzák az értéktartományt és a változókhoz lefoglalt memóriaterület méretét.

Például,

Előjel nélküli karakter – 0 és 255 (byte) közötti számot tárol;

Unsigned Int – 0 és 65535 közötti számot tárol (két bájt);

Unsigned long Int – 0 és 4294967295 (négy bájt) közötti számot tárol.

Az Unsigned char helyett írhat csak char-ot, mert a fordító alapértelmezés szerint a char-ot előjel nélküliként kezeli.

Előjeles karakter - előjeles változót jelent, és -128 és 127 közötti számot tárol.

Az előjeles és előjel nélküli kulcsszavak azt jelzik, hogy a deklarált változó nulla bitje hogyan értelmeződik, azaz ha meg van adva kulcsszó előjel nélküli, akkor a nulla bit a szám részeként, egyébként a nulla bit előjelként értelmeződik. Az előjel nélküli kulcsszó hiányában az egész változót előjelesnek tekintjük. Ha a típusmeghatározó egy előjeles vagy előjel nélküli kulcstípusból, majd egy változóazonosítóból áll, akkor a rendszer int változóként kezeli. Például:

unsigned int n, unsigned int b, int c; (feltételezve, hogy int c) aláíratlan d; (feltéve, hogy unsigned int d);signed f; (feltételezve, hogy f int alá van írva).

Bármilyen típusú változó deklarálható nem módosíthatónak. Ezt úgy érjük el, hogy a const kulcsszót hozzáadjuk a típusmeghatározóhoz. A const típusú objektumok csak olvasható adatokat jelentenek, azaz. ehhez a változóhoz nem lehet új értéket rendelni. Vegye figyelembe, hogy ha nincs típusmeghatározó a const szó után, akkor az int típusmeghatározót jelenti. Ha a const kulcsszó a deklaráció elé kerül kompozit típusok(tömb, szerkezet, keverék, felsorolás), akkor ez oda vezet, hogy minden elemnek nem módosíthatónak is kell lennie, pl. értéket csak egyszer lehet hozzárendelni.

const double A=2,128E-2;const B=286; (feltételezve, hogy const int B=286) consnant char_string konstans ="ez egy karakterlánc állandó"

float adatok

A lebegőpontos számot reprezentáló változókhoz a következő típusmódosítókat használjuk: float, double, long double (a long double nyelv egyes megvalósításaiban nincs SI).

A float típusú módosítóval rendelkező érték 4 bájtot foglal el. Ebből 1 bit van lefoglalva az előjelnek, 8 bit a többletkitevőnek és 23 bit a mantisszának. Figyeljük meg, hogy a mantissza legjelentősebb bitje mindig 1, tehát nincs kitömve, így a lebegőpontos változó tartománya hozzávetőlegesen 3,14E-38 és 3,14E+38 között van. A dupla érték 8 bájtot foglal el a memóriában. A formátuma hasonló a float formátumhoz. A memóriabitek a következőképpen vannak kiosztva: 1 bit az előjelnek, 11 bit a kitevőnek és 52 bit a mantisszának. Tekintettel a mantissza kihagyott magas bitjére, az értéktartomány 1,7E-308 és 1,7E+308 között van.

float f, a, b, dupla x, y;

- változó neve. Például imy változók.

A változóknál kisbetűket szokás használni, és a változóneveket megkülönböztetni a függvénynevektől, a változónevek kezdődhetnek betűvel, a függvénynevek (a fő kivételével) aláhúzással.

Például, az én változásom , _a funkziád.

A globális változók, valamint a statikus módosítóval rendelkező lokális változók a program indításakor és újraindításakor 0-val egyenlőek, kivéve, ha más értékeket kaptak.

Néhány példa a változók deklarációjára:

Unsigned Char my_change=34 ; /* a my_peremen előjel nélküli karakterként van definiálva, 34 értékkel (nem kötelező) */

Unsigned Int big_ change=34634; /* nagy_ változás előjel nélküliként van deklarálva */.

Tömb deklaráció

A tömbök azonos típusú (dupla, lebegő, int stb.) elemek csoportja. A tömbdeklarációból a fordítónak információt kell szereznie a tömbelemek típusáról és számáról. A tömbdeklarációnak két formátuma van:

típusleíró leíró [const - kifejezés];

típusleíró leíró ;

A leíró egy tömbazonosító.

A típusleíró megadja a deklarált tömb elemeinek típusát. A tömbelemek nem lehetnek függvények vagy üres elemek.

A szögletes zárójelben lévő konstans kifejezés a tömb elemeinek számát adja meg. A konstans kifejezés kihagyható a tömbdeklarációból a következő esetekben:

A deklaráláskor egy tömb inicializálódik;

A tömb formális függvényparaméterként van deklarálva.

A C nyelv csak egydimenziós tömböket határoz meg, de mivel egy tömbelem lehet tömb, többdimenziós tömböket is definiálhatunk. A tömbazonosítót követő konstans kifejezések listájaként vannak formalizálva, és minden konstans kifejezés saját szögletes zárójelben van.

Minden konstans kifejezés szögletes zárójelben határozza meg az elemek számát egy adott tömbdimenzió mentén, így a kétdimenziós tömbdeklaráció két konstans kifejezést tartalmaz, a háromdimenziós tömbdeklaráció hármat és így tovább. Vegye figyelembe, hogy C-ben a tömb első elemének indexe 0.

Char tömeg - az elemek számozása 0-tól kezdődik, azaz. ennek a tömbnek az elemeit tömegnek, tömegnek nevezzük, és a 11, 22, 33 számokat tárolják. Valahol a programban az elemhez értéket rendelhetünk, például tömeg = 210. Nem rendelhet értékeket az elemekhez.

Karakterláncot tartalmazó karakterlánc-változó vagy tömb, például

A Char stroke = "Hello" 6 elemet határoz meg, bár csak öt karaktert tartalmaz. A hatodik elem a vezérlőkarakter, amely a \0 karakterlánc végére kerül.

Egy karaktertömb az elemek számának megadása nélkül is deklarálható.

Például,

Char str = "karaktertömb deklaráció"

Kifejezések és feladatok

Operandusok és műveletek

Az operátorjelek és operandusok olyan kombinációját, amely egy adott értéket eredményez, kifejezésnek nevezzük. Az operátorjelek határozzák meg az operandusokon végrehajtandó műveleteket. Egy kifejezésben minden operandus lehet kifejezés. A kifejezés értéke függ a műveletek előjeleinek helyétől és zárójelben kifejezésben, valamint a műveletek végrehajtásának prioritásában.

A C nyelvben a hozzárendelés egyben kifejezés is, és egy ilyen kifejezés értéke a hozzárendelés alatt álló érték.

Az operandus egy állandó, literális, azonosító, függvényhívás, indexkifejezés, elemválasztó kifejezés vagy összetettebb kifejezés, amelyet operandusok, operátorjelek és zárójelek kombinációja alkot. Minden olyan operandust, amelynek állandó értéke van, konstans kifejezésnek nevezzük. Minden operandusnak van egy típusa.

Ahhoz, hogy egy számot változóba (regiszterbe) helyezzünk, a C nyelvnek a hozzárendelési operátora „ = ". Ez a szimbólum a C-ben azt jelenti, hogy ki kell számítani annak eredményét, ami a hozzárendelési operátortól jobbra van, és ezt az eredményt egy változóba helyezzük balra hozzárendelés operátor.

1.PORTB=PINB+34; /* Ez a C sor azt jelenti Vedd (olvasd el) a PINB változó értékét (regisztráld), majd add hozzá a 34-es számot és az eredményt tedd a PORTB változóba */

2. VARIABLE=PINC; /* Ez a C sor azt jelenti, hogy be kell venni (leolvasni) a PINC változó értékét (regisztrálni), és az eredményt a VARIABLE nevű változóba helyezni */
3. Egy sor, ahol a változó a „=”-től balra, de a & PORTB& =0x23; C-ben azt jelenti, hogy beolvassuk a PORTB változó tartalmát, majd végrehajtunk egy "bitenkénti (bitenkénti) logikai ÉS"-et az olvasási érték és a 0x23 szám között, és az eredményt a 4-es PORTB változóhoz helyezzük (írjuk, hozzárendeljük). a változó közvetlenül a „=” bal oldalán található PORTB= 0x23; C-ben azt jelenti, hogy a PORTB változó tartalmának elolvasása nélkül rendelje hozzá a 0x23 értéket, ezzel tönkretéve azt, ami korábban volt.
Az & "AND" helyett (ÉS - csak 1 és 1 ad 1-et) más bitenkénti logikai műveletek is lehetnek: | "VAGY" (VAGY csak 0 és 0 ad 0-t) ^ "XOR" (XOR bitváltás az "1"-el szemben) ~ "bit megfordítása" (INV regiszterbitek ellentétes karakterekre változtat) és aritmetikai műveletek: + - * / %
A hozzárendelés operátora rövidítéseket használ:
HOSSZÚ FELVÉTEL JELENTÉS LECSÖKKENTVE
x = x + 1; hozzá 1 x++; vagy ++x;
x = x-1; kivonni 1 x--; vagy --x;
x = x + y; add hozzá y-t x += y;
x = x - y; vonjuk ki y-t x = y;
x = x * y; szorozzuk meg y-val x *= y;
x = x/y; ossza el y-val x /= y;
x = x % y; az osztály többi része x %= y;
x--; kivonni 1 x = 1;
x++; hozzá 1 x += 1;

A C-ben vannak olyan műveletek, amelyek hozzárendelési operátor nélkül módosítják a változó értékét:

PORTA++;/* Ez a C sor azt jelenti: Vegyük a PORTA változó értékét, adjunk hozzá 1-et, és írjuk vissza az eredményt a PORTA-ba. növekedés regisztráció PORTA */

PORTC--;/* Ez a C sor az ellenkezőjét jelenti! Csökkenés- vonjon le 1-et a PORTC regiszter értékéből */

Ha egy kifejezésben növekményt vagy csökkentést használunk, akkor számít, hogy a két + vagy - jel hol van a változó előtt vagy után:

a=4; b=7; a = b++;/* Ez a C sor azt jelenti: vegyük fel b értékét, rendeljük hozzá a-hoz, majd adjunk hozzá 1-et b-hez, és tároljuk az eredményt b-ben. Most a-ban a 7-es szám, b-ben a 8-as szám lesz */ a=4; b=7; a = ++b;/* Ez a C sor azt jelenti: vegyük a b változó értékét, majd adjunk hozzá 1-et, és tároljuk az eredményt b-ben, és rendeljük hozzá ugyanazt az eredményt az a változóhoz. a 8-as szám */ 1.2 .2 Aritmetikai műveletek in C x + y// összeadásx - y// kivonásx * y// szorzás x / y/* osztás. Ha a számok egész számok, akkor az eredmény egy egész szám, amelynek törtrésze el van hagyva – nem kerekítve. Azok. ha az osztás eredménye 6,23411 vagy 6,94, akkor az eredmény csak egy egész 6 lesz. Ha a lebegőpontos számokat, azaz a lebegőpontos vagy duplapontos számokat egy ponttal írjuk, és a pont után egy számot, akkor az eredmény egy A lebegőpontos szám a tört rész elvetése nélkül 131,9739 / 6,18 21,355 */ x % y// kiszámítja a maradékot egész osztás után Példák:

x< y // X меньше Y
x > y // több
x<= y // меньше или равно
x >= y // nagyobb vagy egyenlő
x == y // egyenlő
x != y /* nem egyenlő Ezen állítások eredménye: "igaz" "1" (pontosabban "nem nulla"), "hamis" "0". Változókban tárolt értékek (regiszterekben)
x
És nál nél ne változz. A változókban tárolt (vagy tartalmazott) értékeket veszi (olvassa) és összehasonlítja */

1.2.5.Boole-műveletek:

|| // "VAGY" - csak "hamis" és "hamis"

// adja meg, hogy "false"

&& // "ÉS" - csak "igaz" és "igaz"
// adja meg, hogy "igaz"

! // "NEM" - logikai tagadás

A logikai művelet eredménye NEM SZÁM, hanem a "true" vagy "false" logikai érték.

Logikai műveletekhez && és || a kifejezések eredményei a művelet jelétől balra és jobbra kerülnek "igaz"-ra vagy "hamis"-ra konvertálvaés meghatározzuk a művelet logikai eredményét.

A fordító az "igaz" eredményt 1-re változtatja, és nem 0-n kívül más számmá.

A logikai műveletek több ellenőrizendő feltételt is kombinálhatnak.

Például:

ha((1. kifejezés)&&((2. kifejezés)||(3. kifejezés)))
{ /* Az itt található programkód akkor kerül végrehajtásra, ha:

Az 1. kifejezés "igaz" (ami azt jelenti, hogy nem nulla), és a 2. és 3. kifejezések közül legalább az egyik "Igaz" (ami azt jelenti, hogy nem nulla).
} ;

1.3. Használt konstrukciók C-ben

1.ha(){} más(); ideális konstrukció, ha a program egy részét bármilyen feltétel fennállása esetén vagy azok hiányában kell végrehajtania:

} más(Nem szükséges elem konstrukció, nélküle a konstrukció így néz ki:

ha (kifejezés) ( C kód /* ezt a kódot ha kifejezés"igazság" - i.e. számításának eredménye nem nulla */
};

ha(PINB.5) ( C kód végrehajtása );
/* Ha van egy "1" a PB5 lábon (nem a "0" azt jelenti, hogy "igaz"), akkor a program végrehajtja a kódot, és ha "0" (jelentése "hamis"), akkor nem teszi meg, hanem egyszerűen továbbmegy, a következő sorba */

2.miközben()(); feltételes ciklus (feltételes ciklus) - akkor használatos, ha valamilyen programkódot kell végrehajtania a végrehajtása közben (van,
Az "igaz" jelentése "nem nulla") valamilyen feltétel, a kifejezés értékelésének eredménye:

míg( kifejezés ) (A C kód /* akkor hajtja végre ezt a kódot, ha a kifejezés "igaz" - azaz a számítás eredménye nem nulla. Amíg ez a kód fut, a kifejezés nem ellenőrzi az igazságtartalmat. A kód végrehajtása után az átmenet a vonal míg ellenőrizze még egyszer a kifejezés igazságát */
};

Például:

míg(PINA.6) (C kód végrehajtása);
/* Viszlát van egy "1" a PA6 lábán (nem a "0" azt jelenti, hogy "igaz"), akkor a program végrehajtja a kódot, és újra ellenőrzi, hogy PA6-on van-e */ Ha a bit_6 értéke "0" lesz, akkor a program megy tovább anélkül, hogy megtennéd azt, ami a ( ) alatt van

Ciklus míg opciója van

Csinálni, miközben

ahol legalább a ( )-ben lévő kód végrehajtásra kerül egyszer, függetlenül attól, hogy a feltétel igaz-e zárójelben:

do(C kód /* ezt a kódot egyszer lefuttatja, majd ha a kifejezés "igaz" - azaz a kiértékelésének eredménye nem nulla - ismét végrehajtja a kódot az elejétől, és így tovább, amíg a kifejezés igaz */ ) míg ( kifejezés); A for(;;) és while() ciklusokat gyakran így használják: while(1); for(;;); /* Így leírva ezek a ciklusok azt jelentik: MK hajtja végre ezt a sort, amíg van áram, nincs reset és nincs megszakítás. Ha megszakítás történik, a program a megszakításkezelőhöz ugrik, és (ha nincs átmenet a kezelőben a program másik helyére) a kezelőkód befejezése után ismét visszatér ehhez a ciklushoz. */ while(1)( programkód ); for (;;)( programkód ); 4.for(;;)(); - ez a ciklus lehetővé teszi a program egy részének a szükséges számú végrehajtását:

charén; /* változó deklaráció ehhez számára ez egy normál C változó, ezért bármilyen érvényes neve és típusa lehet */

számára(i=5; i<20; i+=4) {
kód C-ben /* Először az "igaz" vagy "hamis" i vezérlőkifejezés kerül meghatározásra<20. Так как переменной i присвоено значение 5 то контрольное выражение "истинно" и код цикла számára először i=5 esetén kerül végrehajtásra, majd az i+=4 kifejezéssel i-ből 9 lesz, most az i vezérlőkifejezés igazságtartalmát (tisztességességét, végrehajtását) ismét ellenőrizzük<20 и так как 9<20 код цикла számáraújra végrehajtásra kerül, de i=9 esetén. Ez mindaddig megtörténik, amíg a vezérlőkifejezés kiértékelésének eredménye "igaz"-ot ad. Amikor az eredmény "hamis" lesz, a program kilép a ciklusból számára kód végrehajtása nélkül. */
};

i = 5 a kezdeti kifejezés, ami a változóban lesz az elején én. Az 5-ös szám csak egy példa, bármi lehet, amit a változótípus deklarációja megenged én, esetünkben az char a legtöbb fordítóban alapértelmezés szerint ez egy előjel nélküli karaktertípus - 0 és 255 közötti számokat képes tárolni

én< 20 - контрольное выражение. Может быть с разными операторами отношения, csak fontosúgy, hogy a ciklus során valamikor "hamis" lesz - különben a ciklus "hurkol" pl. soha nem lesz vége.

i += 4 a ciklusváltozó számlálója vagy változása. Általában ezt i++ azok. 1-et adunk a változóhoz a ciklus minden "futásában". De ismét, bármi lehet, amit akarsz.

Kezdeti állapot- bármilyen C-ben érvényes kifejezés lehet, amely egész számra értékelődik ki.

Kontroll kifejezés- meghatározza, hogy mennyi ideig legyen végrehajtva a ciklus.

Számláló- megmutatja, hogyan változik a kezdeti kifejezés egy új ciklus minden egyes végrehajtása előtt.

Kifejezés- nem csak változó lehet, hanem más változók függvénye is, például:

i =(7 + i*4) vagy i = (más változók függvénye).

5. kapcsoló()(); - a feleletválasztós operátor, lehetővé teszi, hogy több lehetőség közül válasszon.

A switch kulcsszót követő zárójelben lévő kifejezés lehet bármely, a C nyelvben engedélyezett kifejezés, amelynek értéke egész szám kell, hogy legyen. Ennek a kifejezésnek az értéke a kulcsa a több lehetőség közül való választásnak. A switch utasítás törzse több olyan utasításból áll, amelyek a case kulcsszóval vannak megjelölve, amelyeket egy konstans kifejezés követ. A switch utasításban szereplő összes konstans kifejezésnek egyedinek kell lennie. A case kulcsszóval jelölt állításokon kívül előfordulhat, de mindig egy, az alapértelmezett kulcsszóval jelölt töredék. Az operátorlista lehet üres, vagy tartalmazhat egy vagy több operátort. Ezenkívül a switch utasításban nem szükséges kapcsos zárójelek közé tenni az utasítások sorozatát.

A switch utasítás végrehajtási sémája a következő:

A zárójelben lévő kifejezés kiértékelésre kerül;

A kiszámított értékeket szekvenciálisan összehasonlítják az esetkulcsszavakat követő állandó kifejezésekkel;

Ha valamelyik konstans kifejezés megegyezik a kifejezés értékével, akkor a vezérlés átkerül a megfelelő esetkulcsszóval jelölt utasításra;

Ha egyik konstans kifejezés sem egyenlő a kifejezéssel, akkor a vezérlés az alapértelmezett kulcsszóval jelölt utasításra, ha pedig hiányzik, a switch utasítást követő utasításra kerül át.

A start utasítás és a törzs vége közötti összes utasítás a kulcsszavaktól függetlenül végrehajtásra kerül, kivéve, ha az egyik utasítás átadja az irányítást a switch utasítás törzséből. Így szükség esetén a programozónak kell gondoskodnia az esetből való kilépésről. Ennek legáltalánosabb módja a break utasítás használata.

kapcsoló(kifejezés) (

eset 5: C kód
/* ez a kód akkor kerül végrehajtásra, ha a kifejezés számításának eredménye egyenlő az 5-ös számmal az operátor munkáján kapcsoló véget ér */
szünet;

eset-32: C kód
/* ez a kód akkor kerül végrehajtásra, ha a kifejezés kiértékelése negatív számra -32. Ez az üzemeltető munkája kapcsoló véget ér */
szünet;

"G" eset: C kód
/* ez a kód akkor kerül végrehajtásra, ha a kifejezés kiértékelésének eredménye megegyezik az ASCII tábla G karakterének megfelelő számmal Ez az operátor munkája kapcsoló véget ér */
szünet;

alapértelmezett: C kód
/* ez a kód akkor fut le, ha a kifejezés kiértékelésének eredménye sem 5, sem -32, sem nem "G", és a kód végrehajtása után sem
szünet a végén;

Ez az üzemeltető munkája kapcsoló véget ér */
};

/* kapcsoló kész - további programkód fut */

ügy- annyi lehet, amennyi a program gyorsabb működéséhez szükséges - a legvalószínűbb opciókat magasabbra kell helyezni.

alapértelmezett- nem szükséges. Elhelyezhető és nem a végére.

szünet;- ha nem használja, akkor a kívánt opciót megtalálva a program az alábbi feltételeket is teljesíti ügy.

6.menj- feltétel nélküli (azonnali) átmenet operátora.

A goto utasítás átadja a vezérlést a címkenév feliratú utasításra. A címkézett utasításnak ugyanabban a funkcióban kell lennie, mint a goto utasításnak, és a használt címkének egyedinek kell lennie, pl. ugyanaz a címkenév nem használható különböző programutasításokhoz. A címkenév egy azonosító. a C programunk valamelyik kódja... mesto_5:/* a goto mesto_5 programsor végrehajtása után jutunk ide */ a kód a goto mesto_5 után fog lefutni; ... a C programunk valamelyik kódja... mesto_1:/* a goto mesto_1 programsor végrehajtása után jutunk ide */ a kód a goto mesto_1 után fog lefutni; ... a C programunk valamelyik kódja... goto mesto_1;/* menj a programban arra a helyre, ahol a mesto_1 a sor elejére van írva: */ ... a C programunk valamelyik kódja... goto mesto_5; /* menjen a programban arra a helyre, ahol a mesto_5 a sor elejére van írva: */ ... a C programunk valamelyik kódja.

C példa Program

/*1. bekezdés program címe

Megjegyzésként van formázva, és általában információkat tartalmaz

A program nevéről, céljáról, verziójáról és szerzőjéről
- a program algoritmusának rövid leírása
- magyarázatok az MK következtetéseinek céljáról és működési módjáról, biztosítékokról
- fordító, eszközök és változataik
- egyéb olyan információk, amelyeket hasznosnak tart feltüntetni

// 2. pont beleértve a külső fájlokat is

#beleértve

/* fordítás előtt a fordító előfeldolgozója e sor helyett a tartalmat (szöveget) szúrja be fejléc fájl"hidera" mega16.h - ez a fájl tartalmazza az ATmega16 MK-ban elérhető regiszterek listáját, valamint a nevük és az MK-ban lévő fizikai címeik egyezését. Meg kell adni, hogy melyik MK-t használja a fordító projekt tulajdonságai között */

#beleértve
/* fordítás előtt a fordító előfeldolgozója a "fejléc" szöveget szúrja be e sor késleltetése helyett.h - ez a fájl a programban szünetek létrehozására szolgáló funkciókat tartalmaz. Most már csak annyit kell tennie a szünethez, hogy írja be: */

/* szünet N (szám) mikrosec. Állandónak kell lennie - NEM változónak!!!
Például:

delay_us(12 + 7*3);
delay_us(117);

delay_ms(x); /* szünet x misec
x - lehet változó, kifejezés vagy szám
0-tól 65535-ig (típus aláíratlan int)
Például:

delay_ms(3280);
delay_ms(változó);
delay_ms(változó*4 + 760); */

//3. pont felhasználói definíciók

#define ADC_BUSY PINB.0
#define NCONVST PORTB.1
/* e két sor után a fordítás előtt a fordító előfeldolgozója az ADC_BUSY-t PINB.0-ra, az NCONVST-t pedig PORTB.1-re cseréli a programszövegben
Így ahelyett, hogy emlékezne arra, hogy az AD7896 foglalt pin csatlakozik a PB0 érintkezőhöz, ellenőrizheti az ADC_BUSY – "ADC is busy" – értelmes fogalom értékét. És a PB1 absztrakt pin vezérlése helyett (a PORTB.1-en keresztül) vezérelheti - NCONVST - "új AD átalakítás indítása".

#define – praktikus! De egyáltalán nem szükséges.
*/

Például:

#define invbit(p,n) (p=p^bit(n))

Itt a változók "p" és "n". Most fordítsuk meg az 5. bitet a regiszterben PORTB csak be kell írni a programba:

invbit( PORTB,5);

Ráadásul a jobb szélső részen ezek a változók számtani műveletekhez társíthatók, és sok ilyen változó lehet.

Algoritmus

Minden program fejlesztése egy algoritmus kidolgozásával kezdődik. Esetünkben az algoritmus a következő: a kezdeti beállítási műveletek után a mikrokontrollernek egy folyamatos ciklusba kell lépnie, amely során le kell kérdeznie a gombunkhoz csatlakoztatott bemenetet, és állapotától függően vezérelnie kell a LED-eket. Írjuk le részletesebben.

C program

C program készítésekor a C PRO for AVR fordítót használjuk. Ezt a szoftverkörnyezetet kifejezetten az AVR mikrokontrollerekhez készült C programok fejlesztésére tervezték.

Bármilyen modern programozási környezet nem csak a program szövegével működik, hanem az ún projekt.

A programozó feladata csak a program szövegének megírása, amelyhez a projektben külön „c” kiterjesztésű fájl van kijelölve. A fordító a forrásprogramot hexadecimális rendszerré fordítja (hex fájlt hoz létre), hogy bevigye (firmware) a mikrokontroller memóriájába.

A jövőben részletesen megvizsgáljuk a telepítési folyamatot, és a C PRO for AVR szoftverkörnyezettel dolgozunk. Most úgy gondoljuk, hogy telepítve van és elindult.

A fordító elindítása után azonnal minden paraméter visszaáll az alapértelmezett értékre (minden belső eszköz ki van kapcsolva, a belső I / O portok bemenetre vannak állítva, egy 4 MHz-es órajelű belső oszcillátort használnak). Ez megfelel a a mikroprocesszor kezdeti állapota a rendszer visszaállítása után. Azokhoz a paraméterekhez, amelyekhez még nem kell hozzányúlnunk, nem fogunk hozzányúlni (alapértelmezés szerint meghagyjuk).

A C program így néz ki:

1 #Include< Atmega 128.h >

2 bit oldstate ; // régi államzászló

3 Void main() (

4 DDB0 bit=0 ; // PB0 pin beállítása bemenetként

5 DDRC = 0xFF; // konfigurálja a PC-t kimenetként

6 PORTC=0xAA; // a forráskód a C portra van írva

9 If (Button (& PINB,0,1,1)) ( // logikai felismerés

10 Oldstate=1; // frissítési jelző

11 if (oldstate && gomb (& PINB, 0,1,0)) ( // átmenet észlelése 1-ről 0-ra

12 PORTB= ~ PORTB; //invertálja a PORTC-t

13 oldstate=0; // frissítési jelző

14) Míg (1); // végtelen ciklus

A Kazah Köztársaság Tudományos és Oktatási Minisztériuma

Multidiszciplináris Főiskola

Észak-Kazahsztáni Állami Egyetem

M. Kozybaev akadémikusról nevezték el

Magyarázó jegyzet

a kurzusprojekthez

tudományág: "Digitális eszközök és mikroprocesszoros rendszerek"

témában: "Mikroprocesszoros rendszer tervezése I 8086 mikroprocesszorra"

16-os számú opció

Elkészült: tanuló gr. RES-k-09

Safronov S.V.

Ellenőrizte: tanár

Mikhailova A.N.

Petropavlovszk 2010

1. Bemutatkozás

2. Az IPU általános felépítése

3. 16 bites mikroprocesszor i8086

3.1 Parancsrendszer

4.Belső szerkezet

5. Memóriaeszközök

6. RAM. Építési alapelvek

7. Csak olvasható memória (ROM)

8. Digitális-analóg átalakítók (DAC)

9. A bemeneti/kimeneti modul funkcionális diagramjának kidolgozása

10 Következtetés

Bibliográfia

A. melléklet

1. Bemutatkozás

A „Digitális eszközök és mikroprocesszorok” tudományág célja a különféle funkcionális komplexitású digitális eszközök – a logikai elemektől a mikroprocesszorokig és a mikroszámítógépekig – felépítésének elveinek tanulmányozása.

A kompakt mikroelektronikai "memóriát" széles körben használják a modern elektronikus berendezésekben különféle célokra. A PC-ben a memória egy funkcionális rész, amely parancsok és feldolgozott adatok rögzítésére, tárolására és kiadására szolgál. A memória funkcióját megvalósító technikai eszközök együttesét tárolóeszköznek (memória) nevezzük. A processzor (mikroprocesszor) működésének biztosításához szükség van egy programra, azaz egy parancssorra, és olyan adatokra, amelyeken a processzor a parancsok által előírt műveleteket hajtja végre. A parancsok és adatok a beviteli eszközön keresztül jutnak be a számítógép fő memóriájába, amelynek kimenetén digitális ábrázolási formát, azaz O és 1 kódkombinációk formáját kapják. A főmemória általában két részből áll. típusú működési memória (RAM) és állandó (ROM).

A véletlen elérésű memória változó információk tárolására szolgál, lehetővé teszi a tartalom megváltoztatását az adatokkal végzett számítási műveleteket végrehajtó processzor során. Ez azt jelenti, hogy a processzor kiválaszthatja (olvasási mód) a RAM-ból az utasításkódot és az adatokat, majd feldolgozás után az eredményt a RAM-ba (írási mód) helyezheti el.

Ez a kurzus a memóriablokk tanulmányozására irányul. A feladat ugyanis egy adott méretű és konfigurációjú memóriaterület felépítése.

2. Az IPU általános felépítése

A mikroprocesszor (MP) - bármely mikroprocesszoros rendszer (MPS) központi része - tartalmaz egy aritmetikai logikai egységet (ALU) és egy központi vezérlőegységet (CCU), amely végrehajtja a parancsciklust. Az MP csak az MPS részeként működhet, amely az MP-n kívül memóriát, bemeneti / kimeneti eszközöket, segédáramköröket (óragenerátor, megszakításvezérlők és közvetlen memóriaelérés (DMA), buszmeghajtók, reteszek stb.) tartalmaz.

Bármely MPS-ben a következő fő részek (alrendszerek) különböztethetők meg:

    processzor modul;

  • külső eszközök (külső tároló + bemeneti/kimeneti eszközök);

    megszakítási alrendszer;

    közvetlen memóriaelérési alrendszer.

1. ábra - Az MPS felépítése a "Közös busz" interfésszel

A processzor és más MPS-eszközök közötti kommunikáció történhet a radiális csatlakozások, a közös busz vagy a kombinált módszer elve szerint. Az egyprocesszoros MPS-eknél, különösen a 8 és 16 biteseknél a "Common bus" kommunikációs elvet alkalmazzák a legelterjedtebben, amelyben minden eszköz azonos módon csatlakozik az interfészhez (1. ábra).

Minden interfész jel három fő csoportra van osztva - adatok, cím és vezérlés. A „Common Bus” interfész számos változata biztosít átvitelt különálló vagy multiplex vonalakon (buszokon). Például a Microbus interfész, amellyel a legtöbb i8080 alapú 8 bites MSM működik, külön buszokon továbbítja a címet és az adatokat, de néhány vezérlőjelet az adatbuszon küldenek. A DEC mikroszámítógépekben (hazai analóg - K1801 sorozatú mikroprocesszorok) használt Q-bus interfész multiplex cím/adatbusszal rendelkezik, amelyen keresztül ez az információ időosztással kerül továbbításra. Természetesen multiplex busz jelenlétében szükség van egy speciális jel beépítésére a vezérlővonalakra, amely azonosítja a buszon lévő információ típusát. Az információcsere az interfészen keresztül történik két eszköz között, amelyek közül az egyik aktív, a másik passzív. Az aktív eszköz passzív eszközcímeket és vezérlőjeleket generál. Az aktív eszköz általában a processzor, a passzív eszköz pedig mindig a memória és néhány VU.

Néha azonban a nagy sebességű VU mesterként (aktív eszközként) működhet az interfészen, és memóriával vezérli a cserét. A "Common Bus" koncepció azt feltételezi, hogy az összes MPS eszközt egyetlen címtérben érik el, azonban a címezhető objektumok számának bővítése érdekében egyes rendszerekben mesterségesen elválasztják a memória és a VU címterét, sőt néha program is. memória és adatmemória.

3,16 bites mikroprocesszor i8086

Az első 16 bites i8086 processzort az Intel adta ki 1978-ban. Frekvencia - 5 MHz, teljesítmény - 0,33 MIPS a 16 bites operandusokkal rendelkező utasításokhoz (később megjelentek a 8 és 10 MHz-es processzorok). 3 mikronos technológia, 29 000 tranzisztor. Címezhető memória 1 MB. Egy évvel később megjelent az i8088 - ugyanaz a processzor, de 8 bites adatbusszal. Vele kezdődött az IBM PC története, amely elválaszthatatlanul összefügg az Intel processzorok minden további fejlesztésével.Az IBM PC architektúra tömeges elterjedése és nyitottsága új szoftverek lavinához vezetett a nagy-, közepes- és kisvállalatok körében. mint egyedülálló rajongók. A technikai fejlődés akkor és most elképzelhetetlen lett volna a processzorok fejlesztése nélkül, de tekintettel a PC-re szánt hatalmas mennyiségű meglévő szoftverre, már akkor felmerült a visszafelé irányuló szoftverkompatibilitás elve – a régi programoknak új processzorokon kell működniük. Így a következő processzorok architektúrájában minden újítást a meglévő maghoz kellett csatolni.

Az i8086 16 bites MP az i8080 által elindított egychipes MP sorozat továbbfejlesztése volt. A bitmélység növekedésével párhuzamosan az i8086 számos új építészeti megoldást valósít meg:

a parancsrendszer kibővült (művelet- és címzési móddal);

Az MP architektúra a többprocesszoros működésre orientálódik. Különböző konfigurációjú multimikroprocesszoros rendszerek szervezéséhez kiegészítő LSI-k (vezérlők és speciális processzorok) csoportját fejlesztették ki;

mozgás az átfedés irányába indult meg a különböző műveletek végrehajtásának idejében. Az MP két párhuzamos eszközt tartalmaz

adatfeldolgozás és kommunikáció a gerinchálózattal, amely lehetővé teszi az információk feldolgozásának és a gerincen keresztüli továbbításának időben történő kombinálását;

új (az i8080-hoz képest) memóriaszervezést vezettek be, amelyet az INTEL család minden régebbi modelljében tovább alkalmaztak - a memóriaszegmentációt. A modell folytonosságának megőrzése érdekében az i8080-zal az i8086 két működési módot biztosít - "minimális" és "maximális", és a minimális üzemmódban az i8086 ugyanúgy működik, mint egy meglehetősen gyors, 16 bites i8080 kiterjesztett utasításrendszerrel. (az i8086-min alapú MPS architektúra hasonlít az i8080 bázis architektúrájára).

A maximális módot az i8086-os működésre tervezték többmikroprocesszoros rendszerekben, amelyben több i8086 központi processzoron kívül speciális i8089 bemeneti / kimeneti processzorok, i8087 "lebegő aritmetikai" koprocesszorok működhetnek. Határozzuk meg pontosabban a fent bemutatott fogalmakat:

Központi processzor - fenntartja saját parancsciklusát, végrehajtja a rendszermemóriában tárolt programot, a rendszer újraindításakor a vezérlés általában a központi processzorra (vagy valamelyik CPU-ra, ha több van a rendszerben) kerül át. Speciális processzor - fenntartja saját utasítási ciklusát, végrehajtja a rendszermemóriában tárolt programot, de csak a CPU parancsával inicializálja, a program végén tájékoztatja a CPU-t a munka befejezéséről. A társprocesszor nem támogatja a saját parancsciklust, a CPU által a számára kiválasztott parancsokat az általános parancsfolyamból hajtja végre. Valójában a társprocesszor a CPU kiterjesztése.

3.1 Parancsrendszer

A 8086 mikroprocesszoros utasításkészletben 98 utasítás volt: 19 adatátviteli utasítás, 38 adatfeldolgozási utasítás, 24 utasítás különféle feltételes és feltétel nélküli ugráshoz, valamint 17 CPU-vezérlő utasítás.

Minden utasítás egy műveleti kódból (úgynevezett műveleti kódból) és operandusokból állt. Általában a parancs első bájtja és a második bájt három középső bitje, vagy (egybájtos parancs esetén) a parancs első bájtjának magas része volt hozzárendelve a műveleti kódhoz. Az i8086-ban összesen közel 4000 különböző parancslehetőség található.

Céljuk szerint az I8086 mikroprocesszor parancsai 6 csoportra oszthatók:

1 Adatátviteli parancsok: MOV, XCHG, PUSH, POP, PUSHF, POPF, LEA, LDS, LES, LAHF, SAHF, XLAT, IN.

2 aritmetikai parancs: ADD, ADC, INC, AAA, DAA, SUB, SBB, DEC, NEG, CMP, AAS, DAS, MUL, IMUL, DIV, IDIV, AAM, AAD.

3 logikai parancs: NOT, SHL / SAL, SHR, SAR, ROL, ROR, RCL, RCR,

ÉS, TESZT, VAGY, XOR.

4 karakterlánc-manipulációs parancs: CMPS, LODS, MOVS, REP, SCAS, STOS.

5 átviteli parancs: JMP, CALL, RET, LOOP/LOOPE, LOOPZ, LOOPNE/LOOPNZ, JCXZ, JE/JZ, JNE/JNZ, JL/JNGE, JLE/JNG, JB/JNAE, JBE/JNA, JP/JPE, JNP/JPO, JO, JNO, JS, JNS, JG/JNLE, JGE/JNL, JA/JNBE, JAE/JNB.

6 processzorvezérlő parancs: CLC, CMC, STC, CDL, STD, CLI, HLT WAIT, ESC, LOCK

4.Belső szerkezet

Az MP i8086 blokkvázlata a 2. ábrán látható. Az MP három fő eszközt tartalmaz:

UOD - adatfeldolgozó eszköz;

USM - kommunikációs eszköz az autópályával;

UUS - vezérlő és szinkronizáló eszköz.

Az UOD utasítások végrehajtására készült, és tartalmaz egy 16 bites ALU-t, rendszerregisztereket és egyéb segédáramköröket; regiszterblokk (RON, alap és index) és mikroprogram vezérlés blokkja.

Az USM biztosítja a memória 20 bites fizikai címének és a JE 16 bites címének kialakítását, a parancsok kiválasztását a memóriából, az adatcserét a memóriával, a JE-vel és más processzorokkal a buszon keresztül. Az USM tartalmaz egy címösszeadót, egy parancssor-regiszter-blokkot és egy szegmensregiszter-blokkot.

A CUS biztosítja az MP-eszközök működésének szinkronizálását, vezérlőjelek és állapotjelek generálását más eszközökkel való cseréhez, elemzést és megfelelő választ más MPS-eszközök jeleire.

Az MP két üzemmód egyikében működhet - "minimum" (min) és "maximum" (max). A minimális módot az MPS egyprocesszoros konfigurációjának megvalósítására tervezték, az i8080-on alapuló MPS-hez hasonló szervezettel, de megnövelt címtérrel, nagyobb teljesítménnyel és jelentősen bővített utasításkészlettel. A maximális konfiguráció feltételezi, hogy a rendszerben több MP és egy speciális trönk döntőblokk (a Multibus interfész használatával) van jelen.

Az i8086 MP külső kimenetein széles körben alkalmazzák a jelmultiplexelés elvét - különböző jelek átvitelét közös vonalakon, időben megosztva. Ezen kívül ugyanazokkal a tűkkel módtól függően (min - max) különböző jeleket lehet továbbítani.hardver tervezés ... tanfolyam projekt megvalósítva mikroprocesszor rendszer tovább mikrokontroller alap - ... készülék működése Tovább alapján készülék jellemzői...

  • Tervezés mikroprocesszor adatfeldolgozó eszközök

    Egyéb >> Informatika, programozás

    tanfolyami munka tervezés van rendszer adatgyűjtés és -feldolgozás, megvalósítva tovább alapján modern elemes alap - mikroprocesszor ... tovább alapján a többi MP hasonló, bár van néhány jellemzője, amelyek az architektúrák különbségeihez kapcsolódnak mikroprocesszorok ...

  • Mikroprocesszor rendszerek

    Gyakorlati jelentés >> Informatika

    Által oktatási gyakorlat « Mikroprocesszor rendszerek" 1. opció Elvégezve ... SZÁMÍTÓGÉP automatizálthoz tervezés, tudományos kutatás, ... kinek kell tudnia alapok az univerzális szervezése és működése... kurzor jobbra tovább egy pozíciót. Tovább szimbólum...

  • Perifériás eszközök hardverei és szoftverei rendszerek mérőállások gyűjtése

    Absztrakt >> Informatika

    16 biteshez hasonlítható mikroprocesszorokés mikrokontrollerek a teljesítmény és a ... számítástechnika számára For tervezés tovább alapján számítástechnikai gépek megbízható ... forrasztási módja az építésnek mikroprocesszor rendszerek tovább alapján Az AVR egy felvásárlás...

  • A VT eszközök elembázisában bekövetkezett minőségi és mennyiségi változások oda vezettek

    kialakításuk bevett elveinek megváltoztatása (például merev

    struktúra, szekvenciális központi vezérlés, vonalszervezés

    memória és képtelenség a számítógép szerkezetét a funkciókhoz igazítani

    probléma megoldás alatt).

    A számítógépes rendszerek szervezésének klasszikus von Neumann-elveit felváltották az MPS problémaorientáltságának, az információ párhuzamos és csővezetékes feldolgozásának, a táblázatos adatfeldolgozási módszerek alkalmazásának, az MPS-struktúrák szabályszerűségének és egységességének elvei; valósággá válik

    az adaptív-hangolható rendszerek létrehozásának gondolatának lehetősége, valamint

    szoftver funkciók hardveres megvalósítása. Ezért jelenleg

    a kapott MPS-en alapuló számítástechnikai rendszerek tervezésében eltöltött idő

    az úgynevezett "3M" elv alkalmazása: modularitás, törzs,

    mikroprogramozhatóság.

    A moduláris szervezés elve magában foglalja a számítási és

    modulkészlet alapján vezérli az MPS-t: szerkezetileg, funkcionálisan és

    elektromosan komplett számítástechnikai eszközök, amelyek lehetővé teszik az önálló

    vagy más modulokkal együtt az osztály problémáinak megoldására. Moduláris

    megközelítés a mikroszámítógépek és rendszerek tervezésében lehetővé teszi (ha úgy valósítják meg

    univerzális és speciális modulok) biztosítják a családok létrehozását

    (sorok) MPS, más funkcionalitásés jellemzői,

    az alkalmazások jelentős körét lefedi, segít csökkenteni

    tervezési költségeket, valamint leegyszerűsíti a kapacitásbővítést és

    rendszerek újrakonfigurálása, visszaszorítja a számítástechnika elavultságát

    Az információcsere gerincmódszere különbözik a szervezettől

    tetszőleges kapcsolatok (az "minden egyesével" elv szerint) lehetővé teszik az egyszerűsítést és

    az MPS-ben található hivatkozások számának minimalizálása érdekében. Közötti információcserét biztosít

    különböző szintű funkcionális és konstruktív modulok felhasználásával

    autópályák, amelyek egyesítik a bemeneti és kimeneti buszokat. Van egy, kettő,

    három- és többvonalas kommunikáció. Meg kell jegyezni a kapcsolatot

    a megvalósítás során megjelenő áramköri és szerkezeti megoldások

    ez a módszer csere speciális kétirányú puffer létrehozása formájában

    kaszkádok három stabil állapottal és ideiglenes használattal

    cserecsatornák multiplexelése.

    Firmware vezérlés a legnagyobb rugalmasságot biztosítja a szervezésben

    többfunkciós modulok, és lehetővé teszi a probléma orientációt

    MPS, valamint makróműveleteket használjon bennük, ami hatékonyabb, mint a használata


    standard rutinok. Ezen kívül az ellenőrzött szavak továbbítása a formában

    titkosított kódsorozatok megfelelnek a minimalizálási feltételeknek

    a VLSI lábak számát, és csökkenti a modulok összekapcsolásának számát.

    Az MPS tervezés fentebb felsorolt ​​főbb jellemzői mellett annak kell lennie

    vegye figyelembe a szabályosság elvét, amely szabályosságot jelent

    az MPS-struktúra elemeinek megismételhetősége és a köztük lévő kapcsolatok. Ennek alkalmazása

    elv lehetővé teszi az integrálsűrűség növelését, a kötések hosszának csökkentését

    chipen, csökkentse az elrendezés és az áramkör tervezésének idejét

    LSI és VLSI tervezés, csökkenti a kereszteződések számát és a funkcionális típusokat

    és szerkezeti elemek.

    Az MPS (system stage) architektúrájának fejlesztése során a következőket kell megoldani

    Adja meg egy rendszer funkcionális viselkedésének fogalmi szerkezetének leírását

    olyan álláspontokat, amelyek figyelembe veszik a felhasználó érdekeit annak kialakítása és szervezése során

    számítási folyamat benne;

    Határozza meg a szoftver felépítését, nómenklatúráját és jellemzőit, valamint a felépítését

    firmware;

    Jellemzők leírása belső szervezet adatáramlás és ellenőrzés

    információ;

    Végezze el a fizikai funkcionális szerkezetének és jellemzőinek elemzését

    a rendszereszközök megvalósítása a szoftveregyensúly szempontjából,

    mikroprogram és hardver.

    Az MPS tervezés főbb szakaszai a 2. ábrán láthatók. 3.1.

    A kezdeti tervezési szakaszban az MPS leírható az egyik

    következő fogalmi szintek: „fekete doboz”, szerkezeti, program,

    logikai, séma.

    A „fekete doboz” szinten az MPS-t külső specifikációk írják le, ahol

    külső jellemzők vannak felsorolva.

    Rizs. 3.1. Az MPS tervezés szakaszai

    A szerkezeti szintet az MPS hardverelemei hozzák létre, amelyek

    leírja az egyes eszközök funkcióit, kapcsolatukat és információit

    patakok.

    A szoftverszint két alszintre oszlik (processzor utasítások és

    nyelv) és az MPS-t operátorok sorozataként értelmezzük ill

    parancsok, amelyek valamilyen adatszerkezeten valamilyen műveletet okoznak.

    A logikai szint kizárólag a diszkrét rendszerekben rejlik, és fel van osztva

    két alszint: kapcsolóáramkörök és regiszterátvitelek.

    Az első alszintet a kapuk (kombinációs áramkörök és memóriaelemek) és az ezekre épülő adatfeldolgozó operátorok alkotják. A második alszintet a magasabb fokú absztrakció jellemzi, és a regiszterek leírása és a köztük lévő adatátvitel. Kettőt tartalmaz

    részek: információ és ellenőrzés: az elsőt nyilvántartások alkotják,

    operátorok és adatátviteli utak, a második biztosítja függő

    időjelek, amelyek elindítják a regiszterek közötti adatátvitelt.

    Az áramköri szint a diszkrét eszközök elemeinek működésének leírásán alapul.

    BAN BEN életciklus Az MPS-nek, mint minden diszkrét rendszernek, három szakasza van:

    tervezés, gyártás és üzemeltetés.

    Mindegyik szakasz több fázisra van felosztva, amelyeknél fennáll a szerkezeti vagy fizikai hibák előfordulásának valószínűsége. A hibákat okaik szerint osztályozzuk: fizikai, ha elemhibák okozzák, és szubjektívek, ha tervezési hibák okozzák.

    A szubjektív hibákat tervezési és interaktív hibákra osztják. Tervezés

    a meghibásodásokat a rendszer különböző szakaszaiban bevitt hiányosságok okozzák

    az eredeti feladat végrehajtása. Interaktív hibák fordulnak elő

    a munkafolyamat a szervizszemélyzet (üzemeltető) hibájából. eredmény

    a meghibásodás megnyilvánulása hiba, és egy meghibásodás lehet

    számos hibát okozhatnak, és ugyanaz a hiba is előidézhető

    sok hiba.

    Létezik a hiba fogalma is – a paraméterek fizikai változása

    hatótávolságon kívül eső rendszerelemek. A hibákat ún

    kudarcok, ha átmenetiek, és kudarcok, ha tartósak.

    A hibát addig nem lehet észlelni, amíg a feltételeket nem teremtik meg

    az ebből fakadó meghibásodás fellépése, amelynek önmagában kell lennie

    sor, átadva a vizsgált objektum kimenetére annak érdekében, hogy létrejöjjön

    megfigyelhető kudarc.

    A hibaelhárítás a hiba okának meghatározásának folyamata

    vizsgálati eredmények.

    A hibakeresés a hibák észlelésének és meghatározásának folyamata

    előfordulásuk forrásai az MPS tervezésénél végzett tesztelés eredményei szerint.

    A hibakereső eszközök eszközök, komplexek és programok. Néha alatta

    a hibakeresés megérti a hibák észlelését, lokalizálását és kiküszöbölését. Siker

    a hibakeresés attól függ, hogy a rendszer hogyan van kialakítva, hogy

    tulajdonságok, amelyek megkönnyítik a hibakeresést, valamint a használt eszközök

    hibakereséshez.

    A hibakereséshez a tervezett MPS-nek rendelkeznie kell

    az irányíthatóság, a megfigyelhetőség és a kiszámíthatóság tulajdonságai.

    Menedzselhetőség - egy rendszer olyan tulajdonsága, amelyben a viselkedése alkalmas

    menedzsment, azaz be lehet állítani a rendszer működését

    bizonyos állapotba, és indítsa újra a rendszert.

    megfigyelhetőség- a rendszer olyan tulajdonsága, amely lehetővé teszi a viselkedés nyomon követését

    rendszer, belső állapotának megváltozása után.

    Előreláthatóság– a rendszer olyan tulajdonsága, amely lehetővé teszi a rendszer telepítését

    olyan állapot, amelyből minden további állapot előre jelezhető.

    Az MPS összetettségében, követelményeiben és funkcióiban jelentősen eltérhet.

    működési paraméterek, szoftver mennyisége, típusa

    mikroprocesszor készlet stb. Ennek eredményeként a tervezési folyamat lehet

    változhat a rendszer követelményeitől függően.

    A tervezési folyamat iteratív folyamat. Az átvételi tesztelési szakaszban feltárt meghibásodások a specifikáció korrekciójához vezethetnek, és

    ezért a teljes rendszer tervezésének elejéig. megtalálja

    a meghibásodás a lehető leghamarabb szükséges; ellenőrizni kell

    a projekt helyessége a fejlesztés minden szakaszában. A következő módszerek vannak

    tervezés ellenőrzése: ellenőrzés (formális módszerek

    a projekt helyességének igazolása); modellezés; tesztelés.

    Az utóbbi időben sok munka jelent meg a szoftverellenőrzéssel kapcsolatban.

    szoftver, firmware, hardver. Ezek a művek azonban még mindig

    elméleti jelleg. Ezért a gyakorlatban gyakrabban alkalmazzák a modellezést

    objektum viselkedése és tesztelése az absztrakt különböző szintjein

    a rendszer ábrázolása.

    A rendszer követelményeinek formalizálásának szakaszában ellenőrizze a projekt helyességét

    különösen azért szükséges, mert sok tervezési cél nincs formalizált ill

    elvileg nem formalizálható. A funkcionális specifikáció lehet

    szakértői csoport elemezze, vagy modellezze és tesztelje

    kísérleti sorrend a kívánt célok elérésének azonosítására. Jóváhagyás után

    a funkcionális specifikáció megkezdi a tesztprogramok fejlesztését,

    szerinti rendszer megfelelő működésének megállapítására tervezték

    a specifikációja. Ideális esetben a teszteket teljesen kidolgozzák

    ezen a specifikáción alapul, és lehetővé teszi bármely ellenőrzését

    a funkciók ellátására alkalmasnak nyilvánított rendszer megvalósítása

    specifikációban meghatározott. Ez a módszer pont az ellenkezője a többinek.

    ahol a tesztek meghatározott megvalósításokhoz épülnek. A gyakorlatban azonban

    tesztfejlesztés gyakran alacsonyabb prioritást kap, mint

    projekt, így a tesztprogramok sokkal később jelennek meg nála