Está en la página 1de 5

ProgramandomicrocontroladoresPICconProtn

PROGRAMANDOMICROCONTROLADORES
PICCONPROTN
PARTE3:CONFIGURACINDELOSREGISTROSTRIS
YPORTENPORTNYNUESTROPRIMER
PROGRAMA.
Los registros TRIS y PORT tienen un nmero determinado de bits, por ejemplo, el
PORTB es un puerto bidireccional de 8 bits, el registro de direccin de datos
correspondienteesTRISB.ConfigurarestosregistrosenProtnesmuysencillo,como
se mencion anteriormente, se puede configurar un solo bit, o todos los bits de un
puertoespecfico,teniendoencuentaqueun0hacequeelbitfuncionecomosalida
yqueun1funcionecomoentrada,siempreycuandoelbitolosbitsdelpuertoque
seestconfigurandoseanbidireccionales.

EncabezadodelPrograma.

Elencabezadoeslaparteprincipaldenuestroprograma,sedebeindicaralcompilador
bsicamentelosiguiente:

Microcontroladorautilizar
Frecuenciaalaqueprocesarelmicrocontrolador
Configuracinderegistros
Declaracindevariables.

Para indicar alcompilador el microcontrolador que se va a utilizarlo debemos hacer


conDEVICE,quetienelasiguientesintaxis:

DEVICEnombredeldispositivo.

Descripcin.InformaalcompiladorelMicrocontroladorPICquesevaautilizar.

En este caso en particular, vamos a utilizar el 16F84A que es un microcontrolador


bsico,porlotantoladeclaracindebequedaras:

DEVICE16F84A

Con esto, el compilador entiende, que el cdigo Hexadecimal que debe generares
parael16F84A.Recuerde,notodoslosmicrocontroladoressoniguales,existenvarios,
por lo tanto hay que especificar cul se va a utilizar, si no se declara el

Ing.GiovanniLafebreJ.(Cel:096376496)M&M


ProgramandomicrocontroladoresPICconProtn

microcontroladorquesevaautilizar,elcompiladordeProtnIDE,generarelcdigo
paraelPICmspopular,queesjustamenteelqueestamosutilizando(16F84A).

Losdispositivossoportadosenlaversin3.2.5.5deProtnIDEsonlossiguientes:
PICde12bitOTP(OneTimeProgrammable)
12C508,12C509,12C508A,12C509A,12CE518,12CE519,16C54,16C54A,16C54B,
16C55,16C55A,16C56,16C56A,16CR56,16C57,16C57C,16CR57A,16CR57B,
16C58,16C58A,16CR58A,16CR58B,16CR58C,RF509AF,RF509AG
PIC12bitFLASH(Regrabable)
10F200,10F202,10F204,10F206,12F508,12F509,16F54,16F57
PIC14bitOTP(OneTimeProgrammable)
12C671,12C672,12CE673,12CE674,16C505,16C554,16C554A,16C558,16C558A,
16C61,16C62,16C620,16C620A,16C621,16C621A,16C622,16C622A,16C62A
16C62B,16C63,16C63A,16C64,16C641,16C642,16C64A,16C65,16C65A,16C65B,
16C66,16C661,16C662,16C67,16C67,16C71,16C710,16C711,16C712
16C715,16C716,16C71A,16C72,16C72A,16C73,16C73A,16C73B,16C73C,16C74,
16C745,16C74A,16C7616C765,16C77,16C770,16C771,16C773,16C774
16CE625,16CR56,16CR57A,16CR57B,16CR58A,16CR58B,16CR58C,16CR620A
PIC14bitFLASH(Regrabable)
12F629,12F635,12F675,12RF675,12F683,16C84,16CR84,16F627,16F627A,16F628,
16F628A,16F630,16F648A,16F676,16F684,16F685,16F688
16F688,16F689,16F690,16F72,16F73,16F737,16F74,16F747,16F76,16F767,16F77,
16F777,16F785,16F818,16F819,16F83,16F84,16F84A
16F87,16F870,16F871,16F872,16F873,16F873A,16F874,16F874A,16F876,
16F876A,16F877,16F877A,16F88,16F913,16F914,16F916,16F917
PIC16bitOTP(OneTimeProgrammable)
18C242,18C252,18C442,18C452,18C658,18C858
PIC16bitFLASH(Regrabable)
18F1220,18F1320,18F2220,18F2320,18F2331,18F2410,18F242,18F2431,18F2439,
18F248,18F2455,18F2510,18F2515,18F252,18F2520,18F2525,18F2539
18F258,18F2550,18F2585,18F2610,18F2620,18F2680,18F4220,18F4320,18F4331,
18F4410,18F442,18F4431,18F4439,18F448,18F4439,18F4455,18F4510,18F4515,
18F452,18F4520,18F4525,18F4539,18F4550,18F458,18F4585,18F4610,18F4620,
18F4680,18F6585,18F6620,18F6680,18F6720,18F8585,18F8620,18F8680,18F8720
Una ves que se ha declarado el microcontrolador a utilizar, hay que indicarle al
compilador la frecuencia con la que procesar, esto es muy importante para que se
puedan generar adecuadamente los retardos y las instrucciones por software, si se
declara una frecuencia diferente a la que se utilizar en la realidad, el proceso ser
msrpidoomslento,yalgunasdelasinstruccionesnofuncionarnadecuadamente.

Ing.GiovanniLafebreJ.(Cel:096376496)M&M


ProgramandomicrocontroladoresPICconProtn

La forma de declarar la frecuencia a utilizar es utilizando XTAL, cuya sintaxis es la


siguiente:

XTALFrecuenciadelOscilador.

Descripcin.Ajustaciertosaspectosdelcdigoproducido,porejemplo,lafrecuencia
delcristal,lavelocidadenbaudiosparaunatransmisinserial,elretardocorrectopara
laspausas(delaymsydelayus),etc.

Hay que tener cuenta cual es el valor mximo al que puede procesar un
microcontrolador,lasfrecuenciassoportadasporProtnIDEson

XTAL: 4, 8, 10, 12, 16, 20, or 24. Para PIC de 12 BIT.


XTAL: 3, 4, 8, 10, 12, 14, 16, 20, or 24. Para PIC de 14 BIT.
XTAL:3,4,8,10,12,14,16,20,24,25,32,33,or40.ParaPICde16BIT.

Sinosedeclaralafrecuencia,lafrecuenciapordefectoes4Mhz.

ElPIC16F84Apuedellegarasoportarhasta20Mhz,esundispositivode14BIT,para
nuestros programas de inicio no necesitamos una frecuencia mayor de 4Mhz, por lo
tantoladeclaracinquedaraas:

XTAL4

PrimerPrograma.

Elprocesodeaprendizaje,demandademuchapaciencia,sisequiereaprenderbien,
hayqueempezarporlobsicoycadavesiraumentandoelgradodedificultadenlos
proyectos y ejemplos que se realicen, as que el primer programa que haremos es
hacerparpadearunledconectadoalpinRB0.

Porlotanto,unavesquesehadeclaradoelmicrocontroladorylafrecuenciaalaque
sevaaprocesar,sedebenconfigurarlosregistrosdelmicrocontrolador,utilizaremos
nicamente el bit RB0 que corresponde al pin 7 del microcontrolador, obviamente
debeserconfiguradocomosalida:

TRISB.0=0configuraelBITRB0utilizandounvalordecimal.

Comosepuedeapreciar,sehaconfiguradonicamenteelbitRB0comosalida,selo
puedeconfigurarutilizandounnmerobinario,hexadecimalounnmerodecimal,en
elcasoanterior,seestconfigurandoconunvalordecimal,siseloquierehacerconun
valorbinarioohexadecimal,sedebenutilizarlosoperadores%y$

TRISB=%0configuraelBITRB0utilizandounvalorbinario.
TRISB=$0configuraelBITRB0utilizandounvalorhexadecimal.

Ing.GiovanniLafebreJ.(Cel:096376496)M&M


ProgramandomicrocontroladoresPICconProtn

EstodejaconfiguradoelPUERTOB.0comosalida,assepuedeasignarunvalorlgico
alpuertoparaquepuedaencenderoapagarelled.

Para que se pueda apreciar el parpadeo del led, utilizaremos una instruccin de
retardo,DelayMs,susintaxises:

DelayMslongitud

Descripcin. Genera un retardo de X milisegundos (ms). Los retardos no deben


excedersede65535ms(65.535s)

El led se debe conectar de la siguiente forma: el ctodo a tierra y el nodo a una


resistenciade220queiralRB0delPIC,loprimeroquesedebehaceresasignarun
valor de 0 o 1 al bit puerto, de esta forma cuando exista un 1 el led se
encender,sedebegenerarunretardoparaverloencendidoyseguidamentesedebe
asignarun0albitparaqueelledseapague,tambinsedebegenerarunretardo
paraquesepuedaverapagadoelled.

PORTB.0=1
DelayMS1000
PORTB.0=0
DelayMS1000

Senecesitardeunaetiquetaparaqueelprogramaseestrepitiendocontinuamente.

Etiquetas(Labels).

Los nombres de las etiquetas pueden contener hasta 32 caracteres de longitud y


puedencontenercualquiervaloralfanumrico,peronodebenempezarconunvalor
numrico, no se pueden poner espacios en el nombre de la etiqueta y al final del
identificador se debe colocar los dos puntos : un ejemplo de una etiqueta es el
siguiente:

Etiqueta1:

Sisequiereseparardospalabrasenunamismaetiqueta,sepuedeutilizarlalneabaja:

Etiqueta_nueva1:

Unaetiquetanopuedeempezarconunnmero:

1etiqueta:

Sielnombredelaetiquetasobrepasalos32caracteres,tieneunespacioenblancoo
empiezaconunnmeroelcompiladornosindicarquehayunerrordesintaxisenla
etiqueta.

Ing.GiovanniLafebreJ.(Cel:096376496)M&M


Pro
ogramand
domicroco
ontrolado
oresPICco
onProtn

Las etiquetas
e
so
on utilizadaas para pod
der acceder a una partte especficca del progrrama,
parairaunaetiquetaespeecficasepuedeutilizarrGOTO,cuyyasintaxiseeslasiguiente:

GoTo
oEtiqueta

Desccripcin.Saaltaaunaettiquetadefiinidaysigue
elaejecuci
ndesdeah
h.

Deestaformato
odoelproggramaquedardelasigguienteform
ma:

Device1
16F84A'PICa
autilizar

XTAL4
'Frecuenc
ia

B0comosalid
da
TRISB.0==0'ConfiguracindelbitRB

ama
inicio:'eetiquetadeiniciodelprogra
PORTTB.0=1'seasig
gnaalbitRB0
0un"1"lgico
o

Delay
yMS1000'Ret
tardode1000
0ms(1s)para
doelled
verencendid

PORT
TB.0=0'seasig
gnaalbitRB0
0un"0"lgico
o

DelayyMS1000'Rettardode1000
0ms(1s)paraverapagadoelled

GoToinicio'saltaa
alaetiquetain
nicio:yserepiteelprogram
mainfinitamen
nte

Elcirrcuitoquesedebeutiliizarparaesteejemploeselsiguieente:

ADVE
VERTENCIA: El microco
ontrolador no es una fuente de tensin, haay que refe
erirse
siemprealasho
ojasdedatosparaverrcualesel nivelmxim
modecorriientequep
puede
sumiinistrar,enelcasodel18F84A:

Altacorrientefu
uente/sumideroparau
utilizacin
direcctadeLED.
25ma mximo
m
p
por
pin en modo
sumidero
25mamximoporp
pinenmodo
ofuente

Ing.GiovanniLaffebreJ.(Cel:096376496)) M&M