A Freescale 68HC08 egy 8 bites mikrokontroller, amelyet a Freescale (korábban Motorola ) gyártott a Motorola 6800 CPU- ból származó CPU08 mag alapján .
Úgy tervezték, hogy a 6805 és 68HC05 mikrovezérlők továbbfejlesztett utódjai lettek, míg a 68HC12-ek a 68HC11-ek utódjai .
A 68HC05 mikrovezérlőkkel kapcsolatos fejlesztésekként megemlíthetjük:
C nyelvű programozásra vannak optimalizálva .
Amikor a 90-es évek végén megjelentek, a CPU08 alapú mikrovezérlőket a következőképpen azonosították (példa):
MC68HC908GP32CP , amely a következőkre bontható:
A következő betűk jelzik a doboz típusát ( CP = DIL) és az üzemi hőmérséklet-tartományt.
A nevek megváltoztak, amikor ezek az alkatrészek 2006- ban RoHS -sé váltak : Az "MC68HC908" helyett az "MC908" lépett. Így a MC68HC908GP32 vált MC908GP32 . Egy család kivételével (AP, az MC908-asokat 0,5 mikronos HC MOS eljárással gyártják.
2004-ben megjelent a 68HC08 új generációja: az MC9S08 . Ezeket a 0,25 mikronos HC MOS eljárással gyártják, továbbfejlesztett perifériákkal rendelkeznek, további címzési módokkal és utasításokkal rendelkeznek, és (háromszor) gyorsabbak, mint az MC908-asok. Egy aktuális 68HC08 mikrovezérlőt hívunk például MC9S08QG8CPE-nek . Ezenkívül teljesítményoptimalizáltak, és különböző kikapcsolási módokkal rendelkeznek, amelyek a vezérlőt különböző, rendkívül alacsony fogyasztású állapotokba helyezik. Valamennyi MC9S08 rendelkezik belső precíziós oszcillátorral is, amely az esetek döntő többségében kiküszöböli a külső kristály szükségességét.
Sok család létezik, amelyek különböznek az eszközök számában és jellegében. Általánosságban :
A CPU08 utasítások 1, 2 vagy 3 bájtra vannak kódolva, a címzési módtól függően . 1-11 órás ciklusban futnak, átlagosan 3-4-ig. Ezek a CISC utasítások , amelyek valójában több RISC utasítással egyenértékűek . Például egyetlen CBEQ X +, LOOP utasítás:
A CPU08 munkagépek több különböző alapvető címzési mód :
eredendő (vagy implicit vagy abszolút): Az operandus implicit, például: CLRA (Clear A), MUL (Multiply). Ezeket az utasításokat általában egyetlen bájton kódolják.
azonnali : Az operandus értékét az utasítás tartalmazza. Például: LDA # 10 (A töltés vagy LoaD A) 10 értékkel.
közvetlen : Ez a címzési mód a memória első 256 bájtjának címzésére szolgál (0x00-tól 0xFF-ig, a területet "nulla oldalnak" is nevezik). Optimalizálja az utasításokat, mivel ennek a területnek a címét egyetlen bájt képviseli, ami csökkenti az utasítás méretét és a végrehajtás sebességét. Vegye figyelembe, hogy az I / O portok ezen a területen vannak feltérképezve. Például: LDA $ 00 (A betöltése a $ 00 cím tartalmával (általában A port)).
kiterjesztett : Ez az üzemmód a teljes memória 16 bites címmel történő címzésére szolgál.
relatív : Ez a címzési mód egy aláírt 8 bites operandust (+127-től - 127-ig) ad hozzá a sorszámlálóhoz (PC). Ezt a címzési módot főleg elágazási utasításokhoz, és különösen hurkokhoz használják. Például: DBNZA LOOP (Csökkentés és elágazás, ha nem nulla, vagy csökken az A felhalmozó, és elágazás a LOOP címkézésére, ha A nem 0 ).
indexelt elmozdulás nélkül, 8 bites elmozdulással, 16 bites elmozdulással, utólagos növekedéssel, utólagos növekedéssel és elmozdulással 8 biten. A címet az indexregiszter tartalmazza (H: X). 8 vagy 16 bites elmozdulás hozzáadható, és a művelet után növelhető. Az utólag növelt címzési módokat csak a DBNZ (Csökkentés és elágazás, ha nem nulla) és a CBEQ (Összehasonlítás és elágazás az EQualban) utasításokkal együtt alkalmazzuk. Különösen hatékony hurokellenőrzéseket tesznek lehetővé.
indexelve a veremmutatóhoz , 8 bites és 16 bites elmozdítással. A veremmutatón történő relatív címzés különösen hasznos a C-be írt kódoknál: A helyi változókat és a függvényparamétereket a veremmutatóhoz viszonyítva címezzük meg, amely memóriaterületet szabadít fel, amikor a funkció kilép.
memóriától memóriáig . Egyes műveletek nem igénylik az akkumulátoron keresztüli továbbítást. Például: MOV # $ 55, $ 00 (az 55 értéket a 00 memóriacímre helyezi (A PORT)).
A Freescale által kínált fejlesztői környezet neve CodeWarrior, jelenleg az Eclipse IDE-n alapul . Megérti :
A CodeWarriorban található UNIS "Processor Expert" modul grafikusan konfigurálja az eszközöket, és létrehozza a megfelelő C kódot. A CodeWarrior a "Special Edition" -ben kínált verziójában ingyenes, legfeljebb 64 KB objektumkódig C-ben. Az assembler korlátlan.
Az MC68HC908 programozása / hibakeresése soros kapcsolaton keresztül történt, amely a vezérlő 3-4 lábát mozgósította. A ROM-ba integrált program (úgynevezett "monitor") lehetővé tette a kommunikációt. A "MON08" nevű PC - cél interfész általában a soros porton alapult. A "monitor" módba való belépést nagy feszültség (7,5–9 V) alkalmazása indította el a külső megszakító fülön a bekapcsoláskor.
Az MC9S08 örökölte a 68H12 és a ColdFire beépített hibakeresési modulját , a BDM-et (Background Debug Module). A programozás / hibakeresés a vezérlő egyetlen fülén és a számítógép oldalán található USB-n keresztül történik. A cél interfész - a PC-t vagy a szondát "BDM pod" -nak hívják
Az MC9S08 vezérlőkbe integrált BDM modul lehetővé teszi a nem tolakodó valós idejű „In Circuit” hibakeresést, nem mozgósítva a CPU erőforrásait feltételes töréspontokkal, valamint busz nyomkövetési lehetőségekkel. Bizonyos mértékben elkerüli az emulátor használatát. A BDM szonda automatikusan alkalmazkodik a cél feszültségéhez és frekvenciájához.
A Freescale támogatja az "Open Source" BDM szondák megvalósítását GPL licenc alatt , amelyek kódja és hardvere nyitva van.
Nyílt forráskódú és nyílt hardveres megvalósítású USBDM elérhető a SourceForge.net oldalon .
Az S08 család változásokat hozott:
Vegye figyelembe azt is, hogy a Freescale 2,4 GHz-es RF chipeket állít elő ( Zigbee protokollhoz ), MC9S08 mikrovezérlőt integrálva (példa) .