Indirizzi dei registri

Gestione della memoria dell MC68HC908

 

 

La CPU del Motorola MC68HC908 gestisce 64Kbytes di memoria, lo schema qui riportato include anche:

 

  • 4096 bytes usati per la memoria FLASH
  • 128 bytes di memoria RAM
  • 48 bytes di spazio per i vettori
  • 960 bytes del Monitor ROM

 

 

 

 

La tabella illustra la tutta la memoria, per indirizzarla si usa un codice esadecimale a 16bit, come si vede esso parte da $0000 fino all’ultima locazione $FFFF, in questo modo possiamo indirizzare 2^16 locazioni di memoria.

La memoria come da tabella viene suddivisa in varie zone, tra queste le più importanti sono

 

$0000-$003F : Registri delle porte I/O

$0080-$00FF : Memoria RAM 128 bytes

$EC00-$FBFF : Momoria FLASH MC68HC908

$FC00-$FD00 : Monitor ROM

$FE10-$FFCF : Memoria ROM 448 bytes

 

Gli indirizzi che vanno da $0000 a $0003F contengono molti controlli e falg che identificano lo stato del micro e delle porte I/O. I registri addizionali del micro corrispondono ai seguenti indirizzi: Tabella generale della memoria

 

 

 

Vettori di interrupt

 

Questi indirizzi di memoria servono al programmatore per definire i parametri per i vari vettori interrupt, questa tabella riporta le locazioni (nella parte più bassa della memoria) e le loro funzioni.

 

 

La tabella è in ordine di priorità, infatti linterrupt di Reset, il più importante è il primo in ordine di priorità, questo ordine può essere anche modificato tramite alcuni registri speciali.

 

Il codice esadecimale

Anche detto in base 16 viene espresso con numeri da 0-9 come nel sistema decimale e lettere per i numeri superiori 10- – – -14-15:

 

        0 = 0

        1 = 1

          =

          =

        9 = 9

       10 = a

       11 = b

       12 = c

       13 = d

       14 = e

       15 = f

 

Nel nostro caso abbiamo un numero pari a 2^16 = 65536, che se convertito in binario avrà i seguenti valori a 16 bit:

 

00000000000000000000    

00000000000000000001    

00000000000000000010

00000000000000000011

00000000000000000100

00000000000000000101

– – – – – – – – – –

11111111111111111111

 

per convertire un numero decimale in uno esadecimale si procede in questo modo:

 

  1. si raggruppano in gruppi di 4 la cifra decimale:

       0001 – 1110 – 0110 – 0101 

2.   si associa a ciascun gruppo il corrispondente decimale

          1 – 14 – 6 – 5

3.   per finire si scrive il corrispondente in esadecimale

           1 – E – 6 – 5

il numero esadecimale corrispondente è $1E65

 

si mette il simbolo di dollaro per identificare che il numero è esadecimale, se è %” (%001) specifica un numero binario mentre se è !” (!10) specifica un numero nel sistema decimale.

Questo tipo di conversine è molto importante e aiuta il programmatore nella compilazione del codice, in quanto risulta complicato ricordare un numero a 16 bit in formato decimale