PROGRAMMAZIONE DIDATTICA ANNUALE
27 Gennaio 2019Porte I/O
27 Gennaio 2019(Central Process Unit)
La è la parte principale del sistema, essa svolge tutte le operazione e tramite dei registri controlla il funzionamento di queste ultime
Le caratteristiche principali dell’unita centrale di elaborazione del MC68HC908 sono:
- Stack pointer a 16bit
- Registro X a 16bit
- Frequenza del bus interno di 8MHz
- 64Kbyte di spazio per il programma
- 16 modi di indirizzamento
- Spostamento di dati dalla memoria verso gli accumulatori
- Velocità nella moltiplicazione a 8bit by 8bit” e divisione 16bit by 8bit”
- Conversione BCD
- Basso consumo energetico nello STOP mode e nel WAIT mode
Registri della
Questi sono i registri della , verranno spiegati in dettaglio nei prossimi paragrafi, oltre a questi ci sono anche gli accumulatori, cioè strutture che possono contenere dati a 8, per quelli a 16bit (es. SP) si uniscono due registri a 8bit
Accumulatore A
Registro di indice H e X
Il due registri a 8bit H e X che uniti formano il registro indice H:X a 16bit , esso contiene l’indirizzo del dato che la sta elaborando in quel momento.
Questo registro può essere usato anche come accumulatore temporaneo.
Lo Stack Pointer (SP)
Lo stack pointer o più semplicemente in italiano catasta è una zona di memoria in cui possono essere salvati temporaneamente dati o indirizzo, questa procedura di backup è molto utile quando si richiamano subroutine o interrupt, dove la salvaguardia dei dati è di prima importanza. Se per esempio abbiamo un dato nellaccumulatore A e improvvisamente viene chiamata una subroutine di gestione di uninterrupt, il valore del registro viene salvato nello stack e recuperato al ritorno dalla subroutine, in questo modo non perderemo il valore del registro A.
Lindirizzo di partenza dello stack è $00FF e la zona di memoria di conseguenza è quella più alta della RAM. Il registro SP è un 16 bit e contiene l’indirizzo attuale dello stack, questo per sapere in qualsiasi momento la posizione dell’ultimo dato aggiunto.
Quando un dato viene inserito lo stack pointer decrementa, quando il dato viene tolto questo si incrementa.
Una precisazione deve essere fatta nella procedura di inserimento dati, se per esempio noi inseriamo tre dati, il primo ad essere messo nello stack sarà l’ultimo ad uscire, per capire meglio si può immaginare una fila di piatti, il primo ad essere posato sarà l’ultimo ad essere ripreso in mano.
Lindirizzo dello stack pointer non è sempre fisso a $00FF ma può anche essere definito dal programmatore.
Program Counter
Il program counter è un registro a 16 bit che contiene l’indirizzo della prossima istruzione che la deve eseguire.
Normalmente questo registro viene automaticamente incrementato secondo l’esecuzione logica del programma. Quando si verifica una branch o un interrupt il programma viene automaticamente caricato con l’indirizzo della locazione interessata.
Quando si verifica il reseti il program counter viene automaticamente caricato con l’indirizzo del vettore di reset.
Condition Code Register
Il registro a 8bit CCR contiene la maschera degli interrupt e cinque flag che identificano i risultati logici dell’operazione appena svolta dalla .
I bit 5 e 6 vengono sempre tenuti a valore logico alto
Descrizione dei bit:
Bit 7:V— Overflow Flag
La cPU setta questa Flag quando un complemento a due di un operando genera un overflow
1 = Overflow
0 = No overflow
Bit 4:H— Riporto su nibble
Bit 3:I— Interrupt Mask
Quando la maschera di interrupt è settata, tutti gli interrupt mascherabili, cioè quelli che possono venire abilitati o disabilitati a seconda della necessità del programmatore, vengono disabilitati, mentre quando questa maschera è a zero gli interrupt vengono abilitati.
1 = interrupt disabiliti
0 = interrupt abilitati
Bit 2— Negative Flag
Questa flag viene settata quando il risultato di una operazione aritmetica da come risultato un valore negativo
1 = Risultato negativo
0 = Risultato non negativo
Bit 1:Z— Zero Flag
La setta questa flag quando il risultato di una operazione aritmetica da come risultato $00
1 = Risultato zero
0 = Risultato diverso da Zero
Bit 0:C—Carry/Barrow Flag
La setta questa Flag quando il risultato di una operazione aritmetica o di rotazioni e shiftameneti logici producono un riporto oltre il bit 7
1 = Riporti oltre il bit 7
0 = nessun riporto