CPU

Pubblicità

Sharing is caring!

Pubblicità

(Central Process Unit)

 

La è la parte principale del sistema, essa svolge tutte le operazione e tramite dei registri controlla il funzionamento di quest’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 nell’accumulatore A e improvvisamente viene chiamata una subroutine di gestione di un’interrupt, il valore del registro viene salvato nello stack e recuperato al ritorno dalla subroutine, in questo modo non perderemo il valore del registro A.

L’indirizzo 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.

 

 

L’indirizzo 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

 

Pubblicità
shares
%d blogger hanno fatto clic su Mi Piace per questo: