|
|
Scrivere
un programma per Pic |
|
Per scrivere un sorgente per Pic, bisogna avere delle nozioni di
assembler e conoscere innanzi tutto come iniziare un
programma. |
|
L'inizio di un programma è quasi sempre identico, perchè
bisogna dare delle direttive al compilatore,
dichiarare variabili e costanti, impostare lo stato delle
porte e scrivere il Main. Vediamo qualche comando : |
|
PROCESSOR 16F84 'Direttiva PROCESOR: dice al programma che
stiamo utilizzando il PIC 16f84 |
RADIX DEC
'Direttiva RADIX: specifica che
i numeri sono in formato decimale |
INCLUDE
"P16F84.INC" 'Direttiva INCLUDE:
specifica al compilatore di caricare quel file, che include
le definizioni di alcuni parametri standard. |
__CONFIG
3FF3H
' Direttiva
CONFIG: setta i fuses del pic. 3FF3 significa NO,YES,NO,RS.
Vedere la sezione 'burning'. La si mette solo per evitare di
inserirli manualmente. |
ORG 0CH
' Direttiva
ORG 0Ch: Dice al compilatore che cio che segue fa parte
della ram. dichiareremo in seguito le variabili |
Count RES 2
' Direttiva
RES: Riserva 'n' bytes di memoria per la variabile (2
bytes per la variabile Count ) |
ORG 00H
' Direttiva
ORG 00H: Dice al compilatore che da qui in poi inizia il
programma vero e proprio. In caso di reset del pic, si
riparte da qui. |
bsf STATUS,RP0
'
Utilizziamo ora il comando "bsf"
che mette ad 1 un determinato bit, di un determinato
Registro. |
nel nostro
caso il registro sarà "STATUS"
ed il Bit "RP0"
(definiti nel file "P16F84.INC").
Questa operazione ci abilita alla modifica della
configurazione delle Porte (Port-A - Port-B).
Potremo definire a questo punto se ogni singolo RAX o RBX
sarà utilizzato come porta di ingresso o di uscita. |
movlw 00000000B
' Istruzione
MOVLW carica nell'accumulatore (indicato con 'W' nei
PIC) una costante. Nel caso 0. |
Ogni singolo
Bit identifica una porta. |
movwf TRISA
'
Istruzione MOVWF: Mette l'accumulatore (W) nel
registro specificato (nel nostro caso TrisA) |
avremo quindi
impostato tutte uscite sulla Port-A.
Se il bit e 0
la porta è in Uscita, se il Bit è 1 la porta è in ingresso.
Es: con 00000101B, imposteremo 6 pin di una Port come
uscite e 2 pin come ingresso, nel caso di Port-B avremo :
RB0 = IN , RB1 = OUT, RB2 = IN, RB3 = OUT, RB4 = OUT, RB5 =
OUT, ... |
movlw 00000000B
' IDEM |
movwf TRISB
'
IDEM ma questa volta sulla Port-B |
bcf STATUS,RP0
'
Utilizziamo ora il comando "bcf"
che mette a 0 un determinato bit, di un determinato
Registro. |
Abbassando il
bit "RP0", non potremo più
modificare le impostazioni delle porte. |
movlw 00000001B
' IDEM
|
movwf PORTB
'
Questa volta spostiamo il contenuto di (W) nel registro
PORTB e ATTENZIONE !!!, questa volta non impostiamo il
piedino come uscita ... ma lo portiamo a livello logico
ALTO. Se su quel pin avessimo un LED lo vedremo accendersi. |
clrf PORTA
'
Questo comando azzera una Variabile o un Registro, se sulla
Port-A avessimo avuto del led accesi, questo comando li
avrebbe spenti tutti. |
call Delay
'
L'istruzione "call" chiama una "SubRoutine"
|
goto Controlla
' L'istruzione "goto" alla label indicata |
END
'
per chiudere il listato
|
|
le istruzioni che servono per programmare un pic, non sono
ovviamente tutte qui. A questo punto però, avrete
sicuramente intuito cosa si intende per assembler, rimando
quindi ai manuali in commercio l'approfondimento. |
|
Per scrivere il nostro sorgente utilizziamo il Notepad di
Windows (o un qualsiasi editore di testo) proprio come segue
: |
|
|
|
Salvato il file Esempio.asm (è un file di testo, ma l'
estensione serve a farci capire che contiene codice
assembler) , utilizzeremo uno strumento che
trasformerà il nostro sorgente .ASM in un file .Hex |
Il nostro programma verrà quindi compilato e sarà pronto per
essere inviato al Pic. |
|
Per eseguire la compilazione del sorgente utilizzeremo un
software Free (il Migliore),
Mpasm della Microchip. |
http://ww1.microchip.com/downloads/en/DeviceDoc/asm21500.zip
|
|
|
|
Bisogna : Caricare il file, Impostare il tipo di
processore e
compilare il listato (Tasto Assemble), se tutto è andato a buon fine, e non
ci sono errori nel sorgente, otterremo una risposta del genere : |
|
|
|
Troveremo nella cartella del sorgente anche il file "Esempio.Hex",
questo sarà pronto per essere caricato nel Pic. |
|
|
|
|
Programmazione di un Pic
|
|
|
|
|