Vous êtes sur la page 1sur 14

21/12/2016 ElPIC16F84A

DISPOSITIVOSLGICOS Caractersticasespecialesdel
7.1
MICROPROGRAMABLES PIC16F84A

ndice/Introduccin RegistrosdelPIC16F84A EllenguajeensambladordelPIC16F84A

CaractersticasespecialesdelPIC16F84A
ndicedecontenidos
CaractersticasespecialesdelPIC16F84A
ndicedecontenidos
Palabradeconfiguracin
CP
PWRTE
WDTE
FOSC1,FOSC0
Programarlapalabradeconfiguracin
Oscilador
Osciladorexterno
OsciladorTTL
Elreset
Resetalaalimentacin
PoweronReset(POR)
PowerupTimer(PWRT)
OscillatorStartupTimer(OST)
Secuenciadereset
Circuitoderesetalaalimentacinexterno
Resetmanual
Origendelreset
Lasinterrupciones
Funcionamiento
Fuentesdeinterrupcin
Procesogenricoparacrearinterrupciones

Palabradeconfiguracin
HayciertosaspectosdelPICquehandeseractivadosodesactivadoscuandoseprogramay
nosepuedenvolveracambiarhastaqueelPICnosereprogramedenuevo.

ElPIC16F84disponede4elementosprogramables(losmodelossuperiorestienenms)que
se encuentran en la llamada palabra de configuracin. A estos 4 elementos o bits de
configuracintambinselesconocecomofuses(fusibles).

La palabra de configuracin se encuentra en la direccin de memoria de programa 2007 h.


Esta posicin est ms all del espacio de memoria de programa destinada al usuario y
pertenece al espacio de memoria de prueba y configuracin (2000h 3FFFh). Solamente se
puedeaccederaesteespaciodurantelaprogramacindeldispositivo.

R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
CP CP CP CP CP CP CP CP CP CP /PWRTE WDTE FOSC1 FOSC0
B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0

CP,bit4a13:Bitsdeproteccindecdigo.

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 1/14
21/12/2016 ElPIC16F84A

1:Proteccindecdigodeshabilitada.
0:Memoriaprotegidaporcdigo.
PWRTE,bit3:BitparahabilitarelPowerupTimerotemporizadordeencendido.
1:Poweruptimerdeshabilitado.
0:PowerupTimerhabilitado.
WDTE,bit2:BitparahabilitarelWatchdogtimerotemporizadorperroguardin.
1:WDThabilitado.
0:WDTdeshabilitado.
FOSC1,FOSC0,bit0y1:Seleccindeloscilador.
00:OsciladorLP.
01:OsciladorXT.
10:OsciladorHS.
11:OsciladorRC.

CP

ActivandoCP,CodeProtection,tendremoslagarantadequeelcdigoescritoenelPICno
puedaserledoporotrapersona,paraquenosecopie,modifique,etc.Estonoimpidequeel
PICfuncionecomosiempre,ni que no se pueda sobrescribir su contenido. Lo nico que nos
impideesleerlo.

PWRTE

Si activamos el bit PWRTE, conseguimos que se genere un retardo en la inicializacin del


microcontrolador.Estoseutilizaparaquelatensinseestabilice,porloqueserecomiendasu
uso.

WDTE

El "perro guardin" del PIC se configura aqu. Con esto el PIC tiene la capacidad de
autorresetearse.EstilanteproblemasqueimpidanelfuncionamientodelprogramadelPIC,
comounbucleinfinito,elWDTlosacardelresetendoalPIC.

Su funcionamiento es sumamente sencillo. Simplemente es un registro que debemos borrar


cada cierto tiempo. Si pasa un tiempo (entre 2.5ms y 2.5 seg) y el registro no ha sido
borrado,elPICseresetea.LainstruccinparaborrarelregistroesCLRWDT.Conponerun
pardeellosalolargodenuestrocdigoessuficienteparatenerunagarantadequenuestro
PICnosequede"colgado".

FOSC1,FOSC0

MedianteFOSC1yFOSC0controlamoselmododeoscilacinqueusarelPICparafuncionar.
El oscilador se puede configurar de 4 maneras distintas, dependiendo de la velocidad y del
tipodecircuitoosciladorempleado.

XT:Tendremosquedisponerdeuncristaldecuarzoydoscondensadores.Estopermitir
generarlospulsosnecesariosparaelmicrocontroladorconunafrecuenciadeterminada.
La exactitud es muy alta, por lo que se recomienda para casi todas las aplicaciones. El
valordelcristalgeneralmenteserde4Mhz (como mximo) y los condensadores sern
cermicosdeentre15y33nF.
RC: Este es el sistema ms sencillo y econmico. Se basa en un montaje con una
resistenciayuncondensador.LavelocidadalaqueoscileelPICdependerdelosvalores
del condensador y de la resistencia. La mxima frecuencia que podremos emplear con
estesistemaserde5.5MHz(conelPIC16F84A20).
HS: Para cuando necesitemos aplicaciones de alta velocidad, entre 4 y 20 Mhz. Este
montajesebasatambinenuncristaldecuarzo,comoelXT.
LP: (Low Power) Esta modalidad permite un descenso del consumo en el PIC gracias a
quelafrecuenciadeoscilacinesmenorqueenlaconfiguracinXT.AligualqueconXT

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 2/14
21/12/2016 ElPIC16F84A

yHS,necesitaremosuncristaldecuarzo(de32a200KHz)ydoscondensadores.

Programarlapalabradeconfiguracin
Existendosmanerasdeprogramarlapalabradeconfiguracin:

1)CuandoseprogramaelPIC.Entodoslosprogramadoresesposibleactivarodesactivar
estas opciones a nuestra conveniencia. En la siguiente figura puede verse una captura del
programa ICProg, el ms extendido en la programacin de microcontroladores y en la parte
derecha,lasopcionesdeconfiguracin.

2)Activacinporcdigo.Lalneadememoriadeconfiguracinescreadaporelprograma
ensamblador con los valores por defecto. Podemos hacer que estos valores cambien
introduciendo una lnea de cdigo en el nuestro algoritmo. Este cdigo est contenido en el
ficheroqueincluimosenlacabecera(P16F84A.INC):
_CP_ON EQUH'000F';Activacodeprotect
_CP_OFF EQUH'3FFF';Desactivacodeprotect
_PWRTE_ON EQUH'3FF7';Activapoweronreset
_PWRTE_OFF EQUH'3FFF';Desactivapoweronreset
_WDT_ON EQUH'3FFF';ActivaWatchdog
_WDT_OFF EQUH'3FFB';DesactivaWatchdog
_LP_OSC EQUH'3FFC';OsciladorLP
_XT_OSC EQUH'3FFD';OsciladorXT
_HS_OSC EQUH'3FFE';OsciladorHS
_RC_OSC EQUH'3FFF';OsciladorRC

Como podemos ver los nombres de las etiquetas son bastante intuitivos. Este cdigo debe
situarse al principio del programa, despus del tipo de PIC a usar y de la definicin de las
etiquetas. La lnea de configuracin siempre comienza con la directriz __CONFIG y cada
opcindebeestarseparadadeotraconelcarcter&.Veamosunejemplo:
LISTP=PIC16F84A;Picausar

#INCLUDE<P16F84A.INC>;Listadeetiquetasdemicrochip

;Bitsdeconfiguracin.Configuranopcionesexternasdehardwareparalaprogramacion
__CONFIG_CP_OFF&_WDT_OFF&_XT_OSC&_PWRTE_ON

Enesteejemplo,CodeProtectyWatchdogTimerestndesactivados,PoweronReseten
cambioestactivado,yelcristalusadonosuperalos4MHz.

Cuando cargemos el archivo del PIC en el programador (por ejemplo, en IcProg), estarn
marcadas las opciones que hemos configurado en el cdigo. Aunque lo hayamos hecho as,
podemoscambiarestasopcionesenlaventanadelprogramador.

Oscilador
Todo microprocesador o microcontrolador requiere de una seal de reloj que sincronice su
funcionamiento.Estasealseobtienemedianteunosciladordefrecuencia.

Existen microcontroladores que tienen un oscilador interno y no requieren de componentes


externos. El microcontrolador PIC16F84 requiere de un circuito externo de oscilacin o
generadordepulsosdereloj.

La frecuencia de reloj mxima es de 4 MHz para el PIC16F84A04 y de 20 MHz para el


PIC16F84A20.

El PIC16F84 puede utilizar cuatro tipo diferentes configuraciones de reloj. La eleccin


dependerdelaprecisinyvelocidadquerequiramosporotrolado,elcostetambinesun
http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 3/14
21/12/2016 ElPIC16F84A

aspectoatenerencuentaalahoradeelegirunouotro.

Enelmomentodeprogramarelmicrocontroladorsedeberespecificarenlosparmetrosel
tipodeosciladorqueutilizamosenelcircuitoelectrnico.Enesemomento,seprogramandos
bitsdeconfiguracindenominadosFOSC1yFOSC2.Porejemplosilafrecuenciadetrabajoes
de 20 MHz entonces la configuracin del microcontrolador deber estar en "HS" pero si la
frecuenciadetrabajoesde4Mhzentonceslaconfiguracindelmicrocontroladordeberestar
en"XT".

Existen4modosdeosciladorparaelPIC16F84A.Tres(LP,XTyHS)utilizancristaldecuarzo
yelcuarta(RC)utilizaunaresistenciayuncondensador

RelacionadosconlosmodosdeosciladorylafrecuenciamximaalaqueelPICpodrtrabajar
tenemos3versionesdelPIC16F84A:

ElPIC16LF84A04,idealparaaplicacionesdebajoconsumo,puedetrabajarconunaVddde
2a5,5voltiosenlosmodosLP,XTyRC,peronodisponedelmodoHS.Puedeutilizarseenel
modoLPparafrecuenciasentre0y200KHz,enelmodoXTparafrecuenciasentre100KHzy
2MHzyenelmodoRCdesde0hasta2MHz.

El PIC16F84A04, para aplicaciones generales, puede trabajar en los cuatro modos. En el


modoLPparafrecuenciasentre32KHzy200KHz,enelmodoXTparafrecuenciasentre100
KHzy4MHzyenelmodoRChasta4MHz.PuedetrabajarconunaVddde4a5,5voltiosen
losmodosXT,LPyRC,peroelrangoseacortade4,5a5,5voltiosconelmodoHS.

ElPIC16F84A20 se reservar normalmente para el modo HS y frecuencias entre 4 MHz y


20 MHz. Puede trabajar con una Vdd de 4 a 5,5 voltios en los modos XT, LP y RC, pero el
rangoseacortade4,5a5,5voltiosconelmodoHS.

Acontinuacinentraremosenalgunosdetallessobrelosmodosdeoscilador

ModoosciladorXT,LPyHS

LacondicinmsimportanteparaqueesteosciladorfuncioneesqueloscondensadoresC1y
C2 debern ser iguales. En una tabla mas adelante estn reflejados algunos valores de los
condensadoresC1yC2.

Debeutilizarseunaresistenciaenserie(Rs)paracristalesAT.

XT(XTal): Oscilador estndar de cristal de cuarzo, desde una frecuencia de 100 kHz hasta
unmximode4MHzparaelPIC16F84A04.

LP(LowPower):Concristaldecuarzodesde32a200KHz.Esteosciladores igual que el


anterior, con la diferencia de que el PIC trabaja de una manera distinta. Este modo est
destinadoparatrabajarconuncristaldemenorfrecuencia,que,comoconsecuencia,harque
elPICconsumamenoscorriente.EselmodoidealparaelPIC16LF84A04.

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 4/14
21/12/2016 ElPIC16F84A

HS(HighSpeed):Altavelocidad,tambinconcristaldecuarzode4a20MHz.Habremosde
usar esta configuracin cuando usemos cristales mayores de 4 MHz. Es el modo adecuado
paraunPIC16F84A20.

Seleccindecondensadoresparaosciladoresdecristal.

Modo Frecuencia OSC1/C1 OSC2/C2


32Khz 68100pF 68100pF
LP
200Khz 1533pF 1533pF
100Khz 100150pF 100150pF
XT 2Mhz 1533pF 1533pF
4Mhz 1533pF 1533pF
4Mhz 1533pF 1533pF
HS
20Mhz 1533pF 1533pF

ParaunaVDD>4,5V,serecomiendaqueC1=C2=33pF.

Nota:SloelPIC16F84A20podrllegaratrabajara20MHz.

ModoosciladorRC

RC (Resistor/Capacitor): Oscilador Resistencia/Capacidad. Es el ms econmico por que


tan solo se utiliza un condensador no polarizado y una resistencia. Es adecuado para las
aplicacionesdondelastemporizacionesnorequieranprecisin.Lafrecuenciadependede:

Latensindealimentacin
Elvalordelaresistencia
Elvalordelcondensador
Latemperaturadefuncionamiento

Ademsdeesto,lafrecuenciadeoscilacinpuedevariardeunmicrocontroladoraotrodebido
a variaciones en algunos parmetros en la fabricacin de cada integrado. Tambin han de
tenerse en cuenta la variacin debidas a la tolerancia de la resistencia y condensador
utilizados. Incluso las capacidades parasitas que puedan aparecer, como el trazado de las
pistasoconloscontactosdelzcalodondevainsertadoelmicrocontroladorpuedenafectara
la frecuencia de la oscilacin, sobre todo si se utilizan condensadores de pequeo valor. En
general las variaciones de la frecuencia de oscilacin son mayores cuanto mayor sea R y
menorseaC.

EnlafigurasiguienteaparececomodebeconectarseelcircuitoRCalPIC:

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 5/14
21/12/2016 ElPIC16F84A

LafrecuenciamximaenelmodoRCparaelPIC16F84A04esde4MHz.

LosvaloresdeRdebenestarcomprendidosentre5y100K,mientrasquelosvaloresdeCno
debenserinferioresa20pF.

Esimportantesaberqueparavaloresderesistenciamenora5K,elsistemasehaceinestable
osepodradetenerlaoscilacincompletamente.Paravaloresderesistenciasmayoresa100
K (por ejemplo 1 MOhmio), el oscilador se hace muy susceptible al ruido, humedad y a la
temperatura por lo tanto se recomienda que este tipo de oscilador se encuentre en el
siguiente rango (5K < R < 100 K. Por otro lado se recomienda utilizar un condensador no
polarizado mayor de 20 picoFaradios para disminuir el ruido y aumentar la estabilidad del
sistema.

La frecuencia del oscilador, dividida por 4, est disponible en el terminal OSC2/CLKOUT y


puedeutilizarseparacomprobarlafrecuenciaoparasincronizarotrosdispositivos.

Acontinuacinsemuestranalgunosgrficosquemuestranvaloresdefrecuenciadeoscilacin
segn el condensador y la resistencia. Tambin es importante saber que la tensin de
alimentacinquetendrelmicrocontroladorinfluyedirectamenteenlafrecuenciafinal.Enla
figura siguiente se muestran algunas combinaciones de resistencias y condensador. En la
grficasemuestraquelafrecuenciamximaquepuedeconseguirseesdeunos800Khzcon
uncondensadorde300pF.

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 6/14
21/12/2016 ElPIC16F84A

Si nos damos cuenta, para algunos valores del voltaje, el valor de frecuencia se hace
verdaderoparalaexpresindelafrecuenciaquedalafrmula:

f=RxC

DondeCestexpresadoenFaradiosyRenOhmios.Pordesgraciaelpuntoenelquecoincide
lafrecuenciayelvoltajenoeslinealparatodoslosvaloresdeV.

Enlasiguientegrficatenemosquelamximafrecuenciaquepodrserobtenidaesdeunos
1,8Mhzcolocandouncondensadorde100pF.

Finalmenteenlaterceragrficatenemosquelamximafrecuenciaobtenidaconunoscilador
RCesdeunos15Mhzutilizandouncondensadorde22pF.

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 7/14
21/12/2016 ElPIC16F84A

Osciladorexterno

Acontinuacinseexponendosconfiguracionesquesepuedenemplearcontresdeloscuatro
modosdefuncionamiento:XT,HSLS.Enamboscasosseutilizaunosciladorexterno.

Convienerecordarquesegnlafrecuenciadelasealinyectada,debemosusarlaopcinLP
para frecuencias comprendidas entre 32 y 200 KHz, la opcin XT para frecuencias situadas
entre los 100 KHz y los 4 MHz, y la opcin HS para frecuencias comprendidas entre 4 y 20
MHz(dependiendoestaltimadelavelocidadmximapermitidaporelPIC).

Sealderelojexterna:

En ciertas ocasiones disponemos una fuente de reloj que proviene de una fuente externa
comopuedeserunosciladorTTLoCMOS.Laondageneradaporestafuenteexterna puede
servir para poner en funcionamiento el PIC. En la siguiente figura tenemos la forma de
conexionarlaentradadigitalatravesdeuninversorlgico.

Como se puede observar, todos los circuitos oscilatorios que se conectan al PIC a travs de
unasolapatilla,vanconectadasalaentradaOSC1,dejandolaentradaOSC2abierta.

OsciladorTTL

Estetipodeosciladorestbasadoenuncristalquecontienetodalacircuiteraparagenerar
una onda cuadrada. Este ha de ser conectado como si de un generador de seal externa se
tratase.Alincluir toda la circuitera esto lo convierte enla opcinmscostosa pero resulta
unaformainteresanteporlaprecisinenlasealderelojemitida.

Estos tipos de cristales estn diseados especialmente para tecnologas TTL. La frecuencias
disponiblesparaestaversindecristalsonmuyampliasylasmasusualesson11.84322
481011.0591214.318181620253233405080y100Mhz.

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 8/14
21/12/2016 ElPIC16F84A

En la imagen siguiente se muestra como debe conectarse al microcontrolador y las


caractersticasdelcristal.

Elreset
Cuandoseejecutaunreset,seproducendosaccionesimportantes.

Elcontadordeprogramasevuelveacolocarenelprincipiodelprograma(0000h).
Losregistrosmodificadosvuelvenasuestadopordefecto.

Elresetpuedeserprovocadopor3causasdiferentesquedanorigena5modos:

ConexindelaalimentacinalPICPOR(PowerOnReset).
ActivandolapatillaMLCRmientraselPICestenmodonormal.
ActivandolapatillaMLCRmientraselPICestenmodoSLEEP.
UndesbordamientodelWDTmientraselPICestenmodonormal.
UndesbordamientodelWDTmientraselPICestenmodoSLEEP.

Entodosloscasos,salvoenelquinto,elcontadordeprogramaPCseponea0000h(vector
de reset), donde debe encontrarse la primera instruccin ejecutable del programa. Adems
todoslosregistrosespecficos(SFR)son colocados en estados predeterminados (ver Estado
predeterminadodelosregistrosespecficosenRegistrosdelPIC16F84A).

En el quinto caso, cuando se produce un desbordamiento del WDT mientras el PIC est en
modo SLEEP, no se produce un reset propiamente dicho, sino que el PIC se sale del modo
SLEEP, se "despierta" mediante el temporizador watchdog y el PC se incrementa en una
unidadparapasaralainstruccinquesiguealainstruccinSLEEP,igualquecuandosesale
deestemodomedianteunainterrupcin,sielbitGIEdelregistroINTCONestauno.

Resetalaalimentacin

PoweronReset(POR)

CuandosealimentaalPIC,segeneraautomticamenteunresetgraciasauncircuitointerno
que detecta la subida de la tensin de alimentacin en el rango de 1.2 a 1,7 voltios. Esto
elimina la necesidad de utilizar un circuito externo mediante resistencia y condensador para
conseguirunresetalaalimentcinysinovaautilizarse un reset manual, la patilla MCLR,
puede conectarse a positivo (VCC) directamente o a travs de una resistencia para
desactivarla.

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 9/14
21/12/2016 ElPIC16F84A

PowerupTimer(PWRT)

PWRTesunsistemainternodelmicrocontroladorquelomantienereseteadoduranteunos72
mshastaqueseestabilicelatensindealimentacin.UtilizauncircuitoosciladorRCinternoy
uncontadorparaconseguiresetiempo.

EltiempoenqueestactivoPWRTpuedeserdistintoentredistintosPIC,segnelvalorde
Vcc,latemperaturayotrasvariables.

PWRT puede se habilitado/deshabilitado mediante el bit de configuracin PWRTE ,


recomendandosesuactivacin(verPalabradeconfiguracin).

OscillatorStartupTimer(OST)

OST es un temporizador interno que proporciona un retardo de 1024 ciclos del oscilador
despus de que termine el retardo que proporciona PWRT . Se utiliza para mantener
reseteado al microcontrolador para asegurarse que la oscilacin del cristal de cuarzo o
resonadorsehainiciadoysehaestabilizado.

OST acta solamente si se utilizan los modos XT , LP y HS y cuando se alimenta al PIC o


cuandosedespiertadesdeelmodoSLEEP.

Secuenciadereset

TeniendoencuentaloquehemosvistosobrePOR,PWRTyOST , la secuencia que que se


siguesiPWRTyOSTestnhabilitadoses:

PWRTactadespusdequePORtermine.
OSTactadespusdequePWRTtermine.

El tiempo total variar segn el modo del oscilador y la configuracin de PWRTE. Por
ejemplo,enelmodoRCconPWRTdeshabilitadoeltiempoderesetsermnimo.

Alimentacin
Configuracin Despertardesde
oscilador PWRT SLEEP
PWRThabilitado
deshabilitado
72ms+1024
XT,HS,LP 1024TOSC 1024TOSC
TOSC
RC 72ms

Circuitoderesetalaalimentacinexterno

Este circuito de reset a la alimentacin externo es nicamente necesario si la subida de la


tensin de alimentacin es muy lenta. En la figura siguiente se muestra la configuracin
necesariapararealizarunresetautomtico:

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 10/14
21/12/2016 ElPIC16F84A

Algunasreglasbsicaspararealizarestecircuitoson:

EsrecomendablequeR1seamenorde40Kparaasegurarsequesutensinno supere
los0,2voltioscuandoMCLRestanivelalto(lacorrientemximaenlapatillaMCLRes
menorde5A).UnvoltajemayorpuededegradarelnivleVIHdelapatillaMCLR.
SerecomiendaqueR2estentre50y100ohmios.
EldiodoD1ayudaaprovocarunadescargarpidadelcondensadorcuandoseeliminala
alimentacin.

Nota: Si en MCLR se aplica una tensin por debajo de VSS se pueden inducir corrientes
mayores de 80 mA, que pueden causar problemas. Para solucionar esto se coloca una
resistenciade50a100ohmiosparaaplicarunnivelbajoalapatillaMCLRenlugardellevar
estapatilladirectamenteaVSS.EnnuestrocasoestaresistenciaesR2.

Para terminar habra que decir que, en la mayora de los casos ser ms que suficiente con
conectarMCLRalaalimentacinpositiva(VCC)yusarlosdispositivosderesetdelPIC.

Resetmanual

EnelcasodequeseanecesariosepuedeaplicarunresetmanualalapatillaMCLRmediante
unpulsadoryunaresistencia.

Lasiguientefiguramuestraunaconfiguracinbsicapararealizarunresetmanual:

La resistencia de 100 ohmios puede eliminarse del circuito al no existir peligro de que en
MCLR aparezcan tensiones menores de VSS. Pero debera mantenerse si se coloca un
condensadorenparaleloalpulsador.

Origendelreset

Es posible distinguir por software el origen del reset, para lo que basta con leer los bits TO
(Timer Out) y PD (Power Down) del registro de estado como se muestra el la tabla
siguiente:

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 11/14
21/12/2016 ElPIC16F84A

TO PD ORIGENDELRESET
0 0 DesbordamientoWDTenmodoSLEEP.SehasalidodelmodoSLEEP.
0 1 DesbordamientoWDTenmodonormal.
1 0 ActivacinMCLRenmodoSLEEP
Conexindealimentacin(POR)
1 1
ActivacinMCLRenmodonormal

Lasinterrupciones
El sistema de interrupciones consiste en un mecanismo por el cual un evento interno o
externo, asncrono respecto al programa, puede interrumpir la normal ejecucin de ste
produciendo automticamente un salto a una subrutina, de manera que pueda atender
inmediatamenteelevento,yretomarluegolaejecucindelprogramaexactamenteendonde
estabaenelmomentodeserinterrumpido.

Este mecanismo es muy til por ejemplo para el manejo de timers o rutinas que deben
repetirse peridicamente (refresco de display, antirrebote para teclado, deteccin de pulsos
externos,recepcindedatos,etc.).

Funcionamiento

Lasinterrupcionessecomportancasiexactamenteigualquelassubrutinas.Desdeelpuntode
vistadelcontroldelprograma,alproducirseunainterrupcinseproduceelmismoefectoque
ocurrirasielprogramatuvieseunCALL0004h(unallamadaaunasubrutinasituadaenla
posicindememoria0004h)enelpuntoenqueseprodujolainterrupcin.Enelregistrode
controldelsistemadeinterrupcionesprincipal(INTCON)existeunbitdehabilitacingeneral
de interrupciones GIE , que debe ser programado a 1 para que las interrupciones puedan
actuar.Alproducirseunainterrupcin,estebitseborraautomticamenteparaevitarnuevas
interrupciones.

LainstruccinRETFIEseutilizaalfinaldelarutinadeinterrupcin,yesidnticaaunretorno
desubrutina,salvoqueademscolocaaunoautomticamenteelbitGIEvolviendoahabilitar
las interrupciones. Dentro de la rutina de interrupcin, el programa deber comprobar el
estadodelasbanderasdeinterrupcindecadaunadelasfuenteshabilitadas,paradetectar
cualfuelaquecauslainterrupcinyasdecidirqueaccintomar.

EnlasiguientefigurasemuestralalgicacombinacionalqueusaelPIC16F84Aparadetectar
unainterrupcin.CadainterrupcinseautorizamanualmenteatravsdelbitXXXEydespus
generalmente,atravsdelbitGIE.VerRegistroINTCON.

Fuentesdeinterrupcin

Lasealqueproducelainterrupcinesenrealidadunasola,queresultadelacombinacinde
todaslasfuentesposiblesydelosbitsdehabilitacin.

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 12/14
21/12/2016 ElPIC16F84A

LasfuentesdeinterrupcinvaranconcadaversindePIC,ypuedenser,porejemplo:

InterrupcinexternaporpinRB0/INT.
DesbordamientodelTimer0.
DesbordamientodelTimer1.
DesbordamientodelTimer2.
Cambioenelestadodelosbits4a7delpuertoB.
Interrupcindelcapture/compare1.
Interrupcindelcapture/compare2.
Transmisinorecepcindeuncarcterporlainterfaceseriesincrnica.
Transmisinorecepcindeuncarcterporlainterfaceserieasincrnica.
FindeconversinA/D.
Lectura/escrituradelpuertoparalelodecomunicacinconotrosmicroprocesadores.
EscrituradeEEPROMfinalizada.

EnelcasodelPIC16F84A,lasfuentesdeinterrupcinson4:

InterrupcinexternaporpatillaRB0/INT.
DesbordamientodelTimer0(TMR0).
Cambioenelestadodelosbits4a7delpuertoB.
EscrituradeEEPROMfinalizada.

Procesogenricoparacrearinterrupciones

Como ya sabemos una interrupcin slo puede ejecutar un solo vector de interrupcin. Esto
significa,queadiferenciadeotrosmicrocontroladores,quetienenunvectorparacadatipode
interrupcin,aquslodisponemosdeunoparatodaslasinterrupciones.Porconsiguiente,en
la interrupcin tendremos que comprobar las banderas correspondientes para saber que
fuentehasidolaquehacausadolainterrupcin.

Veamos un ejemplo. En el siguiente fragmento de cdigo, definimos el vector de resetenla


posicin 0x00, como siempre, y en la instruccin siguiente saltamos al principio del
programa. Despus definimos el vector de reset, mediante la instruccin ORG 0x04 y a
continuacin est situado el cdigo perteneciente a la subrutina de la instruccin. Esta
terminaconlainstruccinRETFIE.Sinosdamoscuenta,alprincipioelprogramapreguntasi
lainstruccinfueprovocadaporlapatilladeinterrupcinexterno.Antesderetornarelcontrol
al programa principal se baja la bandera que provoc la interrupcin. La instruccin de
retornovuelveahabilitarlasinstrucciones.

;************************************************;
;ESTEPROGRAMAHACEUNCONTADORDECIMALDEUN;
;DISPLAYDE7SEGMENTOS,SEINCREMENTACADAVEZ;
;QUEELMICROTIENEUNAINTERRUPCIONPORELPIN;
;RBO/INT;
;************************************************;

LISTP=PIC16F84A

;ENVEZDEINCLUIRELARCHIVOP16F84A.INC
;DEFINIMOSAQULASETIQUETASQUEUSAREMOS
STATUS EQU 03h
PORTA EQU 05h
TRISA EQU 05h
PORTB EQU 06h
TRISB EQU 06h
INTCON EQU 0Bh
CONTA EQU 0Ch
LOOPS EQU 0Dh
LOOPS2 EQU 0Eh
OPCION EQU 01h

Z EQU 02h
W EQU 00h

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 13/14
21/12/2016 ElPIC16F84A
ORG 0X00 ;VECTORDERESET
GOTO INICIO ;SALTAALINICIODELPROGRAMA

ORG 0X04 ;VECTORQUEATIENDELAINTERRUPCION

CALL RETARDO ;LLAMAARETARDO


BTFSC PORTB,0 ;PREGUNTAPORELPINRB0
GOTO SALE ;SALTAALAETIQUETASALE
BTFSS INTCON,1 ;CONFIRMASILAINTERRUPCIONFUE
;CAUSADAPORELPININT
GOTO SALE ;SALTAALAETIQUETASALE
INCF CONTA ;INCREMENTAELCONTADOR
MOVF CONTA,W ;CARGAWCONELCONTADOR
XORLW 0X0A ;XORPARAVERSIESIGUALA0Ah
BTFSC STATUS,Z ;PRUEBASIELCONTADORLLEGA0Ah
CLRF CONTA ;SILLEGA10PASAA0

MOVF CONTA,W ;PASAELDATOALDISPLAY


MOVWF PORTA
CALL RETARDO ;LLAMAARETARDO

SALE BCF INTCON,1 ;PONEACEROLABANDERADEINTERRUPCION


RETFIE ;REGRESAALPROGRAMAPRINCIPAL

RETARDO
MOVLW .100
MOVWF LOOPS
TOP2 MOVLW .110
MOVWF LOOPS2
TOP NOP
NOP
NOP
NOP
NOP
NOP
DECFSZLOOPS2
GOTOTOP
DECFSZLOOPS
GOTOTOP2
RETLW0
INICIO
.......

ndice/Introduccin RegistrosdelPIC16F84A EllenguajeensambladordelPIC16F84A

http://perso.wanadoo.es/pictob/micropic16f84_3.htm#oscilador 14/14

Vous aimerez peut-être aussi