Tutorials - PIC

 

MPASM


MPASM

MPASM è l' Assembler di Microchip.
Si tratta in effetti di un Macro-Assembler che funziona in ambiente DOS o Windows (MPASMWIN).
Questa base è impiegata anche dai compilatori di linguaggi C. 

E' distribuito gratuitamente da Microchip e fa parte della suite MPLAB. 

Per prima cosa occorre scaricare il tool dal sito di Microchip o altri che ne hanno copia. 

La scelta migliore è quella di scaricare MPLAB e installarlo. In conseguenza a questo, nella directory di default

C:\Programmi\Microchip\MPASM 

sarà disponibile l' ultima versione di  MPASMWIN.EXE, programma che potrà essere richiamato dal desktop di Windows.

La cartella non contiene solo MPASMWIN.EXE, ma anche numerosi altri files:

  • i file headers dei processori, con estensione .INC
  • i file di link .LKR
  • una cartella di template di guida
  • una cartella di esempi
  • numerosi file addizionali necessari all' assemblaggio e al linker

E' interessante fare un doppio click su uno dei files .INC: in ambiente Windows il file verrà aperto dal Blocco Note, mostrando il contenuto che, all' atto pratico, è un semplice testo. 

In effetti i file INC, che sono definiti come Header Files e sono trattabili con un qualsiasi normale editor, contengono una lista delle label (nomi) con cui vengono identificati i vari registri, della loro equivalenza con gli indirizzi esadecimali nei vari PIC, oltre a varie definizioni ed equates necessarie all' Assembler per la compilazione dell' oggetto. 


Avvertenza: 

se pur modificabili per particolari esigenze, i file INC, e comunque tutti i file di testo forniti con MPASM, NON vanno alterati a meno si sappia bene cosa si sta facendo, altrimenti la compilazione dell' Assembler potrà fallire o, peggio, originare eseguibili non corretti.

Volendo operare modifiche sugli .INC o .LKR, è opportuno farne una copia di sicurezza.



Come usare MPASM

MPASMWIN, come praticamente tutti gli assembler, è estremamente semplice, per non dire grezzo, nell' interfaccia con l' utente, dove dispone di una unica finestra operativa. Ma questo lo rende superfacile da usare.
in effetti si tratta di una finestra di Windows dietro a cui sta un programma DOS.

Dalla finestra di controllo è possibile selezionare il file sorgente da assemblare ed una serie di opzioni di assemblaggio. Questa finestra è richiamata dal programma MPASMWIN.exe. La stessa funzione si ottiene con il comando Built All in ambiente MPLAB. 

Questa è la finestra tipica.

si notano numerosi tasti di selezione. Vediamone nel dettaglio la funzione:


BROWSE

Questo tasto consente di comandare una tradizionale finestra di ricerca file nelle risorse del PC. Si dovrà puntare il file di testo che è il sorgente dell' assemblaggio. Va inserito il path completo del file, che, solitamente è opportuno aver salvato con l' estensione .ASM, in modo da distinguerlo da altri file di testo.

Dieci tasti di opzione permettono di configurare l' ambiente di assemblaggio:

Opzione Funzione
Radix Sovrapassa il settaggio della radice del file sorgente
Warnin Level Sovrapassa il settaggio dei warning impostato nel sorgente
Hex Outpuit Stabilisce un particolare formati del file .HEX in sucita
Generated Files Stabilisce quali files saranno generati
Case Sensitvity Abilita o disabilita la case sensibility
macro Expansion Sovrapassa le opzioni di espansione delle macro
Processor Sovrapassa la scelta del processore operata nel sorgente
Tab Size Seleziona il formato dei TAB
Extra Options Ogni comando addizionale (manuale cap.2)
Save Settings on Exit Salva i settaggi correnti e li ripropone alla prossima apertura del programma



RADIX

Una lista RADIX permette di selezionare la base di default in cui sono espressi i numeri nel sorgente. 
Le scelte sono :

- Default
- Hexadecimal
- Decimal
- Octal


Nel primo caso  la radice è quella identificata da una riga RADIX in testa al sorgente e, in mancanza di indicazioni, è Hexadecimal. L' Assembler tratterà i numeri non esplicitamente specificati come se fossero nella base indicata.
Quindi, se la lista sorgente contiene la riga 

RADIX  DEC

si sceglierà l' opzione Default e un numero espresso con

movlw       22

sarà assemblato come se fosse 22 decimale, mentre sarà sempre possibile definire nel sorgente numeri in altre basi, ad esempio :

movlw     0x22

sarà considerato un numero esadecimale. 

Se la linea RADIX non è inserita nel sorgente, la scelta dal pannello di MPASM impone la base della numerazione, ma se si sceglie Default e il sorgente non dichiara alcuna radice, il default di MPASM è Hexadecimal.

Come linea generale, la scelta ottimale è quella di NON lasciare all' assemblatore la definizione della radice, ma fissarla nel sorgente con lo statement RADIX ; questo permette di avere un maggiore controllo su cosa si sta facendo.


Warning Level


Una seconda lista permette di abilitare in vario modo la presentazione degli errori che l' Assembler incontra (o crea) nel trattare il file sorgente. Le scelte sono :

Default
-  All Messages
-  Warning and Errors
 - Errors Only

Anche qui, è possibile , attraverso lo statement ERROR dell' Assembly definire quali indicazioni si desiderano evidenziate nelle liste e la scelta Default è quella consigliata : dalla scrittura del sorgente posso controllare quali messaggi abilitare; se non do indicazione, l' Assembler emetterà tutti i messaggi prodotti durante l' elaborazione. 
Le altre scelte danno risultati chiaramente indicati nel loro stesso nome.

  • La scelta All Messages produce la creazione di tutti i messaggi di errore.
  • La scelta Warning and Errors permette la creazione dei soli messaggi relativi ad errori e warnings.
  • La scelta Errors Only abilita solo la creazione dei messaggi relativi ad errori, abolendo i messaggi di warning.


La differenza tra Warning e Error è la seguente : 

  • gli Error (errori) sono generati quando l' Assembler incontra situazioni che impediscono la corretta compilazione dell' eseguibile. 
  • I Warnings (avvisi di attenzione) e i Messages possono anche non bloccare la creazione dell' eseguibile, ma avvertono l' utente che l' Assembler si è trovato davanti ad una situazione dubbia e che ha effettuato una scelta di default, in modo che si possa intervenire se la scelta realmente desiderata fosse un' altra.

I messaggi, di qualunque genere, possono essere utili, ma la loro presenza nel listato può appesantirlo alquanto. 
La scelta di cosa far apparire e cosa no resta al programmatore ed al suo modo di lavorare. 


AVVERTENZA:
Si consiglia a chi inizia di non abolire alcun messaggio, nè error nè warning fino a quando non si è ben compresa la funzione di questi elementi.
Poi, una scelta ragionata dei messaggi da abolire potrà essere fatta inserendo
nel sorgente
lo statement ERROLEVEL del Macro Assembler.

Altre informazioni sui messaggi sono disponibili più avanti.



Hex Output


L' Assembler può produrre il file eseguibile in vari formati standard , che sono poi quelli accettati dai sistemi di programmazione. Anche qui sono possibili alcune scelte :

- Default
- INHX8M
- INHX8S
- INHX32

Non c'è particolare ragione di effettuare scelte diverse dal default che è INHX8M, a meno che le esigenze dell' apparecchiatura di programmazione siano differenti.


Generate Files

Sono spuntabili varie caselle che indicano quali file produrrà l' Assembler in uscita. Si possono effettuare più scelte contemporaneamente, come pure si può optare per la sola generazione del file di listato (.LST) e del file errori (.ERR) in fase di sviluppo

I file che interessano l' attivita di MPASM sono:

Estensione Funzione
.ASM Estensione di default per i lile sorgenti da assemblare
.LST Estensione default per il listato generato dall' assemblaggio del sorgente
.ERR Estensione default per il file di eventuali errori di assemblaggio
.HEX File oggetto binario in uscita dal processo di assemblaggio
.HXL/.HKH Estensioni di uscita di MPASM per file divisi in byte alti e bassi
.COD Estensione per il file simbolico e di debug
.O Estensione per il file oggetto

 


- Error File : viene generato un file di testo .ERR che contiene solo gli errori prodotti.
- List File : viene generato un file di testo .LST che contiene il listato corrispondente al sorgente
- Cross Reference : viene generato un file di testo .COD che contiene la cross reference delle label usate nel sorgente
- Object File : viene generato un file oggetto con estensione .OBJ


 


NOTE e AVVERTENZE:
  • Va precisato che se sono rilevati errori, l' Assembler genera il file .ERR che è la lista di questi errori, assieme al file .LST, ma non produrrà file .HEX.
     
  • In assenza di errori, l' Assembler genera un file .ERR vuoto e, per default, un file .HEX che contiene l' eseguibile nel formato esadecimale selezionato. Se viene abilitata la selezione Object File, il file .OBJ è generato al posto del file .HEX
     

  • Solitamente nei primi tentativi di assemblaggio, può essere utile selezionare solo le prime due caselle, per ottenere Lista .LST e Lista errori .ERR, in modo da effettuare prontamente le correzioni necessarie. Quando l' Assembler non produrrà più errori, si potrà far generare anche l' eseguibile per passarlo poi al dispositivo di programmazione. 
     

  • Tutti i file in uscita hanno lo stesso nome del file sorgente, ognuno con la sua diversa estensione. 
    Quindi, se la sorgente si chiama Prova .asm, il file eseguibile sarà Prova.hex, mentre la lista degli errori sarà Prova.err e così via. Questi default possono essere variati attraverso il campo Extra Options.

 



Case Sensitive

La casella se viene selezionata, fa si che l' Assembler consideri le label e i nomi con maiuscole e minuscole, per cui, ad esempio, STATUS e Status e status saranno considerati tre diversi oggetti. E' la scelta migliore, che permette la maggiore flessibilità, ampliando il campo delle label utilizzabili.

Se, invece, questo non interessa, si potrà scrivere uno sorgente meno definito deselezionando la casella. In tal caso le label STATUS e Status e status saranno tutte identificate come uguali.
Il default è la scelta Case sensitive.


Macro Expansion

La scelta può avvenire tra tre possibilità :

- Default
- On
- Off

Nel primo caso le macro sono espanse nel listato a seconda di un eventuale statement di comando .
Nel secondo, le macro sono sempre espanse
Nel terzo non sono mai espanse; questa scelta è utile per ottenere listati meno pesanti, sopratutto nel caso di impiego massiccio di macro, e quindi più leggibili (supposto che si sappia cosa fa ogni macro).
Comunque la scelta Default è sempre la migliore e la selezione tra espansione e non potrà essere fatta con uno statement nel listato sorgente dove e quando lo si ritenga necessario.


Processor

Un range di selezione consente di scegliere il processore per cui si sta effettuando l' assemblaggio, basandosi sui dati presenti nei files .INC. La scelta Default solitamente è quella da usare in quanto è buona prassi indicare in una linea iniziale del sorgente quale processore si intende usare e a quale .INC fare riferimento. Ad esempio :

list p=16f876                 ; define processor
#include <p16f876.inc> ; specific variable definitions

specificano che l' eseguibile va compilato in base alle risorse e alle caratteristiche del PIC 16F876. Se sono omesse queste righe, occorrerà impostare nella selezione Processor il corretto tipo di PIC.
Mancando questa informazione, MPASM produrrà un errore.

La scelta migliore è quella di impostare il processore nel sorgente.


 

Extended Mode

La casella selezionabile consente di abilitare la modalità estesa di assemblaggio . 

 


Extra Option

In questa riga possono essere inseriti comandi addizionali che condizionano l' assemblaggio. Per esempio, è possibile definire un simbolo 

/DDebug /DTestVal=12

oppure cambiare il nome dei file di uscita. Ad esempio chiamare diversamente dal defualt il file lista :

/LMYLIST.LST


Tab Size

Definisce a quanti spazi nel listato .LST darà origine un TAB inserito a video nel testo sorgente. Lo scopo è quello di ottenere una presentazione ordinata e quindi più facilmente leggibile. Il default è 8 spazi per TAB.


 

Save Setting on Exit

La finestra di MPASM, a meno che sia stata disabilitata la casella Save Settings on Exit,  "ricorda" le ultime impostazioni e, una volta chiusa, le ripresenta alla successiva apertura. Questo è molto comodo se si deve ripetere l' assemblaggio dello stesso file sorgente dopo aver corretto gli errori.

Un tasto HELP fronisce un breve aiuto in linea.
un tasto EXIT abortisce il programma. Fino a che non si preme Exit, il programma è sempre attivo e si possono modificare le selezioni e ripetere la compilazione.

Una volta completata la serie delle impostazioni, basterà premere il tasto Assemble perchè il programma prelevi il file sorgente dal path indicato e provveda alla generazione dei files di uscita.

Da notare che il sorgente non viene minimamente alterato. Una finestra indicherà lo stato dell' operazione e il risultato, con l' eventuale totale di errori.

I file richiesti in uscita, a meno di diversa indicazione, saranno depositati nella stessa cartella in cui sta il file sorgente. Questo è piuttosto comodo e sensato. 
Però, lavorando su uno stesso sorgente ed applicando successive modifiche, si dovrà avere l' avvertenza, se si vuole salvare la sequenza delle modifiche, di nominare diversamente ogni passo successivo, ad esempio prova_1, prova_2, prova _3, ecc., altrimenti la modifica del file prova con un testo sorgente diverso sovrascriverà la precedente. 


 


AVVERTENZA:

Fino a che il programma è attivo, ritiene il file sorgente in uso e quindi, (per le regole di Windows e del buon senso) non è possibile modificarlo o spostarlo o cancellarlo, con Windows che dichiarerà un errore di condivisione. Prima sarà necessario chiudere MPASM per poter modificare il file.

 


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 06/12/10.