Cím:
Mikrovezérlık története (nagyon) röviden
Készítette:
Motika László Károly SZTE TTK Mérnök Informatikus I. félév
2006. november
Mikrovezérlık története (nagyon) röviden A beágyazott számítógépeket (melyeket mikrovezérlıknek is neveznek.) széles körben használják. A körülöttünk lévı elektromos eszközök akár nagyszámban tartalmazhatnak beágyazott számítógépeket. Egy modern autóban 10-50, egy repülıgépben akár több száz darab is lehet. A körülöttünk lévı háztartásokban használt eszközök is tartalmaznak ilyen eszközöket. Például: • Háztartási eszközökben: automata mosógép, mikrohullámú sütı, Lakás főtı, -hőtı berendezések, riasztó berendezésekben, idı- víz- villanyfogyasztás mérı berendezések. • Kommunikációs eszközökben: kaputelefon, telefon, telefax berendezések, üzenetrögzítı. • Szórakoztató elektronikai eszközök: rádió, televízió, videó magnó, DVD –lejátszó. • Játékok: játékkonzolok, távvezérelt játékok. • Orvosi berendezések: vérnyomásmérı, vércukor szintmérı. • Egyéb eszközök: étel- ital- bank- automaták. Ezek az eszközök egyetlen lapkára integrált komplett számítógépek, tartalmazzák a mőködésükhöz szükséges processzort (CPU-t), memóriát, illetve perifériavezérlıt. A perifériák lehetnek nyomógombok, érzékelık, szenzorok. Kimenetei lehetnek valamilyen megjelenítık (pl.: LCD -kijelzı, LED -dióda, visszajelzı lámpák.), illetve adat kimenetek pl.: soros port. Kimenetei vezérelhetnek valamilyen eszközt pl.: motorvezérlés, vagy akár csak egy kapcsoló. A mikroprocesszor típusától függetlenül egy mikrogépnek a következı fıbb részekkel kell rendelkeznie: • a központi egység (ez a mikroprocesszor). A mikroprocesszor a mikrogép központi egysége. Az eredeti angol elnevezése alapján szokták CPU-nak is mondani. Jellemzıi alapvetıen meghatározzák a teljes mikrogép mőködését. Funkcióit a következıképpen foglalhatjuk össze: 1. A mikrogép minden eleme számára biztosítja az idızítı és vezérlıjeleket. 2. Elvégzi az adatok és utasítások tárból/ba való mozgatását. 3. Dekódolja és végrehajtja az utasításokat. 4. Irányítja a be/kimeneti egységekkel kapcsolatos adatforgalmat. • a programtár és adattár (ez a memória, ami lehet közös (pl. PC-nél), vagy különálló), az egyikben a mőködtetı program, a másikban a program mőködése során létrejövı, vagy a külvilág felıl érkezı adatok vannak tárolva, • a be és kiviteli egység, (Input/Output, röviden I/O, vagy Be/Ki egység) (ezek neve: periféria) amely a külvilággal tartja a kapcsolatot, • az egységek közötti információ- és adatáramlást biztosító vonalak. Ez a kommunikáció az ún. síneken vagy más néven, busz vonalakon keresztül valósul meg. A sín azonos funkciójú vezetékek csoportja. Erre a vezetékkötegre minden egység párhuzamosan kapcsolódik azért, hogy egymáshoz információt tudjon továbbítani. Például a mikroprocesszor, a memória valamint a be- és kimeneti áramkörök, az egymás (és a külvilág) közötti adatcsere érdekében ugyanarra a nyolc vezetékre kapcsolódnak, és ez az adatsín. A mikrovezérlık vagy már eleve a gyártó által beégetett szoftverre, vagy a felhasználó által programozható állapotba kerülnek forgalomba. Az elıre programozott vezérlıket általában valamilyen konkrét feladatra rendelik a gyártótól. A vezérlı program nélküli „üres” mikrovezérlıket a felhasználók programozhatják, ezeket fejlesztési, kísérleti, célokra gyártják. Kis darabszámú kísérleti eszközök gyártásához.
1969-ben a Japán BUSICOM cég mérnökei, megbízták az amerikai Intel céget egy számológépekhez használható, integrált áramkör megtervezésével, legyártásával. Az Intel-nél a projekt felelıse, Marcian Hoff lett. Az általa javasolt megoldásban az áramkör mőködését a benne tárolt program határozza meg. Ezáltal az áramkör egyszerőbb felépítéső lett, de több memóriát igényelt. Ezt a megoldást tekinthetjük a világ elsı mikroprocesszorának. A gyakorlati megvalósításban nagy szerepet játszott Frederico Faggin. Az Intel 1971-ben a BUSICOM cégtıl visszavásárolt szabadalom alapján kezdte gyártani a 4004 nevő mikroprocesszort. Ez volt a világ elsı 4 bites mikroprocesszora.(Másodpercenként 6000 mővelet elvégzésére volt képes) 1972-ben az Intel bemutatta a 8008 nevő processzorát. Ez egy 8 bites 16 kB memóriával ellátott processzor volt, 45 paranccsal rendelkezett, és 300 ezer utasítást hajtott végre másodpercenként. Az Intel-nél tovább fojtatták a kutatást, aminek eredményeként 1974-ben bemutatták a 8080-as mikroprocesszort.(75 parancsa, és 64 kB memóriája volt) Az Intel fejlesztéseivel párhuzamosan más cégek is elkezdték fejleszteni saját processzoraikat. Az egyik ilyen cég a Motorola volt. Az általuk gyártott eszköz, a 6800 típusjelő 8-bites processzor volt. A Motorola fımérnöke Chuck Peddle volt. A Motorola gyártott elsıként eltérı perifériával processzorokat. Ezek a 6820, és 6850 típusok voltak. A motorolán kívül több cég is kifejlesztette saját mikroprocesszorát. Chuck Peddle a MOS Technology-nál fojtatta a munkáját. A MOS, kifejlesztette a 6501, és 6502 (8 bites, 56 utasításos) mikroprocesszorokat, amit a 1975-ben a WESCON kiállításon meg is lehetett vásárolni. A Motorola beperelte a MOS Technology-t azzal vádolva, hogy lemásolták a 6800-t. A MOS abbahagyta a 6501 gyártását, de a 6502-t fojtatta. A 6502 alacsony ára miatt nagyon népszerő processzor volt, a következı számítógépeket építették vele: KIM-1, Apple-1, Apple-2, Atari, Commodore, Acorn, Oric, Galeb, Orao, Ultra stb A 6502-t különbözı gyártók is elkezdték gyártani (NCR, Commodore, GTE, Ricoh) 15millió darabot adtak el egy év alatt. Frederico Faggin Zilog néven céget alapított. 1976-ban bemutatták saját Z80-névre keresztelt mikroprocesszorukat. A Z80 kompatibilis volt a 8080-al.(képes volt futatni a 8080-ra irt programokat) de kiegészítették új utasításokkal is. A Z80 korának meghatározó nagyon erısprocesszora volt. 1976-ban az Intel bemutatta a 8085-ös (8 bites) mikroprocesszorát. A Z80 ennél is jobbnak bizonyult. Fejlesztettek még néhány processzort pl.: 6809, 2650, SC/MP, de egyik sem tudott semmi újabbat a már létezı processzoroknál. Az Intel elvesztette az elınyét nem tudott újabbat 8bites processzort feltalálni. 1976-ban vált ketté a mikroprocesszor, és a mikrovezérlı. A mikrovezérlı (Mikrokontroller) egy teljes vezérlési feladatokra tervezett, mikroszámítógép, tartalmaz egy CPU-t kiegészítve a mikroszámítógépek több elemével. A mikrokontrollerek csökkentett, vezérlési feladatokra tervezett utasításkészlettel rendelkeznek. A mikrokontrollereket arra tervezték, hogy önmagukban is el tudjanak látni vezérlési feladatokat. Ha egy mikrokontroller csak több elektronikával kiegészítve képes ellátni a vezérlési feladatot, akkor vagy nem jó vezérlıt választottunk, vagy nem mikrovezérlınek való a feladat. A 8051 története 1976-ban kezdıdött el. A gyártók a készülékeikbe 8080 CPU-t, memóriát, és perifériaillesztıket építettek be. Felmerült az igény a gyártók részérıl hogy az egész számítógépet egyetlen lapkára integrálják. Az Intel elkészítette a 8748-as mikrovezérlıt (17 ezer tranzisztort, 1kB ROM-ot, 64 kB RAM-ot, egy 8 bites idızítıt, és 27 perifériaillesztıt tartalmazott). 1980-ban az Intel elkészítette a 8051-es vezérlıjét. (60 ezer tranzisztort, 4kB ROM-ot, 128 kB RAM-ot 32B/K vonalat, egy soros port-ot, két 16 bites idızítıt tartalmazott. ) A 8051-es vezérlı ipari szabvány lett az idık folyamán. Ez a mikrokontroller-sorozat a mai napig igen népszerő, sok után gyártott vezérlınek is ez az alapja. (Pl.: Philips, Siemens) Az Intel kifejlesztette a 16-bites 8096 típusjelő változatot is.
AZ INTEL MCS51 CSALÁD: A 8051 mikrokontroller-e 64 Kbájt külsı adatmemóriát és 64 Kbájt külsı programmemóriát tud kezelni. A mikrovezérlıket áramkör családként is szokták emlegetni. A család tagjai azonos processzorral, de eltérı tulajdonságokkal rendelkeznek. Pl.: eltérı portok, memóriaméret, memória típus. A család minden tagjában van belsı adatmemória (RAM), illetve egyes típusokban belsı programmemória (ROM/EPROM) is található. A belsı adat- és programtároló nagysága a család egyes tagjainál különbözı. A családelv azt a célt szolgálja, hogy a célnak leginkább megfelelı típust választhassuk ki. Típus 8051 8052 80C51 8031 8032 80515 80535 8751 8752 80517 8537
Adattár (bájt) 128 256 128 128 256 256 256 128 256 256 256
Programtár 4 Kbájt ROM 8 Kbájt ROM 4 Kbájt ROM Nincs Nincs 8 Kbájt ROM Nincs 4 Kbájt EPROM 8 Kbájt EPROM 8 Kbájt ROM Nincs
A család egy megkülönböztetett változata a 8751 típusjelő. (Ehhez hasonlóan kapható a 8752 típus is. ) E típusokba nem ROM-ot, hanem EPROM-ot integrálnak. A programfejlesztésnél a tesztelés és esetleges módosítás lehetıségét biztosítja az EPROM. A végleges maszk elkészítése elıtt, az esetleges programhibánál az EPROM törölhetı és újra írható. Így csak a valóban helyes program kerül maszkolásra a gyártásban.
Felhasznált Irodalom: Internet:
Andrew S. Tanenbaum Számítógép Architektúrák Vörös Tamás PIC –Kezdıknek (Hobby Elektonika Füzetek 3.) http://www.aut.bmf.hu/konya/mikro/mcs51_www/index.htm http://www.8052.com/
Az INTEL, a MOTOROLA, a MOS Technology, Philips, Siemens, az Amerikai Egyesült Államokban és/vagy más országokban bejegyzett védjegyek. Minden más termék- vagy szolgáltatásnév, védjegye lehet egy gyártónak. Ezek említése kizárólag informatív jelleggel történik.
MCS51 UTASÍTÁS - KÉSZLET MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOVC MOVC MOVX MOVX MOVX MOVX PUSH POP XCH XCH XCH XCHD
Utasítás A,Rn A,direct A,@Ri A,#data Rn,A Rn,direct Rn,#data direct,A direct,Rn direct,direct direct,@Ri direct,#data @Ri,A @Ri,direct @Ri,#data DPTR,#data16 A,@A+DPTR A,@A+PC A,@Ri A,@DPTR @Ri,A @DPTR,A direct direct A,Rn A,direct A,@Ri A,@Ri
ADD ADD ADD ADD ADDC ADDC ADDC ADDC SUBB SUBB SUBB SUBB INC INC INC INC INC DEC DEC DEC DEC MUL DIV DA
Utasítás A,Rn A,direct A,@Ri A,#data A,Rn A,direct A,@Ri A,#data A,Rn A,direct A,@Ri A,#data A Rn direct @Ri DPTR A Rn direct @Ri AB AB A
ANL ANL ANL ANL ANL ANL ORL ORL ORL ORL ORL ORL XRL XRL XRL
Utasítás A,Rn A,direct A,@Ri A,#data direct,A direct,#data A,Rn A,direct A,@Ri A,#data direct,A direct,#data A,Rn A,direct A,@Ri
Megjegyzések:
bájt 1 2 1 2 1 1 2 2 2 3 2 3 1 2 2 3 1 1 1 1 1 1 2 2 1 2 1 1
cikl 1 1 1 1 1 2 1 1 2 2 2 2 1 2 1 2 2 2 2 2 2 2 2 2 1 1 1 1
Aritmetikai utasítások A=A+regiszter A=A+direct bájt A=A+indireck RAM A=A+adat A=A+regiszter+Cy A=A+direct bájt+Cy A=A+indirect RAM+Cy A=A+adat+Cy A=A-regiszter-Cy A=A-direct bájt-CY A=A-indirekt RAM-Cy A=A-adat-Cy A=A+1 Regiszter=Regiszter+1 Direkt bájt=direkt bájt+1 Indirekt RAM = indirekt RAM+1 DPTR = DPTR+1 A=A-1 Regiszter=Regiszter-1 Direkt bájt=direkt bájt-1 Indirekt RAM = indirekt RAM-1 BA=A*B A=A/B maradék B-ben ACC decimális korrekciója
bájt 1 2 1 2 1 2 1 2 1 2 1 2 1 1 2 1 1 1 1 2 1 1 1 1
Cikl 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 4 4 1
Logikai és boole- utasítások A= A.ÉS.regiszter A= A.ÉS.direkt bájt A= A.ÉS.indirekt RAM A= A.ÉS.adat Direkt báj= A.ÉS.direkt bájt Direkt báj= direkt bájt.ÉS.adat A= A.VAGY.regiszter A= A.VAGY.direkt bájt A= A.VAGY.indirekt RAM A= A.VAGY.adat Direkt báj= A.VAGY.direkt bájt Direkt báj= direkt bájt.VAGY.adat A= A.KIZÁRÓ VAGY.regiszter A= A. KIZÁRÓ VAGY.direkt bájt A= A. KIZÁRÓ VAGY.indirekt RAM
bájt 1 2 1 2 2 3 1 2 1 2 2 3 1 2 1
cikl 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1
Adatátviteli utasítások Regisztert mozgat az A-ba Direkt bájtot mozgat az A-ba Indirekt RAMot mozgat az A-ba Adatot mozgat az A-ba A-t mozgat a regiszterbe Direkt bájtot mozgat a Rn-be Adatot mozgat a regiszterbe A-t mozgat egy direct bájtba Rn-et mozgat egy direct bájtba Direkt bájtot mozg. direkt bájtba Indirekt RAM-ot direct bájtba Adatot direct bájtba A-t indirect RAM-ba Direkt bájtot indirect RAM-ba Adatot indirect RAM-ba Adatmutató feltöltése 16bit-tel A-ba a prog.mem-ból(eltolt cím)s A-ba a prog.mem-ból(eltolt cím) A-ba a külsĘ RAM-ból(cim 8 bit) A-ba a külsĘ RAM-ból(cim16bit) A-t a külsĘ RAM-ba(cim 8 bit) A-t a külsĘ RAM-ba(cim 16 bit) Egy bájt behelyezése a zsákba Egy bájt kivétele a zsákból Regiszter és A cseréje Egy direct bájt és A cseréje Indirekt RAM és A cseréje Indirekt RAM és A alsó 4 bitének cseréje
Utasítás A,#data direct,A direct,#data A A A A A A A C bit C bit C bit C,bit C,/bit C,bit C,/bit C,bit bit,C rel rel bit,rel bit,rel bit,rel
Logikai és boole- utasítások A= A. KIZÁRÓ VAGY.adat Direkt báj= direkt bájt.KIZÁRÓVAGY.A Direktbáj=direktbájt.KIZÁRÓVAGY.adat Törli A-t Komplementálja A-t Balra forgatja A-t Balra forgatja A-t a Cy-n keresztül Jobbra forgatja A-t Jobbra forgatja A-t a Cy-n keresztül Felcseréli A alsó és felsĘ 4 bit-ét Törli a Cy-t Törli a bitet Egybe állítja a Cy-t Egybe állítja a bitet Komplementálja a Cy-t Komplementálja a bitet Cy=Cy.ÉS.bit Cy=Cy.ÉS.bit negáltja Cy=Cy.VAGY.bit Cy=Cy.VAGY.bit negáltja Cy=bit Bit=Cy Ugorjon ha a Cy=1 Ugorjon ha a Cy=0 Ugorjon ha a bit=1 Ugorjon ha a bit=0 Ugorjon ha a bit=1 és törölje a bitet
bájt 2 2 3 1 1 1 1 1 1 1 1 2 1 2 1 2 2 2 2 2 2 2 2 2 3 3 3
cikl. 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 1 2 2 2 2 2 2
Utasítás ACALL addr11 LCALL addr16 RET AJMP addr11 LJMP addr16 SJMP rel JMP @A+DPTR JZ rel JNZ rel CJNE A,direct,rel
VezérlĘ utasítások Szubrutin hívás 11 bites cím esetén Szubrutin hívás 16 bites cím esetén Visszatérés a szubrutinból Feltétel nélküli ugrás 11 bites címre Feltétel nélküli ugrás 16 bites címre Feltétel nélküli ugrás közelre Feltétel nélküli ugrás indirekt címre Ugrás ha A=0 Ugrás ha A nem 0 Összehasonlítja az A-t és a címet és ugrik ha nem egyenlĘ Összehasonlítja az A-t és az adatot és ugrik ha nem egyenlĘ Összehasonlítja a regisztert és az adatot és ugrik ha nem egyenlĘ Összehasonlítja az indireckt RAM-ot és az adatot és ugrik ha nem egyenlĘ Csökkenti az Rn tartalmát 1-el és ugrik ha Rn nem egyenlĘ 0-val Csökkenti az direct bájt tartalmát 1-el és ugrik ha nem egyenlĘ 0-val Üres utasitás Visszatérés megszakítás kiszolgáló rutinból
bájt 2 3 1 2 3 2 1 2 2 3
cikl. 2 2 2 2 2 2 2 2 2 2
3
2
3
2
3
2
3
2
3
2
1 1
1 1
XRL XRL XRL CLR CPL RL RLC RR RRC SWAP CLR CLR SETB SETB CPL CPL ANL ANL ORL ORL MOV MOV JC JNC JB JNB JBC
CJNE A,#data,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel DJNZ
Rn,rel
DJNZ
direct,rel
NOP RETI
READ-MODIFY-WRITE utasítások Utasítás ANL ORL XRL JBC CPL INC
Példa ANL P2,A ORL P1,A XRL P1,A JBC P2.2,re CPL P1.1 INC P1
Utasítás DEC DJNZ MOV CLR SETB
Példa DEC P1 DJNZ P1,rel MOV P2.1,C CLR P1.0 SETB P1.0
A flag-eket állító utasítások Utasítás ADD ADDC SUBB MUL DIV DA RRC RLC SETB C CLR C CPL C
CY X X X 0 0 X X X X X X
OV X X X X X
AC X X X
Utasítás RLC SETB C CLR C CPL C ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit MOV C,bit CJNE
CY X X X X X X X X X X
OV
AC