Freescale 68HC08

Z Wikipedie, otevřené encyklopedie
(přesměrováno z M68HC08)

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[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]

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[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