Ohjelmat mikroprosessorilaitteiden suunnitteluun. Mikroprosessorijärjestelmien suunnittelu. Ohjelmoitava rinnakkaisliittymän alustusrutiini

Johdanto

erikoisuus" Tietokonejärjestelmät ja verkostot” on yksi modernin koulutusjärjestelmän tärkeimmistä ja yleismaailmallisimmista. Hänen kiinnostuksen kohteena on laaja valikoima esineitä ja ohjauslaitteita - perussäätimistä monimutkaisimpiin tuotantoprosessien ohjausjärjestelmiin ja kokeelliseen tutkimukseen.

Ottaen huomioon tietotekniikan kehittämisen ja tuotannon monikäyttöisyys, niiden tehokkuuden edelleen lisäämisen ongelma, joka määräytyy rakenteellisten ja toiminnallisten ominaisuuksien järjestelmästä, tulee äärimmäisen tärkeäksi.

Viime vuosina mikroelektroniikka on kehittynyt nopeasti suuntaan, joka liittyy mikro-ohjainten tuotantoon, jotka on suunniteltu "älystämään" laitteita eri tarkoituksiin. Mikro-ohjaimet ovat LSI-muotoon suunniteltuja laitteita, jotka sisältävät kaikki "paljaan" mikrotietokoneen pääosat: mikroprosessorin, ohjelmamuistin ja tietomuistin sekä ohjelmoitavat liitäntäpiirit viestintää varten ulkoisen ympäristön kanssa. Mikro-ohjainten käytöllä ohjausjärjestelmissä saavutetaan poikkeuksellisen korkeat tehokkuusindikaattorit niin alhaisilla kustannuksilla (monissa sovelluksissa järjestelmä voi koostua vain yhdestä mikrokontrollerista LSI), että mikrokontrollereilla ei ilmeisesti ole järkevää vaihtoehtoista elementtipohjaa rakennuksen ohjaus- ja/tai säätöjärjestelmille. .

Tähän mennessä yli kaksi kolmasosaa globaaleista mikroprosessorimarkkinoista koostuu mikro-ohjaimista.

Mikrokontrollerien rakenteellinen organisaatio, komentosarja sekä laitteistot ja ohjelmistot tiedon syöttämiseen/tulostukseen soveltuvat parhaiten laitteiden ja automaatiojärjestelmien ohjaus- ja säätöongelmien ratkaisemiseen, ei tietojenkäsittelyongelmien ratkaisemiseen.

1. Analyysi toimeksianto

Tässä kurssityötä on tarpeen suunnitella mikroprosessorijärjestelmä, joka perustuu K1816BE31-mikro-ohjaimeen. On kuvattava ja kehitettävä suunnitellun laitteen (järjestelmän) rakenne- ja toimintakaavio, perusteltava tiettyjen elementtien valinta, laadittava kaavakuva suunnitellusta laitteesta (järjestelmästä), laadittava ohjelma pääkomponenttien alustamiseksi sekä toimivaksi ohjelmaksi kokoonpanokielellä mikro-ohjaimelle.

2. Suunnitellun laitteen lohkokaavion kehittäminen

Mikrokontrollerin lohkokaavion (kuva 1) perustan muodostaa sisäinen kaksisuuntainen 8-bittinen väylä, joka yhdistää kaikki pääsolmut ja laitteet: pysyvä muisti, ALU, rekisterilohko erikoistoiminnot, ohjauslaite ja I/O-portit.

Aritmeettis-looginen laite. 8-bittinen ALU voi suorittaa aritmeettisia yhteen-, vähennys-, kerto- ja jakolaskutoimintoja; loogiset operaatiot JA, TAI, poissulkevat TAI, samoin kuin sykliset siirrot, nollaukset, inversiot jne. ALU:ssa on rekisterit T1 ja T2, joihin ohjelmisto ei pääse käsiksi, ja ne on tarkoitettu operandien tilapäiseen tallentamiseen, desimaalikorjauspiiri ja piirteiden generointipiiri.

Yksinkertaisinta summausoperaatiota käytetään ALU:ssa rekisterien sisällön kasvattamiseen, dataosoittimen rekisterin eteenpäin viemiseen ja seuraavan RPP-osoitteen automaattiseen laskemiseen. Yksinkertaisinta vähennysoperaatiota käytetään ALU:ssa rekistereiden pienentämiseen ja muuttujien vertailuun.

Yksinkertaisimmat operaatiot muodostavat automaattisesti "tandemeja" suorittamaan operaatioita ALU:ssa, kuten esimerkiksi 16-bittisten rekisteriparien lisääminen. ALU toteuttaa mekanismin yksinkertaisten toimintojen peräkkäiseen suorittamiseen monimutkaisten komentojen toteuttamiseksi. Joten esimerkiksi suoritettaessa yksi ehdollisen ohjauksen siirron komennoista ALU:n summauksen tuloksen perusteella, SK:ta kasvatetaan kolme kertaa, luetaan RPD:stä kahdesti, suoritetaan kahden muuttujan aritmeettinen vertailu, 16 Muodostetaan -bitin siirtymäosoite ja päätetään, tehdäänkö siirtymä ohjelmakohtaisesti vai ei. Kaikki yllä mainitut toiminnot suoritetaan ALU:ssa vain 2 μs:ssa.

ALU:n tärkeä ominaisuus on sen kyky käyttää tavujen lisäksi myös bittejä. Yksittäisiä ohjelmiston käytettävissä olevia bittejä voidaan asettaa, tyhjentää, kääntää, lähettää, testata ja käyttää loogisissa operaatioissa. Tämä ALU:n kyky käsitellä bittejä on niin tärkeä, että monet mikroprosessorikuvaukset viittaavat siihen, että sillä on "Boolen prosessori". Objektien ohjaamiseen käytetään usein algoritmeja, jotka sisältävät operaatioita tulo- ja lähtö Boolen muuttujiin (true / false), joiden toteuttamiseen tavanomaisten mikroprosessorien avulla liittyy tiettyjä vaikeuksia.



Kuva 1. Rakennesuunnitelma KR1816BE31

ALU voi toimia neljän tyyppisten tietoobjektien kanssa: Boolen (1 bittiä), digitaalista (4 bittiä), tavua (8 bittiä) ja osoitetta (16 bittiä). ALU suorittaa 51 erilaista toimintoa näiden tietojen siirtämiseksi tai muuntamiseksi. Käytössä on 11 osoitemoodia (7 datalle ja 4 osoitteille), yhdistämällä "toiminta/osoitetila" 111 käskyn perusmäärä kasvaa 255:een 256 mahdollisesta yksitavuisella opkoodilla.

Asukkaan muisti . KR1816BE31-sirun ohjelmamuisti ja datamuisti ovat fyysisesti ja loogisesti erotettuja, niillä on erilaiset osoitemekanismit, ne toimivat eri signaalien ohjauksessa ja eri toimintoja.

Ohjelmamuistin (ROM tai EPROM) kapasiteetti on 4 KB ja se on suunniteltu tallentamaan komentoja, vakioita, alustuksen ohjaussanoja, tulo- ja lähtömuuttujien muunnostaulukoita jne. RPP:ssä on 16-bittinen osoiteväylä, jonka kautta pääsy tarjotaan ohjelmalaskimesta tai dataosoitinrekisteristä. Jälkimmäinen suorittaa perusrekisterin toimintoja epäsuorien siirtymien aikana ohjelman läpi tai sitä käytetään taulukoiden kanssa toimivissa komennoissa.

Datamuisti (RAM) on suunniteltu tallentamaan muuttujia sovellusohjelman suorituksen aikana, se osoitetaan yhden tavun verran ja sen kapasiteetti on 128 tavua. Lisäksi erityistoimintorekisterin (SRF) osoitteet, jotka on lueteltu taulukossa 3, ovat RPD-osoiteavaruuden vieressä.

Ohjelmamuistia, kuten myös datamuistia, voidaan laajentaa 64 kilotavuun asti liittämällä ulkoisia LSI:itä.

Akku ja SSP . Akku on operandin lähde ja paikka, johon tulos tallennetaan aritmeettisia suoritettaessa, loogisia operaatioita ja useita tiedonsiirtotoimintoja. Lisäksi vain akkua käyttämällä voidaan suorittaa siirtotoimintoja, nollan tarkistamista, pariteettilipun generointia jne.

Taulukko 3.1

Symboli Nimi Osoite
* ACC Akku 0E0N
* SISÄÄN Akun laajennusrekisteri 0F0Н
*PSW Ohjelman tilasana 0D0H
SP Pinoosoitinrekisteri 81N
DPTR

Data osoitinrekisteri (DPH)

* P0 Portti 0 80N
* P1 Portti 1 90N
* P2 Portti 2 0A0N
* P3 Portti 3 0В0Н
*IP Etusijarekisteri 0V8N
*IE Keskeytä maskirekisteri 0A8N
TMOD Ajastin/laskuritilarekisteri 89N
* TCON Ajastinohjaus/tilarekisteri 88N
TH0 Ajastin 0 (suuri tavu) 8CH
TL0 Ajastin 0 (pieni tavu) 8AN
TH1 Ajastin 1 (suuri tavu) 8DH
TL1 Ajastin 1 (pieni tavu) 8BN
Symboli Nimi Osoite
* SCON Lähetin-vastaanottimen ohjausrekisteri 98N
SBUF Lähetin-vastaanottimen puskuri 99N
PCON Tehonsäätörekisteri 87N

Huomautus. Rekisterit, joiden nimet on merkitty (*), mahdollistavat yksittäisten bittien osoittamisen.

Pöytä. 3.2

Symboli asema Nimi ja tarkoitus
KANSSA PSW.7 Kanna lippua. Aseta ja nollaa laitteisto tai ohjelmisto suorittaessasi aritmeettisia ja loogisia operaatioita
AC PSW.6 Ylimääräinen kantolippu. Vain laitteisto asettaa ja tyhjentää, kun yhteen- ja vähennyskäskyjä suoritetaan ja se signaloi siirtoa tai lainaa bitissä 3.
F0 PSW.5 Lippu 0. Ohjelma voi asettaa, tyhjentää tai tarkistaa käyttäjän määrittämänä lippuna.
Rekisteröintipankin valinta. Ohjelma määrittää ja nollaa toimivan rekisteripankin (katso huomautus)
O.V. PSW.2 Ylivuoto lippu. Aseta ja nollaa laitteisto, kun suoritat aritmeettisia operaatioita.
PSW.1 Ei käytetty.
R PSW.0 Pariteetin lippu. Asettaa ja nollaa laitteiston joka käskyjakso ja korjaa parittomat/parilliset ykköset akussa, ts. suorittaa pariteettitarkistuksen.

Huomautus. Toimivan rekisteripankin valinta

RS1 RS0 Pankki Osoitteen rajat
0 0 0 00Н-07Н
0 1 1 08Н-0FH
1 0 2 10H-17H
1 1 3 18H-1FH

Kun ALU:ssa suoritetaan monia komentoja, syntyy joukko operaatioattribuutteja (lippuja), jotka tallennetaan SSP-rekisteriin. Taulukko 4 tarjoaa luettelon BSC-lipuista, antaa niiden symboliset nimet ja kuvaa niiden muodostumisen edellytykset.

"Aktiivisin" SSP-lippu on siirtolippu, joka osallistuu monien toimintojen suorittamiseen, mukaan lukien yhteen-, vähennys- ja siirrot, ja sitä muutetaan. Lisäksi siirtolippu (C) toimii "Boolen akkuna" bittimanipulointikäskyissä. Ylivuotolippu (OV) havaitsee aritmeettisen ylivuodon etumerkillisissä kokonaislukuoperaatioissa ja mahdollistaa aritmeettisen käytön kahden komplementtikoodeissa. ALU ei ohjaa rekisteripankin valintalippuja (RS0, RS1), ja niiden arvon määrittää kokonaan sovellusohjelma ja sitä käytetään valitsemaan yksi neljästä rekisteripankista.

Mikrokontrollerijärjestelmän lohkokaavio on esitetty kurssiprojektin graafisessa osassa, liitteessä A

3. Kehittäminen toiminnallinen kaavio mikro-ohjainjärjestelmä

Muistialijärjestelmän kehittäminen

KR1816BE31:n pohjalta rakennetuissa mikrokontrollerijärjestelmissä on mahdollista käyttää kahta tyyppiä ulkoinen muisti: vain luku -ohjelmamuisti (RPM) ja RAM-muisti data (VPD). Kiitotielle pääsy tapahtuu ohjaussignaalilla RD, joka suorittaa vilkkusignaalin, lue. Pääsy VPD:hen tarjotaan ohjaussignaaleilla RD ja WR, jotka generoidaan riveillä P3.7 ja P3.6, kun portti 3 suorittaa vaihtoehtoisia toimintoja.

SubVI:tä käytettäessä käytetään aina 16-bittistä osoitetta. VPD:tä voidaan käyttää 16-bittisellä osoitteella (MOVXA,@DPTR) tai 8-bittisellä osoitteella (MOVXA,@RI).

Aina kun 16-bittistä osoitetta käytetään, osoitteen korkea tavu lukitaan (ja pidetään muuttumattomana yhden kirjoitus- tai lukujakson ajan) portin 2 lukitusrekisterissä.

Jos seuraava ulkoisen muistin jakso (MOVXA,@DPTR) ei heti seuraa edellistä ulkoisen muistin jaksoa, portin 2 salparekisterin muuttumaton sisältö palautetaan seuraavassa jaksossa. Jos käytetään 8-bittistä osoitetta (MOVXA,@RI), niin portin 2 salparekisterin sisältö pysyy muuttumattomana sen ulkoisissa nastoissa koko ulkoisen muistin jakson ajan.

Portin 0 kautta aikamultipleksointitilassa osoitteen alhainen tavu annetaan ja datatavu lähetetään. CAVP-signaalia on käytettävä osoitetavun kirjoittamiseen ulkoiseen rekisteriin. Sitten kirjoitusjaksossa lähtödatatavu ilmestyy portin 0 ulkoisiin nastoihin juuri ennen signaalin ilmestymistä. Lukujaksossa sisääntulodatatavu vastaanotetaan portissa 0 välkkymissignaalin reunassa.

Aina ulkoista muistia käytettäessä KR1816BE31-ohjauslaite lataa portin 0 salpakoodin 0FFH rekisteriin ja poistaa siten siihen tallennettavat tiedot.

Pääsy kiitotielle on mahdollista, jos kaksi ehtoa täyttyy: joko tulo ohjelmamuistin poistamiseksi käytöstä () on toimitettu aktiivinen signaali, tai ohjelmalaskuri ylittää arvon 0FFFH. Signaalin läsnäolo on välttämätöntä, jotta voidaan päästä VPP-osoiteavaruuden alempiin 4K-osoitteisiin käytettäessä KR1816BE31:tä.

SAVP-signaalin päätehtävä on tarjota väliaikainen koordinointi osoitteen alemman tavun siirrolle portista 0 ulkoiseen rekisteriin lukujaksossa VPP:stä. SAVP-signaalista tulee 1 kahdesti jokaisessa konesyklissä. Tämä tapahtuu, vaikka näytteenottojaksossa ei ole kutsua subVI:lle. Pääsy VPD:hen on mahdollista vain, jos SAVP-signaali puuttuu. Ensimmäinen CAVP-signaali MOVX-käskyn toisessa konejaksossa on poistettu käytöstä. Näin ollen missä tahansa MK-järjestelmässä, joka ei käytä VPD:tä, SAVP-signaali generoidaan vakiotaajuudella, joka on yhtä suuri kuin 1/16 resonaattoritaajuudesta, ja sitä voidaan käyttää synkronointiin. ulkoisia laitteita tai toteuttaa erilaisia ​​tilapäisiä toimintoja.

RPP:tä käytettäessä signaalia ei synny, mutta VPP:tä käytettäessä se suorittaa lukuvilkkusignaalin toiminnon. Täydellinen VPA-lukujakso, mukaan lukien signaalin asennus ja poistaminen, kestää 12 resonaattorijaksoa.

Erikoiskäyttötila KR1816BE31 . Ohjelmamuistin KR1816BE31 sisältö täytetään kerran MK-järjestelmän kehitysvaiheessa, eikä sitä voi muokata valmiissa tuotteessa. Tästä syystä mikro-ohjaimet eivät ole klassisen "von Neumann" -arkkitehtuurin koneita. RAM-tietoja ei voi käyttää ohjelmakoodien tallentamiseen. Tämä MC-arkkitehtuurin ominaisuus selittyy sillä, että useimmat MC-sovellukset vaativat yhden ROM-muistiin tallennetun muuttumattoman sovellusohjelman läsnäolon, pienen kapasiteetin RAM-muistin läsnäolon muuttujien väliaikaista tallennusta varten ja tehokkaan, ja siksi erilaisia ​​menetelmiä osoite ohjelmamuistiin ja tietomuistiin.

Mikrokontrollerissa KR1816BE31 ei ole sisäistä ohjelmamuistia, joten se käyttää vain ulkoista muistia, jota voidaan muokata polttamalla uudelleen ulkoinen ROM-siru.

Mikroprosessorityyppi K1816BE31. Ulkoisen RAM-muistin määrä on 4 kt. Tässä mikroprosessorissa (käskyrakenteen mukaisesti) datamuistin ulkoinen osoitus mahdollistaa 64 kt:n ulkoisen muistin osoittamisen. Muistialijärjestelmän kehittämiseksi valitsemme mikropiirin liitteessä D olevan elementtiluettelon mukaisesti.

Ajoitusalijärjestelmän kehittäminen

Erikoistoimintorekisterit. Rekisterejä, joilla on symboliset nimet IP, IE, TMOD, TCON, SCON ja PCON, käytetään keskeytyspiirin, ajastimen / laskurin, sarjaporttilähetin-vastaanottimen ohjausbittien ja tilabittien ohjelmointiin ja ohjelmointiin sekä KR1816BE31:n virtalähteen ohjaamiseen.

K1816BE31-sarjaportti voi toimia neljässä eri tilassa.

Tila 0. Tässä tilassa tiedot lähetetään ja vastaanotetaan ulkoisen vastaanottimen tulonastan (RXD) kautta. Kahdeksan bittiä dataa vastaanotetaan tai lähetetään. Ulkoisen lähettimen lähtönastan (TXD) kautta lähetetään siirtopulsseja, jotka seuraavat jokaista bittiä. Informaatiobitin lähetystaajuus on 1/12 resonaattoritaajuudesta.

Tila 1 . Tässä tilassa kymmenen bittiä informaatiota lähetetään TXD:n kautta tai vastaanotetaan RXD:stä: aloitusbitti (0), kahdeksan databittiä ja lopetusbitti. Vastaanotto-/lähetysnopeus on muuttuva arvo ja se asetetaan ajastimella.

Tila 2 . Tässä tilassa yksitoista bittiä informaatiota lähetetään TXD:n kautta tai vastaanotetaan RXD:stä: aloitusbitti, kahdeksan databittiä, ohjelmoitava yhdeksäs bitti ja lopetusbitti. Lähetyksen aikana yhdeksäs databitti voi saada arvon 0 tai 1, tai esimerkiksi lähetyksen luotettavuuden lisäämiseksi pariteettitarkistuksen avulla voidaan sijoittaa pariteettilipun arvo ohjelman tilasanasta (PSW.0) se. Vastaanotto-/lähetystaajuuden valitsee ohjelma ja se voi olla joko 1/32 tai 1/64 resonaattoritaajuudesta riippuen SMOD-ohjausbitistä.

Tila 3 . Sama kuin tila 2 kaikissa yksityiskohdissa, paitsi vastaanotto-/lähetystaajuudella, joka on muuttuva arvo ja asetetaan ajastimella.

UART-toimintatilaa ohjataan erityisen rekisterin SCON kautta. Tämä rekisteri sisältää paitsi ohjausbitit, jotka määrittävät sarjaportin toimintatilan, myös yhdeksännen vastaanotto- tai lähetysbitin (RB8 ja TB8) ja lähetin-vastaanottimen keskeytysbitit (RI ja TI).

Sovellusohjelma määrittelee UART:n toimintatilan lataamalla 2-bittistä koodia erikoisrekisterin SCON korkean kertaluvun bitteihin. Kaikissa neljässä toimintatilassa siirto UART:lta aloitetaan millä tahansa käskyllä, joka määrittää SBUF-rekisterin kohdetavuksi. Vastaanotto UART:ssa tilassa 0 suoritetaan sillä ehdolla, että RI=0 ja REN=1. Tilassa 1,2,3 vastaanotto alkaa aloitusbitin saapuessa, jos REN=1.

TB8-bitissä ohjelmoidaan yhdeksännen databitin arvo, joka lähetetään moodissa 2 tai 3. RB8-bitissä yhdeksäs vastaanotettu databitti on kiinteä moodissa 2 ja 3. Tilassa 1, jos SM2=0, bittiin RB8 lisätään stop-bitti. Tilassa 0 RB8-bittiä ei käytetä.

Lähettimen keskeytyslippu TI asetetaan laitteistolla kahdeksannen bittijakson lopussa moodissa 0 ja pysäytysbitin alussa moodissa 1, 2 ja 3. Vastaavan huoltorutiinin on nollattava TI-bitti.

RI-vastaanottimen keskeytyslippu asetetaan laitteistolla kahdeksannen bittijakson lopussa tilassa 0 ja pysäytysbitin vastaanoton puolivälissä tiloissa 1, 2 ja 3. Keskeytyspalvelurutiinin on nollattava RI-bitti.

Tiedon vastaanottamisen/lähetyksen nopeus tietoliikennelinjaa pitkin määritetään kurssiprojektin työn alussa ja se on 600 baudia.

Ohjelmoitava ajastin sijaitsee mikro-ohjaimen K1816BE31 sisällä.

Ajastin/laskuri . KR1816BE31 työkalut sisältävät rekisteripareja symbolisilla nimillä TH0, TL0 ja TH1, TL1, joiden perusteella toimii kaksi itsenäistä ohjelmistoohjattua 16-bittistä ajastinta / tapahtumalaskuria.

Kahta ohjelmoitavaa 16-bittistä ajastinta/laskuria (T/C0 ja T/C1) voidaan käyttää ajastimena tai ulkoisena tapahtumalaskurina. Ajastimena toimiessa T/C:n sisältö kasvaa jokaisessa konesyklissä, ts. 12 resonaattorijakson välein. Laskurina toimiessaan T/C:n sisältö kasvaa K1816BE31:n vastaavaan (T0, T1) nastaan ​​syötetyn ulkoisen tulosignaalin siirtymän 1:stä 0:aan vaikutuksesta. Ulkoisen tulosignaalin arvo pollataan kunkin konesyklin hetkellä S5P2. Laskuria kasvatetaan yhdellä, jos korkean tason tulosignaali (1) luettiin edellisessä jaksossa ja matalan tason signaali (0) seuraavassa jaksossa. Uusi laskuriarvo generoidaan hetkellä S3P1 syklissä, joka seuraa sitä jaksoa, jossa signaalin siirtymä 1:stä 0:aan havaittiin. Koska siirtymän tunnistaminen kestää kaksi konesykliä, tulosignaalien maksimi laskentataajuus on 1/ 24 resonaattoritaajuudesta. Tulosignaalin jakson kestolla ei ole ylärajoituksia. Tulon lasketun signaalin lukemisen takaamiseksi sen on säilytettävä arvo 1 vähintään yhden K1816BE31-konesyklin ajan.

T/S:n toimintatilojen ohjaamiseen ja ajastimien vuorovaikutuksen järjestämiseen keskeytysjärjestelmän kanssa käytetään kahta erikoistoimintorekisteriä (RRTS ja RUST). Kuten RRTS-ohjausbittien kuvauksesta seuraa, molemmille T/S-toimintamuodoille 0, 1 ja 2 ovat samat. Tilat 3 T/C0:lle ja T/C1:lle ovat erilaisia. Tarkastellaanpa lyhyesti T/S:n toimintaa kaikissa neljässä tilassa.

Tila 0. Minkä tahansa T/C:n vaihtaminen tilaan 0 saa sen näyttämään MK48-ajastimelta (8-bittinen laskuri), jonka tulo on yhdistetty 5-bittiseen taajuuden esiskaalaajaan 32:lla. Tässä tilassa ajastinrekisterin leveys on 13 bittiä. Kun siirrytään "kaikki ykköset" -tilasta "kaikki nollia" -tilaan, ajastimen TF1 keskeytyslippu asetetaan. Ajastimen 1 kellotulo on käytössä (T/C-tulossa), kun ohjausbitti TR1 on asetettu arvoon 1 ja joko GATE-ohjausbitti on 0 tai keskeytyspyynnön lähtö on tasolla 1.

Taulukko 8 näyttää ajastin/laskuritilan rekisterit ja Taulukko 9 näyttää ajastimen ohjaus-/tilarekisterit.

GATE-bitin asettaminen arvoon 1 sallii ajastimen mitata keskeytyspyyntötuloon syötetyn pulssisignaalin keston.

Taulukko 4.2.1

Symboli asema Nimi ja tarkoitus
PORTTI TMOD.7 T/C1:lle ja TMOD.3 T/C0:lle Eston hallinta. Jos bitti on asetettu, ajastin/laskuri "x" on käytössä niin kauan kuin "INTx"-tulo on korkea ja "TRx"-ohjausbitti on asetettu. Jos bitti on selvä, T/C otetaan käyttöön heti, kun "TRx"-ohjausbitti on asetettu.
TMOD.6 T/C1:lle ja TMOD.2 T/C0:lle Ajastin/tapahtumalaskuritilan valintabitti. Jos bitti nollataan, ajastin toimii sisäisestä kellolähteestä. Jos bitti on asetettu, laskuri toimii ulkoisista signaaleista "Tx"-tulossa.
M1 TMOD.5 T/C1:lle ja TMOD.1 T/C0:lle Toimintatila (katso huomautus).
M0 TMOD.4 T/C1:lle ja TMOD.0 T/C0:lle
M1 M0 Toimintatila
0 0 Ajastin MK48. "TLx" toimii 5-bittisenä esiskaalaajana.
0 1 16-bittinen ajastin/laskuri. "THx" ja "TLx" on kytketty sarjaan.
1 0 8-bittinen automaattisesti ladattava ajastin/laskuri. "THx" tallentaa arvon, joka on ladattava uudelleen "TLx:ään" joka kerta, kun se ylittää.
1 1 Ajastin/laskuri1 pysähtyy. Timer/Counter0: TL0 toimii 8-bittisenä ajastimena/laskurina ja sen toimintatapa määräytyy Timer0:n ohjausbittien mukaan TH0 toimii vain 8-bittisenä ajastimena ja sen toimintatapa määräytyy Timer1:n ohjausbittien mukaan.

Tila 1 . Minkä tahansa T/S:n toiminta tilassa 1 on sama kuin tilassa 0, paitsi että ajastinrekisterin leveys on 16 bittiä.

Tila 2 . Tilassa 2 toiminta on järjestetty siten, että 8-bittisen laskurin TL1 ylivuoto (siirtymä "kaikki ykköset" -tilasta "kaikki nollia" -tilaan) ei vain aseta TF1-lipua, vaan myös lataa automaattisesti uudelleen. korkean tavun (TH1) sisältö TL1-ajastinrekisteriin, joka oli aiemmin asetettu ohjelmistolla.

Tila 3. Tilassa 3 T/C0 ja T/C1 toimivat eri tavalla. T/C 1 säilyttää nykyisen sisällön muuttumattomana. Toisin sanoen vaikutus on sama kuin nollattaessa ohjausbitti TR1.

Tilassa 3 TL0 ja TH0 toimivat kahtena itsenäisenä 8-bittisenä laskurina. TL0:n toiminta määräytyy T/C 0:n (, GATE, TR0) ohjausbittien, tulosignaalin ja ylivuotolipun TF0 avulla. TN0:n toiminta, joka pystyy suorittamaan vain ajastintoimintoja (laskemaan MK-konejaksoja), määräytyy ohjausbitin TR1 avulla. Tässä tapauksessa TH0 käyttää ylivuotolippua TF1.

Tietoliikennealijärjestelmän kehittäminen keskustietokoneen kanssa

Suunnitellun laitteen tulee tulostaa muistin sisältö keskustietokoneelle ja myös vastaanottaa tietoa keskustietokoneelta.

Koska Koska tietoa vaihdetaan pitkiä matkoja, lähetys on suoritettava sarjamuodossa. UART muuntaa tiedot rinnakkaisverkosta sarjamuotoisiksi ja päinvastoin. UART on universaali asynkroninen lähetin-vastaanotin, joka on suunniteltu toteuttamaan kaksisuuntainen asynkroninen rinnakkaismuodossa esitettyjen tietojen ja ohjaussanojen vaihto mikroprosessorin kanssa sekä kaksisuuntainen asynkroninen sarjamuotoisen tiedon vaihto muiden järjestelmämoduulien, kuten videopäätteiden, magneettisten nauha-asemien kanssa. jne. .d. Siten UART muuntaa järjestelmästä dataväylän kautta vastaanotetun rinnakkaiskoodin sarjakoodiksi ja lähettää sen bitti kerrallaan tietoliikennekanavalle ja suorittaa myös käänteisen muunnoksen.

UART, jota usein kutsutaan sarjaportiksi, sisältää vastaanotto- ja lähetyssiirtorekisterit sekä erityisen puskurirekisterin (SBUF) lähetin-vastaanotinta varten. Tavun kirjoittaminen puskuriin kirjoittaa tavun automaattisesti lähettimen siirtorekisteriin ja käynnistää tavun lähetyksen. Vastaanotinpuskurirekisterin avulla voit yhdistää aiemmin vastaanotetun tavun lukemisen seuraavan tavun vastaanottamiseen. Jos tavun vastaanottamiseen mennessä edellistä tavua ei ole luettu SBUF:sta, se menetetään.

UART-toimintatilaa ohjataan erityisen rekisterin kautta, jonka symbolinen nimi on SCON. Tämä rekisteri sisältää paitsi ohjausbitit, jotka määrittävät sarjaportin toimintatilan, myös vastaanotetun tai lähetetyn datan yhdeksännen bitin (RB8 ja TB8) ja lähetin-vastaanottimen keskeytysbitit (R1 ja T1).


Taulukko 4.5.1

Symboli asema Nimi ja tarkoitus
TF1 TCON.7 Ajastimen ylivuotolippu1. Laitteiston asettama ajastin/laskuri ylivuodosta. Nollaa, kun huollataan laitteiston keskeytys
TR1 TCON.6 Ajastimen ohjausbitti 1. Aseta/nollaa käynnistys/pysäytys ohjelman mukaan.
TF0 TCON.5 Ajastimen ylivuotolippu1. Asennettu laitteistolla. Nollaa huoltokeskeytyksen yhteydessä
TR0 TCON.4 Ajastimen ohjausbitti 0. Aseta/nollaa käynnistys/pysäytys ohjelmalla. ajastin/laskuri.
IE1 TCON.3
IT1 TCON.2 Keskeytyksen tyypin ohjausbitti 1. Ohjelmisto asettaa/tyhjentää pyyntömäärittelyn (leikkaus/matala).
IE0 TCON.1 Keskeytyksen reunan lippu 1. Asettaa laitteiston, kun ulkoisen signaalin katkaisu havaitaan. Nollaa huoltokeskeytyksen yhteydessä
IT0 TCON.0 Keskeytyksen tyypin ohjausbitti 0. Ohjelmisto asettaa/tyhjentää pyyntömäärittelyn (leikkaus/matala).

Tilaa 3 käytetään tapauksissa, joissa K1816BE31:tä käytetään, kun tarvitaan ylimääräinen 8-bittinen ajastin tai tapahtumalaskuri. Voimme olettaa, että tilassa 3 K1816BE31:ssä on 3 ajastinta/laskuria. Siinä tapauksessa, että T/C0:aa käytetään tilassa 3, T/C1 voidaan joko kytkeä päälle tai pois, tai asettaa omaan tilaan 3, tai sitä voidaan käyttää sarjaportin kautta lähetystaajuusgeneraattorina tai lopulta voidaan käytetään kaikissa sovelluksissa, jotka eivät vaadi keskeytyksiä.

Tietojen vastaanotto-/lähetysnopeuden määrittämisen jälkeen on varmistettava kellotaajuus vastaanottaa RxC, lähettää TxC. Nämä kellosignaalit lähetetään käyttämällä ohjelmoitavia ajastinkanavia. Ohjelmoitavaan ajastimeen syötetty alkutaajuus on sama kuin kehitettävän mikroprosessorijärjestelmän taajuus. Ohjelmoitavan ajastimen vastaavalle kanavalle tallennetun asetuksen määrittämiseksi on tarpeen määrittää järjestelmän alkuperäisen taajuuden muuntokerroin vastaanotto-/lähetystaajuudelle viestintälinjan kautta ja valita myös sopiva käyttötila. mukana ajastinkanavat.

5. Suunnitellun laitteen kaavion kehittäminen

Elementin pohjan valinta

Kurssiprojektissa kehitettävän ohjaimen keskeisenä osana on yksisiruinen mikrotietokone KM1816BE31, joka on tehty korkean tason pohjalta. n-MOS-tekniikka ja on vuorovaikutuksessa ympäristön kanssa standardoiduissa TTL-piireissä, joissa on kolme lähtötilaa. Tämän avulla voit käyttää 580-sarjan nopean TTL-sarjan mikroprosessorisarjan IC-piirejä piiriä kehitettäessä. Kuten edellä mainittiin, mikro-ohjain sisältää ohjelmoitavan ajastimen, asynkronisen sarjaliitännän (UAS) ja 1 KB ROM:n.

Suunnitellun laitteen rakentamiseen valittiin seuraava elementtipohja:

Ohjelmoitava näppäimistö ja näytönohjain KR580VV79;

Staattinen RAM, jonka kapasiteetti on 16 Kb AT28S128;

Seitsemän segmentin ilmaisimien lohko ALS318;

Puskurirekisteri K1533IR22;

ROM K573RU8;

Näiden mikropiirien valinta johtuu niiden tasojen yhteensopivuudesta, alhaisesta virrankulutuksesta, melko suuresta nopeudesta ja melunsietokyvystä.

6. Kehittäminen ohjelmisto

Määrättyjen tehtävien suorittamiseksi mikroprosessorijärjestelmä tarvitsee käyttöohjelman, jonka mukaan mikroprosessori lähettää ohjaussignaaleja ohjausväylään, muistisolujen ja laitteiden osoitteet osoiteväylään sekä vaihtaa dataa dataväylän kautta. Koska Koska järjestelmä sisältää myös ohjelmoitavia ohjaimia, niiden kanssa työskentely vaatii ns. alustuksen, joka on ohjaussanojen lataaminen erityisiin rekistereihin. Lisäksi kaikkien ohjainten alustus on suoritettava ennen kuin järjestelmä aloittaa tehtävän suorittamisen ja kerran virran kytkemisen jälkeen (poikkeus on laitteiston nollaus). Järjestelmän alustamiseksi käytetään mikrokontrollerin ROM-muistiin tallennettuja vakioita ohjaussanoina IC:lle.

Järjestelmässä on myös laitteistokeskeytyksiä, joiden seurauksena joitain toimintoja on suoritettava, minkä jälkeen pääohjelma jatkaa suoritustaan. Tällaisia ​​keskeytyksiä palvelevat keskeytyskäsittelyrutiinit (niitä on järjestelmässä kaksi: ajastinkeskeytyksen käsittelyrutiini ja sarjaliitännän keskeytyksen käsittelyrutiini).

Käyttöohjelma voidaan jakaa kahteen osaan: alustus ja työjakso.

Alustus on tiettyjen vakioiden syöttämistä tiettyihin rekistereihin, jotka määrittävät prosessorin ja järjestelmän yksittäisten osien toimintatilat.

Työsykli on joukko toimenpiteitä ja operaattoreita, jotka suoritetaan loputtomassa silmukassa ja jotka varmistavat järjestelmälle määrättyjen toimintojen suorittamisen. Graafisen osan sivulla 4 esitetty graafinen kaavio työalgoritmista ja aliohjelmista.

Näppäimistön ja näytönohjaimen alustusaliohjelma

Kehityksessä käytettiin PKKI-tyyppiä KR580VV79. Sen asetus tehdään lataamalla ohjaussana "näppäimistön ja näytönohjaimen toimintatilan asettaminen" ohjausyksikön vastaavaan rekisteriin. Näppäimistön liitäntälohkon toimintatila: näppäinmatriisin peräkkäinen kysely skannauslaskurin tilan dekoodauksella ja 2 tai useamman näppäimen painamisen estäminen. Näyttöyksikön toimintatila: merkkien näyttäminen 8-bittisellä näytöllä, asettamalla ne vasemmalta oikealle.

Kuva 6.2 – Ohjaussanan "pehmeä nollaus" muoto

Bitit D7 – D5 – ohjaussanan "soft reset" osoite;

Bitit D4 = 0 – sisäisessä ilmaisumuistissa olevat koodit lähetetään OUT-lähtöihin; D1 = 1 – näppäimistön RAM-tilarekisterin ja IRQ-lähdön tyhjennys – matalan tason signaali; D0 ºD4.


Kuva 6.4 – Ohjaussanan "kirjoita näyttömuistiin" muoto

Bitit D7-D5 – ohjaussanan osoite; D3-D0 – RAM-solun osoite.

Ohjaussanan "Lue monimuotonäppäimistön RAM" muoto on samanlainen kuin ohjaussanan "Lue näytön RAM:sta" muoto, lukuun ottamatta bittien D7-D5 sisältöä.

0 1 0 1 X X X X

Kuva 6.5 – Näppäimistön ohjaussanarekisterimuoto

Bitit D7-D5 – ohjaussanan osoite; D4 – automaattinen lisäysmerkki; D3-D0 – näppäimistön RAM-solun osoite.

Ohjelmoitava rinnakkaisliittymän alustusrutiini

PPI konfiguroidaan lataamalla ohjaussana ohjaussanarekisteriin. Asetus suoritetaan seuraavasti: portti A toimii tilassa, jossa syötetään tietoa antureista ADC:n kautta, ja portti B toimii tilassa, jossa tiedot lähetetään DAC:hen. Portti C hallitsee tiedon vastaanotto- ja luovutusprosesseja.

Kehitetyssä järjestelmässä PPI toimii 0-tilassa. Tämän tilan toiminnot:

1) Kaksi 8-bittistä ja kaksi 4-bittistä porttia.

2) Kaikki portit voivat olla sekä tulo- että lähtöportteja.

3) Lähtöportit on lukittu, tuloportit eivät ole.

PPI-ohjaussanarekisterin muoto on esitetty kuvassa. 6.6.

Kuva 6.7 – SCON-rekisterin muoto.

SM1 ja SM0 (D7, D6) – määrittää sarjaportin toimintatilan (Tila 2: 9-bittinen asynkroninen lähetin-vastaanotin, kiinteä baudinopeus);

REN (D4) – vastaanottoluvan ohjauslippu;

TB8 (D3) – vastaanotetun datan 9. bitin tilan asettaminen;

RB8 (D2) – vastaanotetun datan 9. bitin tilan analyysi;

TI (D1) – lähetyksen keskeytysbitti;

RI (D0) – valmis terä.

Näppäimistön äänestysrutiini

Ohjelmoitava näppäimistö ja näytönohjain on määritetty lukemaan monitilanäppäimistön RAM-muistia automaattisella lisäyksellä ja syöttämään näppäimistön RAM-solujen lukumäärä laskuriin. Näppäimistölle pollataan peräkkäin, minkä jälkeen tiedot painetuista näppäimistä toimintonäppäimet kirjoitetaan näppäimistön RAM-muistiin.

Aliohjelma tietojen tulostamiseksi indikaattoreihin

Tätä aliohjelmaa kutsuttaessa laskuri nollataan ensin ja sitten sitä nostetaan määritettyyn määrään indikaattoreita. Ohjelmoitava näppäimistö ja näytönohjain on määritetty kirjoittamaan näytön RAM-muistiin ja tiedot lähetetään peräkkäin ilmaisimiin. Aliohjelmasta poistuminen tapahtuu sen jälkeen, kun kaikki symbolikoodit on tulostettu ilmaisimiin.

Pollausanturit ja lähtösignaalien antaminen

Anturin kysely- ja lähtösignaalit lähetetään seuraavan algoritmin mukaisesti:

1) pollattujen antureiden lukumäärä syötetään laskuriin;

2) antureista luetaan informaatiota porttiin A, joka on aiemmin alustettu vastaanottamaan dataa;

3) vastaanotettu tieto kirjoitetaan uudelleen akun kautta RAM-kennoon, joka on erityisesti tarkoitettu antureilta tulevaa tietoa varten;

4) anturilaskurin määrän vähentäminen yhdellä;

5) jos kaikki anturit pollataan, PPI konfiguroidaan uudelleen lähettämään tietoa portista B;

6) lähtösignaalien määrä syötetään laskuriin;

7) RAM-kennon tiedot syötetään akun kautta porttiin B;

8) informaatio tulostetaan.

Aliohjelma tietojen vaihtamiseen keskustietokoneen kanssa

Tämä aliohjelma lukee ensin UART-tilarekisterin. Tämän jälkeen tarkistetaan, onko rekisterin viides bitti asetettu arvoon 1. Jos se on asetettu, tämä tarkoittaa, että UART on valmis lähettämään tietoa ja bitti bitiltä dataa siirretään tietoliikennelinjalle laskuriin asti. lähetettyjen informaatiobittien määrä on yhtä suuri kuin nolla. Heti kun kaikki informaatiobitit on lähetetty tietoliikennelinjalle, luodaan uusia. alkuasetukset(RAM-muistin aloitusosoite, informaatiobittien määrä) ja aliohjelma päättää suorituksensa. Jos ensimmäisessä vaiheessa rekisterin viidettä bittiä ei ole asetettu arvoon 1, aliohjelma poistuu, koska UART ei tässä tapauksessa ole valmis lähettämään tietoa.

Ajastimen alustusrutiini

Ajastimen/laskurin toimintatilojen ohjaamiseen ja ajastimien vuorovaikutuksen järjestämiseen keskeytysjärjestelmän kanssa käytetään kahta erityisrekisteriä: TCON ja TMOD.

Kuva 6.9 – TMOD-rekisterimuoto.

TMOD-rekisteri määrittää toimintatilat T/C0 ja T/C1. Asetamme T/C1:lle ensimmäisen toimintatilan: 16-bittinen ajastin/laskuri. TH1 ja TL1 on kytketty sarjaan. Kun siirrytään "kaikki ykköset" -tilasta "kaikki nollia" -tilaan, ajastimen TF1 keskeytyslippu asetetaan. Ajastimen 1 kellotulo on käytössä (T/C-tulossa), kun ohjausbitti TR1 on asetettu arvoon 1 ja joko GATE-ohjausbitti on 0 tai keskeytyspyynnön lähtö on tasolla 1.), esto on poissa käytöstä, ajastin on käynnissä. sisäisestä lähteestä synkronointisignaalit.

Ajastin 1 on alustettava antamaan sarjaportin kellotaajuus ja järjestämään keskeytys, jonka aikana alijärjestelmän tulee lähettää keskustietokoneelle tietoa analogisten antureiden tilasta ja näppäimistön tilasta.

Ajastinrekisterit täyttyvät:

FEh kirjoitetaan TH1:een

EBh kirjoitetaan TL1:een

TH1:n ja TL1:n arvot päivitetään vastaavissa keskeytysrutiineissa.


Z johtopäätös

Kurssiprojektin aikana pohdimme rakenteellinen organisaatio, toimintatilat ja algoritmit K1816-sarjan mikrokontrolleriin perustuvan mikroprosessorilaitteen toiminnalle.

Kurssiprojektin työskentelyn aikana kehitettiin rakenne- ja piirikaavio sekä sen ohjelmisto, jonka laatimiseen käytettiin KM1816BE31-komentojärjestelmää ja toiminta-algoritmia, joiden avulla pystyttiin ymmärtämään mitä prosesseja todellisuudessa tapahtuu. mikro-ohjainjärjestelmässä ja miten ne suoritetaan.

Lista lähteistä

1. Digitaaliset ja analogiset integroidut piirit: Käsikirja / toim. S.V. Jakubovski. – M: Radio ja viestintä, 1990. – 496 s.

2. Mikroprosessorit / K.G. Samofalov, O.V. Viktorov – Kiova: Teknika, 1989. – 312 s.

3. Digitaalisten piirien käsikirja / I.V. Zubchuk, V.P. Sigorski. – K.: Tekniikka, 1990 – 448 s.

4. DAC- ja ADC-mikropiirit: toiminta, parametrit, sovellus / B.G. Fedorkov, V.A. Härkä - M.: Energoatomizdat, 1990. 320 s.

5. Stashin V.V., Urusov I.A. Mologontseva I.A. Design digitaaliset laitteet yksisiruisissa mikrotietokoneissa. M. Energoatomizdat – 1990 – 285 s.

Päätehtävä MPS:ää luotaessa on kehittää järjestelmän laitteistoa (fyysistä rakennetta) ja ohjelmoida sen toiminnalliset ominaisuudet, ts. tehtävän MPS-rakenteen luomisessa.

MPS:n suunnittelu eroaa olennaisesti perinteisistä "kovaan logiikkaan" perustuvista järjestelmien loogisen suunnittelun menetelmistä. Kun järjestelmiä suunnitellaan "kovaan logiikkaan" on olemassa monipuolinen setti logiikkaelementtejä kiinteä numero loogisia toimintoja ja tehtävänä on perustamisesta fyysisiä yhteyksiä heidän välillään . MPS:ää suunniteltaessa on pieni setti elementtejä, joiden tehtävät ovat erilaisia ​​ja määräytyvät komentojärjestelmän mukaan . Suunnittelutehtävä jää siihen vakio-MPS-rakenteen valinta ja sen ominaisuuksien ohjelmointi .

On huomattava, että rakenteiden lukumäärää rajoittaa yleisesti ottaen edellisessä osiossa käsitelty kehys. Koska tuotannossa olevien järjestelmien kehittämisen ja hallitsemisen aika tulee suhteessa sen kanssa elinkaari(sen tarkoituksenmukaisen olemassaolon aika ennen kilpailevan analogin ilmestymistä), on tarpeen:

· Pyri käyttämään jo tunnettua standardiratkaisuja MPS:n kehittämiseen keskittyneiden CAD-pakettien tuella (vaikka luova asiantuntija haluaa luoda jotain omaperäistä);

· Kehitetään järjestelmä, jossa otetaan huomioon "kehityksen ekstrapolointi" (toimintojen laajentaminen, tehon lisääminen, modulaarisuus, mukautumiskyky).

Mikroprosessorijärjestelmät täyttävät nämä vaatimukset, sillä niillä on joustavuus, alhaiset kustannukset, lyhyt kehitysaika ja korkea luotettavuus verrattuna "kovan logiikan" järjestelmiin, koska niissä on huomattavasti vähemmän yhteyksiä. MPS kuitenkin häviää "kovaan logiikkaan" perustuville järjestelmille tapauksissa, joissa vaaditaan suuria tiedonkäsittelynopeuksia tai kehitetään vähän monimutkaista järjestelmää.

Kuva 64

Kuvassa 64 on esitetty suositeltu kehitys- ja virheenkorjausmenettely, joka sisältää MPS-suunnittelun päävaiheet. Ohjelmisto- (SW), laitteisto- (AS) ja virheenkorjaustyökalujen (OS) kehitystyö tehdään samanaikaisesti. Työn tiiviin koordinoinnin tässä vaiheessa määrää ohjelmiston suora riippuvuus AS:sta. MPS:n luomisen yhteydessä tunnistetaan virheet, joiden poistamiseksi sinun on palattava aikaisempiin vaiheisiin, ts. Suunnitteluprosessi on "läpi ja läpi" iteratiivinen, mikä ei näy kuvassa 64.

Tarkastellaanpa kutakin vaihetta tarkemmin.

Ongelman muotoilu, ongelman asettelu.

Kuva 65 esittää työsarjan, joka paljastaa "Ongelman muotoilu" -vaiheen olemuksen.

Pallo mahdollinen sovellus MP on erittäin laaja. On halu tarttua ratkaisuun näyttävään ongelmaan. Kuitenkin, jos yritys suhtautuu skeptisesti MP:hen, epäonnistuminen horjuttaa itse ajatusta MP:n käytöstä. Siksi MP:n ensisijaisen käytön oikea valinta, joka päätetään tämän vaiheen ensimmäisessä vaiheessa, on erittäin tärkeä.


Kuva 65

Pääkriteereitä tavoitteen saavuttamiseksi tässä vaiheessa voidaan harkita:

1. Kehityksen nopeus ja massatuotannon organisointi.

2. Sovelluksen tehokkuus (erityisesti sen selkeys).

3. Minimikustannukset (nopea takaisinmaksu). Taulukosta 1 voi olla apua tässä.

pöytä 1

Peruskonseptia kehitettäessä ratkaistaan ​​kysymys siitä, millainen järjestelmä on oltava: järjestelmä automaattinen ohjaus(ACS) tai automaattinen ohjausjärjestelmä (ACS). ACS on suunniteltu ohjaamaan TOU:ta ilman ihmisen väliintuloa, ja siksi se on yksinkertaisempi siinä mielessä, että kommunikaatio ihmisten kanssa ja kielirajapintoja puuttuu, mutta sen on varauduttava kaikkiin mahdollisiin MPS:ssä esiintyviin tilanteisiin.

Tätä varten tarvitaan täydellinen matemaattinen malli TOU:sta (prosessista). Automatisoidussa ohjausjärjestelmässä hätätilanteiden ratkaisu on uskottu henkilön tehtäväksi ja prosessiin on mahdollisuus puuttua. Päätös ACS:n luomisesta voidaan tehdä ilman tarkkaa TOU-mallia. Kehittäjän on kuitenkin tiedostettava, että tässä tapauksessa sen rakentaminen vaatii tieteellistä tutkimusta "johtamismallin kehittäminen" -vaiheessa (ks. kuva). MPS:n rakennekonsepti itseliikkuvien aseiden tapauksessa on esitetty kuvassa 66.

Kuva 66 Kuva 67
Kuva 68

Jos päätetään luoda automatisoitu ohjausjärjestelmä, aletaan määritellä sen makrotoiminnot: tiedonkeruu, operaattorin neuvonantaja, suora tai valvova hallinta. Tarkoitus "Tietojen hankinta" -tila(katso kuva 67) on tiedon kerääminen TOU:n tilasta eri olosuhteissa prosessimallin rakentamiseksi (kun se on epätäydellinen tai tuntematon) ja/tai sen ohjaamiseksi tilanteen tiedolla. Tämä tila on aina läsnä alitehtävänä monimutkaisemmissa makrofunktioissa. Sen ominaisuus on avoin ohjaussilmukka, ts. henkilöä käytetään päätöksentekovälineenä ja MP suorittaa tiedonkeruun/esikäsittelyn esikäsittelijän ja valvontatoimien generoimisen jälkikäsittelijän tehtäviä henkilön määrittelemän lain mukaisesti. SISÄÄN "Operator Advisor" -tila tiedonkeruun lisäksi rautatieministeriö laskee kuuluisa malli(tai sen osien) ohjaustoimenpiteitä ja tarjoaa ne operaattorille, joka tekee päätöksen. Hallittavien muuttujien määrä on pieni, jotta ihminen pystyy pitämään ne näkyvissä ja reagoimaan ajoissa muuttuviin tilanteisiin.

Suljettu ohjauspiiri on tyypillistä "Suoraohjaus" -tila. Tässä tapauksessa ACS eroaa ACS:stä siinä, että järjestelmän asetukset (kuva 68) tekee henkilö. Automaattisen ohjausjärjestelmän korkein makrotoiminto on "Valvontajohtaminen". Järjestelmä koostuu autonomisesta TOU-säätösilmukasta ja sitä varten tarkoitetusta asetuspisteen säätösilmukasta. Henkilö hallitsee odottamattomien tilanteiden esiintymistä.

Ja vaiheen lopussa kehitetään tekninen eritelmä (TOR) lähtötietojen perusteella: prosessissa käytettyjen laitteiden suunnitteludokumentaatio (mukaan lukien piirikaaviot); prosessin tekninen dokumentaatio, vaatimukset valmistetuille tuotteille, tuotantoprosessin toiminta; taloudelliset, sosiaaliset, ihmisperäiset, ympäristölliset ja muut rajoitukset; käsite MPS:n rakentamisesta. MPS:n ratkaisemat nykyiset (ja mahdollisesti tulevat) ongelmat, sen toiminnan ja luomisen rajoitukset tuottavuuden, mittojen, kulutuksen, luotettavuuden, kustannusten jne. suhteen määritellään.

Ongelman muotoilu on huonosti formalisoitu, sen tekee ongelma-alueen tunteva asiantuntija, ja se ratkaistaan ​​pääasiassa yleisillä järjestelmäsuunnittelun ja taloudellisen ennustamisen menetelmillä (esim. kirjallisuushaku, kyselytutkimus, kuluttajahaastattelut, aivoriihi, toiminnallinen kustannusanalyysi jne.).

Yleis- ja ammatillinen koulutusministeriö

Venäjän federaatio

Tulan osavaltion yliopisto

Elektronisten tietokoneiden laitos

Selittävä huomautus

kurssiprojektiin tieteenalalla "Mikroprosessorijärjestelmät"

Mikroprosessorijärjestelmän suunnittelu ohjatun kohteen tunnistamiseen

Erikoisuus: 220100

KP-nimike: K2.006.106

Työpäällikkö: Ventslavovich Yu.R.

JOHDANTO

Kurssiprojektin tarkoituksena on hankkia käytännön taitoja yksinkertaisten mikroprosessorijärjestelmien suunnittelussa eri tarkoituksiin. Projekti perustuu tieteenalan ”Mikroprosessorijärjestelmät” teoreettiseen osaan. Kurssiprojektin toimeksiannon antaa projektin johtaja.

Kurssiprojekti toteutetaan tavoitteena lujittaa "Mikroprosessorijärjestelmät" -kurssin tietoja ja kehittää taitoja itsenäiseen, tietyntyyppiseen tietoon erikoistuneiden mikroprosessorijärjestelmien suunnitteluun.

Kurssiprojektin tavoitteet ovat:

· mikroprosessorijärjestelmien suunnittelun metodologian käytännön hallinta;

· analysointi ja optimaalisen ratkaisun valinta sen perusteella;

· mikroprosessorijärjestelmän toiminnallisen kaavion synteesi lähtötietojen ja optimaalisen ratkaisun analysoinnin perusteella;

· hankkia valmiuksia kehittää laitteistoja ja ohjelmistoja mikroprosessorijärjestelmää varten;

· toiminnallis-loogisen, piiri- ja suunnittelusuunnittelun taitojen edelleen kehittäminen, suunnitteludokumentaation toteuttaminen ja julkaiseminen GOST:n mukaisesti.

Näiden ongelmien ratkaisemiseksi tarvitset paitsi "Mikroprosessorijärjestelmät" -kurssin, myös useiden siihen liittyvien tieteenalojen tuntemusta sekä kykyä käyttää sääntely- ja viitetietoja.

TEKNINEN TEHTÄVÄ

1. Algoritmi syötetietojen käsittelyyn.

Kohdemalli saadaan yhtälöstä:

jossa: ai (i=1,…,r) ja bi (i=1,…,l) ovat tuntemattomia parametreja;

xn - havaitsematon kohina;

xn-i ja zn-i ovat havaittuja muuttujia.

Parametriarviot määritetään iteratiivisella Kalman-suodatinproseduurilla:


jossa: j = T

q = T

s02 - riippumattoman havaitsemattoman kohinan varianssi xn

1. Syötetietojen ominaisuudet:

syöttötietolähteiden lukumäärä - 8;

tulosignaalien muutoksen min/max taso - 3/4;

mittausvirheen pienin varianssi, ґґ10-2 - ssи2 = 5;

suurin mittausvirheen hajonta, ґґ10-2 - ssc2 = 50;

1. Tulostiedon vaadittavat ominaisuudet:

lähtötietojen kuluttajien määrä - 1;

lähtöinformaation viiveajan rajoitus suhteessa tuloon (vasteen muodostumisaika), ms - 0,15;

2. MPS:n vaadittavat yleiset ominaisuudet:

yhteyden tyyppi syöttötietolähteeseen - sarja;

viestintätyyppi lähtötietojen kuluttajan kanssa - sarja;

3. Suunnitteluparametrit:

Pöytäkotelo - 152x533x419mm

levytyyppi - Baby-AT 8,57x13,04 tuumaa

näytön tyyppi - SVGA 15"

virtalähde - 250 W

4. Käyttöryhmä - kuljetettava ja kannettava, tarkoitettu ihmisten pitkäaikaiseen kuljettamiseen ulkoilmassa tai lämmittämättömissä maanpäällisissä ja maanalaisissa rakenteissa, jotka toimivat ja eivät työskentele liikkeellä.

Ilmastolliset tekijät

ympäristön lämpötilan muutos

matala lämpötila, Сo -50

pitoaika, tunti 2-6

kohonnut lämpötila, С 60

pitoaika, tunti 2-6

korkea ilmankosteus

suhteellinen kosteus, % 93

lämpötila, С 40

valotusaika, tunti 72

matala lämpötila

raja -50

työssä -10

kohonnut lämpötila

raja 50

työssä 60

alhainen paine

lämpötila -10

paine, Pa 6,1*104

pitoaika, tunti 2-6

sademäärä

sateen voimakkuus, mm/min 3

pitoaika, tunti 0,33

meri sumu

lämpötila 27

pitoaika, tunti 48

Mekaaninen

värinät samalla taajuudella

taajuus, Hz 20

kiihtyvyys, g 2

pitoaika, tunti 0,5

värähtelyjä taajuusalueella

taajuusalue, Hz 10-70

kiihtyvyys, g 0,8-3,8

useita iskuja

määrä minuutissa 40-80

kiihtyvyys, g 15

iskujen kokonaismäärä 12000

LASKENTAALGORITMIANALYYSI

Teknisten eritelmien perusteella voit rakentaa seuraavan piirikaavion kehitettävän mikroprosessorijärjestelmän kytkemiseksi:


Tämän kurssiprojektin syöttötiedot ovat tunnistetun kohteen parametrien (xn ja zn) tulo- ja lähtöarvot. Graafisesti algoritmi estimaattivektorin q = laskemiseksi on esitetty kuvassa. 2.

Kuvattua algoritmia käyttäen kirjoitettiin C-kielellä ohjelma, joka simuloi MPS:n tuottamaa laskuprosessia. Ohjelmaluettelo on liitteessä 1, simulaation tulos on liitteessä 2.

MPS:N KOOSTUMUKSEN MÄÄRITTÄMINEN

Kehitetyn mikroprosessorijärjestelmän rakenteen keskeinen osa on prosessori, joka on rakennettu mikroprosessorin (MP) pohjalta ja joka suorittaa tietojenkäsittelyprosessin päätoiminnot ja hallitsee tätä prosessia. Sisäinen muisti MPS (ohjelmien ja tietojen tallentamiseen) on puolijohdetyyppi, joka on sijoitettu samalle kortille CPU:n kanssa, se esitetään vain luku -moduulien (ROM) muodossa. Mikroprosessoria ohjaa kellogeneraattori (G). Järjestelmä sisältää myös matemaattisen apuprosessorin (FPU).

MPS on yhteydessä ympäristöön syöttötiedon lähteiden ja tulostiedon kuluttajien kautta. Sn:n lähteinä käytetään antureita, jotka mittaavat havaitun kohteen muuttujien arvoja, esimerkiksi teknologisen prosessin. Toimilaitteet voivat toimia Dn-kuluttajina erilaisia ​​tyyppejä(venttiilit, luistiventtiilit, signaalimuuntimet ja vahvistimet jne.).

Tietojen syöttö- ja lähtökanavat muuntavat saapuvat signaalit vaadittuun muotoon ja tarjoavat tiedonsiirron ulkoisen ympäristön ja MPS:n välillä tulo/lähtöporttien kautta.

Samassa MPS-toiminnan syklissä syöttöinformaatio syötetään MPS:ään ja tulostetaan MPS:stä. Jakson rajoitus määräytyy kohteen ajallisten ominaisuuksien mukaan. Tällaisissa tapauksissa väistämätön viive lähtöinformaation (ohjaustoiminnot) ja sisääntuloinformaation (objektin tila) välillä on rajoitettava arvolla, jonka määräävät myös kohteen ominaisuudet (sen siirtofunktiot, amplitudin stabiilisuusmarginaalit ja vaihe jne.). Siksi MPS-elementtien parametrien valinta tehdään ottaen huomioon tällaiset rajoitukset.

Jakson kesto Tc määritetään lausekkeista:

1. ADC-kapasiteetti

1. Tuloksen pyöristys on optimaalinen


jossa h on näytteenotto askel signaalitasoittain

1. Muunnostarkkuus


1. Muunnosaika

1. Jakson kesto

missä tn on aika muuntaa signaaliarvo digitaaliseksi koodiksi,

m on syöttötietolähteiden lukumäärä.

Kun olet määrittänyt keston Tc rajoituksen, voit määrittää prosessorijakson keston rajoituksen


OHJELMISTOKEHITYS

Luettelo kohteen parametrien estimointiohjelmasta on liitteessä 3.

Koko ohjelma sijaitsee ROM-muistissa ja koostuu kahdesta toiminnallisesta lohkosta: MPS-alustuslohkosta (prosessorin, apuprosessorin asettaminen tarvittaessa, muuttujien alustus) ja työosasta, joka vastaanottaa ja käsittelee dataa reaaliajassa (algoritmi syötteen käsittelyyn tiedot on esitetty kuvassa 2).

Kaikki ohjelmistot on käännetty valitun MP:n kokoonpanokielellä, jonka avulla voit hankkia suoraan binäärisiä ("objekti") komentokoodeja, jotka sitten kirjoitetaan ROM-muistiin. Kun virta kytketään päälle tai RESET-signaalin kautta, ohjaus siirtyy alustusmoduulille, joka asettaa järjestelmän alkutilaan.

Ohjelma hoitaa itsenäisesti nollalla jaon. Sähkökatko tai muut kiireelliset tapahtumat, kuten laitteistovika, eivät vaikuta kriittisesti MPS:ään, eivätkä ne voi poistaa sitä käytöstä. Tästä voimme päätellä, että MPS ei vaadi keskeytyskäsittelijöitä.

Vaihto ulkoisen ympäristön kanssa tapahtuu 8-bittisten sarjatulo-/lähtöporttien kautta yhdessä tulo- ja lähtöjaksossa. Ohjelmisto on optimoitu valitun mikroprosessorin suoritusnopeuteen ja hyödyntää 32-bittistä tietojenkäsittelyä ja vuorovaikutusta ulkoisten laitteiden kanssa.

MPC:N VALINTA JA MPS-ARKKITEKTUURIN KEHITTÄMINEN

Valinta tehtiin 8086-prosessoriin perustuvan MPC:n ja Intel 80386 -prosessoriin perustuvan MPC:n välillä. Lähtötietojen latenssin arvioimiseksi laskemme kellojaksojen lukumäärän, joka kullekin prosessorille tarvitaan laskelmien suorittamiseen. Vertailutulokset on esitetty taulukossa 1.

pöytä 1


Synkronointitaajuudella 33 MHz yhden kellojakson aika on 30 ns, mikä tarkoittaa, että tuloksen vastaanottamiseen, käsittelyyn ja antamiseen tarvittava aika on:

*4892 = 146760 ns = 0,147 ms,

hyväksyttävällä viiveellä 0,15 ms.

Siten valittiin Intel 80386 -mikroprosessoriin perustuva mikroprosessorisarja, jonka taajuus on 33 MHz, ja joka täyttää vaatimukset ja rajoitukset täysin. Tämä MPC on yksisiruinen mikroprosessori, jossa on kiinteä käskysarja ja arkkitehtuuri. Käyttöliittymän LSI:itä ja sovellusohjelmistoja käyttämällä MPS konfiguroidaan tietyn luokan algoritmeja varten. MPS:ää suunniteltaessa tarvitaan työkaluja ohjelmien valmisteluun ja virheenkorjaukseen.

Mikroprosessori toimii taajuudella 33 MHz; käsittelee kokonaislukutyyppisiä syötetietoja tavumuodossa. MPS:ään saapuvat tiedot tallennetaan vektorin (yksiulotteisen matriisin) muodossa, osa välituloksista ja vakioista tallennetaan vastaavien mittojen taulukoiden muodossa.

MPS sisältää tehtäviensä toteuttamiseksi seuraavat LSI:t:

· CPU i80386;

· i80387 aritmeettinen apuprosessori;

· kellotaajuusgeneraattori 82384;

· datalähetin-vastaanotin 8286;

· osoitesalvat 8282;

· staattinen RAM MS KM185RU8, ROM MS KR556RT20 ja joukko MS:itä, jotka muodostavat ohjaussignaaleja (1533ID3, 1533ID14, 1533LA3);

· MS universaali synkroninen-asynkroninen lähetin-vastaanotin (KP580BB51A), suunniteltu sarjatiedonsiirtoprotokollalle.

MPS-PROSESSORIN SUUNNITTELU

mikroprosessoriohjelmiston suunnittelu

Tässä vaiheessa prosessoria kehitetään. Prosessoria kehitettäessä lähtötietona on sen arkkitehtuuri. Sen pohjalta kehitetään prosessorin rakennetta ja sen liitäntää järjestelmäväylään.

Suunniteltaessa MPC-pohjaisia ​​prosessoreita yksisiruisilla MP:illä ratkaistiin synkronointityökalujen, dataväylärajapinnan, osoitteen ja järjestelmäväylän kehittämisen ongelmat; välineet luku-/kirjoitustoimintojen ohjaamiseksi ja synkronoimiseksi järjestelmäväylällä; keinot päästä järjestelmäväylään; keinoja tukea prosessorin toimintatapoja.

Järjestelmäväylärajapinnan koostumus ja rakenne määräytyvät tieto- ja osoiteväylien organisaation ja leveyden sekä vaaditun kuormituskapasiteetin mukaan. Osoiteväylärajapinta on toteutettu osoitepuskurirekisterillä ja dataväylärajapinta väyläohjaimella. Rajapinnan väyläohjaimien ja puskurirekisterien kuormitusvirta määrää järjestelmäväylän kuormituskyvyn.

Luku/kirjoitustoimintojen synkronointiin käytetään synkronista menetelmää, jonka luku/kirjoitusaikaväli määräytyy ohjaussignaalien keston mukaan. Menetelmä tarjoaa suurimman järjestelmäväylän suorituskyvyn. Synkronista vaihtomenetelmää käytetään kontrolloidulla vaihtovälin kestolla ja intervallin keston muuttaminen on mahdollista vain sen lisäämisen suuntaan muistin ja ohjausyksikön generoimien vaihdon vahvistussignaalien ohjauksessa. Järjestelmäväylän vaihtovälin keston pidentämiseksi käytetään prosessorin lepotilaa.

Verkkoon pääsyn keinojen koostumus määräytyy väylän tyypin mukaan. Kehitettävä MPS on yhden prosessorin ja käyttää yhden käyttäjän SSH:ta. Tässä tapauksessa prosessori itse ohjaa väylää, eikä muita hallintatyökaluja tarvita.

Osoiteväylärajapinta on toteutettu osoitepuskurirekisterillä ja dataväylärajapinta väyläohjaimella. Rajapinnan väyläohjaimien ja puskurirekisterien kuormitusvirta määrää järjestelmäväylän kuormituskyvyn.

Osoiteväylän kuormituskyvyn laskeminen:

Koska RAM- tai ROM-moduuli voi olla käynnissä kerralla.

Iout182 = max(4* IinROM1, 4* IinROM1) = max (4*4×10-5, 4*0,04) = 0,16 mA £ 32 mA

Iout082 = max(4* IinROM0, 4* IinROM0) = max (4*0,25, 4*0,45) = 1,8 mA £ 5 mA

Tietoväylän kuormituskapasiteetin laskenta:

Koska RAM-moduuli tai lähtöportti voi olla käynnissä kerralla.

Iout186 = max(IinRAM1, IinIOP1) = max(0,04, 0,0007) = 0,04 mA £ 32 mA

Iout086 = max(IinRAM0, IinIOP0) = max(0,3, 0,05) = 0,3 mA £ 5 mA

CS-linjojen kuormituskapasiteetin laskeminen RAM- ja ROM-muistille dekooderista:

Iout1DC = max(4* IinROM1, 4* IinROM1) = max (4*4×10-5, 4*0,04) = 0,16 mA £ 0,4 mA

Iout0DC = max(4* IinROM0, 4* IinROM0) = max (4*0,25, 4*0,9) = 3,6 mA £ 8 mA

W/R-linjojen kuormituskapasiteetin laskeminen RAM-muistille MS 8282:sta:

Iout182 = 4* IinRAM1 = 4*0,04 = 0,16 mA £ 32 mA

Iout082 = 4* IinRAM0 = 4*0,45 = 1,80 mA £ 5 mA

Data-, osoite- ja ohjausväylien kuormituskyvyn laskeminen osoitti, että ehdotettu muistisirujen ja porttien kytkentä ei vaadi lisämikropiirejä linjojen kuormituskyvyn lisäämiseksi.

82384-kellogeneraattori, jota käytetään i80386 MP:hen perustuvissa järjestelmissä, tuottaa kellosignaaleja eri järjestelmän komponenttien synkronisten toimintojen suorittamiseksi. Generaattoripiirin lähdössä CLK2 generoidaan pulsseja taajuudella sama taajuus ulkoinen kvartsi (33 MHz) ja CLK-lähdössä - puolella taajuudella. CLK-lähdön signaalit ja MP:n sisäiset synkronointisignaalit ovat samassa vaiheessa. Näiden signaalien vaiheet kohdistetaan RESET-signaalin osien avulla.

RESET-signaalia käytetään MP:n ja muiden järjestelmäkomponenttien nollaamiseen, ja generaattori generoi sen ulkoisesta RC-piiristä. ADS#-signaali tarjoaa tarvittavat asennus- ja pitoajat CLK2-signaalille, ja ADS0#-signaalia käytetään yhdessä CLK:n kanssa oheislaitteiden ohjaamiseen. F/C#-nasta on maadoitettu, koska Käytetään kvartsiresonaattoria.

8282 osoitesalparekisterit suorittavat osoiteväylärajapinnan toimintoja, minkä seurauksena osoiteväylän kuormituskyky kasvaa. Rekisterien data on lukittu kellogeneraattorilta tulevan ADS#-signaalin reunaan. Tulosignaali OE# - lähtöjen kolmannen tilan esto, on aktiivisessa tilassa.

Väyläajurit 8286 suorittavat dataväylärajapinnan toimintoja dataväylän kuormituskapasiteetin lisäämiseksi. Tulosignaali T - asettaa tiedonsiirron suunnan. Tulosignaali OE# - lähtöjen kolmannen tilan esto, on aktiivisessa tilassa.

Aritmeettinen apuprosessori 80387 on suunniteltu toimimaan joko täysin synkronisesti tai pseudosynkronisesti 80386 MP:n kanssa. Pseudosynkronisessa tilassa 80387:n rinnakkaisprosessorin liitäntälogiikka toimii 80386 MP:n kellosignaalilla, kun taas sen erilainen logiikkasignaali toimii. Kun 80386 MP toimii 80387-apuprosessorin kanssa, se suorittaa kaikki tarvittavat muistin runkosilmukat ja tiedonsiirrot 80387:lle ja -prosessorista. Kaikki siirrot 80387-apuprosessorilla ovat 32-bittisiä.

Seuraavat liitännät ovat käytettävissä 80386 MP:n ja 80387-apuprosessorin välillä:

· apuprosessorin 80387 lähdöt BUSY#, ERROR#, PEREQ on kytketty MP 80386:n vastaaviin nastoihin;

· 80387-apuprosessorin RESET-tulo on kytketty 82384-kellogeneraattorin RESET-lähtöön;

· 80387 aritmeettisen apuprosessorin piirin valintatulot (CS1#, CS2) on kytketty suoraan M/IO#- ja A31-lähtöihin, vastaavasti. Apuprosessorilla varustetuissa jaksoissa A31-signaali on aina korkea ja M/IO#-signaali aina matala;

· 80387-apuprosessorin komentotulo (CMD0#) erottaa tiedot komennoista. Tämä tulo on kytketty lähtöön A2. MP 80386 antaa osoitteen 800000F8h, kun kirjoitat komentoa, ja osoitteen 800000FCh, kun kirjoitat tai luet tietoja;

· MP 80386 -dataväylän kaikki 32 linjaa (D31-D0) on kytketty suoraan 80387-apuprosessorin tietoväylään;

· 80387-yhteisprosessorin READY#-, ADS#-, W/R#-tulot on kytketty 80386 MP:n vastaaviin nastoihin. aika, jolloin W/R#, CS1-signaalit voidaan pollata #, CS2 ja tilan sallivat signaalit (STEN);

· STEN-signaali on 80387-sirun valintasignaali, joka voidaan asettaa korkealle jännitetasolle. Jos sama 80386 MP toimii useiden 80387 apuprosessorien kanssa, STEN-signaalia voidaan käyttää aktivoimaan yksi niistä tiettynä ajankohtana;

· Valmis lähtö (READYO#) on lisälähtö. Sitä voidaan käyttää apuprosessorin vaatiman odotustilan luomiseen.

Jos 80386 MP havaitsee apuprosessorikomennon, se luo automaattisesti yhden tai useamman I/O-jakson osoitteisiin 800000F8H ja 800000FCH. Prosessori suorittaa kaikki tarvittavat muistin runkosilmukat ja siirtää 80387-apuprosessorille ja takaisin. Kaikki tiedonsiirto 80387-apuprosessorin kanssa on 32-bittistä. Jos jostain syystä käytetään 16-bittistä muistialijärjestelmää, 80386 MP suorittaa muunnoksia automaattisesti ennen tietojen siirtämistä aritmeettiseen apuprosessoriin tai sieltä pois.

Tietojen siirtäminen 80387-apuprosessorista 80386MP:hen vaatii vähintään yhden odotustilan. Kirjoitusjaksot 80387-apuprosessoriin eivät vaadi odotustiloja. Koska liitäntä 80386 MP:n kanssa on aina synkroninen, 80387-apuprosessorin CLK2-nasta on kytkettävä 80386 MP:n CLK2-tuloon. 80387-aprosessorin SCM-tulon tila määrittää, kummassa kahdesta tilasta se toimii.

Pseudosynkronisessa tilassa SCM-signaali on alhainen. Kellolähde on kytkettävä 80387-apuprosessorin CLK2-tuloon. Vain 80387-apuprosessorin liitäntälogiikka on synkroninen 80386 MP:n kanssa.80387-aprosessorin sisäinen logiikka toimii 80387 CLK2-tulon kellotaajuuslähteestä.

Synkronisessa tilassa SCM-signaali on korkea ja 80387 CLK2 -tuloa ei ole kytketty mihinkään. 80387-apuprosessori toimii pääkellosignaalista CLK2. Aritmeettisen apuprosessorin toiminnot ovat täysin synkronisia MP 80386:n toiminnan kanssa.

80387-apuprosessori käyttää kahta menetelmää vuorovaikutuksessa 80386 MP:n kanssa. Ensimmäistä käytetään, kun 80386 MP käynnistää toiminnot apuprosessorin kanssa. Tämä tapahtuu apuprosessorikomennon (ESC-komennon) suorittamisen aikana ja se suoritetaan ohjelma. Toinen viestintätapa tapahtuu, kun apuprosessori käyttää PEREQ-signaalia pyytääkseen, että 80386 MP aloittaa operandien siirron järjestelmämuistiin tai järjestelmämuistista. Nämä siirrot suoritetaan apuprosessorin pyynnöstä, joten ne ovat asynkronisia MP 80386 -komentojen suorittamisen kanssa.. Apuprosessorin tiedonsiirroilla on sama prioriteetti väylällä kuin ohjelmaohjauksella tapahtuvilla tiedonsiirroilla.

MIKROPROSESSORI ORGANISAATIO

80386:ssa on kaksi erillistä väylää: osoiteväylä ja dataväylä. Dataväylä on 32-bittinen ja kaksisuuntainen. Useimmissa nopeaan paikallisväylään käytetyissä moduuleissa käytetään 32 osoitebittiä, jotka lähetetään osoiteväylän kautta, joista 2 vähiten merkitsevää bittiä puretaan neljäksi datan strobosignaaliksi (jokainen näistä signaaleista sallii tai estää sen lähettämisen) vastaava datatavu, signaalit BE0#-BE3#), ja loput 30 bittiä edustavat osoitteen binaarikoodia. Osoiteväylän ja dataväylän vaihdon ohjaamiseen käytetään vastaavia ohjaussignaaleja.

Dataväylän muuttuva leveys (bitti) sallii prosessorin olla vuorovaikutuksessa sekä 32- että 16-bittisten ulkoisten väylien kanssa synkronisessa tilassa.

Mikroprosessorin nastat:

Kellosignaali (CLK2)

CLK2 tarjoaa pääkellon 80386:lle. Tämä kellotaajuus on jaettu puoleen, jolloin muodostuu prosessorin sisäinen kellotaajuus, jota käytetään suoritettaessa käskyjä prosessorissa.

Dataväylä (D0-D31)

Kaksisuuntaiset, kolmitilaiset dataväylälinjat siirtävät tietoja 80386:sta muihin laitteisiin. Korkean jännitetason läsnäolo dataväylän tuloissa/lähdöissä osoittaa, että näissä nastoissa on looginen yksi-koodi "1". Dataväylä voi siirtää dataa sekä 32- että 16-bittisillä väylillä, koska dataväylän kokoa on mahdollista muuttaa; Dataväylän koko määräytyy BS16#-tulosignaalin arvon mukaan. Kaikkien kirjoitustoimintojen aikana (mukaan lukien pysäytys- ja sammutusjaksot) 80386 siirtää aina kaikki 32 bittiä dataa, vaikka nykyinen sykli olisi 16 bittiä leveä.

Osoiteväylä (BE0#-BE3#, A2-A31)

Nämä kolmitilalähdöt tarjoavat fyysisen muistiosoitteen tai I/O-laitteen osoitteen. Osoiteväylä tarjoaa 4 gigatavua fyysistä muistia osoitetilaa (00000000H - FFFFFFFFH) ja 64 kilotavua I/O-osoitetilaa (00000000H - 0000FFFFH) I/O-laitteiden käyttöä varten.

BE0#-BE3#-datavilkkusignaalien arvot määrittävät vastaavasti ne 32-bittisen dataväylän tavut, jotka ovat mukana nykyisessä lähetyksessä. Tämä on erityisen kätevää vuorovaikutuksessa ulkoisten laitteiden kanssa.

Väyläjaksotyypin tunnistussignaalit (W/R#, D/C#, M/IO#, LOCK#)

Nämä kolmitilalähdöt määrittävät nykyisen väyläjakson tyypin. W/R#-arvon mukaan kaikki jaksot jaetaan kirjoitus- ja lukujaksoihin. D/C# jakaa kaikki syklit tiedonvaihtojaksoihin ja ohjaussignaalin vaihtojaksoihin. M/IO# erottaa muistin käyttöjaksot I/O-laitteiden käyttöjaksoista. LOCK#-signaali erottaa jaksot, joissa väylä on tukossa.

16-bittinen väyläosoitin (BS16#)

BS16#-signaali mahdollistaa 80386:n kommunikoinnin suoraan 32- ja 16-bittisten tietoväylien kanssa. Tämän tulon aktiivisen tason asettaminen johtaa siihen, että nykyisessä väyläjaksossa vaihto tapahtuu vain dataväylän alemmalla puoliskolla (D0-D15) BE0# ja arvojen mukaisesti. BE1# signaalit. BS16#-signaalin lisävaikutus (asetettu aktiiviseen tilaan) ei näy, jos nykyisessä jaksossa vain BE0#- tai BE3#-signaalit ovat aktiivisia, BS16#-signaalin toiminta (aktiivinen taso) pakottaa 80386-prosessorin suorittaa tarvittavat kytkennät, jotta ylemmän tavun tai tavun oikea lähetys linjoilla D0-D15.

Tässä työssä tämä signaali asetetaan aina passiiviseen tilaan ja vain 32-bittistä dataa vaihdetaan muistin kanssa.

Keskeytyssignaalit INTR, NMI

Voi keskeyttää tai keskeyttää prosessorin nykyisen käskyjoukon suorittamisen. Koska keskeytyskäsittelyä ei tarvita, näitä signaaleja ei käytetä.

· Nollaussignaali (nollaus) (RESET).

Tämä tulosignaali pysäyttää kaikki käynnissä olevat toiminnot ja asettaa 80386:n tilaan, joka tunnetaan nimellä nollaustila. 80386 nollataan pitämällä RESET-signaali aktiivisena vähintään 15 CLK2-jakson ajan. RESET-signaali voi olla asynkroninen CLK2:n suhteen. Tarvittaessa prosessorin sisäisen kellon vaihe sekä 80386:n koko tila voidaan synkronoida täysin ulkoisten piirien kanssa.

Väylän toiminnan kuvaus 80386:ssa on erilliset rinnakkaisväylät: osoiteväylä ja dataväylä. Dataväylä on 32-bittinen ja kaksisuuntainen. Osoiteväylän leveys on 32 bittiä, joista 30 korkean kertaluokan bittiä on operandin osoite ja 2 bittiä muodostetaan 4 datastrobo-signaalista, joista jokaisella valitaan operandissa vastaava tavu. Kunkin väyläjakson tyyppi määritetään kolmella signaalilla: M/IO#, W/R# ja D/C#. Samanaikaisesti näiden signaalien kanssa muodostetaan kelvollinen osoite linjoille BE0#BE3# ja A2-A31. Osoitteen vilkkusignaali ilmaisee, että 80386-prosessori on antanut uuden väyläjaksotyypin ja osoitteen. Käytössä ollessaan väylä suorittaa yhden seuraavista väyläjaksoista:

Taulukko 1. Väyläjakson määritelmä

VAIHTEISTOTYYPPI

Keskeytyksen kuittaus

Erikoissyklit BE0-BE3

Lukee dataa I/O:sta

Tietojen kirjoittaminen I/O:hon

Ohjeiden esihaku (lukeminen) muistista

(varattu)

Tietojen lukeminen muistista

Tietojen kirjoittaminen muistiin


MPS-MUISTIALAJÄRJESTELMÄN KEHITTÄMINEN

MPS-muistia suunniteltaessa ratkaistiin tiedontallennuspiirin sekä RAM:n ja ROM:n liittämiseen järjestelmäväylän piirin kehittämiseen liittyvät ongelmat.

RAM-muistin tarve määritetään assembler-ohjelmalla:

· väliaikaisten muuttujien tiedot - 688 tavua;

· Ohjelmakoodin muistin määrä on 928 tavua.

80386-mikroprosessorin muistimoduulien suunnittelun erikoisuus on se, että dataan pääsyyn käytetään 32-bittistä dataväylää (eli vaihto tapahtuu 4 tavussa, haluttu tavu valitaan tavunvalintasignaaleilla BE0#- BE3#). Tämän perusteella muistimoduulit rakennetaan neljästä 1 tavun levyisestä pankista.

RAM-tallennuslaite on rakennettu staattisen tyyppisten KM185RU8 mikropiirien pohjalta, joiden mitat ovat 256´8, kirjoitus-/lukuaika 45 ns, Рсс = 915 mW. ROM-asema on rakennettu 556PT17-mikropiireihin, joiden mitat ovat 512´8, lukuaika 50 ns, Рсс = 998 mW.

Liitteen 4 ajoituskaavioista seuraa, että odotusjaksojen järjestäminen muistiin haettaessa ei ole tarpeen, koska luku/kirjoitusjaksot mahtuvat aikarajoihin - kaksi prosessorijaksoa T1 + T2 = 1/33MHz + 1/33MHz = 61ns.

MP-osoitelähtöä A11 ja M/IO#-lähtöä käytetään valitsemaan yksi osoiteavaruuksista, ja signaaleilla BE0#, BE1#, BE2#, BE3# valitaan osoitettava tavu RAM- tai ROM-moduuleissa.

Muistin määrä valittiin järjestelmän tarpeiden mukaan ja MPS-osoitetila on jaettu ja käytettävissä seuraavasti:

Osoitealue

Osoitteellinen tila

I/O-portit

1 kt RAM

2KB ROM


TULO-TUOTOSALAJÄRJESTELMÄN KEHITTÄMINEN

MPS-tulo/tulostus-alijärjestelmä on joukko tulo-/lähtökanavia, joista jokainen palvelee yksittäisiä tietokoneita. Kanava sisältää välineet liitäntään SB:hen (laitteen rajapinta) ja välineet tulon/lähdön ohjaamiseksi ja se on toteutettu laitteistossa ja ohjelmistossa.

Koska MPS vastaanottaa tietoa kahdeksalta anturilta, syöttömenettelyssä valitaan peräkkäin isäntä, jonka kanssa vaihdetaan, ennen tiedon vastaanottamisen aloittamista. Tarvittava anturi määritetään syklissä kirjoittamalla sen numero DX-rekisteriin. Käyttämällä Tämä numero, laitteisto (osoitedekooderi ja ohjausvälineet) mahdollistaa vastaanoton lähteestä, jolla on määrätty numero. Kanavaliitäntä on toteutettu tulo/lähtöporttien perusteella.

MS-sarjaportin kytkeminen.

Sarja-I/O-kanavaliitännät on toteutettu ohjelmoitavalla sarjaliikennerajapinnalla LSI, esimerkiksi KR580VV51A.

LSI KR580VV51A on yleinen synkronis-asynkroninen sarjaviestintälähetin-vastaanotin, joka suorittaa datasanojen rinnakkaisten muotojen vastaanottamisen ja muuntamisen sarjamuotoiksi palvelusymboleilla CS:n (viestintäkanavan) kautta lähetettäväksi ja datasanojen CS:stä vastaanotettujen sarjamuotojen kanssa. rinnakkaismuoto syötettäväksi prosessoriin. LSI voidaan ohjelmoida toimimaan 5 tilassa: asynkroninen lähetys, asynkroninen vastaanotto, synkroninen lähetys, synkroninen vastaanotto sisäisellä synkronoinnilla, synkroninen vastaanotto ulkoisen synkronoinnin kanssa. Virheet vastaanotetuissa datasanoissa pariteetille tai parittomuudelle, koodirakenteen virheet asynkronisen vastaanoton aikana, jotka johtuvat pysäytysbittien puuttumisesta, sekä päällekkäisvirheet, jotka syntyvät vaihdon synkronoinnin rikkomisen seurauksena, kun seuraava sana saapuu ennen edellinen luetaan valvotaan. Vaihtonopeus jopa 64000 baudia.

Vaihteiston ohjaus.

Lähetyksen valvonta säätelee kaikkia sarjatietojen siirtoon liittyviä toimintoja. Se vastaanottaa ja tuottaa seuraavat signaalit, sekä ulkoiset että sisäiset, suorittaakseen tämän toiminnon:

· TxRDY (Transmitter Ready): Tämä lähtö ilmoittaa järjestelmäyksikölle, että lähetin on valmis vastaanottamaan datamerkin. TxRDY nollautuu automaattisesti WR-lähdön nousevalla reunalla, kun tietomerkki ladataan järjestelmäyksiköstä;

· TxC (Transmit Clock): Lähetyskello ohjaa nopeutta, jolla merkki on lähetettävä. Synkronisessa tilassa bittiä sekunnissa on yhtä suuri kuin TxC-taajuus. TxC-signaalin laskeva reuna siirtää sarjatietoa.

Tiedonsiirto.

Synkronisen lähetyksen aikana TxD-lähtö on jatkuvasti merkkitasolla, kunnes järjestelmä lähettää ensimmäisen symbolinsa, joka on synkronointisymboli KR580BB51A. Kaikki bitit ovat eteenpäin TxC:n laskevalla reunalla.

Kun siirto on alkanut, datavirran TxD-lähdössä on jatkettava TxC-nopeudella. Jos järjestelmä ei toimita KR580BB51A:lle datasymboleja ennen kuin lähetyspuskuri tyhjenee, synkronointisymbolit lisätään automaattisesti tietovirtaan. Tässä tapauksessa tilarekisterin TxE-bitti kytketään korkeaksi signaaliksi, että KR580BB51A on tyhjä ja synkronointisymboleja lähetetään. TxE ei laske, kun synkronointisymboli etenee. TxE-tilabitti nollautuu automaattisesti, kun datamerkki kirjoitetaan KR580BB51A:han.

Vastaanoton hallinta.

· RxRDY (Receiver Ready): Tämä lähtö ilmaisee, että KR 580ВВ51А sisältää merkin, joka on valmis lähetettäväksi järjestelmäyksikköön;

· RxC (Receiver Clock): Vastaanottimen kellotaajuus ohjaa nopeutta, jolla merkki vastaanotetaan. Bittinopeus on yhtä suuri kuin todellinen RxC-taajuus.

Vastaanotetaan tietoja.

Vastaanotin vastaanottaa sarjadataa, muuntaa sen rinnakkaismuotoon, tarkistaa bittejä tai merkkejä, jotka riippuvat viestintämenetelmästä, ja lähettää käsitellyn merkin järjestelmän yksikkö. Sarjadatan tulo menee RxD-nastalle ja kellotetaan RxC:n nousevalla reunalla.

Ohjelmointimenettely mallille KR580VV51A.

KR580BB51A on ladattu joukolla ohjaussanoja, jotka määrittelevät viestintäympäristön. Ohjaussanoja on kahdessa muodossa: tilakäsky ja komentokäsky. Tilaohjeiden ja komentojen on noudatettava tiettyä järjestystä, jotta laite toimisi oikein. Tilaohje on lisättävä välittömästi nollauksen jälkeen, ennen kuin käytät KR580VV51A:ta tiedonsiirtoon. Valitun viestintätavan vaaditut synkronointisymbolit ladataan sitten KR580BB51A:han. Kaikki ohjaussanat, jotka on kirjoitettu KR580VV51A:ssa tilakäskyn jälkeen, osoittavat komentokäskyä. KR580VV51A liitännät järjestelmäväylät prosessori dataväylän nastojen D7-D0 kautta, ohjataan LSI-näytteenotolla, lue, kirjoita signaaleja, jotka syötetään tuloihin CS, C/D, RD, WR. Tuloa C/D ohjataan riviltä A2.

Jotta voit lukea/kirjoittaa tietoja I/O-porteista, sinun tarvitsee vain käyttää vastaavaa osoiteavaruutta.

TEZ:N KEHITTÄMINEN

Rakenteellisesti esiprosessori tietyn kokoisille levyille voidaan toteuttaa yhteen TEZ:iin. Mikropiirien lisäksi TEZ sisältää:

· 1 liitintyyppi SNP34-90;

· 1 PS9-tyyppinen liitin - virtalähteen ja maadoituksen syöttämiseen;

· suodatinkondensaattorit: 2 elektrolyyttikondensaattoria ja 6 (1 kpl - 5 mikropiiriä varten) keraamista KM-51-N90-0.05, asennettuna levylle mikropiirien välittömään läheisyyteen;

· kvartsiresonaattori ja värähtelevä piiri 33 MHz:llä.

· Tason “1” syöttämiseksi tässä työssä nimellisarvoisten 1K vastusten sijaan käytetään 2I-NOT-logiikkaelementin “ylimääräisiä” rivejä, joiden tuloihin syötetään “0”.

Suojaamiseksi tärinältä ja iskuilta on käytettävä lujia rakenteita ja erikoispitimiä, jotka toimivat myös jäähdytyselementteinä lämmönpoistossa (päälämmönlähteet ovat prosessori ja apuprosessori).

Lämpötila saadaan aikaan luonnollisella ilmajäähdytys, ja levy on valmistettu metallipohjalle, joka haihduttaa lämpöä. Elementtien suojaamiseksi ja painettu piirilevy kosteudelta TEZ on päällystetty PFL-86-lakalla.

PÄÄTELMÄ

Mikroprosessorijärjestelmän suunnittelussa käytettiin seuraavia ohjelmistoja:

· Borland C++ 3.1 ja Turbo Assembler 3.1 - arvioida MPS-ohjelman koko;

· tietokoneavusteinen suunnittelujärjestelmä Visio 4.5 ja Microsoft Word 2000 - suunnitteludokumentaation valmisteluun.

Kurssiprojektin tuloksena rakennettiin i80386DX33-mikroprosessoriin perustuva MPS, jonka tekniset ominaisuudet voidaan arvioida:

· bitin syvyys - 32;

koska tietoväylän leveys - 32 bittiä

· suorituskyky (RG-RG), op/s: - 6,6*106;

koska MP 80386 suorittaa yhden komennon keskimäärin 5 kellojaksossa, jolloin suorituskyky määräytyy: 33 MHz / 5 = 6,6 * 106 operaatiota/s

· sisäisen muistin määrä, KB: - RAM - 1, ROM - 2;

· suurin tiedonsiirtonopeus, Kbaud: - 64;

· virrankulutus, W: - 17,25;

· syöttöjännite, V (Hz): - 220 (50),

Kurssiprojektin aikana ratkaistiin seuraavat MPS-suunnitteluongelmat:

· syöttötiedon lähteiden, tietyn algoritmin ja tulostiedon kuluttajien mallintaminen;

· MPS-elementtien parametrien määrittäminen mallinnustulosten perusteella;

· synteesi ja kehittäminen toiminnallisia ja piirikaaviot MPS;

· MPS-ohjelmiston kehittäminen;

· suunnittelun ja suunnitteludokumentaation kehittäminen hankkeelle (piirustukset ja selittävät huomautukset).

Järjestelmän laatukriteeri on yhtä suuri:

BIBLIOGRAFINEN LUETTELO

· Mikroprosessori 80386: Hakemisto /K. Pappas, W. Murray / M.: Radio ja viestintä, 1993.-320 s.

· Prosessori 80386DX piirissä henkilökohtainen tietokone/ Polyakov A.V. -M.: IKS, 1994.

· Mikroprosessorit ja integroitujen piirien mikroprosessorisarjat: Hakemisto. 2 osassa / Toim. V. A. Shakhnova. - M.: Radio ja viestintä, 1988. - 368 s.: ill.

· Logiikkapiirit KR1533, KR1554: hakuteos. 2 osassa /Toim. I. I. Petrovsky, BINOM, 1993, kuvituksen kanssa.

Muistisirujen käyttö sisään elektroniset laitteet, O. N. Lebedev, M.: Radio and Communications, 1994. - 216 s.: ill.

· GOST 2.743-91 ESKD. Ehdolliset graafiset merkinnät kaavioissa. Digitaalitekniikan elementtejä.

· GOST 2.708-81 ESKD. Toteutussäännöt sähkökaaviot digitaalinen sähkötekniikka.

· GOST 2.755-87 ESKD. Ehdolliset graafiset merkinnät kaavioissa. Kytkinlaitteet ja kosketinliitännät.

· Tokarev V. L. Mikroprosessorijärjestelmät: ohjeet laboratoriotöiden suorittamiseen ja kurssiprojekti erikoisalan 220100 opiskelijoille päivä- ja iltaopiskelussa. - Tula: TSU, 1997. - 48 s.

· Matikashvili T.I. Ohjelmointia ja digitaalielektroniikkaa koskevien asiakirjojen valmistelu Tula: TSTU, 1994. -44 s.

LIITE 1

Havaintokohteen ja MPS:n mallinnusohjelman listaus

#sisältää

#sisältää

#sisältää

(();();= 0.0;= 0.0;(O, 0, koko(kellu)*(R+L));(fi, 0, koko(char)*(R+L));(r, 0, koko(kelluva)*(R+L)*(R+L));(i=0; i

((i=R-1; i>0; i--) fi[i] = fi;(i=R+L-1; i>R-1; i--) fi[i] = fi; = z; fi[R] = x;= ((float)rand()/RAND_MAX)*sigma;= ((kellu)rand()/RAND_MAX)*2-1;= 0,0;(i=0; i

((j=i+1; j

(= r[i][j]; r[i][j] = r[j][i]; r[j][i] = tmpr;

)(chisl, 0, koko(kellu)*(R+L)*(R+L));(i=0; i

((j = 0; j

((l = 0; l

([i][j]+=chline[l]*r[l][j];

)(i=0; i

((j = 0; j

([i][j]-=chisl[i][j]/znam;

)[i] = rfi[i]/znam;

)= 0,0;(i=0; i

LIITE 2

Havaintokohteen ja MPS:n mallinnuksen tulokset

Vaihe 1: fi = [ 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 ]= 0,405 = [ 0,000 0,000 0,000 0,000 0,000 .000 .000 .00 0. 405 0,022 0,000 0,000 0,000 0,000 0,000 0,000 ]= 0,578 = [ 0,930 0,413 0,000 0,000 0,000 0,000 0,000 0,000 ]3: fi = [ 0,627 0,653 0,022 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 ]2 = -0,0,032 ]2 = -0,0,032 .000 0.000 0.0 00 0.000 0.000 ]4: fi = [ 0.696 -0.774 0.653 0.022 0.000 0.000 0.000 0,000 ]= -0,092 = [ 0,303 0,005 -0,001 -0,001 0,000 0,000 0,000 0,000 ]5: fi = [ 0,048 0,973 -0,774 0,023 ,00,00,00,00,02 = 0,386 = [ 0 ,821 0,377 -0,409 0,030 0,704 0,000 0,000 0,000 ]6 : fi = [ 0,853 -0,425 0,973 -0,774 0,653 0,022 0,000 0,000 ] = 0,091 = [ 0,875 0,411 -0,429 0,033 0,765 - 0,07 = 0,0305 -0.0305 835 0,225 -0,4 25 0,973 -0,774 0,653 0,022 0,000 ]= -0,242 = [ 0,467 0,233 -0,247 -0,026 0,375 -0,109 0,007 0,000 ]8: fi = [ 0,225 0,266 0,225 -0,425 0,973 -0,774 0,973 -0,774 0,45 0,60528 0,220 -0,242 -0,018 0,3 48 -0,126 0,054 -0,202 ]9 : fi = [ 1.007 -0.375 0.266 0.225 -0.425 0.973 -0.774 0.653 ]= -0.008= [ 0.491 0.212 -0.238 -0.020 0.336 -0.5 -0.020 0.336 -0. .216 -0,940 -0,375 0, 266 0,225 - 0,425 0,973 -0,774 ]= 0,372 = [ 0,821 0,451 -0,467 -0,260 0,789 -0,323 0,299 -0,482 ]11: fi = [ 0,701 0,97 - 0,26,07 -0,26,2 0,425 0,973 ]= 0,084= [ 0,836 0, 462 -0,436 - 0,218 0,702 -0,320 0,297 -0,439 ]12: fi = [ 1,047 -0,970 0,817 -0,940 -0,375 0,266 0,225 -0,425 ] = -0,256 -0,425 ]= -0,256 = -4,00,25 = 4,0 0,4 0,431 -0,131 0,026 -0,285 ]13: fi = [ 0,533 - 0,762 -0,970 0,817 -0,940 -0,375 0,266 0,225 ]= -0,020 = [ 0,522 0,260 -0,247 -0,071 0,436 -0,138 0,817 -0,0 0,26 -9 [0,138 0,226 -1,9 = . -0,762 -0,970 0,817 -0,940 -0,375 0,266 ]= 0,023 = [ 0,343 0,263 -0,251 -0,073 0,239 - 0,135 0,019 -0,291 ]15: fi = [ 0,939 0,325 -0,969 -0,762 -0,969 -0,762 -0,969 -0,762 -0,969 -0,762 -0,969 -0,762 -0,970] .0 .0 .04 .0 .04. = [ 0,330 0,176 -0,220 -0,037 0,259 -0,124 0 048 -0,136 ]16: fi = [ 0,648 -0,632 0,325 -0,969 -0,762 -0,970 0,817 -0,940 ] = 0,048 = [ 0,343 0,272 -0,21 -0,21 -0,21 -0,21 0,237 ]17: fi = [ 0,753 0,478 -0,632 0,325 -0,969 -0,762 -0,970 0,817 ]= 0,552= [ 0,765 0,439 -0,471 -0,201 0,673 -0,355 0,232 -0,404 ]18: fi -0,762 -0,970 -0,8 0,325 -0,969 -0,762 -0,970 ]= 0,023= [ 0,776 0, 442 -0,450 -0,203 0,675 -0,358 0,225 -0,410 ]19 : fi = [ 0,974 -0,256 -0,946 0,478 -0,632 0,946 0,478 -0,632 0,325 -0,0 .0 .0 . 67 0,419 -0,408 -0,212 0,673 -0,359 0,229 -0,404 ]20: fi = [ 0,9 54 0,139 -0,256 -0,946 0,478 -0,632 0,325 -0,969 ] = -0,368 = [ 0. 517 0,275 -0,246 -0,015 0,438 -0,150 0,006 -0,256 ]21: fi = [ 1,736 0,134 0,139 -0,256 -0,946 0,478 -0,256 -0,946 0,478 -0,32,5] = 0,32,05,0 26 7 -0,248 -0,065 0,441 -0,150 0,056 -0,258 ] 22 : fi = [ 0,679 -0,488 0,134 0,139 -0,256 -0,946 0,478 -0,632 ]= 0,222 = [ 0,664 0,329 -0,357 -0,488 -0,357 -0,126 0,25] 0,25 -3 . [ 0,6 85 0,531 -0,488 0,134 0,139 -0,256 - 0,946 0,478 ]= 0,176= [ 0,675 0,341 -0,357 -0,115 0,558 -0,236 0,122 -0,346 ]24: fi = [ 1,015 -0,361 0,4 -0,0,4 -0,3,6 0,946 ]= -0,220= [ 0,587 0,294 -0,397 -0,122 0,442 -0,245 0,111 -0,217 ]25: fi = [ 0,755 0,111 -0,361 0,531 -0,488 0,134 0,139 -0,256 ] = -0,173 = [ 0,546 0,173 = [ 0,546 0,27 -0,27 -0,27 -0,27,9 0,071 - 0,251 ]26: fi = [ 0,420 0,660 0,111 -0,361 0,531 -0,488 0,134 -0,139 ]= 0,310 = [ 0,596 0,297 -0,314 -0,118 0,516 -0,186 0,091 -0,296 = 0,091 -0,296 = 0,6 .6 0,111 -0,361 0,531 -0, 488 -0,134 ]= 0,119= [ 0,615 0,321 -0,276 - 0,078 0,532 -0,152 0,114 -0,301 ]28: fi = [ 0,242 -0,715 -0,775 0,660 0,111 -0,361 - 0,660 0,111 -0,361 -0,3 ., 0,58] . 0 0,315 -0,297 -0,096 0,526 -0,163 0,102 - 0,302 ]29: fi = [ 0,610 -0,327 -0,715 -0,775 0,660 0,111 -0,361 0,531]

LIITE 3

Luettelo ROM-laiteohjelmistosta

TEXT-segmenttitavu julkinen "CODE"cs:_TEXT, ds:_TEXT 100h

; Alustusmenettely

; Nollaus O

;di,offset Oax,dses,axax,axcx,16stoswstart:sana ptr x,0sana ptr x+2,0sana ptr z,0sana ptr z+2,0

; r -> identiteettimatriisi

mov sana ptr i,0

@1@58:bx,sana ptr icl,5bx,clax,sana ptr icl,2ax,clbx,axword ptr r,16256sana ptr r,0sana ptr iword ptr i,8 lyhyt @1@58

; I/O-porttien asettaminen

@1@581:dx,4al,11110101B ; asynkroninen.,

; 6 merkkibittiä, tasainen pariteetti

mov al,00111110B ; vastaanotinx,al@1@581dx,4al,11111101B ; asynkroninen.,

; 8 merkkibittiä, tasainen pariteetti

mov al,00110011B ; lähetindx, al

; Tietojenkäsittely

mov cx,8dx,0bx,0

@1@1599:dx,4al,dxbyte ptr fi,albx@1@1599

; Nollataan rfi

;di,offset rfiax,axcx,16stosw

; rfi-laskenta

@1@198:sana ptr j,0

@1@226:bx,sana ptr jal,tavu ptr fiah,0sana ptr temp,axword ptr tempbx,sana ptr icl,5bx,clax,sana ptr jcl,2ax,clbx,axdword ptr rbx,sana ptr ibx,cldword ptr rfibx ,sana ptr ibx,cldword ptr rfiword ptr jword ptr j,8short @1@226word ptr iword ptr i,8short @1@198

;sana ptr znam+2,0sana ptr znam,0

; znam:n laskeminen

;sana ptr i,0si,sicl,2si,clsi,offset rfi

@1@450:bx,sana ptr ial,tavu ptr fiah,0sana ptr temp,axword ptr tempdword ptr dword ptr znamdword ptr znamsi,4sana ptr isi,offset rfi+32short @1@450

;ax,sana ptr sigmasana ptr temp,axword ptr tempdword ptr znamdword ptr znam

; Transponoi r

@1@590:ax,sana ptr iaxword ptr j,ax@1@674

@1@618:bx,sana ptr icl,5bx,clax,sana ptr jcl,2ax,clbx,axax,sana ptr rword ptr temp,axax,sana ptr rword ptr temp+2,axdx,bxbx,sana ptr jcl,5bx ,klax,sana ptr icl,2ax,clbx,axax,sana ptr rword ptr temp+4,axax,word ptr rword ptr temp+6,axax,word ptr tempword ptr r,axax,word ptr temp+2word ptr r,axbx ,dxax,sana ptr temp+4sana ptr r,axax,sana ptr temp+6sana ptr r,axword ptr j

@1@674:sana ptr j,8@@28@1@618

@@28:word ptr iword ptr i,8@@29@1@590

; Nollaa chisl

;di,offset chislax,axcx,128stosw

; Chliinin laskeminen

@1@814:bx,sana ptr jal,tavu ptr fiah,0sana ptr temp,axword ptr tempbx,sana ptr icl,2bx,cldword ptr rfibx,sana ptr jbx,cldword ptr chlineword ptr jword ptr j,8short @1@814

; Chisl:n laskeminen

@1@926:sana ptr l,0ax,sana ptr icl,5ax,cldx,sana ptr jcl,2dx,clax,dxsi,ax

@1@982:bx,sana ptr lcl,5bx,clax,sana ptr jcl,2ax,clbx,axdword ptr rbx,sana ptr lbx,cldword ptr chlinedword ptr chisldword ptr chislword ptr lword ptr l,8short ptr @1@98short ptr j,8short @1@926word ptr iword ptr i,8@@30@1@786

; Lasketaan r

@1@1206:sana ptr j,0

@1@1234:bx,sana ptr icl,5bx,clax,sana ptr jcl,2ax,clbx,axdword ptr chisldword ptr znamdword ptr rdword ptr rword ptr jword ptr j,8short @1@1234

; Lasketaan k

;bx,sana ptr icl,2bx,cldword ptr rfidword ptr znamdword ptr kword ptr iword ptr i,8@@31@1@1206

;sana ptr e,0sana ptr e+2,0

; Laskenta e

;sana ptr i,0si,sicl,2si,clsi,offset O

@1@1486:bx,sana ptr ial,tavu ptr fiah,0sana ptr temp,axword ptr tempdword ptr dword ptr edword ptr esi,4sana ptr isi,offset O+32short @1@1486

;al,byte ptr fiah,0word ptr temp,axword ptr tempdword ptr edword ptr e

; Laskutus O

@1@1850:bx,sana ptr icl,2bx,cldword ptr kdword ptr edword ptr Odword ptr Oword ptr iword ptr i,8short @1@1850

;ax,100word ptr temp,axax,0word ptr temp+2,axcx,8bx,0

@1@1860:dword ptr Odword ptr tempword ptr temp+4al,tavu ptr temp+420h,albx,4@1@1860calc

;db 2 dup (?)db 2 dup (?)db 2 dup (?)dd 0.5db 4 dup (?)db 4 dup (?)db 4 dup (?)db 256 dup (?)db 32 dup (? )db 32 dup (?)db 8 dup (?)db 8 dup (?)db 4 dup (?)db 32 dup (?)db 4 dup (?)db 256 dup (?)db 32 dup (?)

TEXT endsinit

LIITE 4

Ajoituskaaviot järjestelmän toiminnasta

Kuva 1. Lukujakso RAM-muistista

Kuva 2. RAM-kirjoitusjakso

Kuva 3. Lukujakso ROM-muistista

Merkitys

Mikroprosessorijärjestelmän suunnittelu

Rakenne

Järjestelmän lohkokaavio on esitetty kuvassa 3.2.

Kuva 3.2 - MPS:n lohkokaavio

MP on rautatieministeriön keskusyksikkö. Se hallitsee kaikkia siruja ja käsittelee tietoja.

MP luo osoitteen Yhdysvaltoihin ja suorittaa vaihdon SHD:n kanssa.

RAM on suunniteltu välitietojen tallentamiseen.

ROM on suunniteltu tallentamaan ohjelmakoodia ja erilaisia ​​vakioita.

PPI on suunniteltu ulkoisten laitteiden liittämiseen. ADC, erilliset signaalit ja PP on kytketty PPI:hen.

ADC on suunniteltu muuntamaan antureista tuleva analoginen signaali digitaaliseksi koodiksi.

Ohjelmisto on suunniteltu järjestämään vaihto sarjakanavan kautta ohjauskeskuksen ja MP:n välillä.

Piirin suunnittelu

MPS:n on toimitettava:

  • - 7 analogisen anturin kysely;
  • - 8 erillisen signaalin kokoelma;
  • - 4 erillisen ohjaustoiminnon muodostaminen.

Tarvittava tietomuistin määrä lasketaan kaavalla

missä ja ovat analogisten ja diskreettien tulosignaalien lukumäärä, vastaavasti; ja - analogisten ja diskreettien signaalien bittisyvyys.

Meidän tapauksessamme ja.

Tämän seurauksena anturimittaustietojen tallentaminen on välttämätöntä

Järjestelmän keskusyksiköksi valittiin mikro-ohjain KM1816BE51. Sen tärkeimmät edut ovat:

  • - ohjelmien ja tietojen pysyvän muistin läsnäolo;
  • - sisäänrakennetun ohjelmiston läsnäolo;
  • - 4 porttia;
  • - alhainen energiankulutus;
  • - sisäänrakennetut ajastimet-laskurit.

Sisäänrakennettua 128 tavua MK-ohjelmamuistia käytetään tietojen tallentamiseen. Ohjelma tallennetaan pysyvän ohjelman muistiin.

Analogisten antureiden kyselyyn käytetään K572PV4-mikropiiriä. Mikropiirin etuja ovat mm.

  • - sisäänrakennetun multiplekserin läsnäolo;
  • - anturien automaattinen kysely ilman mikroprosessorin osallistumista;
  • - kunkin kanavan muunnostulosten tallennus sisäiseen staattiseen muistiin.

Koska MK:ssa ei ole generaattorilähtöjä, K531GG1-generaattoripiiriä käytetään kellosignaalin luomiseen.


Tiedonvaihdon järjestämiseen ohjauskeskuksen kanssa käytetään MK:n sisäänrakennettua lähetin-vastaanotinta. Kuitenkin KM1816BE51 PP lähettää dataa käyttämällä viiden voltin loogisia signaaleja: yhtä edustaa jännitetaso 2,4 V - 5 V ja nolla - 0 - 0,8 V. RS-232-kanavan kautta lähetettäessä nolla ja yksi ovat koodattu samalla arvolla (5 - 12 V), mutta erimerkkisillä signaaleilla.

Koska viiden voltin logiikkasignaalit on muutettava toisen tason signaaleiksi RS-232:n kautta lähetettäväksi, MPS käyttää Maximin MAX202E-sirua. Ne sisältävät jännitemuuntimen +5 V - ±10 V ja kaskadit, jotka muuntavat RS-232-standardin mukaisesti viiden voltin loogisia signaaleja. Se sisältää logiikkatasomuuntimet kahdelle vastaanottimelle ja kahdelle lähettimelle, joista vain yksi lähetin-vastaanotinkanava on käytössä.

MPS:n kaaviokuva on liitteessä B.

Kvartsiresonaattori ZQ1 taajuudella 12 MHz on kytketty DD1-mikro-ohjaimen nastoihin XTAL1 ja XTAL2. Vakaampaa käynnistystä varten kvartsiresonaattorin johdot on kytketty yhteiseen johtimeen kondensaattoreiden C1 ja C2 kautta, joiden kapasiteetti on 21 pF.

Kun syöttöjännite kytketään mikro-ohjaimeen, mikro-ohjain on nollattava. Tätä tarkoitusta varten RST-tulo on kytketty tehoväylään 6 μF:n kondensaattorin C3 kautta ja yhteiseen johtoon 100 kOhmin vastuksen R1 kautta. Kun virta kytketään päälle, kondensaattori purkautuu ja palautustulo on potentiaalissa, joka on lähellä syöttöjännitettä. Huolimatta tämän potentiaalin pienenemisestä C3:n varauksesta, signaalitaso pysyy reset-tulossa kymmenien millisekuntien ajan yhtenäisenä ja mikro-ohjain käynnistyy oikein.

Tuloon syötetään looginen yksikkö, koska mikro-ohjain suorittaa ohjelman pysyvästä muistista.

Diskreetit tulosignaalit DDAT1-DDAT8 on kytketty DD1-mikro-ohjaimen P0-portin linjoihin. ADC DA1 on kytketty portin P1 linjoihin. Diskreetit ohjaustoiminnot DOUT1-DOUT4 muodostetaan linjoille P1.0-P1.3.

Koska ADC DA1:een kytkettyjen analogisten antureiden lähtöjännitteen on oltava välillä 0 V - 2,5 V. Antureiden virtasignaalien muuttamiseksi jännitesignaaliksi käytetään vastuksia R2-R13.

Elementtien erittely on esitetty liitteessä D.

Algoritmin kehittäminen MPS:n toimintaa varten

MPS toimii seuraavassa järjestyksessä:

  • a) järjestelmän alustus;
  • b) antureiden kysely;
  • c) pumppausyksikön ohjaus;
  • d) tiedonvaihto valvontakeskuksen kanssa;
  • e) siirry vaiheeseen b.

MPS-työohjelman algoritmien lohkokaaviot on esitetty liitteessä E, pätkä ohjelmakoodista on liitteessä E.

Tehonkulutuksen laskeminen

Koko järjestelmän kuluttama teho määritellään kaikkien järjestelmän osien kuluttamien tehojen summana.

Teholaskenta on yhteenveto taulukossa 3.4.

Taulukko 3.1 - Tehonkulutuksen laskeminen

Järjestelmä kuluttaa virtaa.

Tiedonsiirtolaite

Ohjauskeskuksen kanssa tapahtuvan tiedonsiirron varmistamiseksi käytetään MI 486 -liitäntämuunninta, jonka avulla voit vastaanottaa/lähettää tietoja Ethernet-verkon kautta tietokoneelta jopa 112 kbaud:n nopeudella.

Liitäntämuunnin on esitetty kuvassa 3.3.

Kuva 3.3 - Liitäntämuunnin MI 486

Tekniset tiedot:

  • - lähtöliitäntä: RS-232;
  • - max. nopeus - jopa 112 kbaud;
  • - Ethernet 10BaseT/100BaseT -tuloliitäntä;
  • - RJ45 liitin.

Mikroprosessorijärjestelmän suunnittelu

Johdanto

Mikrokontrollereita käyttävien tietokonejärjestelmien kehittämistehtävä vaatii tietoa ja ymmärrystä niiden toimintaperiaatteista, mutta tärkeintä on ohjausohjelmien kirjoittaminen. Tämän kirjan tarkoituksena on oppia kehittämään mikrokontrollerilaitteita.

Suositun Atmelin AVR-mikroprosessoriperheen Atmega 128 -sirua käytettiin perussiruna kaikissa kirjan esimerkeissä. Oletetaan, että lukijalla on perusymmärrys sekä mikroprosessoritekniikan periaatteista että tämän mikro-ohjaimen arkkitehtuurin ominaisuuksista.

Mikro-ohjaimen ohjelma on joukko koodeja, jotka kirjoitetaan sen erityiseen ohjelmamuistiin. Ohjelman tulee kirjoittaa ohjelmoija, joka kehittää tietyn mikroprosessorijärjestelmän, mutta ei koskaan käsittele koodeja. Ihmisen on helpompi toimia komennoilla, joilla jokaisella on oma merkityksellinen nimi. Siksi ohjelman kirjoittamiseen käytetään ohjelmointikieltä.

Kielen päätehtävä on kuvata yksiselitteisesti toimintosarja, joka mikro-ohjaimen on suoritettava. Samalla kielen tulee olla ihmisten ymmärrettävää.

Ohjelmaa luodessaan ohjelmoija yksinkertaisesti kirjoittaa sen tekstin tietokoneelle samalla tavalla kuin mikä tahansa muu teksti. Sitten ohjelmoija käynnistää erikoisohjelman - kääntäjän, joka kääntää ohjelmoijan kirjoittaman tekstin mikroprosessorille ymmärrettäviksi konekoodeiksi.

Ohjelmoijan kirjoittamaa ohjelmatekstiä kutsutaan alkuperäinen tai objektikoodi. Käännöksen tuloksena saatua koodia kutsutaan tuloksena tai konekoodi. Tämä koodi on kirjoitettu mikro-ohjaimen ohjelmamuistiin. Tuloksena olevan koodin tallentamiseen käytetään erityisiä laitteita - ohjelmoijat.

Kaikki ohjelmointikielet on jaettu kahteen ryhmään:

· matalan tason kielet (konesuuntautuneita);

· korkeatasoiset kielet.

Tyypillinen esimerkki konesuuntautuneesta kielestä on Assembly-kieli. Viime aikoina Assembly-kieli oli ainoa kieli mikro-ohjainten ohjelmointiin. Tällä hetkellä korkean tason kielet, kuten PERUS, Si ja niin edelleen. Nämä kielet kehitettiin kerran suuria tietokoneita varten. Mutta nyt niitä käytetään laajalti mikro-ohjaimissa.

Korkean tason kielten etuna on ohjelman kehitysprosessin merkittävä nopeuttaminen. Kaikista korkean tason kielistä ehkä tehokkain on C-kieli. Siksi valitsemme tulevaisuudessa havainnollistamiseen tämän kielen. Eri mikroprosessoriperheille on kehitetty eri versioita kielistä. Esimerkiksi AVR-perheen mikroprosessoreille - C AVR.

Luku 1. Kirjoitusohjelmia mikrokontrollereille

C-kielen elementit

C-ohjelman MK-rekistereillä (rekisterit ovat tavusoluja AVR MK-muistissa) on nimet, ja koska useimpien niistä voidaan muuttaa numeroita, rekisterit ovat ohjelmalle olennaisesti muuttujia.
Muuttuva- Tämä on joukko muistisoluja, joihin voit tallentaa numeron tai numeroita ja muuttaa niitä. Muuttujalla on osoite ja nimi.

Jatkuva- Se on kuin muuttuja, mutta et voi muuttaa sisältöä.

Vakiot

Vakiot ovat ohjelmassa lueteltuja arvoja. SI-kielessä vakioita on neljää tyyppiä: kokonaislukuvakiot, liukulukuvakiot, merkkivakiot ja merkkijonoliteraalit.

Kokonaislukuvakio: on desimaali-, oktaali-, heksadesimaali- tai binääriluku, joka edustaa kokonaislukuarvoa jossakin seuraavista muodoista: desimaali, oktaali, heksadesimaali tai binääriluku.

Desimaalivakio koostuu yhdestä tai useammasta desimaaliluvusta, ja ensimmäinen numero ei saa olla nolla (muuten luku tulkitaan oktaaliksi).

Oktaalivakio koostuu pakollisesta nollasta ja yhdestä tai useammasta oktaalinumerosta (numeroiden joukossa ei saa olla kahdeksaa tai yhdeksää, koska nämä numerot eivät sisälly oktaalilukujärjestelmään).

Heksadesimaalivakio alkaa vaaditulla sekvenssillä 0x tai 0X ja sisältää yhden tai useamman heksadesimaalinumeron (numerot, jotka edustavat heksadesimaalilukujärjestelmän numerosarjaa: 0,1,2,3,4,5,6,7,8,9 ,A,B, C,D,E,F).

Binäärivakio kirjoitetaan käyttämällä binäärimerkkejä, joita edeltää sekvenssi 0b.

esimerkiksi - Kokonaisluvut voidaan kirjoittaa:

Desimaalimuodossa: 12234 -5493

Binäärimuodossa 0b-etuliitteellä näin: 0b101001

Heksadesimaalimuodossa 0x-etuliitteellä: 0x5A

Oktaalimuodossa 0-etuliitteellä: 0775

Jos sinun on muodostettava negatiivinen kokonaislukuvakio, käytä "-"-merkkiä ennen vakion kirjoittamista (jota kutsutaan unaariseksi miinukseksi). Esimerkiksi: -0x2A, -088, -16.

Jokaiselle kokonaislukuvakiolle on määritetty tyyppi, joka määrittää muunnokset, jotka on suoritettava, jos vakiota käytetään lausekkeissa. Vakion tyyppi määritellään seuraavasti:

Desimaalivakioita käsitellään etumerkittyinä arvoina ja niille annetaan tyyppi int tai long vakion arvon mukaan. Jos vakio on pienempi kuin 32768, sille annetaan tyyppi int, muuten pitkä.

Oktaali- ja heksadesimaalivakiolle on määritetty tyyppi int, allekirjoittamaton int(etumerkitön kokonaisluku), pitkä tai allekirjoittamaton pitkä riippuen taulukon 1.1 mukaisen vakion arvosta.

Taulukko 1.1

Heksadesimaalivakioalue Oktaalivakioalue Tyyppi
0x0 - 0x7FFF 0 - 077777 int
0X8000 - 0XFFFF 0100000 - 0177777 allekirjoittamaton int
0X10000 - 0X7FFFFFFFF 0200000 - 017777777777 pitkä
0X80000000 - 0XFFFFFFFF 020000000000 - 037777777777 allekirjoittamaton pitkä

Liukuluku koostuu kokonaisluvusta ja murto-osasta ja (tai) eksponentista. Liukulukuvakiot edustavat kaksinkertaisen tarkkuuden positiivisia arvoja (tyyppiä double). Negatiivisen arvon määrittämiseksi on tarpeen muodostaa vakiolauseke, joka koostuu miinusmerkistä ja positiivisesta vakiosta.

Esimerkkejä: 115,75, 1,5E-2, -0,025, 0,075, -0,85E2

Merkkivakio - esittää heittomerkkien sisällä oleva merkki. Merkkivakion arvo on merkin numeerinen koodi.

Esimerkiksi "Q" on kirjain Q.

Merkkivakiot ovat tyyppiä int ja ne on täytetty merkillä tyyppimuunnoksen aikana.

Merkkijonovakio (kirjaimellinen) - merkkijono (mukaan lukien venäjän ja latinan kielen merkkijono ja isot kirjaimet sekä numerot) lainausmerkeissä (").

Esimerkiksi "Heloo"

Merkkijonoliteraalin merkit tallennetaan RAM-alueelle. Kääntäjä lisää tyhjän merkin, jota edustaa pakomerkkijono \0, jokaisen merkkijonoliteraalin loppuun. Merkkijonoliteraali on tyyppiä char.

1.1.2. Tunniste

Tunniste on sarja numeroita ja kirjaimia sekä erikoismerkkejä, jos ensimmäinen kirjain tai erikoismerkki näkyy. Tunnisteiden muodostamiseen voidaan käyttää latinalaisten aakkosten pieniä tai isoja kirjaimia. Alaviivaa (_) voidaan käyttää erikoismerkkinä. Kaksi tunnistetta, jotka käyttävät yhteensopivia pieniä ja isoja kirjaimia, katsotaan erilaisiksi. Esimerkiksi: abc, ABC, A128B, a128b.

Tunniste luodaan muuttujan, funktion, rakenteen jne. määrittelyvaiheessa. Sitä voidaan sitten käyttää kehitettävän ohjelman myöhemmissä lausekkeissa. Tunniste ei saa vastata avainsanoja, varattuja sanoja tai SI-kääntäjäkirjaston funktioiden nimiä.

Avainsanat

Tietotyypit ja niiden ilmoittaminen

Tärkeä ero SI-kielen ja muiden kielten välillä on oletusperiaatteen puuttuminen, mikä johtaa siihen, että kaikki ohjelmassa käytetyt muuttujat on ilmoitettava eksplisiittisesti ja niiden vastaavat tyypit.

Muuttujan ilmoitusmuoto on seuraava:

[]

- Muistiluokan määrittäjä - määritellään jollakin neljästä SI-kielen avainsanasta: auto, extern, register, staattinen, ja osoittaa toisaalta kuinka muistia varataan ilmoitetulle muuttujalle ja toisaalta tämän muuttujan laajuuden. ts. mistä ohjelman osista siihen pääsee. Tämä on valinnainen elementti ja sitä tarvitaan vain joissakin tapauksissa.

- jos muuttujaa voidaan käyttää muissa ohjelman lähdekooditiedostoissa;

- jos muuttuja on paikallinen, se ilmoitetaan jossakin funktiossa hakasulkeen jälkeen ja sen on säilytettävä arvonsa tämän funktion seuraavaan kutsuun asti;

- sijoita muuttuja MK-rekistereihin.

Globaalit muuttujat ilmoitetaan ennen kuin ne näkyvät minkään funktion tekstissä. Kun globaalit muuttujat on ilmoitettu, ne ovat käytettävissä missä tahansa ohjelmafunktiossa.

Paikalliset muuttujat ilmoitetaan aivan funktioiden alussa - ts. kiharan aaltosulkeen jälkeen.

- muuttuja voi tallentaa datatyypin.

Kokonaislukutietotyypin määrittämiseen käytetään erilaisia ​​avainsanoja, jotka määrittävät arvoalueen ja muuttujille varatun muistialueen koon.

Esimerkiksi,

Merkitön merkki - tallentaa luvun 0 - 255 (tavua);

Unsigned Int - tallentaa luvun 0 - 65535 (kaksi tavua);

Unsigned long Int - tallentaa luvun 0 - 4294967295 (neljä tavua).

Unsigned charin sijasta voit kirjoittaa vain merkkiä, koska kääntäjä pitää oletuksena merkkiä allekirjoittamattomana.

Signed char - tarkoittaa etumerkillistä muuttujaa ja tallentaa luvun -128:sta 127:ään.

Etumerkilliset ja etumerkitmättömät avainsanat osoittavat, kuinka ilmoitetun muuttujan nollabitti tulkitaan, eli jos etumerkitön avainsana on määritelty, niin nollabitti tulkitaan osaksi lukua, muuten nollabitti tulkitaan etumerkillisenä. Jos etumerkitön avainsana puuttuu, kokonaislukumuuttuja katsotaan allekirjoitetuksi. Jos tyyppimäärite koostuu avaintyypistä, joka on allekirjoitettu tai allekirjoittamaton ja jota seuraa muuttujatunnus, sitä käsitellään muuttujana, jonka tyyppi on int. Esimerkiksi:

unsigned int n;signed int b;int c; (merkitsee allekirjoitettua int c);allekirjoittamaton d; (merkitsee unsigned int d);signed f; (merkitty int f on oletettu).

Minkä tahansa tyyppinen muuttuja voidaan julistaa muokkaamattomaksi. Tämä saavutetaan lisäämällä tyyppimäärittimeen avainsana const. Objektit, joiden tyyppi on const, edustavat vain luku -dataa, ts. tälle muuttujalle ei voi antaa uutta arvoa. Huomaa, että jos sanan const jälkeen ei ole tyyppimäärittelijää, tyyppimäärittelijä int tarkoittaa. Jos avainsana const tulee ennen yhdistelmätyyppien (joukko, rakenne, sekoitus, luettelointi) ilmoittamista, niin tämä johtaa siihen, että jokaisen elementin tulee olla myös muokkaamaton, ts. sille voidaan antaa arvo vain kerran.

const double A=2,128E-2;const B=286; (tarkoittaa const int B=286) consnant char_ string vakio ="tämä on merkkijonovakio"

Kelluva data

Liukulukua edustaville muuttujille käytetään seuraavia tyyppimuutoksia: float, double, long double (joissakin pitkän kaksoiskielen toteutuksissa ei ole SI:tä).

Arvo, jossa on float-tyyppinen muuntaja, kestää 4 tavua. Näistä 1 bitti on varattu etumerkille, 8 bittiä ylijäämäeksponentille ja 23 bittiä mantissalle. Huomaa, että mantissan merkitsevin bitti on aina 1, joten sitä ei täytetä, joten liukulukumuuttujan arvoalue on noin 3,14E-38 - 3,14E+38. Kaksoisarvo vie muistista 8 tavua. Sen muoto on samanlainen kuin float-muoto. Muistibitit jakautuvat seuraavasti: 1 bitti etumerkille, 11 bittiä eksponenttia ja 52 bittiä mantissaa varten. Kun otetaan huomioon mantissan pois jätetty korkea bitti, arvoalue on 1,7E-308 - 1,7E+308.

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

- muuttujan nimi. Esimerkiksi imy peremennoi.

Muuttujien kohdalla on tapana käyttää pieniä kirjaimia, ja muuttujien nimet erotetaan funktioiden nimistä, muuttujien nimet voivat alkaa kirjaimella ja funktioiden nimet (paitsi pää) alaviivalla.

Esimerkiksi, moya changenaya , _vasha funkzia.

Globaalit muuttujat sekä paikalliset muuttujat, joissa on staattinen muuntaja, ovat yhtä kuin 0 ohjelman käynnistyksen ja uudelleenkäynnistyksen yhteydessä, ellei niille ole määritetty muita arvoja.

Muutamia esimerkkejä muuttujamäärityksistä:

Unsigned Char my_peremen=34 ; /* my_peremen määritellään etumerkittömäksi merkiksi , jonka arvo on 34 (mahdollinen myös ilman osoitusta) */

Signed Int big_ change=34634; /* iso_ muutos on ilmoitettu Unsigned Int */.

Array-ilmoitus

Taulukot ovat ryhmä samantyyppisiä elementtejä (double, float, int jne.). Kääntäjän on saatava taulukkomäärityksestä tiedot taulukon elementtien tyypeistä ja niiden lukumäärästä. Taulukkomäärityksellä on kaksi muotoa:

tyyppimääritteen kuvaaja [const - lauseke];

tyyppimääritteen kuvaaja ;

Kuvaaja on taulukon tunniste.

Tyyppimäärittäjä määrittää ilmoitetun taulukon elementtien tyypin. Matriisielementit eivät voi olla funktioita tai tyhjiä elementtejä.

Hakasulkeissa oleva vakiolauseke määrittää taulukon elementtien määrän. Kun määritetään taulukko, vakiolauseke voidaan jättää pois seuraavissa tapauksissa:

Kun taulukko on ilmoitettu, se alustetaan;

Taulukko on ilmoitettu funktion muodolliseksi parametriksi.

C määrittelee vain yksiulotteisia taulukoita, mutta koska taulukon elementti voi olla taulukko, voidaan määrittää myös moniulotteisia taulukoita. Ne formalisoidaan vakiolausekkeiden luettelolla, joka seuraa taulukon tunnistetta, ja jokainen vakiolauseke on suljettu omiin hakasulkeisiinsa.

Jokainen hakasulkeissa oleva vakiolauseke määrittää elementtien määrän taulukon kyseisellä dimensiolla siten, että kaksiulotteinen taulukon ilmoitus sisältää kaksi vakiolauseketta, kolmiulotteinen taulukko sisältää kolme ja niin edelleen. Huomaa, että C-kielessä taulukon ensimmäisen elementin indeksi on 0.

Char mass - elementtien numerointi alkaa 0:sta, ts. tämän taulukon alkioita kutsutaan massoksi, massaksi ja ne tallentavat luvut 11, 22, 33. Jossain ohjelmassa elementille voidaan antaa arvo, esimerkiksi mass=210. Et voi määrittää arvoja elementeille.

Merkkijonomuuttuja tai -taulukko, joka sisältää merkkijonon, esimerkiksi

Char stroke = "Hei" määrittelee 6 elementtiä, vaikka se sisältää vain viisi merkkiä. Kuudes elementti on ohjausmerkki, joka lisätään merkkijonon \0 loppuun.

Merkkitaulukko voidaan ilmoittaa myös ilman elementtien määrää.

Esimerkiksi,

Char str = ”merkkijonoilmoitus”

Ilmaisut ja tehtävät

Operaattorit ja operaatiot

Operaattorisymbolien ja operandien yhdistelmää, joka tuottaa tietyn arvon, kutsutaan lausekkeeksi. Operaatiomerkit määrittelevät operandeille suoritettavat toiminnot. Jokainen lausekkeen operandi voi olla lauseke. Lausekkeen merkitys riippuu operaattorimerkkien ja sulkeiden sijoituksesta lausekkeessa sekä operaatioiden tärkeydestä.

SI:ssä osoitus on myös lauseke, ja tällaisen lausekkeen arvo on annettu arvo.

Operandi on vakio, kirjaimellinen, tunniste, funktiokutsu, indeksilauseke, elementin valintalauseke tai monimutkaisempi lauseke, joka muodostuu operandien, operaattorimerkkien ja sulkeiden yhdistelmästä. Mitä tahansa operandia, jolla on vakioarvo, kutsutaan vakiolausekkeeksi. Jokaisella operandilla on tyyppi.

Numeron sijoittamiseksi muuttujaan (rekisteriin) C-kielellä on määritysoperaattori " = " Tämä C:n symboli tarkoittaa, että lasketaan tulos siitä, mikä on osoitusoperaattorin oikealla puolella ja sijoitetaan tämä tulos muuttujaan, joka sijaitsee vasemmalle toimeksiantooperaattori.

1.PORTB=PINB+34; /* Tämä rivi C:ssä tarkoittaa Ota (lue) muuttujan (rekisteröinnin) PINB arvo, lisää siihen numero 34 ja laita tulos PORTB-muuttujaan */

2. MUUTTUJA=PINC; /* Tämä rivi C:ssä tarkoittaa PINC-muuttujan arvon ottamista (lukemista) (rekisteröinti) ja tuloksen sijoittamista muuttujaan nimeltä VARIABLE */
3. Rivi, jossa muuttuja on " = ":n vasemmalla puolella, mutta merkin & PORTB& =0x23; C:ssä tarkoittaa - lue PORTB-muuttujan sisältö, suorita sitten "bittikohtainen looginen AND" lukuarvon ja luvun 0x23 välillä ja aseta (kirjoita, määritä) tulos PORTB-muuttujalle 4. Rivi, jolla muuttuja on välittömästi "=" vasemmalla puolella PORTB= 0x23; C:ssä tarkoittaa - lukematta PORTB-muuttujan sisältöä, anna sille arvo 0x23, mikä tuhoaa sen, mikä siellä oli aiemmin.
& "And" (AND - vain 1 ja 1 antavat 1) sijasta voi olla muita bittikohtaisia ​​loogisia operaatioita: | "OR" (TAI vain 0 ja 0 antavat 0) ^ "Exclusive OR" (XOR-muutosbitti vastapäätä "1") ~ "bitin inversio" (INV muuttaa rekisteribitit vastakkaisiin merkkeihin) ja aritmeettiset operaatiot: + - * / %
Seuraavia lyhenteitä käytetään määritysoperaattorin kanssa:
PITKÄ ennätys MERKITYS VÄHENNETTY
x = x + 1; lisää 1 x++; tai ++x;
x = x - 1; vähennä 1 x--; tai -x;
x = x + y; lisää y x += y;
x = x - y; vähennä y x = y;
x = x*y; kerrotaan y:llä x *= y;
x = x/y; jaa y:llä x /= y;
x = x % y; divisioonan loppuosa x % = y;
x--; vähennä 1 x = 1;
x++; lisää 1 x += 1;

C:ssä on operaatioita, jotka muuttavat muuttujan arvoa ilman osoitusoperaattoria:

PORTA++;/* Tämä rivi C:ssä tarkoittaa Ota muuttujan PORTA arvo, lisää siihen 1 ja kirjoita tulos takaisin PORTAan. Lisäys rekisteröidy PORTA */

PORTC--;/* Tämä C-rivi tarkoittaa päinvastaista! Vähennys- vähennä 1 PORTC-rekisterin arvosta */

Kun lausekkeessa käytetään lisäystä tai vähennystä, on tärkeää, missä kaksi merkkiä + tai - ovat muuttujan edessä tai jälkeen:

a = 4; b = 7; a = b++;/* Tämä rivi C:ssä tarkoittaa: ota muuttujan b arvo, anna se muuttujalle a, lisää muuttujaan b 1 ja tallenna tulos b:hen. Nyt a sisältää luvun 7, b sisältää numero 8 */a=4; b = 7; a = ++b;/* Tämä rivi C:ssä tarkoittaa: ota muuttujan b arvo, lisää siihen 1 ja tallenna tulos b:hen ja anna sama tulos muuttujalle a. Nyt a sisältää luvut 8 ja b sisältää luvun 8 */ 1.2 .2 Aritmeettiset operaatiot C x + y// yhteenlaskux - y// vähennyslaskux * y// kertolasku x / y/* jako. Jos luvut ovat kokonaislukuja, tuloksena on kokonaisluku, jonka murto-osa hylätään – ei pyöristetty. Nuo. jos jaon tulos on 6,23411 tai 6,94, niin tulos on yksinkertaisesti kokonaisluku 6. Jos liukulukuihin, eli liukulukuihin tai tuplaan, kirjoitetaan piste ja numero pisteen jälkeen, niin tulos on liukuluku hylkäämättä murto-osaa 131,9739 / 6,18 antaa 21,355 */ x % y// laskea kokonaisen jaon jäännösosa Esimerkkejä:

x< y // X меньше Y
x > y // lisää
x<= y // меньше или равно
x >= y // suurempi tai yhtä suuri kuin
x == y // yhtä suuri
x != y /* ei ole yhtä suuri Näiden operaattorien suorittamisen tulos: "true" on "1" (tarkemmin "ei nolla"), "false" on "0". Muuttujiin (rekistereihin) tallennetut arvot
X
Ja klo Ei muuttunut. Muuttujiin tallennetut (tai sisältämät) arvot otetaan (luetaan) ja niitä verrataan */

1.2.5. Loogiset operaatiot:

|| // "OR" - vain "false" ja "false"

// anna "false"

&& // "AND" - vain "tosi" ja "tosi"
// anna "tosi"

! // "EI" - looginen negaatio

Loogisen operaation tulos EI ole NUMERO, vaan looginen arvo "true" tai "false".

Loogisille operaattoreille && ja || operaatiomerkin vasemmalla ja oikealla puolella olevien lausekkeiden tulokset otetaan muunnetaan "tosi" tai "epätosi" ja toiminnan looginen tulos määritetään.

Kääntäjä muuttaa tuloksen "true" 1:ksi eikä millään muulla luvulla kuin 0.

Loogisissa operaatioissa voidaan yhdistää useita testattavia ehtoja.

Esimerkiksi:

jos((lauseke1)&&((lauseke2)||(lauseke3)))
{ /* Tässä oleva ohjelmakoodi suoritetaan, jos:

Lauseke 1 on "tosi" (ei ole nolla) ja vähintään yksi lausekkeista 2 ja 3 on myös "tosi" (ei nolla).
} ;

1.3. C-rakenteita käytetty

1.jos(){} muu(); ihanteellinen suunnittelu, jos joudut suorittamaan jonkin ohjelman osan olosuhteiden vallitessa tai niiden puuttuessa:

} muu(ei pakollinen suunnitteluelementti, ilman sitä muotoilu näyttää tältä:

jos (ilmaisu) (C-koodi /* tee tämä koodi, jos ilmaisu"totuus" - ts. sen laskennan tulos ei ole nolla */
};

jos(PINB.5) (suorita C-koodi);
/* Jos nastassa PB5 on "1" (ei "0" tarkoittaa "tosi"), sitten ohjelma suorittaa koodin, ja jos siinä on "0" (eli "false"), se ei tee sitä, vaan siirtyy vain seuraavalle riville */

2. kun()(); ehdollinen silmukka (silmukka ehdon kanssa) - käytetään, jos sinun on suoritettava jokin ohjelmakoodi sen ollessa käynnissä (olemassa,
"tosi" tarkoittaa "ei nolla") jokin ehto, lausekkeen laskemisen tulos:

sillä aikaa ( ilmaisu ) (C-koodi /* suorittaa tämän koodin, jos lauseke on "tosi" - eli sen laskennan tulos ei ole nolla. Kun tämä koodi suoritetaan, lausekkeen totuutta ei tarkisteta. Koodin suorittamisen jälkeen siirtyy linja esiintyy sillä aikaa tarkista lauseen totuus uudelleen */
};

Esimerkiksi:

sillä aikaa(PINA.6) (C-koodin suoritus);
/* Hei hei nastassa PA6 on "1" (ei "0" tarkoittaa "tosi"), jolloin ohjelma suorittaa koodin ja tarkistaa uudelleen mitä PA6:ssa on */ Jos bitti_6 muuttuu "0", ohjelma jatkaa suorittamatta mitä on paikassa ( )

Kierrä sillä aikaa on vaihtoehto

Tehdä, kun

jossa ainakin koodi kohdassa ( ) suoritetaan kerran riippumatta ehdon totuudesta suluissa:

do(C-koodi /* suorita tämä koodi kerran sitten, jos lauseke on "tosi" - eli sen laskennan tulos ei ole nolla - suorita koodi uudelleen alusta, ja niin edelleen, kunnes lauseke on tosi */ ) (ilmaisu); For(;;)- ja while()-silmukoita käytetään usein näin: while(1); varten (;;); /* Nämä näin kirjoitetut syklit tarkoittavat: MK suorittaa tämän rivin, kun on virtaa, ei nollausta eikä keskeytyksiä. Keskeytyksen sattuessa ohjelma siirtyy keskeytyskäsittelijään ja (jos käsittelijä ei siirry toiseen paikkaan ohjelmassa) käsittelijän koodin valmistuttua se palaa takaisin tähän silmukkaan. */ while(1)( ohjelmakoodi ); for (;;)( ohjelmakoodi); 4.for(;;)(); - Tämän silmukan avulla voit suorittaa osan ohjelmasta vaaditun määrän kertoja:

hiiltyä i; /* muuttujan ilmoitus for varten tämä on tavallinen C-muuttuja ja siksi sillä voi olla mikä tahansa kelvollinen nimi ja tyyppi, jonka haluat */

varten(i = 5; i<20; i+=4) {
C-koodi /* Ensin määritetään testilausekkeen i olevan tosi tai epätosi<20. Так как переменной i присвоено значение 5 то контрольное выражение "истинно" и код цикла varten suoritetaan ensimmäistä kertaa arvolle i=5, sitten lausekkeen i+=4 mukaan i:stä tulee 9 , nyt tarkistetaan uudelleen ohjauslausekkeen i totuus (oikeudenmukaisuus, suoritus)<20 и так как 9<20 код цикла varten suoritetaan uudelleen, mutta i=9. Tämä tapahtuu niin kauan kuin kontrollilausekkeen laskennan tulos on "tosi". Kun tuloksesta tulee epätosi, ohjelma poistuu silmukasta. varten suorittamatta koodia. */
};

i = 5 on alkulauseke, mikä on muuttujan alussa i. Numero 5 on vain esimerkiksi, se voi olla mikä tahansa muuttujatyypin ilmoitus sallii i, meidän tapauksessamme se on hiiltyä Useimmissa kääntäjissä se on oletuksena etumerkitön merkkityyppi - se voi tallentaa numeroita 0-255

i< 20 - контрольное выражение. Может быть с разными операторами отношения, kaikki millä on väliä niin, että syklin aikana siitä tulee jonain päivänä "valhe" - muuten sykli "menee sykleissä", ts. Ei ikinä pääty.

i += 4 on laskuri tai muutos silmukkamuuttujaksi. Yleensä tämä i++ nuo. 1 lisätään muuttujaan jokaisessa silmukan "ajossa". Mutta jälleen kerran, se voi olla mitä haluat.

Alkukunnossa- voi olla mikä tahansa C:ssä voimassa oleva lauseke, jonka tulos on kokonaisluku.

Ohjausilmaisu- määrittää kuinka kauan silmukka suoritetaan.

Laskuri- näyttää kuinka alkuperäinen lauseke muuttuu ennen jokaista uuden silmukan suorittamista.

Ilmaisu- ei voi olla vain muuttuja, vaan muiden muuttujien funktio, esimerkiksi:

i =(7 + i*4) tai i = (muiden muuttujien funktio).

5. vaihtaa()(); - Monivalintaoperaattori, jonka avulla voit valita useista vaihtoehdoista.

Suluissa olevaa switch-avainsanaa seuraava lauseke voi olla mikä tahansa SI-kielessä sallittu lauseke, jonka arvon on oltava kokonaisluku. Tämän ilmaisun merkitys on avain valittaessa useista vaihtoehdoista. Switch-käskyn runko koostuu useista lauseista, jotka on merkitty avainsanalla case, jota seuraa vakiolauseke. Kaikkien kytkinkäskyn vakiolausekkeiden on oltava yksilöllisiä. Avainsanan kirjainkoolla merkittyjen lauseiden lisäksi voi olla, mutta aina yksi fragmentti, joka on merkitty avainsanalla oletus. Operaattoriluettelo voi olla tyhjä tai sisältää yhden tai useamman operaattorin. Lisäksi kytkinkäskyssä ei tarvitse sulkea operaattorijonoja kiharaisiin aaltosulkeisiin.

Switch-käskyn suorituskaavio on seuraava:

Suluissa oleva lauseke arvioidaan;

Laskettuja arvoja verrataan peräkkäin tapausavainsanoja seuraaviin vakiolausekkeisiin;

Jos jokin vakiolausekkeista vastaa lausekkeen arvoa, ohjaus siirretään vastaavalla tapaussanalla merkittyyn lauseeseen;

Jos mikään vakiolausekkeista ei ole yhtä suuri kuin lauseke, ohjaus siirretään oletusavainsanalla merkittyyn lauseeseen ja jos se puuttuu, ohjaus siirtyy vaihtoa seuraavaan lauseeseen.

Kaikki start-lauseen ja rungon lopun väliset käskyt suoritetaan avainsanoista riippumatta, ellei jokin käskyistä siirrä ohjausta switch-käskyn rungosta. Ohjelmoijan on siis huolehdittava tapauksesta poistumisesta tarvittaessa. Useimmiten tähän käytetään break-lausetta.

vaihtaa(ilmaisu) (

tapaus 5: C-koodi
/* tämä koodi suoritetaan, jos lausekkeen laskentatulos on yhtä suuri kuin numero 5, tämä on operaattorin työ vaihtaa loppuu */
tauko;

tapaus -32: C-koodi
/* tämä koodi suoritetaan, jos lausekkeen arvioinnin tulos on yhtä suuri kuin negatiivinen luku -32. Tämä on operaattorin tehtävä vaihtaa loppuu */
tauko;

tapaus "G": C-koodi
/* tämä koodi suoritetaan, jos lausekkeen laskentatulos on yhtä suuri kuin ASCII-taulukon G-merkkiä vastaava luku. Tässä operaattori toimii vaihtaa loppuu */
tauko;

oletus: C-koodi
/* tämä koodi suoritetaan, jos lausekkeen laskentatulos ei ole 5 eikä -32 eikä "G" ja myös koodin suorittamisen jälkeen
tauon pitäminen lopussa;

Tämä on operaattorin tehtävä vaihtaa loppuu */
};

/* vaihtaa valmis - ohjelmakoodi suoritetaan lisää */

tapaus- voi olla niin monta kuin tarvitaan ohjelman toiminnan nopeuttamiseksi; todennäköisimpiä vaihtoehtoja tulee sijoittaa korkeammalle.

oletuksena- ei vaadittu. Sitä ei voi sijoittaa loppuun.

tauko;- jos et käytä sitä, löydettyään halutun vaihtoehdon, ohjelma täyttää myös seuraavat ehdot tapaus.

6.mene- ehdottoman (välittömän) siirtymän operaattori.

Goto-käsky siirtää hallinnan käskyyn, jonka nimi on otsikkonimi. Tunnistetun lauseen tulee olla samassa funktiossa kuin goto-lauseessa ja käytetyn tunnisteen tulee olla yksilöllinen, ts. samaa nimiön nimeä ei voi käyttää eri ohjelmakäskyihin. Label-name on tunniste. jokin ohjelmamme koodi Sy... mesto_5:/* saamme tänne ohjelmarivin goto mesto_5 suorittamisen jälkeen */ koodi suoritetaan goto mesto_5:n jälkeen; ... jokin ohjelmamme koodi C:ssä... mesto_1:/* saamme tänne ohjelmarivin goto mesto_1 suorittamisen jälkeen */ koodi suoritetaan goto mesto_1:n jälkeen; ... jokin C-ohjelmamme koodi... goto mesto_1;/* mene ohjelman kohtaan, jossa mesto_1 on kirjoitettu rivin alkuun: */ ... jokin C-ohjelmamme koodi... goto mesto_5; /* mene ohjelmassa siihen kohtaan, jossa mesto_5 kirjoitetaan rivin alkuun */ ... jokin C-ohjelmamme koodi.

Esimerkki C-ohjelma

/*kohta 1 ohjelman otsikko

Se on muotoiltu kommentiksi ja sisältää yleensä tietoa

Tietoja ohjelman nimestä, tarkoituksesta, versiosta ja tekijästä
- lyhyt kuvaus ohjelman algoritmista
- selitykset MK-nastojen tarkoituksesta ja toimintatavoista, sulakkeista
- kääntäjä, työkalut ja niiden versiot
- muut tiedot, jotka katsot hyödylliseksi ilmoittaa

// kohta 2 mukaan lukien ulkoiset tiedostot

#sisältää

/* ennen kääntämistä kääntäjän esiprosessori lisää sisällön (tekstin) tämän rivin sijaan otsikkotiedosto"header" mega16.h - tämä tiedosto sisältää luettelon ATmega16 MK:ssa saatavilla olevista rekistereistä ja niiden nimien ja MK:n fyysisten osoitteiden vastaavuuden. Sinun tulee ilmoittaa kääntäjän projektin ominaisuuksissa käyttämäsi MK */

#sisältää
/* ennen kääntämistä kääntäjän esiprosessori lisää "header"-tekstin tämän rivin viive.h sijaan - tämä tiedosto sisältää toimintoja taukojen luomiseksi ohjelmaan. Nyt pitää pysähtyä kirjoittamalla: */

/* tauko N (luku) mikrosekuntia. Sen on oltava vakio - EI muuttuja!!!
Esimerkiksi:

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

viive_ms(x); /* tauko x miSec
x - voi olla muuttuja, lauseke tai luku
0 - 65535 (tyyppi allekirjoittamaton int)
Esimerkiksi:

viive_ms(3280);
delay_ms(muuttuja);
viive_ms(muuttuja*4 + 760); */

//kohta 3 käyttäjän määritelmät

#määritellä ADC_BUSY PINB.0
#määritellä NCONVST PORTB.1
/* näiden kahden rivin jälkeen ennen kääntämistä kääntäjän esiprosessori korvaa ohjelman tekstissä ADC_BUSY:n PINB.0:lla ja NCONVST:n PORTB.1:llä.
Sen sijaan, että muistaisit, että AD7896 varattu nasta on kytketty PB0-nastaasi, voit tarkistaa merkityksellisen käsitteen ADC_BUSY - "ADC varattu" merkityksen. Ja sen sijaan, että ohjaisit abstraktia nastaa PB1 (PORTB.1:n kautta), voit ohjata - NCONVST - "aloita uusi AD-muunnos".

#define - Tämä on kätevää! Mutta ei ollenkaan tarpeellista.
*/

Esimerkiksi:

#määritellä invbit(p,n) (p=p^bit(n))

Tässä muuttujat ovat "p" ja "n". Nyt käännetään bitti 5 rekisterissä PORTB Sinun tarvitsee vain kirjoittaa ohjelmaan:

invbit( PORTB,5);

Lisäksi oikeassa reunassa nämä muuttujasuureet voidaan yhdistää aritmeettisilla operaatioilla ja tällaisia ​​muuttujia voi olla monia.

Algoritmi

Minkä tahansa ohjelman kehittäminen alkaa algoritmin kehittämisestä. Meidän tapauksessamme algoritmi on seuraava: alkuasetustoimintojen jälkeen mikro-ohjaimen on mentävä jatkuvaan sykliin, jonka aikana sen on pollattava painikkeeseen liitettyä tuloa ja tilasta riippuen ohjattava LED-valoja. Kuvataan tätä tarkemmin.

Ohjelma C-kielellä

Kun luomme ohjelmaa C-kielellä, käytämme C PRO for AVR -kääntäjää. Tämä ohjelmistoympäristö on suunniteltu erityisesti AVR-mikro-ohjainten C-ohjelmien kehittämiseen.

Mikä tahansa nykyaikainen ohjelmointiympäristö ei toimi pelkästään ohjelmatekstin kanssa, vaan ns hanke.

Ohjelmoijan tehtävänä on vain kirjoittaa ohjelmateksti, jolle projektissa on varattu erillinen tiedosto tunnisteella “c”. Kääntäjä muuntaa lähdeohjelman heksadesimaalijärjestelmäksi (luo Hex-tiedoston) syöttääkseen sen (laiteohjelmisto) mikro-ohjaimen muistiin.

Jatkossa tarkastelemme lähemmin asennusprosessia ja työskentelyä C PRO for AVR -ohjelmistoympäristön kanssa. Nyt uskomme, että se on asennettu ja käynnissä.

Heti kääntäjän käynnistämisen jälkeen kaikki parametrit saavat oletusarvonsa (kaikki sisäiset laitteet sammutetaan, sisäiset I/O-portit on konfiguroitu tuloa varten, käytetään sisäistä oskillaattoria, jonka kellotaajuus on 4 MHz). Tämä vastaa mikroprosessorin alkutila järjestelmän nollauksen jälkeen. Emme koske niihin parametreihin, joita emme nyt tarvitse (jätämme ne oletusarvoiksi).

C-ohjelma näyttää tältä:

1 #Sisällytä< Atmega 128.h >

2-bittinen oldstate ; //vanha valtion lippu

3 Void main() (

4 DDB0 bitti=0; // aseta PB0-nasta tuloksi

5 DDRC = 0xFF; // määritä PC ulostuloksi

6 PORTC=0xAA; // lähdekoodi kirjoitetaan porttiin C

9 Jos (painike (& PINB,0,1,1)) ( // tunnistaa looginen

10 Oldstate =1; // lipun päivitys

11 if (oldstate && Button (& PINB, 0,1,0)) ( // havaitsee siirtymän 1:stä 0:aan

12 PORTB= ~ PORTB; //käännä PORTC

13 oldstate=0; // lipun päivitys

14) Vaikka (1); // loputon sykli