gyszerű számítógép működése gy Neumann és egy Harvard arcitektúrájú számítógép egyszerűsített blokkvázlatát mutatják az alábbi ábrák. Neumann architektúra cím busz környezet CPU ROM RAM perifériák órajel generátor reset áramkör adat busz vezérlõ busz kód memória cím busz Harvard architektúra cím busz környezet ROM (kód mem.) CPU RAM (adat mem.) perifériák utasítás kód/konstans adat reset áramkör órajel generátor adat busz vezérlõ busz
A blokkvázlaton a 4 fő egység és az azokat összekötő jelcsoportok (buszok) funkciója a következő: A CPU (Central Processing Unit) a fő egység, a többi ennek a működéséhez szükséges alegység. A kód memóriában találhatók az CPU által végrehajtamdó utasítások kódjai. Az adat memóriában tárolja a CPU a változókat. (Többnyire ennek egy részében van a szubrutinokhoz és interrupthoz szükséges memória terület is. Azonban kisebb CPU-k esetén, azt önálló hardver valósítja meg.) A perifériák teszik lehetővé, hogy a CPU a környezettel kommunikáljon, onnan adatokat kapjon és oda adatokat küldjön. A buszok teszik lehetővé az egységek közötti kommunikációt. A buszt vezérlő egységet busz masternek nevezik. lsősorban a CPU a buszmaster (de speciális periféria is lehet, de ezt itt nem részletezzük). A továbbiakban csak a CPU-ra hivatkozunk. o A címbusz a rákapcsolódó egységek egy tároló rekeszének megcímzésére (kijelölésére) szolgál. o Az adatbuszon küld vagy fogad adatot a CPU a megcímzett egységtől. o A vezérlő buszon a CPU kijelöli az adatmozgatás irányát (: olvas a megcímzett egységből, : ír a megcímzett egységbe) és vezérli ezek időbeli lezajlását. (A vezérlő busznak egyéb, itt nem részletezett funkciójú jelei is vannak.) 2
Neumann architektújájú számítógép esetén a CPU a kódmemóriát és adat memóriát olvasásnál ugyanúgy kezeli, adatmemóriából is képes utasítást olvasni. A memóriákban vegyesen lehetnek utasítás kódok és adatok (konstansok és változók is). Mivel a fenti ábrán a kód memória (ROM) és az adat memória (RAM) ugyanazon a buszon van így ez természetesen teljesül. Harvard architektújájú számítógép esetén a kód memóriához és adat memóriához külön cím és adatbusz tartozik. zért ebben az esetben a CPU csak az kódmemóriából képes utasítást olvasni, az adatmemóriában csak adatok lehetnek, utasítások nem. o A címbuszon adja ki a CPU a következő utasítás (utasításkód) címét. A következő utasítás címét mindig a PC (Program Counter) mutatja, ez a CPU része. Harvard architektúra esetén tehát ez a külön kódmemória címbusz. o Az adat buszon kapja meg a CPU a megcímzett utasítás kódját. Harvard architektúra esetén tehát ez a külön kódmemória adatbusz. Azonban a módosított Harvard architektúra esetén a kódmemóriából konstans adatot is képes olvasni (erre külön utasítása van). o A címbuszon címzi meg (jelöli ki) a CPU azt a RAM vagy periféria rekeszt, amelyet olvasni vagy írni fog. Harvard architektúra esetén tehát ez egy külön adatmemória címbusz. o Az adat buszon olvassa vagy írja a CPU az adatot a memóriába vagy perifériába. Harvard architektúra esetén tehát ez a külön adatmemória adatbusz. o A Harvard felépítés előnye az, hogy miközben az aktuális utasítás az adatmemóriát használja, az utasítás memóriából elő tudja venni a következő utasítás kódját. z a párhuzamosítás gyorsabb működést eredményez. A reset áramkör a CPU és a perifériák alaphelyzetbe hozását végzi a bekapcsoláskor (és esetleg nyomógomb megnyomására) Az órajel generátor adja az órajelet a CPU-nak és többnyire a perifériáknak is. 3
A továbbiakban egy oktatási célú, egyszerűsített mikorkontrolleren (komplett processzoros rendszer egyetlen chipben) mutatjuk be a számítógép működésének alapjait. z a rész a MiniRISC_CPU_short dokumentációban található. A következő lapok ábrái a fenti jegyzet kiegészítéseképpen a MiniRISC processzor belső felépítésének blokkvázlatán mutatják be néhány utasítás végrehajtását. Az utasítás végrehajtása 3 fázisra bontható. zt a CPU-ban levő vezérlő (szinkron sorrendi hálózatként megvalósított állapotgép) valósítja meg, a processzor többi részének megfelelő vezérlőjeleket adva. FTCH: Utasítás beolvasása az utasítás regiszterbe. A FTCH ciklus alatt a vezérlő engedélyezi az utasítás regiszterbe írást. Maga az írás a vezérlő FTCH állapota alatti órajelre történik meg. Ugyanerre az órajelre a vezérlő átlép a DCOD állapotba és a PC-t (a kódmemóriát címző számlálót) növeli, hogy az következő utasítás várható címére mutasson. (Az ugró és szubrutin hívó utasítások ezt felülírják az XCUT ciklusban.) DCOD: Az utasítás dekódolása. Annak eldöntése, hogy melyik utasításról van szó. zt az utasítás kód néhány bitje kódolja. zektől függően a vezérlő a DCOD állapot alatt jövő órajelre az aktuális utasítás végrehajtásához szükséges vezérlő jeleket előállító valamelyik XCUT állapotba lép, a sok közül (ezt itt XCUT i-vel jelöljük). Ilyenből annyi van, ahány egymástól eltérő (a vezérlő által előállítandó) vezérlő jelet igénylő utasítás van. (A vezérlő jelek egy része közvetlenül az utasításregiszterből jön. Pl. az operandusok címe.) 4
XCUT: Az utasítás végrehajtása. A vezérlő az XCUT i állapotban kiadja az aktuális utasítás végrehajtásához szükséges vezérlőjeleket. Az utasítás végrehjatása az XCUT i alatt érkező órajelre történik meg. Tehát amikor a vezérlő az XCUT i állapotból átlép a következő állapotba. (z általában a következő utasítást beolvasó FTCH állapot, ez alól kivétel, ha az utasítás alatt a vezérlő interruptot észlel.) INTRRUPT: Megszakítás. A perifériák külön jellel jelezhetik a CPU-nak, ha kiszolgálási igényük van (új adat érkezett, új adatot vár, egyéb esemény történt). A megszakítás hatására a FTCH után nem közvetlenül az XCUT hanem egy INTRRUPT állapot jön, ha a CPU-ban engedélyezett. bben az állapotban CPU a stack-re (lásd később) menti a következő utasítás címét, letiltja a további megszakításokat majd az interrupt kiszolgáló programra ugrik. A vezérlő ezután lép a FTCH állapotba és a CPU beolvasa a következő utasítást (az IT első utasítását.) Az ún. egyszerű interrupt rendszerben minden interrupt (IT) kezdőcíme ugyanott van. Az IT rutin a perifériák állapotregiszterének lekérdezésével megállapítja, hogy melyik kért IT-t. Azt kiszolgálja, majd RTI utasítással a stack-ről visszamenti a visszatérési címet és oda ugorva folytatja a megszakított programot. 5
A memória Az SP szerepe és verem tár (stack, zsák memória, LIFO) kezelése Az ún. stacket egyes utasítások és az interrupt működéséhez szükésges. A RAM memóriának egy speciálisan kezelt része vagy önálló hardwer egység. A kezelésének lényege, hogy az adatokhoz a beírással ellentétes sorrendben lehet csak hozzáférni (Last In First Out LIFO). A beírás ill. kiolvasás helyét a stack pointer (SP) tartja nyilván. A beírás előtt az SP általában a következő üres helyre pozicionálódik és oda íródik be az adat. Olvasásákor ahova az SP éppen mutat, onnan olvas, majd az olvasás után rögtön a következő (utoljára beírt) adatra pozicionálódik. beírás előtt:. beírás után: 2. beírás után:. beolvasás után: cím csökkenés SP adat2 SP adat adat SP adat SP "a zsák alja" 6
A MiniRISC processzor belső felépítésének blokkvázlata PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO KÓDMMÓRIA ADDR pmem2cpu_data cpu2pmem_addr clk rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR WdX WX RG. TÖMB (R-R5) AddrX AddrY RdX RdY x (rst) stack (IT) I IF VZÉRLÉS konstans 2 FTCH FSM DCOD XCUT i FLTÉTL JLK OP ALU OP2 FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez (A szaggatott vonallal körülhatárolt rész a MiniRISC processzor (CPU), a többi a kódmemória, adat memória és perifériák.) 7
Adatmozgató utasítás, olvasás a memóriából: FTCH (uatsítás kód olvasás) ciklus PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO KÓDMMÓRIA ADDR xd 8 pmem2cpu_data mov r, x cpu2pmem_addr 6 clk rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR WdX WX RG. TÖMB (R-R5) AddrX AddrY RdX RdY x (rst) stack (IT) I IF VZÉRLÉS konstans 2 FTCH FSM DCOD XCUT i FLTÉTL JLK OP ALU OP2 FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez 8
Adatmozgató utasítás, olvasás a memóriából: DCOD (utasítás dekódolás) ciklus PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO KÓDMMÓRIA ADDR clk 8 pmem2cpu_data next instr cpu2pmem_addr 6 rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR xd mov r, WdX WX RG. TÖMB (R-R5) AddrX AddrY RdX RdY x (rst) stack (IT) I IF VZÉRLÉS konstans 2 FTCH FSM DCOD XCUT i FLTÉTL JLK OP ALU OP2 FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez 9
Adatmozgató utasítás, olvasás a memóriából: XCUT (utasítás végrehajtás) ciklus PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO KÓDMMÓRIA ADDR 8 pmem2cpu_data next instr cpu2pmem_addr 6 clk rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR xd mov r, (r) WdX WX RG. TÖMB AddrX (R-R5) AddrY RdX RdY x (rst) stack (IT) FTCH I IF FSM DCOD XCUT mov ri,m VZÉRLÉS FLTÉTL JLK R OP ALU R 2 R OP2 R+R FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez
Adatmozgató utasítás, írás a memóriába: FTCH (utasítás beolvasás) ciklus PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO KÓDMMÓRIA ADDR x93 8 pmem2cpu_data mov 3, r cpu2pmem_addr 6 clk rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR WdX WX RG. TÖMB (R-R5) AddrX AddrY RdX RdY x (rst) stack (IT) I IF VZÉRLÉS konstans 2 FTCH FSM DCOD XCUT i FLTÉTL JLK OP ALU OP2 FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez
Adatmozgató utasítás, írás a memóriába: DCOD (utasítás dekódolás) ciklus PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO KÓDMMÓRIA ADDR 8 pmem2cpu_data next instr x2 cpu2pmem_addr 6 clk rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR x93 mov 3, r WdX WX RG. TÖMB (R-R5) AddrX AddrY RdX RdY x (rst) stack (IT) I IF VZÉRLÉS konstans 2 FTCH FSM DCOD XCUT i FLTÉTL JLK OP ALU OP2 FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez 2
Adatmozgató utasítás, írás a memóriába: XCUT (utasítás végrehajtás) ciklus PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO KÓDMMÓRIA ADDR 8 pmem2cpu_data next instr x2 cpu2pmem_addr 6 clk rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR x93 mov 3, r (r) WdX WX RG. TÖMB AddrX (R-R5) AddrY RdX RdY x (rst) stack (IT) FTCH I IF FSM DCOD XCUT mov m, ri VZÉRLÉS FLTÉTL JLK r 3 OP ALU R 2 R OP2 R+R FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez 3
aritmetikai művelet végző utasítás, összeadás: FTCH (utasítás beolvasás) ciklus PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO KÓDMMÓRIA ADDR xf 8 pmem2cpu_data add r,r x2 cpu2pmem_addr 6 clk rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR WdX WX RG. TÖMB (R-R5) AddrX AddrY RdX RdY x (rst) stack (IT) I IF VZÉRLÉS konstans 2 FTCH FSM DCOD XCUT i FLTÉTL JLK OP ALU OP2 FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez 4
aritmetikai művelet végző utasítás, összeadás: DCOD (utasítás dekódolás) ciklus PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO KÓDMMÓRIA ADDR 8 pmem2cpu_data next instr x3 cpu2pmem_addr 6 clk rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR xf add r,r WdX WX RG. TÖMB (R-R5) AddrX AddrY RdX RdY x (rst) stack (IT) I IF VZÉRLÉS konstans 2 FTCH FSM DCOD XCUT i FLTÉTL JLK OP ALU OP2 FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez 5
aritmetikai művelet végző utasítás, összeadás: XCUT (utasítás végrehajtás) ciklus PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO KÓDMMÓRIA ADDR 8 pmem2cpu_data next instr x3 cpu2pmem_addr 6 clk rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR xf add r,r (r) WdX WX RG. TÖMB AddrX (R-R5) AddrY RdX RdY (r) x (rst) stack (IT) FTCH I IF FSM DCOD XCUT add VZÉRLÉS FLTÉTL JLK add r konstans r 2 r OP OP2 ALU r+r FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez 6
PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO x3 ADDR 8 KÓDMMÓRIA cpu2pmem_addr pmem2cpu_data instr code 6 clk rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR xf add r,r WdX WX RG. TÖMB (R-R5) AddrX AddrY r=r+r RdX RdY x (rst) stack (IT) I IF VZÉRLÉS konstans 2 FTCH FSM DCOD XCUT add FLTÉTL JLK OP ALU OP2 FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez 7
Interrupt kérés hatására: interrupt elfogadás ciklus PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO x3 ADDR 8 KÓDMMÓRIA cpu2pmem_addr pmem2cpu_data instr code 6 clk rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF, x3 PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR xf add r,r WdX WX RG. TÖMB (R-R5) AddrX AddrY x (rst) stack (IT) I IF VZÉRLÉS RdX konstans RdY 2 FSM FTCH DCOD XCUT add FLTÉTL JLK OP ALU OP2 FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez 8
interrupt elfogadás ciklusból a FTCH-be lépéskor a PC-be az interrupt első utasításának címe kerül (Mini RISC processzornál ez mindig ) PRIFÉRIÁK (x-x7f) MMÓRIA (x8-xff) PDI PDO MDI MDO ADDR 8 KÓDMMÓRIA cpu2pmem_addr pmem2cpu_data clk instr code(it) 6 rst DOU (cpu2dmem_data) DIN (dmem2cpu_data) ADDR (cpu2dmem_addr) PC Z,C,N,V, I,IF PROCSSZOR ADATSTRUKTÚRA LD counter push pop IR xf add r,r WdX WX RG. TÖMB (R-R5) AddrX AddrY RdX RdY x (rst) stack (IT) I IF VZÉRLÉS konstans 2 FSM FTCH DCOD XCUT add FLTÉTL JLK OP ALU OP2 FLAG Z C N V PROCSSZOR VZÉRLÕ MiniRISC processzor feltétel jelekhez 9
Minta program A memóriában levő 2 adat beolvasása, összeadása, az eredmény kiírása a memóriába. COD mov r, data mov r, data2 add r, r mov result, r loop: jmp loop ; RG[] = DMM[] ; RG[] = DMM[] ; RG[] = RG[] + RG[] ; DMM[3] = RG[] data: DB x2 data2: DB x4 result: DB x 2
A perifériák adat CS cím belsõ buszra csatlakozás ADAT RGISZTR(K) ÁLLAPOT RGISZTR PARANCS RGISZTR(K) ÜZMMÓD RGISZTR(K) konkrét periféria funkciót megvalósító egység külvilághoz csatlakozó jelek gy periféria 4 fajta regiszterrel rendelkezhet, melyek írása, olvasása a RAM-hoz hasonló vezérlő jelekkel történik. Üzemmód regiszter: A periféria működési módjának beállítására szolgál. gy-egy periféria egy adott feladatcsoport megoldását teszi lehetővé konfigurálható üzemmódok segítségével (pl. egy timer egységgel időzítési, számlálási, impulzus generálási feladatok oldhatók meg). Parancs regiszter: A periféria valamely működését lehet vele kezdeményezni. Pl. A/D konverzió indítása. Sokszor az üzemmód és parancs reigsztert összevonják és vezérlő regiszternek nevezik. Állapot (státus) regiszter: A periféria állapotáról ad informáziókat. Az állapotregiszter bitjei ún. megszakítást is kérhetnek, ha az engedélyezett. Adat regiszter: Ide kell beírni itt lehet kiolvasni az adatot. 2
Periféria kezelési módszerek A perifériák egy része jelzést ad, ha elkészült a feladattal (új adat keletkezett vagy új adat fogadására kész). A jelzés észrevételére és az adat kezelésére 3 féle alapmódszer létezik. Hogy ezek közül melyiket célszerű alkalmazni, az a periféria és a CPU relatív sebességétől függ. A perifériákat sebesség szerint 3 kategóriába sorolhatjuk: a. A CPU sebességénél gyorsabban termel adatokat vagy gyorsabban kell kapnia adatokat, mint amit CPU képes lekezelni. (zzel most nem foglalkozunk részletesebben.) b. A periféria az indítása után elég gyorsan (néhányszor utasításnyi időn belül) elkészül, a CPU képes lekezelni. c. A periféria az indítása után nagyon soká készül el. (A CPU annak elkészültéig nagyon sok utasítást képes végrehajtani.) 22
Programozott lekérdezéses periféria kezelés A b. esetben CPU a periféria státus regiszterét figyelve veheti észre, hogy a perifériának kiszolgálási igénye van. Mivel a periféria olyan sebességgel termeli az adatot, hogy a státus figyelő ciklusban nem tölt sok időt a CPU, így nem romlik a kihasználtsága. INDÍTÁS STÁTUS OLVASÁS RADY? n ADATÁTVITL i 23
Interruptos periféria kezelés A c. esetben az a célszerű, ha a periféria aktívan jelzi a CPU-nek a kiszolgálási igényét, mert pl. programozott lekérdezésnél feleslegesen sok időt töltene a lekérdezési ciklusban. zt interrupt (IT) kéréssel teheti meg. Az IT hatása: A CPU a következő utasítás címét a stack-re menti. Többnyire letiltja a további IT-ket. lugrik az IT rutin elejére. Végrehajtaja az IT rutin utasításait. Az IT rutin utolsó utasítása RTI, aminek hatására előveszi a stakről az oda mentett címet és ennek alapján visszaugrik a megszakított program következő utasítására. Az IT rutin feladata a periféria jelzés hatására az IT rutinban gyorsan elvégezni a feladatok időkritikus részét (pl. adat elvétele). A többi kapcsolódó (nem időkritikus) feladatot a főprogramra kell hagyni. 24
Az IT rutin címéne meghatározása, IT rendszerek gyszerű IT rendszer: Minden IT rutin ugyazon a címen kezdődik. Az IT kérő periféria beazonosítása a státusregiszterek lekérdezésével történik ITj FUTÓ PROGRAM cím i+ közös IT rutin: RGISZTR MNTÉSK cím i+: UTASÍTÁS i UTASÍTÁS i+ STÁTUS_ OLVASÁS RADY? i i CALL Kiszolgáló rutin STÁTUS_j OLVASÁS RADY j? i i CALL Kiszolgáló rutin j PC= cím i+ RGISZTR MNTÉSK RTI 25
MiniRISC_short jegyzetből megnézendő perifériák Perifériák közül basic IO (GPIO General Pripheral Input Output) regisztereinek funkciója: o programozhatóan bemenet vagy kimenet lehet o irányregiszterrel állítható be a bitek iránya o kimeneti adatregiszterbe írandó a kimeneti adat (az irányt kimenetbe kell állítani, mert csak akkor jelenik meg az adatvezetékeken) o bemeneti adatregiszterből olvasható be a port adatvezetékein megjelenő logikai érték (bemenet esetén a kivülről rátett adat, kimenet esetén a kimeneti adatregiszter tartalma) o Pl. Kimenetként állítva be/ki kapcsolhat egy LD-et. Bemenetként állítva visszadhatja egy kapcsoló állását (bekapcsolt vagy kikapcsolt). USRT (Universal Synchron Receiver Transmitter) funkciója: o A CPU és távolabbi külső egység (pl. PC) közötti 2 irányú soros (bit-soros) kommunikációra használható. o kétirányú szinkron soros port o órajel ütemezi az adatátvitelt o a kimenet adatbiteket időben sorosan adja ki a kimenetén (TX), az órajellel szinkronban o a bemeneti adatbiteket időben sorosan veszi a bemenetén (RX), az órajellel szinkronban o a státus regiszter jelzi, ha a bemeneti regiszterbe adat jött ill. ha a kimeneti regiszterben van hely újabb adatnak 26