PROGRAMMAZIONE DIDATTICA ANNUALE
27 Gennaio 2019Porte I/O
27 Gennaio 2019Gestione 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:
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.
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:
- 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