Přeskočit na obsah

Freescale 68HC08

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

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]

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