Portside lugemine avr SI-s. AVR mikrokontrolleri käsu süsteemi uuring

Sissejuhatus

Kõik I / O sadamad (PVW) AVR-mikrokontrollerid töötavad lugemise muutmise põhimõttega, kui kasutate neid universaalsete I / O sadamate sadamatena. See tähendab, et ühe sadamaliini I / O-pordi suunda muutmine SBI ja CBI käskude puhul toimub ilma valede muutusteta teiste sadamatorude osa suunas. See laieneb ka loogilise taseme muutmisele (kui sadamaliin on toodangule konfigureeritud) või sisselülitamiseks / keelamiseks pull-up takisti (kui joon on konfigureeritud). Igal väljundpuhvril on sümmeetriline kontrolli iseloomulik kõrge voolava ja voolava väljundvooluga. Väljundjuhtil on kandevõime, mis võimaldab teil otse juhtida LED-indikaatoreid. Alternatiivselt selektiivse takisti pingutamise võimsusega saab ühendada kõigi sadamajoonega, mille resistentsus ei sõltu toitepingest. Kõigil PVV liinidel on paigaldatud kaitsedioodid, mis on ühendatud VCC-ga ja üldisega (GND), nagu on näidatud joonisel 29. PVV parameetrite üksikasjalik nimekiri on toodud sektsioonis "Elektrilised omadused".

Joonis 29 - ekvivalentne PVV joon diagramm

Lingid registrite registritele ja bittile see osa Daass üldiselt. Samal ajal asendab sümbol "X" PVV nimi ja sümbol "N" asendab PVV tühjendusnumbri numbri. Programmi tegemisel peate siiski kasutama salvestamise täpset vormi. Näiteks portb3, mis tähendab kategooria 3 port B, käesolevas dokumendis salvestatakse PortXN. Füüsilise I / O registrite aadressid ja nende heidete jaotus on näidatud I / O sadamaregistrite kirjelduses ".

Iga I / O-pordi puhul I / O mälu puhul on kolm rakke reserveeritud: üks andmeregistri all - PortX, teine \u200b\u200bandmejuhiste registri jaoks - DDRX ja kolmas sadama sisendite osariigi all - Pinx. Rakk, mis salvestab riigid sadamate sisendites, on ainult loetavad ja andmeregistrite ja andmekandjatega on kahesuunaline juurdepääs. Lisaks karmistamise SFOOR PUD PUD \u200b\u200bPUD \u200b\u200bPÕLLUMAJANDUSKASUTE KINNITAMINE PUD Registreerige kõikide sadamate väljunditele.

Allpool on kirjeldatud I / O sadama universaalse digitaalse I / O. Enamik sadamate järeldusi toetavad sisseehitatud sisseehitatud alternatiivseid funktsioone perifeersed seadmed Mikrokontroller. Alternatiivse funktsiooni kirjeldus on lisaks ette nähtud "alternatiivse sadamafunktsioonides" alajaos (vt ka vastava perifeerse moodulite funktsioonide kirjeldus).

Pange tähele, et mõnede sadamate puhul muudab mõnede järelduste alternatiivsete funktsioonide lahendamine võimatuks kasutada kõiki universaalse sisendi väljundi väljundeid.

Sadamad Universal Digital I / O

Kõik sadamad on kahesuunalised I / o sadamad, millel on valikulised pull-up takistid. Joonis fig 30 illustreerib ühe sisendi väljundi pordi liini funktsiooniagramm, mis on näidatud pxn-i kujul.


Joonis 30 - Universaalse digitaalse I / O (1) korraldamine

Umbes. 1: WPX, WDX, RRX, RPX ja RDX-signaalid on tavalised ühe sadama jooksul. CLKI / O, Sleep ja PUD-signaalid on kõigile sadamatele ühised.

Järeldused

Iga toodangu režiim ja seisund määratakse kindlaks kolme registri vastavate numbrite väärtusega: DDXN, PORTXN ja PINXN. Nagu on näidatud "I / O sadama registri kirjelduses", on I / O ruumi DDXN-i aadressil juurdepääs DDXN-i aadressil ja vastavalt portxn bitti portx-aadressil ja Pinxn bitti pinx-is.

DDXN DDRX DDRX BITS määravad I / O-liini suund. Kui DDXN \u003d 1, siis PXN on kuvatud kuvamiseks. Kui DDXN \u003d 0, siis PXN on konfigureeritud sisenema.

Kui portXn \u003d 1, kui sadamaliini konfigureerimisel sisestatakse sisend, on karmistuskindluse ühendus lubatud. Selle takisti väljalülitamiseks peate kirjutama portxni logile. 0 või konfigureerige sadamaliini väljundile. Lähtestamisel on kõik sadamajooned kolmandas (kõrge pressitud) olekus, isegi kui sünkroniseerimine ei tööta.

Kui portXn \u003d 1 Portliini seadistamisel toodangule määratakse väljund olek PortXN väärtusega.

Kuna samaaegse sisenemise DDRX ja PortX registrid ei ole võimalik, siis lülitumise kolmanda riigi ((DDXN, PORTXN) \u003d 0B00) ja väljund logi. 1 (((((DDXN, PORTXN) \u003d 0B11) Vahepealne olek peaks toimuma või ühendatud pingutusvastase takistusega ((DDXN, PORTXN) \u003d 0B01) või välja toodanguga. 0 ((DDXN, PORTXN) \u003d 0B10). Reeglina üleminek riigi kaudu, millel on tõmbetaktooriumi ühendamine, võrdub log.1 väljund olekusse, kui mikrokontrolleri väljund on seotud suure impedantsi sisendiga. Vastasel juhul on vaja luua SFIOOR PUD PUD \u200b\u200bBIT-i, et välja lülitada kõik kõik sadamate pingutusvastased takistid.

Lülitamise takistuse ja väljundi sisenemise vahetamine madal tase sarnase probleemiga seotud. Seetõttu on kasutaja sunnitud kasutama või kolmandat riiki ((DDXN, PORTXN) \u003d 0B00) või väljundlogi. 1 ((DDXN, PORTXN) \u003d 0B11) vahepealse sammuna.

Tabelis 25 on kokku võetud kontrolli signaale väljundstaatuse.

Tabel 25 - Sadama väljundi seadistamine

DDXN. PortXn. PUD (Sforis) Sisend väljund Pingutav takisti Kommenteerima
0 0 X. Sisend Mitte
0 1 0 Sisend Jah PXN on välise madala taseme rakendamisel praegune allikas
0 1 1 Sisend Mitte Kolmas riik (z-osariik)
1 0 X. Väljund Mitte Väljundlogi. 0 (vooluvool)
1 1 X. Väljund Mitte Väljundlogi. 1 (voolav voolu)

Loe väljund olekut

Sõltumata DDXN-andmefaili väärtusest võib sadama väljund olekut intervjueerida PINXN registri bitti kaudu. Nagu on näidatud joonisel fig 30, siis PINXN registri bitt ja käivitusriivide puhul eelneb see sünkroniseerija. Selline lähenemine Võimaldab vältida metastabiilsust, kui väljundi muutus toimus sisemise sünkroniseerimise ees. Selline lähenemisviis on siiski seotud viivituse esinemisega. Joonis 31 kujutab endast ajutist sünkroniseerimisskeemi väljundtaseme väliselt küsitluse ajal. Signaali jaotuse minimaalse ja maksimaalse viivituste kestus on märgitud vastavalt TPD, MAX ja TPD, min.


Joonis fig 31 - sünkroonimine väljundile rakendatud taseme uuringu käigus

Järgnevatel näidetes on näidatud, kuidas paigaldada sadama read 0 ja 1 logile. 1 ja read 2 ja 3 - logi. 0, samuti kuidas seadistada read 4 ... 7 sisestada koos liinide pingutusvastaste ühenduste ühendamisega 6 ja 7. Ridade olek loetakse tagasi, kuid eespool nimetatud NOP-i arvestamist Avaldus on võimaldanud tagada tagasilöögi võimalus vaid mõningate järelduste märkimisväärse seisukorra.

Proovi kood kokkupanek (1) ...; Lubage mul tõmmata ja paigaldada kõrge väljundtasemed; Määrake LDI R16 sadamate nende jooniste suundades (1<

Umbes. 1: Assembler programm kasutab kahekordset registrit, et minimeerida ajavahemikku tõmbetakistide reguleerimisest väljaheited 0, 1, 6 ja 7 õige paigaldamise suunda suunda suunda suunas. 0 liinidel 2 ja 3 asendades kõrgetasemelisele tasemele 0 ja 1, mis on moodustatud tihendamisvastaste ühendamisega kõrge praeguse juhi kõrge tasemega.

Digitaalse sisendi eraldusvõime ja unerežiimid

Nagu on näidatud joonisel fig 30, saab sisendi digitaalse signaali korraldada Schmita Trigger sisendisse. Figuuri märgitud signaalina Sleep on seadistatud, kui mikrokontroller tõlgitakse sisselülitamisrežiimi, ökonoomne režiimi, töörežiimi ja täiustatud töörežiimi. See väldib praeguse tarbimise suurenemist, kui mõned sisendsignaalid on ujuvas olekus või sisendsignaalide tase on VCC / 2 lähedal.

Unetasignaali ignoreeritakse väliste katkestuste sisendite abil. Kui välise katkestuse taotlused on keelatud, kehtib une nende järelduste jaoks. Sleep ignoreeritakse ka mõnel muul sisenditel nende alternatiivsete funktsioonide täitmisel (vt "Alternatiivsed sadamafunktsioonid").

Kui välise asünkroonse katkestuse väljundi puhul on konfigureeritud, et katkestada suureneva esiosa, langeva esiosa või muutuse, on logi tase. 1 Ja samal ajal välise katkestus ei ole lubatud, välise katkestuse vastav lipp määratakse ülalnimetatud unerežiimide väljumisel, sest Sisend Shunt funktsioon unerežiimides toob kaasa loogilised muudatused.

Nõustumise järeldused

Kui mitmed järeldused jäävad kasutamata, on soovitatav tagada konkreetse loogilise taseme olemasolu. Hoolimata asjaolust, et enamik digitaalseid sisendeid on sügavates unerežiimides keelatud, nagu eespool kirjeldatud, on vaja vältida ujuva sisendeid, et vältida praeguse tarbimise suurendamist kõigis teistes mikrokontrolleri režiimides, kus digitaalne sisend on lubatud (lähtestamine, aktiivne režiim ja aktiivne režiim ja ooterežiim).

Lihtsaim meetod teatud taseme olemasolu tagamise meetod kasutamata toodangul on lahendada sisemise karmistamise takisti ühendamine. Sellisel juhul on nullimisrežiimis siiski keelatud tõmbetakistid. Kui madal tarbimine on vajalik ja reset režiimis, on vaja paigaldada välise pingutuse takisti pluss või miinus võimsus. Väljundite ühendamine otse VCC-le või GND-le ei ole soovitatav, sest Sellise väljundi juhusliku konfiguratsiooni korral võib tekkida ohtlik vool.

Bitched toimingud põhinevad loogilistel operatsioonidel, mida oleme juba varem kaalunud. Neil on oluline roll AVR-mikrokontrollerite ja muude tüüpide programmeerimisel. Peaaegu programmi kulud ilma pekstud toimingute kasutamiseta. Enne seda me tahtlikult vältisime neid hõlbustada protsessi uurimise programmeerimise MK.

Kõigis eelmistes artiklites programmeerisime ainult I / O sadamate a ja ei kasutanud näiteks täiendavaid sisseehitatud sõlme, näiteks taimereid, analoog-digitaalseid muundureid, katkestusi ja muid sisemisi seadmeid, ilma milleta MK kaotab kogu selle võimu.

Enne sisseehitatud MK-seadmete arendamise jätkamist peate õppima, kuidas juhtida või kontrollida AVR MK registrite individuaalseid bitte. Varem tegime läbi tšeki või seadistame heidete korraga. Käsitleme sellega, mis on erinevus ja seejärel jätkake edasi.

Villimisoperatsioonid

Kõige sagedamini, kui programmeerides AVR-mikrokontrollereid, kasutasime sellepärast, et sellel on suurem nähtavus võrreldes algaja programmeerijate MK-ga ja hästi selgeks. Näiteks me peame installima ainult kolmandat port D. Selleks, nagu me juba teame, saate kasutada järgmist binaarkoodi:

PORTD \u003d 0B00001000;

Siiski seadsime selle meeskonna 3. kategooria ja kõik teised (0, 1, 2, 4, 5, 6 ja 7.) me viskasime nullil. Ja nüüd olgem praegu olukorra, et 6. ja 7. heitmed on seotud ADC sisendite ja sel ajal vastavate järelduste MK saavad signaali mis tahes seadme ja me rakendasime ülaltoodud käsule, lähtestage need signaalid. Selle tulemusena ei näe mikrokontroller neid ja usub, et signaalid ei tulnud. Seetõttu peaksime sellise meeskonna asemel rakendama teist, mis oleks paigaldanud ainult 3. bitti ühiku kohta, ei mõjutasid teisi bitte. Selleks rakendatakse tavaliselt järgmist pekstud operatsiooni:

Portde | \u003d (1<<3);

Süntaksi kirjeldame allpool üksikasjalikult. Ja nüüd veel üks näide. Oletame, et peame kontrollima Pind Registri 3. väljavoolu staatust, kontrollides seeläbi nupu olekut. Kui see väljalaske lähtestatakse nullini, siis me teame, et nupp vajutatakse ja seejärel teostatakse käsu kood, mis vastab pressitud nupu seisukorrale. Me kasutasime varem järgmist kannet:

kui (Pind \u003d\u003d 0B00000000)

(mis tahes kood)

Kuid selle abiga me ei kontrolli mitte eraldi, - 3. ja kohe kõik bitti Pind register. Seega, isegi kui vajutate nuppu ja soovitud tühjenemine lähtestatakse, kuid sel ajal saab signaal signaali mis tahes muule portimise väljundile, paigaldatakse vastav eluiga ühele ja sulgude seisund on sulgudes FALSE. Selle tulemusena ei teostata lokkis sulgudes asuvat koodi isegi siis, kui nuppu vajutatakse. Seetõttu tuleks Pind Registri individuaalse 3. natuke kontrollida partii operatsiooni:

iF (~ Pind & (1<<3))

(mis tahes kood)

Töötada eraldi bitti mikrokontrolleri C programmeerimine Arsenal, seal on, millega saate muuta või kontrollida staatuse ühe või mitme individuaalse bitti kohe.

Eraldi bitti paigaldamine

Eraldi bitti paigaldamine, näiteks port D, rakendatakse painutatud operatsiooni või. See oli tema, et me kasutasime artikli alguses.

PORTD \u003d 0B00011100; // esialgne tähendus

PORTD \u003d PORTD | (üks<<0); применяем побитовую ИЛИ

Portde | \u003d (1<<0); // сокращенная форма записи

PORTD \u003d\u003d 0B00011101; // Tulemus

See käsk teostab nulli tühjenemise paigaldamise ja ülejäänud lehed muutumatuks.

Näiteks installige teine \u200b\u200bkuuenda pordi kategooria.

PORTD \u003d 0B00011100; // sadama algne seisund

Portde | \u003d (1<<6); //

PORTD \u003d\u003d 0B01011100; // Tulemus

Seade salvestamiseks kohe mitmeks eraldi bitti, näiteks , kuues ja seitsmes sadam B. Järgmine kanne kehtib.

Portb \u003d 0B00011100; // esialgne tähendus

PortB | \u003d (1<<0) | (1<<6) | (1<<7); //

Portb \u003d\u003d 0B1011111; // Tulemus

Lähtesta (reset) individuaalsed bitid

Eraldi bitti lähtestamiseks rakendatakse kolme eelnevalt läbi vaadatud käske: .

Lähtestage portc-registri 3. kategooria ja jätke ülejäänud ülejäänud muutmata.

Portc \u003d 0B00011100;

Portc & \u003d ~ (1<<3);

Portc \u003d\u003d 0B00010100;

Teha Sarnased meetmed 2. ja 4. kategooriate jaoks:

Portc \u003d 0B0011110;

Portc & \u003d ~ ((1<<2) | (1<<4));

Portc \u003d\u003d 0B00101010;

Biti vahetamine

Lisaks paigaldamisele ja lähtestamisele kasutatakse ka kasulikku käsku, mis lülitub vastupidisele osalejale eraldi bitt: üks null ja vastupidi. Seda loogilist operatsiooni kasutatakse laialdaselt erinevate valgustustegevuse konstrueerimisel, näiteks uusaasta Garland. Kaaluge porta näidet

Porta \u003d 0B00011111;

PORTA ^ \u003d (1<<2);

Porta \u003d\u003d 0B00011011;

Muutke nulli, teise ja kuuenda bitti olekut:

Porta \u003d 0B00011111;

PORTA ^ \u003d (1<<0) | (1<<2) | (1<<6);

PORTA \u003d\u003d 0B01011010;

Kontrollige eraldi bitti olekut. Lubage mul teile meelde tuletada, et I / O-pordi kontrollimine (erinevalt salvestamisel) viiakse läbi PIN-koodi andmete lugemisega.

Kõige sagedamini kontrollitakse kontrolli ühe kahe tsüklioperaatori poolt: kui ja samas. Me oleme nende operaatoritega juba tuttavad.

Loogilise nulli (reset) olemasolu kontrollimine kui.

kui (0 \u003d\u003d (Pind & (1)<<3)))

Kui Port D-kohaline kolmas number lähtestatakse, siis kood1 täidetakse. Vastasel juhul teostatakse kood2.

Sarnased toimingud viiakse läbi sellise salvestuse vormiga:

iF (~ Pind & (1<<3))

Kontrollige heakskiidu loogilise üksuse (paigaldus) juuresolekul kui.

kui (0! \u003d (Pind & (1)<<3)))

iF (Pind & (1)<<3))

Ülaltoodud kaks tsüklit töötavad sarnaselt, kuid võivad programmeerimiskeele paindlikkuse tõttu C-del C, on salvestamise erinev vorm. Operatsioon! \u003d Näitab ei ole võrdne. Kui PD I / O-pordi kolmas tühjendamine on seatud (üksus), täidetakse see kood1, kui mitte - Code2.

Ootan bitti samas

kuigi (Pind & (1)<<5))

Code1 täidetakse samas 5. kategooria Pind Register on seatud. Selle lähtestamisel käivitatakse kood2.

Ootab patalide paigaldamist samas

Siin süntaks keele c võimaldab teil kirjutada koodi kahe kõige levinuma võimaluse. Praktikas rakendatakse mõlemat salvestusliiki.

Mikrokontrolleri programmeerimise üks olulisemaid aspekte on töötada registrite ja sadamatega. AVR-seeria mikrokontrolleritel on mitu I / O registreid ja 32 üldotstarbelist registrit. Programmeerija ei saa numbri otseselt kirjutada sisend- / väljundregistrisse. Selle asemel peab see kirjutama üldotstarbelisele registrile ja seejärel kopeerib selle registri väärtuse I / O registrile. Tööregistrid on märgitud kui R1, R2, ..., R31.

Kirjutamisprogrammide lihtsustamiseks on väga mugav nime registrite anda. Soovitatav on anda salvestatud teabele vastavaid nimesid. Näiteks, kui R16 register kasutatakse ajutise teabe salvestamiseks, võib seda nimetada tempiks. Seda tehakse järgmiselt:

Selleks, et mitte "helistada" I / O-registritele ja mikrokontrolleri peamistele registritele, piisab programmi alguses, et ühendada kasutatud mikrokontrolleri suhtes kohaldatav päisefail. Need. See ei pea andma sadamate, taimerite / loendurite sadamate nimesid jne. Näiteks, kui programm on mõeldud AT90S8515 mikrokontrolleril:

Lisage "8515def.inc"

AT90S1200 mikrokontrolleri jaoks on sisend- / väljundregistrite jaoks väga esimene AVR-mikrokontrolleri puhul numbrid alates $ 0 kuni $ 3F (sõltub MK mudelist). Eraldi saate valida portb I / o registrid, PINB, Port, Pind (neil on tähestikuline märge pärast 1200def.inc. ja nende aadressi ühendamist $ 18, $ 16, $ 12, $ 10 - nõus väga raske hoida digitaalsed konstandid Minu peas, lihtsam tähtnimed). Viimased mikrokontrollerid AVR-pordid on palju suuremad, neid nimetatakse a, b, c, d, e ...

Mõtle populaarse mikrokontrolleri atty2313 järelduste asukohta. Jalad 2-9, 11 nimedega PD0 - PD7 on port D, sarnaselt Port B. Pange tähele, et port B on kaheksa-bitine ja port D on seitse.

Sadamad võivad töötada sisenditena ja väljunditena. Kui sadam töötab sisendina, siis selleks, et arvestada väärtuste, peate pääsema PINB või Pind Register - sõltuvalt sellest, millist sadama lugeda. Kui mõned männid on kõrge tase, mis vastavad logile. "1", siis vastavad bitid lugemisväärtuste paigaldatakse "1". Järeldused on võimelised taluma voolu kuni 20 mA, kuid mitte unustama kõigi sadama sadamate koguvoolu kohta. On piiranguid. Kui sadamas on väljund, paigaldatakse sadamaliinide väärtused, salvestades vastava väärtuse portbi- või port-pordi registrile. Logi loomiseks. "1" sadama väljund, vastav bitt portb või Portde register tuleks paigaldada.

Sadama kõige olulisem tööpunkt on töötada riivide registriga, mis vastutab sadamaliinide toimimise eest sisendile või väljumisele. Selle registri nimi DDRX, kus X on sadama kiri. Jalgade väljundite tegemiseks peame kirjutama vastavatele bittile "1". Näiteks tahame teha PB7 sadama sadama sissepääsu ja ülejäänud jalgade väljundid, siis on vaja kirjutada DDRB registri väärtuse 0B01111111. Eesliide 0B tähendab, et number kajastatakse binaarses vormis. Alustades on DDRX-registrid lähtestanud, st. Kõik jalad on sisendid. Soovitatavad kasutamata jalad seadmes sisendite tegemiseks.

Mõtle lihtne programm, mis töötab mikrokontrolleri pordiga:

Sisaldama "8515def.inc"; Ühendage fail registri kirjeldustega .DEF temp \u003d R16 RJMP lähtestamine; Üleminekuvektor Kui reset lähtestatakse: LDI temp, 0B00000011; Määrake PC0 ja PC1 välja DDRC, Temp LDI temp, 0B00000001; Valmistame LED LEG PC0 välja Portc, temp temp, PINC; Lugege sadamast saadud taset ... loop :; Põhitsükli NOP RJMP loop

Natuke

Lugemine / kirjutamine

Algväärtus

· Bit 7 - kõigi katkestuste luba. Katkestuste lahendamiseks tuleb see natuke seada riik 1. Konkreetse katkestuse lahendamist teostab EIMSK ja Timski katkestamise register. Kui see bitt on kustutatud (\u003d 0), siis ükski katkestusi töödeldakse. Bit riistvara kustutatakse pärast katkestuse esinemist ja paigaldatakse järgneva katkestuse resolutsiooniks RETI käsuga.
· Bit 6 - Kopeeri kaitse bitt. Blod ja BST bitte kopeerimiskäsud kasutavad lahingute ajal seda bitt allikana ja vastuvõtjana. Üldotstarbelise BST-käsu natuke kopeeritakse bitt t, BLD-käsk Bitt t kopeeritakse üldotstarbelise registri bittile.
· Bit 5 - Semi-Mannenos lipp. See näitab tetradi vahelist üleminekut mitmete aritmeetiliste toimingute tegemisel.
· Bit 4 - märk märk. Bit S on väärtuse tingimuse tulemus, välja arvatud (N (+) V) üle lipud negatiivse väärtuse (N) ja täiendused kahe ülevoolu lipu (V).

· Bit 3 - lisaks kahele ülevoolu lipule. See toetab täienduste aritmeetilist kahele.
· Bit 2 - Negatiivse väärtuse lipp. See lipp näitab negatiivset tulemust mitme aritmeetilise ja loogilise operatsiooni.
· Bit 1 - nullväärtuse lipp. See lipp näitab mitmete aritmeetiliste ja loogiliste operatsioonide nulltulemust.
· Bit 0 - ülekande lipp. See lipp näitab aritmeetiliste ja loogiliste operatsioonide ülekandmist.

AT90S8535 mikrokontrolleril on 4 paralleelset I / o porte A, B, C ja D.
Port A on 8-bitine kahesuunaline sadam. Koostoimed Port A viiakse läbi kolme registri kaudu andmekasti / väljundruumi: Data Register - Porta, $ 1B ($ 3B), Data suunas Register - DDRA, $ 1A ($ 3a), sisendandmeregister - Pina, $ 19 ($ 39). Pina register pakub ainult lugemise võimalust ja Porta ja DDRA registrid on lugemise ja kirjutamise võimalus. Pina register ei ole sõna täielikus mõttes register. Apellatsioonkaebuse ta tagab iga sadama väljundi füüsilise seisundi lugemise. Port A pakub ka analoog-A / D-signaale.

Port Data Register A -Porta

Natuke

Lugemine / kirjutamine

Algväärtus

Sadamaandmete andmete registreerimine A -Ddra

Natuke

Lugemine / kirjutamine

Algväärtus

Port a -Pina.

Natuke

Lugemine / kirjutamine

Algväärtus

Port B on 8-bitine kahesuunaline I / O port. Samuti sadama ja koostoime sadamaga viiakse läbi kolme registri kaudu andmekasti / väljundruumi: Data Register - Portb, $ 18 ($ 38), Data Suund Register - DDRB, $ 17 ($ 37) ja $ 37) ja Sisend Register - Pinb, $ 16 ($ 36). PINB-register pakub ainult lugemist. PINB-register ei ole sõna täielikus mõttes register. Apellatsioonkaebuse ta tagab iga sadama väljundi füüsilise seisundi lugemise. Pilte sadama saab teha alternatiivseid funktsioone märgitud tabelis. 2.1.

Tabel 2.1. Alternatiivsed sadamaotsingute funktsioonid

Sadama väljund

Alternatiivne funktsioon

T0 - taimer / taimer / counter saba sisend 0

T1 - Taimeri kella sisestamine / meeter 1

AIN0 - positiivse võrdlusalase järeldus

Ain1 - negatiivne võrdlusalade järeldus

- sisselogimise valik Spi

MOSI - Paigaldamine Plii väljund / kiirus SPI sisend

MISO - Paigaldamine Plii sisselogimise / kiiruse väljund SPI

SCK - SPI kella signaal

Alternatiivsete funktsioonide järelduste kasutamisel tuleb vastavalt paigaldada portbiregistrid DDRB.

Sadamaandmete registerB.Portb.

Natuke

Lugemine / kirjutamine

Algväärtus

Directing sadama andmete B -DDRB.

Natuke

Lugemine / kirjutamine

Algväärtus

Sisendandmendiandmete register B -PINB.

Natuke

Lugemine / kirjutamine

Algväärtus

Port C on 8-bitine kahesuunaline I / O port. Samuti, kuidas sadamad a ja koostoime sadama C viiakse läbi kolme registri kaudu andmemälu / väljund / väljund ruumi: Data Register - Portc, $ 15 ($ 35), Data Suund Register - DDRC, $ 14 ($ 34) ja sisendandmeregister - PINC, $ 13 ($ 33). PINC-register pakub ainult lugemise võimalust ja Portci ja DDRC-registrid on lugemise ja kirjutamise võimalus. PINC-register ei ole sõna täielikus mõttes register. Apellatsioonkaebuse ta tagab iga sadama väljundi füüsilise seisundi lugemise.
Sadamas saab teha ainult kahe väljundiga alternatiivseid funktsioone: PC6 ja PC7 järeldused täita Tosc1 ja Tosc2 taimeri funktsioone / Counter 2.

Sadamaandmete registerC.Portc.

Natuke

Lugemine / kirjutamine

Algväärtus

Directing Port Data C -DDRC.

Natuke

Lugemine / kirjutamine

Algväärtus

Input Data Register C -Pinc.

Natuke

Lugemine / kirjutamine

Algväärtus

Port D on 8-bitine kahesuunaline I / O-port. Samuti, nagu sadamates A, B ja koostoimetega port D, läbi kolm registrit andmete sisend / väljundruumi: Data Register - PortDD, $ 12 ($ 32), Data suunas Register - DDRD, $ 11 ($ 31) ja sisend register - Pind, $ 10 ($ 30). Pind Register pakub lugemist ja Pordi- ja DDRD-registrid loevad ja kirjutavad. Pind Register ei ole sõna täielikus mõttes register. Apellatsioonkaebuse ta tagab iga sadama väljundi füüsilise seisundi lugemise.
Port D järeldused võivad teha tabelis nimetatud alternatiivseid funktsioone. 2.2.

Tabel 2.2. Sadama järelduste alternatiivsed funktsioonid D

Sadama väljund

Alternatiivne funktsioon

RXD - UART vastuvõtja sissepääs

TXD - UART-saatja väljund

INT0 - välise katkestuse sisend 0

Int1 - välise katkestuse sisend 1

OC1B - Taimeri / loenduri väljundvõimsus 1

OC1A - väljundi võrdlus ja taimer / counter 1

ICP - Taimeri püüdmise käivitamise kirje 1

OC2 - taimer / loenduri väljundi võrdlus Väljund 2

Alternatiivsete funktsioonide väljundite kasutamisel tuleb vastavalt paigaldada portde, DDRD-registrid.

Sadamaandmete registerD.Portde.

Natuke

Lugemine / kirjutamine

Algväärtus

Sadamaandmete registerD.DDRD.

Natuke

Lugemine / kirjutamine

Algväärtus

Sadama sisendregisterD.Pind.

Natuke

Lugemine / kirjutamine

Algväärtus

Alates esimesest vaadeldav on esimene, siis kõik õpilased kõigepealt teha sama tööd õpilaste oskuste omandamiseks töötada laboratoorse kompleksiga. Nende töökohtadest tutvustatakse neid PEVM-i sama lahutamise probleemi 5-nda 2. punktis 1.5.3.1. Pärast programmi koostamist on kirjutatud töökohale mikrokontrollerile ja selle töö tõendab õpetaja.
Pärast sellise tuttava kompleksiga hakkab õpilane teostama individuaalset ülesannet. Aja möödumisel võib õpetaja individuaalse ülesande raskendada.