You are on page 1of 3

Configuracin Software Inicial

Para que un programa funcione correctamente en un PIC hay que


configurar algunos parmetros antes de elaborar el programa.

Estos parmetros los interpretar el compilador cuando generemos el
archivo .HEX :

Indicar con qu tipo de PIC vamos a trabajar:

LIST

P=16F84A ;En nuestro caso vamos a trabajar con
el PIC 16F84A

Para facilitar la escritura del programa, Microchip nos proporciona
para cada tipo de microcontrolador una librera en la cual se definen
las direcciones de algunos registros. Por ejemplo, cuando queramos
referirnos en nuestro programa al puerto A, en lugar de escribir 0x05,
que es la direccin que corresponde a dicho puerto, escribiremos
PORTA, ya que en esta librera ya est definido que PORTA equivale
a 0x05:

INCLUDE

<P16F84A.INC> ;Indicamos el nombre de la
librera PIC 16F84A

* NOTA: Las libreras que incluyamos en nuestros programas,
siempre deberemos referirnos a ellas en la parte ms inferior del
cdigo, justo antes de la instruccin 'END', excepto esta librera, que
lo haremos en la parte superior del programa.



Esta lnea es opcional pero es til aadirla siempre. Si no lo hacemos,
podemos activar/desactivar estas opciones desde el software del
programador:

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON &
_XT_OSC

Qu significa cada una de las opciones?
CP Bit de proteccin de cdigo
WDT Watchdog
PWRTE Temporizador Power-Up
XT Tipo de oscilador externo (XT = Cristal de cuarzo)




Algo que tampoco es del todo necesario pero es de gran utilidad es
indicar a partir de qu direccin empezarn los registros que se
almacenarn en la memoria RAM. Segn vayamos aadiendo nombres
de registros, stos irn incrementando automticamente su nmero de
posicin en la memoria del PIC.

CBLOCK
0x0C
Los registros empiezan a almacenarse en la posicin
0x0C (en el PIC 16F88 empieza en la posicin
0x20).
Registro1 Primer registro (pos.0x0D en PIC16F84, pos.0x21
en PIC16F88)
Registro2 Segundo registro (pos.0x0E en PIC16F84, pos.0x22
en PIC16F88) ...
ENDC Fin de la directiva CBLOCK



Estas lneas s son muy importantes ya que con ellas le decimos al PIC
dnde empieza nuestro programa.
Puesto que la memoria del PIC est dividida en diferentes partes,
debemos indicarle siempre que 'guardemos' algo en ella qu tipo de
datos son.
Por ejemplo, si queremos reservar una parte de la memoria para
almacenar datos variables lo haremos indicndole la posicin 0x0C
(como hemos hecho antes):

ORG 0 'ORG' = guarda los datos en la
memoria de programa y '0' es
la posicin de la memoria.
goto Configuracion_E_S Saltamos donde empezar
nuestro cdigo (ORG 5).

ORG 4 Vector de interrupcin (lo
veremos ms adelante).
goto Rutina_Servicio_Interrupcion

ORG 5 A partir de aqu escribimos
nuestro programa como veris
ms abajo...
Configuracion_E_S





CONFIGURACIN DE ENTRADAS Y SALIDAS
Lo haremos segn las necesidades que tengamos, ya que las lneas de
E/S son configurables. Esto significa que una lnea puede ser tanto una
entrada como una salida. Ser entrada si la programamos con un '1'.
Ser una salida si la configuramos con un '0'.

ORG 5 ;Comienza el
programa
Configuracion_E_S
bsf STATUS,5
movlw

b'00011111' ;PORTA
Entradas
movwf

PORTA
movlw

b'00000000' ;PORTB
Salidas
movwf

PORTB
bcf

STATUS,5


Entre el Puerto A y el Puerto B existen algunas diferencias fsicas,
como corriente mxima que pueden soportar. Puedes consultar estos
datos en esta seccin.



A continuacin vendr el cdigo de nuestro programa:


Programa
... [Cdigo]...
...
...
...
...


Y por ltimo indicaremos, como se ha mencionado anteriormente,
todas las libreras que incluimos al programa, si hacemos uso de
alguna y...IMPORTANTE!! Algo de lo que es muy fcil olvidarse y
si no lo escribimos, el compilador nos dar error, la instruccin END:



INCLUDE <RETARDOS.INC>
END