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

Corso di programmazione per microcontrollori Zilog Z8

Ogni interruzione può essere abilitata o disabilitata a seconda dell’applicazione che il microcontrollore è chiamato a compiere. Per fare ciò, il programma deve modificare il contenuto di alcuni registri dedicati. Inoltre, è possibile impostare una certa priorità fra le interruzioni stesse: qualora pervengano contemporaneamente due o più richieste di interruzione, il micro deve sapere quale va processata per prima. Parleremo molto più diffusamente delle interruzioni nelle prossime puntate del Corso.

MEMORIA PROGRAMMA

Introduciamo ora un concetto fondamentale per i microcontrollori cioè la definizione di memoria programma o Program Memory. Questo termine indica l’area di memoria nella quale viene memorizzato il programma da eseguire, ovvero la sequenza di istruzioni che la CPU deve processare una dopo l’altra. Nel caso del micro Z86E08, questa memoria è costituita da 2048 celle aventi ognuna la capacità di un byte (cioè 8 bit). Questa memoria è di tipo OTP (One Time Programmable) e risulta perciò programmabile una sola volta mediante un emulatore programmatore. Adesso che abbiamo dato un’occhiata generale alla struttura del microcontrollore possiamo approfondire altri argomenti. Come sappiamo, lo Zilog Z8 dispone di tre porte configurabili in modi diversi. Il programma utente può inizializzare il funzionamento delle porte agendo su tre registri di cui andiamo ora ad analizzare il significato e la funzione.

z86e08-porte-io

Questi registri vengono scritti via software trasferendo nell’indirizzo corrispondente una precisa sequenza di bit. Nel microcontrollore Z86E08 sono implementate tre porte, rispettivamente costituite da tre linee per la porta 0, otto linee per la porta 2 e 3 linee ancora per la porta 3.

Ogni linea di I/O prende il nome della periferica di appartenenza seguìto dalla posizione che assume la linea nella porta, quindi P00, P01 e P02 sono riferite alla porta 0, P20 ÷ P27 alla porta 2 e P31, P32 e P33 alla porta 3. Il registro di configurazione delle porte 0 e 1 (P01M) si trova all’indirizzo 248. Per i dispositivi a 18 piedini, tipo lo Z86E08, la porta 1 non esiste ed è quindi possibile configurare solo la porta 0. Quest’ultima è, come sappiamo, costituita da 3 bit che possono funzionare come ingressi o come uscite. I bit del registro P01M hanno il seguente significato:

D3 .. D7 Riservati, devono essere posti a 0
D2 Riservato, deve essere posto a 1
D0 e D1 00 = porta configurata come Uscita
01 = porta configurata come Ingresso

Il registro di configurazione della porta 3 (P3M) si trova all’indirizzo 247. La porta 3 permette, come abbiamo già visto, di scegliere fra ingressi analogici o digitali. Oltre tutto, questo registro controlla anche il funzionamento della porta 2:

D2 .. D7 Riservati, devono essere posti a 0
D1 Definizione degli ingressi :
0 = ingressi digitali
1 = ingressi analogici
D0 Definizione delle uscite della porta 2
0 = Pull up Open Drain
1 = Pull up attivo

Il registro di configurazione della porta 2 (P2M) si trova all’indirizzo 246. La porta 2 è una porta ad 8 bit. Ciascuno di questi bit può essere configurato singolarmente come ingresso o come uscita, a seconda delle impostazioni del registro P2M. Vi è infatti una diretta corrispondenza tra i piedini della porta 2 ed i bit di questo registro. Quando un bit del registro viene settato a 0, il corrispondente pin della porta viene configurato come uscita; quando un bit viene settato ad 1, il corrispondente pin della porta viene configurato come ingresso. Per questo mese ci fermiamo qui, nella prossima puntata del corso ci occuperemo del funzionamento dei due timer e dei due comparatori implementati nello Z8.

Il kit è disponibile da Futura Elettronica

STAMPA     Tags:,

Leave a Reply