Corso di programmazione per microcontrollori Zilog Z8. Seconda puntata 1/4

Corso di programmazione per microcontrollori Zilog Z8

Impariamo a programmare con la nuovissima famiglia di microcontrollori Z8 della Zilog caratterizzata da elevate prestazioni, grande flessibilità d’uso ed estrema facilità di impiego grazie alla disponibilità di un emulatore hardware a bassissimo costo. Seconda puntata. La famiglia di microcontrollori Zilog Z8 è costituita da un numeroso gruppo di integrati che si differenziano tra loro per la capacità di memoria RAM e ROM, per il numero di porte implementate e per la pin-out.

Nella scorsa puntata del Corso abbiamo descritto a grandi linee l’intera famiglia Z8 e le relative prestazioni. In queste pagine analizziamo invece l’architettura interna dei micro Z8 facendo riferimento, per i particolari, al modello Z86E08. Questo integrato appartiene alla fascia dei micro più piccoli, caratterizzati da 18 piedini, ma è sicuramente emblematico e rappresentativo della famiglia Z8. Con l’aiuto dello schema a blocchi riportato nell’articolo, analizzeremo le varie risorse disponibili: cercheremo inoltre di comprendere come ogni risorsa opera all’interno del microcontrollore e con quale funzione.

Entriamo subito nel vivo dell’argomento con il blocco denominato ALU la cui sigla sta per Arithmetic Logic Unit, cioè unità aritmetico logica. La ALU è un po’ il cuore del sistema, in quanto al suo interno vengono realizzate tutte le operazioni matematiche e logiche necessarie al funzionamento del micro. Parallelamente alla ALU lavora il registro di “flag” (letteralmente “bandiera”). Quest’ultimo è disponibile in una particolare locazione di memoria dati.

I bit contenuti nel registro flag vengono modificati dalla ALU in funzione del risultato dell’operazione appena eseguita dalla ALU stessa.

z86e08-schema_blocchi

Il registro flag viene normalmente utilizzato per “condizionare” il programma utente al verificarsi di determinati eventi. Se, ad esempio, dobbiamo ripetere un certo numero di volte una sequenza di istruzioni, utilizzeremo un registro generico per contare i cicli di ripetizione e un bit del registro flag per sapere se le ripetizioni sono terminate. Infatti, alla fine dell’ultimo ciclo, un particolare bit del registro di flag cambierà il proprio stato logico. Potremo così utilizzare delle istruzioni che, sulla base della lettura del valore di questo bit, agiscano in modo diverso. Vediamo quindi come è organizzato il registro flag ed il significato dei singoli bit a cui associamo le sigle da D0 per il bit meno significativo a D7 per quello più significativo.

Tralasciamo per ora il significato dei primi due flag (D0 flag utente F1 e D1 flag utente F2) di cui discuteremo in seguito per concentrarci sul significato dei rimanenti sei bit. Il bit D2, che indica il “Flag di Half Carry” (letteralmente semiriporto), viene posto a 1 ogni qualvolta un’ operazione aritmetica genera un riporto fra il bit 3 ed il bit 4. Questo flag non può essere usato per realizzare dei salti condizionali. Il bit D3 rappresenta il flag di aggiustamento decimale e viene utilizzato nelle operazioni in codice BCD, in particolare dall’istruzione DA. Poiché l’operazione di aggiustamento decimale è differente se effettuata rispetto ad una addizione piuttosto che ad una sottrazione, questo bit viene posto a 1 dopo una sottrazione e a 0 dopo una addizione. Non è possibile utilizzare questo bit per realizzare dei salti condizionali.

Il kit è disponibile da Futura Elettronica

STAMPA     Tags:,

Leave a Reply