| Concetti
software
|
|
I microcontroller ST62 sono basati su un'architettura a 8 bit. Non possiedono istruzioni specifiche per il trattamento di grandezze maggiori di 8 bit, pertanto i registri e le celle di memoria possono contenere solo valori interi compresi tra 0 e 255. Operazioni con valori più grandi, o con dati di tipo diverso, possono essere realizzate scrivendo appositi algoritmi. WATCH
DOG TIMER
REGISTRI:
PROGRAMMAZIONE:
Le celle di memoria RAM possono essere puntate tramite un registro indice (X o Y) oppure avere un nome ed essere trattate a tutti gli effetti come un qualsiasi altro registro. La direttiva di compilazione DEF permette di definire il nome di una qualsiasi cella di memoria, sia dell'area dati utente, sia delle aree in cui sono mappati i registri e le periferiche. Tutti i programmi per ST iniziano con una parte in cui si definiscono i nomi delle aree che si vogliono usare: ;---------------------------------------------------------
Da questo momento è
possibile effettuare operazioni con queste celle:
Il programma vero e proprio deve essere caricato all'indirizzo 0880h se si usa un ST6210/15, o all'indirizzo 0080h se si usa un ST6220/25. Nel primo caso può essere lungo fino a 1828 bytes, nel secondo fino a 3872 bytes. Possono sembrare pochi, ma lavorando in assembler, e considerando che questi sono solo dei microcontroller (e non dei microprocessori per compiti complessi) sono più che sufficienti. La direttiva di compilazione ORG permette di definire a quale indirizzo andranno caricati i bytes di codice eseguibile ottenuti dalla compilazione delle istruzioni. Se si usa un ST6220 si dovrà scrivere: .ORG 0080h Nel programma inoltre deve sempre essere inclusa una sezione con il vettore di interruzione di RESET, e questo perchè all'accensione il microcontroller genera automaticamente un int di reset. Questo vettore fisicamente
è allocato negli ultimi due bytes della EPROM (indirizzi 0FFEh-0FFFh)
e consiste in un'istruzione di salto (JP indirizzo) all'inizio del programma.
Come prima istruzione di programma deve essere messa la "ricarica" del WDT, e come seconda un RETI (ritorno da interrupt). Il microcontroller con questo primo RETI in realtà non "ritorna" da nessuna parte e il programma prosegue con l'istruzione successiva. ;---------------------------------------------------------
... QUI VANNO
LE ISTRUZIONI DEL PROGRAMMA ...
;---------------------------------------------------------
.END
Alla fine del programma deve sempre essere messa la direttiva di compilazione .END. SUBROUTINES:
Con l'istruzione RET si termina il sottoprogramma, l'indirizzo di ritorno viene estratto dallo stack e il programma prosegue con l'istruzione seguente la CALL. Se si usano gli interrupt si deve ricordare che l'avvio di un gestore di interrupt è equivalente a una CALL, e pertanto richiede la memorizzazione di un valore nello stack. Con RETI si termina il gestore dell'interrupt e si recupera dallo stack l'indirizzo di programma a cui tornare. PECULIARITA'
SUI FLAGS
Un gestore di interrupt, attivato da una periferica interna o dal pin NMI, usa un set alternativo di flags. Con l'istruzione RETI i flags riprendono il valore che avevano prima della richiesta di interrupt. Nota: Per resettare il flag C si può effettuare un CP A,A (il flag Z però viene settato).
Pagina realizzata da Claudio Fin - Ultimo aggiornamento 5-11-1999 |