Freescale 68HC08
68HC08 (Motorola 68HC08, M68HC08) je rodina 8bitových mikrokontrolérů původně firmy Motorola, nyní[zdroj?] produkované firmou Freescale Semiconductor.
Řada 68HC08 osmibitových mikrokontrolérů je pokročilou modifikací řady 68HC05 na bázi mikroprocesoru Motorola 6800 (je kompatibilní na bázi zdrojového kódu – směrem vzhůru). Procesory mají von Neumanovu architekturu, instrukční sadu typu CISC a patří do skupiny tzv. big-endian. Vyrábí je mnoho výrobců. Typické využití nalézají v nenáročných vestavěných systémech.
Charakteristika
[editovat | editovat zdroj]Periferie jsou mapovány do paměťového prostoru. Procesor obsahuje minimum registrů (A, HX, SP, PC a CCR) a vyznačuje se rychlým (jednocyklovým) přístupem do paměti jedním ze 16 adresovacích módů.
Programovací model
[editovat | editovat zdroj]- 8bitový střadač
A - 16bitový index-registr
HX(tvořen spojením dvou 8bitových registrůHaX) - 16bitový ukazatel zásobníku
SP - 16bitový programový čítač
PC - 8bitový stavový registr s příznaky
CCR
Protože programový čítač je 16bitový, může CPU adresovat 64 KB paměťového prostoru s následujícími segmenty:
- blok periferních a řídících registrů od adresy
$0000do adresy$003F(64 bajtů) - paměť RWM-RAM od adresy
$0040do adresy$023F(512 bajtů) – pro data - paměť FLASH od adresy
$8000do adresy$FDFF(32 KB) – ROM, pro program - monitor ROM od adresy
$FE20do adresy$FF52(307 bajtů) - blok vektorů přerušení od adresy
$FFDCdo adresy$FFFF(36 bajtů)
Pozn.: Tato mapa paměti je pro mikrokontrolér HC908GP32, u jiných modelů se může mírně lišit.
Instrukční sada
[editovat | editovat zdroj]Každá strojová instrukce má svůj opkód o velikosti jednoho bajtu. U většiny instrukcí za operačním kódem následuje další bajty nebo bajty identifikující operandy.
Příklad programu v asembleru HC08 (program vynuluje bajty pole o velikosti N začínajícího na adrese ADDR):
XDEF Entry ; exportuj 'Entry' symbol ABSENTRY Entry ; zacatek programu je na 'Entry' INCLUDE 'derivative.inc' N EQU 4 ; velikost pole ; oblast dat ORG RAMStart ADDR DS N ; rezervuj N bytu pro pole ; oblast kodu ORG ROMStart Entry: LDHX #RAMEnd+1 TXS ; inicializace SP CLI ; povol preruseni CLRH ; nuluj registry H, X, A CLRX CLRA Nuluj: STA ADDR, X ; nuluj ADDR[0], ..., ADDR[N-1] INCX CPX #N BNE Nuluj
