68HC08 (Motorola 68HC08, M68HC08) je rodina 8bitových mikrokontrolérů původně firmy Motorola, nyní 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
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
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
$0000
do adresy $003F
(64 bajtů)
- paměť RWM-RAM od adresy
$0040
do adresy $023F
(512 bajtů) - pro data
- v rámci RWM-RAM je vymezen prostor pro zásobník od adresy
$00FF
do adresy $0040
(192 bajtů)
- paměť FLASH od adresy
$8000
do adresy $FDFF
(32 KB) - ROM, pro program
- monitor ROM od adresy
$FE20
do adresy $FF52
(307 bajtů)
- blok vektorů přerušení od adresy
$FFDC
do 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
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