Corso di programmazione per microcontrollori Zilog Z8. Prima puntata 3/7

microcontrollori 8bit Zilog Z8

Per meglio comprendere l’importanza dell’assembler scriviamo una semplice istruzione con questa tecnica: ADD r3, r5 Questa istruzione corrisponde ai seguenti byte del linguaggio macchina: 00000010 00110101 Quando il microcontrollore “legge” questi due byte, associa ad essi una serie di operazioni. L’istruzione precedente permette al microcontrollore di sommare (questo il significato di ADD) il contenuto del registro 3 (abbreviato in r3) con il contenuto del registro 5 (abbreviato in r5). I registri, come vedremo dettagliatamente, non sono altro che delle normalissime celle di memoria. Dire che il micro somma il contenuto del registro 3 col registro 5, da un punto di vista elettronico significa che il micro va a leggere il contenuto di una specifica cella di memoria (r3), poi quello di un’altra (r5), infine la ALU esegue l’operazione ed il risultato viene posto in un’altra cella di memoria.

Se dovessimo fare la somma dei registri 2 e 6, l’istruzione assembler relativa non potrebbe che avere la seguente forma: ADD r2, r6 Molto più conveniente lasciare quindi all’assemblatore il compito di “tradurre” questa istruzione in byte comprensibili al microcontrollore che non doverli costruire “a mano”. In pratica, in prima approssimazione possiamo affermare che il compito dell’assembler è quello di tradurre le istruzioni scritte in un linguaggio facilmente comprensibile (spesso si fa riferimento a questo linguaggio come a un codice mnemonico) in sequenze di byte comprensibili dal micro.

Per essere più precisi, il solo programma assemblatore non produce ancora una sequenza di byte in linguaggio macchina, ma un file che, elaborato da altri programma, contiene tutte le informazioni necessarie per costruire il file in linguaggio macchina.

In realtà, come vedremo parlando diffusamente di questo particolare linguaggio di programmazione, l’assembler non è solo un interprete “stupido” di istruzioni, ma permette tutta una serie di operazioni altrimenti difficilmente realizzabili. Da quanto fin qui esposto possiamo riassumere nel seguente modo le fasi necessarie alla realizzazione di un programma per microcontrollori: – Scrittura del programma nel linguaggio Assembler attraverso qualunque editor di testo (a questo scopo, ad esempio, può essere utilizzato l’Edit del DOS); il file così ottenuto prende generalmente il nome di file sorgente, per distinguerlo dal file oggetto, che è il file già assemblato; – elaborazione del file di testo per mezzo dell’assemblatore (ed eventualmente di altri programmi, quali il linker) in modo da ottenere in uscita un file che può essere compreso dal microcontrollore. Passiamo ora alla seconda domanda: come faccio a sapere se questo software funziona, cioè se effettivamente il microcontrollore fa quello per cui è stato programmato?

L’ EMULATORE

Molte volte un programma che da un punto di vista teorico sembra funzionare correttamente, all’atto pratico si rivela poco adatto a svolgere la funzione per cui era stato pensato. Poiché la velocità di esecuzione del programma, una volta che questo è stato caricato nel micro, è altissima, è molto difficile identificare il punto in cui le cose non funzionano come dovrebbero.

piastra_emulatore_mcu_z8

Per evitare di dover procedere ad una lunga “mosca cieca” alla caccia degli errori, il sistema migliore per individuare eventuali anomalie (o anche per migliorare un programma già esistente) è quello di utilizzare un emulatore. Un emulatore è un dispositivo che, collegato ad un PC, permette di far funzionare il circuito nel quale dovremmo inserire il microcontrollore senza questo elemento; al posto del micro viene inserito uno zoccolo (normalmente chiamato POD) che emula il funzionamento del microcontrollore.

Il kit è disponibile da Futura Elettronica

STAMPA     Tags:,

Leave a Reply