Chiamate il Tecnico   -  via Strada Sannitica 31 - Casoria - Na    Tel 338-8208651     e-mail:  cobucci.t@inwind.it

 
 

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

 
 
       
       
    WebMaster: Tommaso Cobucci