2ª forros.qxd:Maquetación 1 15/01/14 12:46 Página 1publicidad.ventadewebs.com.ar/Desde...
Transcript of 2ª forros.qxd:Maquetación 1 15/01/14 12:46 Página 1publicidad.ventadewebs.com.ar/Desde...
2ª forros.qxd:Maquetación 1 15/01/14 12:46 Página 1
Los microcontroladores de la empresa Microchip, “ los PIC” ,están ocupando un lugar de privilegio dentro de la industria elec-trónica, gracias a la facilidad de implementar programas con unset reducido de instrucciones y a la importancia que poseen suscaracterí sticas.
Cuando en 1998 publiqué el primer artí culo sobre estos circuitosintegrados, no creí que su divulgación llegarí a tan lejos; sinembargo, ocho años después debo reconocer que trabajar conestos chips es un placer del que no se deben privar los amantesde la electrónica.
Hace algo más de cinco años Editorial Quark publicó el primerlibro sobre este tema titulado: “ Todo Sobre PICs” , texto quetrata sobre las caracterí sticas fundamentales de estos dispositivosy qué es necesario para editar programas, simularlos y cargarlosen la memoria de los integrados.
Todo Sobre PICs (que también fue el primer texto publicado porEditorial Quark en forma simultánea en varios paí ses de AméricaLatina) es el libro que debe leer todo aquel que se inicia en esta dis-ciplina, mientras que Microcontroladores PICs persigue enseñar allector a construir programas para armar sus propios dispositivos.Este es también un texto básico, dado que utilizamos estructuras muysencillas para realizar los primeros programas. Somos conscientesque para que alguien pueda trabajar con un dispositivo primerodebe conocerlo y por ello en el capí tulo 1 hablamos sobre los difer-entes bloques que integran a los PIC, basándonos en la familia16X54/84 (que fue el componente que tomamos como referencia enel primer libro). De esta manera Ud. debe saber qué es y cómo seemplea la memoria de datos, la memoria de programa, el perroguardián, el registro de STATUS, etc.
Una vez que tiene conocimientos sobre los recursos con que cuen-ta, en el capí tulo 2 presentamos las 35 instrucciones del set RISCde esta familia, dando ejemplos de uso en cada caso. Por ello, espro-bable que cuando lea algunos temas del capí tulo 1 (comoverificación de un dato escrito en la memoria) precise “ conocer”cómo se manejan determinadas instrucciones. Dicho de otraforma, si al leer un punto en particular no entiende algún con-cepto, continúe la lectura y, seguramente, más adelante compren-derá lo que hemos querido decir.
Por último, en el capí tulo 3 damos ejemplos de programaciónsobre “ circuitos reales” , utilizando algunos temas escritos por elIng. Picerno en Saber Electrónica, modificados convenientementepara que “ aprenda mientras se ejercita” . Estoy convencido queeste texto es mejor que el primero, pero no caben dudas que, siUd. no sabe nada sobre microcontroladores, precisará leer el libroTodo Sobre PICs.
Ing. Horacio D. Vallejo
Microcontroladores PIC
Editorial
1ISBN Nº: 987-1116-69-1ISBN Nº: 978-987-1116-69-0
Legales
2
N º 1 2 0
Di rec tor de la Colección Club SaberElectrónicaIng. Ho ra cio D. Va lle joJefe de RedacciónPablo M. Dodero
Club Saber Electrónica es una publi-cación de Saber Internacional SA deCV de México y Editorial Quark SRL de Argentina
Editor Responsable en Argentina yMéxico: Ing. Horacio D. Vallejo
Administración México: Patricia Rivero Rivero
Comercio Exterior México: Margarita Rivero Rivero
Director Club Saber Electrónica: José María Nieves
Responsable de Atención al Lector:Alejandro A. Vallejo
Coordinador InternacionalLuis Alberto Castro Regalado
PublicidadArgentina: 4301-8804 - México: 5839-5277
Internet: www.webelectronica.com.arWeb Manager: Pablo Ábalos
Club Sa ber Elec tró ni ca. Fe cha de pu bli ca ción:julio 2014. Pu bli ca ción men sual edi ta da y pu bli ca -da por Edi to rial Quark, He rre ra 761 (1295) Ca pi talFe de ral, Ar gen ti na (005411-43018804), en con jun -to con Sa ber In ter na cio nal SA de CV, Av. Moc te -zu ma Nº 2, Col. Sta. Ague da, Eca te pec de Mo re -los, Mé xi co (005255-58395277), con Cer ti fi ca do deLi ci tud del tí tu lo (en trá mi te). Dis tri bu ción en Mé -xi co: REI SA de CV. Dis tri bu ción en Ar gen ti na:Ca pi tal: Car los Can ce lla ro e Hi jos SH, Gu ten berg3258 - Cap. 4301-4942 - In te rior: Dis tri bui do ra Ber -trán S.A.C. Av. Vé lez Sárs field 1950 - Cap. – Dis -tri bu ción en Uru guay: Ro de sol SA Ciu da de la1416 – Mon te vi deo, 901-1184 – La Edi to rial no seres pon sa bi li za por el con te ni do de las no tas fir ma -das. To dos los pro duc tos o mar cas que se men cio -nan son a los efec tos de pres tar un ser vi cio al lec -tor, y no en tra ñan res pon sa bi li dad de nues tra par -te. Es tá pro hi bi da la re pro duc ción to tal o par cialdel ma te rial con te ni do en es ta re vis ta, así co mo lain dus tria li za ción y/o co mer cia li za ción de los apa -ra tos o ideas que apa re cen en los men cio na dostex tos, ba jo pe na de san cio nes le ga les, sal vo me -dian te au to ri za ción por es cri to de la Edi to rial.
Revista Club Saber Electrónica, ISSN: 1668-6004
Sumario
3
SumarioArquitectura de un PIC ..........................................................................................4
Características del PIC ..............................................................................................................................................4
Patas del PIC .............................................................................................................................................................5
Resumen del dispositivo ............................................................................................................................................6
Lo que debe saber sobre los PICs.............................................................................................................................9
Palabras de configuración e identificación ..............................................................................................................13
Organización de la memoria....................................................................................................................................13
Los registros del PIC ...................................................................................................................................................14
Ports I/O......................................................................................................................................................................20
Módulo temporizador timer0.....................................................................................................................................23
Memoria de datos EEPROM ......................................................................................................................................25
La CPU del PIC...........................................................................................................................................................27
Configuraciones del oscilador ..................................................................................................................................29
El perro guardián (WDT) .............................................................................................................................................32
Interrupciones del micro............................................................................................................................................32
Manejo de las instrucciones de un PIC.................................................................36
Introducción ..............................................................................................................................................................37
El set de instrucciones del 16X84..............................................................................................................................39
Palabras de configuración e identificación ..............................................................................................................54
Aprendiendo a programar ....................................................................................56
Circuito de un entrenador.........................................................................................................................................58
Encendido intermitente de un led ............................................................................................................................60
Secuenciador de 4 canales .....................................................................................................................................65
Generador de señales de audio ..............................................................................................................................69
Secuenciador de 8 canales .....................................................................................................................................70
Compilación de un programa..................................................................................................................................72
Carga del programa en un PIC ................................................................................................................................75
CA rAC te rIs tI CAs del PICEstafamiliademicrocontroladoresPICsedesta-
caporlassiguientesprestacionesespeciales:
• Sólosenecesitan35instruccionesdeunasola
palabraparausarlo.
• Todaslasinstruccionessondeunsolociclocon
excepción de las ramificaciones del programaque
sondedosciclos.
• Memoriadeprogramaconcapacidadpara1024
palabras(1kB).
• LamemoriaRAMdedatosesde68bytes.
• LamemoriadedatosEEPROMesde64bytes.
• Laspalabrasdeinstruccionestienenunaexten-
siónde14bits.
• Losbytesdedatos tienenunaextensiónde8
bits.
• Posee15 registros dehardware de funciones
especiales.
• TieneunaPiladehardwaredeochoniveles.
• Procesamodosdeaccesodirecto, indirecto y
relativo.
• Tienecuatrofuentesdeinterrupciones:
-PataexternaRB0/INT
-ExcesodeltemporizadorTMR0
-InterrupciónalcambioPORTB<7:4>
-AlcompletarlaescrituradelEEPROMdedatos.
• La velocidad de funcionamiento es de DC a
20MHzenlaentradadelclockydeDCa200ns(na-
nosegundos)enelciclodeinstrucciones.
CaracterísticasPeriféricas• 13patasI/Oconcontrolindividualdedirección.
• Fuentedealtacorrienteparaexcitacióndirecta
deLED´s:
-25mAmáximodesink(ánodo)porpata
-25mAmáximodesource(cátodo)porpata.
• Temporizador/contador de 8 bits TMR0 con
preescaler(divisordefrecuencia)programablede8
bits.
CaracterísticasEspecialesdelMicrocontrolador• Memoriadeprogramade1000ciclosdeescri-
tura/borradodeflashreforzado.
• MemoriadedatosEEPROMde1.000.000deci-
closdeborrado/escrituratípica.
• RetencióndedatosdeEEPROMde>40años.
• Programación en serie dentro del circuito
(ICSP = In Circuit Serial Programming) mediante
dospatas.
• Power-onReset(POR),Power-upTimer(PWRT),
OscillatorStart-upTimer(OST).
• WatchdogTimer(WDT)consupropiooscilador
RCincorporadoenelchipparaunfuncionamiento
confiable.
Microcontroladores PIC
Arquitecturade un PIC
4
• Proteccióndecódigos.
• ModoSLEEPparaeconomizarconsumo.
• Opcionesseleccionablesdeoscilador.
• Tecnología CMOS con Flash reforzado y EE-
PROM.
• Tecnologíadebajapotenciayaltavelocidad.
• Diseñoestáticocompleto.
• Rangoampliodetensionesdefuncionamiento:
-Comercial:2,0Volta5,5Volt
-Industrial:2,0Volta5,5Volt.
• Consumomuybajo:
-<2mAtípicoa5Volt,4MHz
-15µAtípicoa2Volt,32kHz
-<0,5µAtípicodecorrienteenreposoa2Volt.
PA tAs del PIC
ElmicrocontroladorPIC16C84esunchipqueco-
mopuedeapreciarseen la figura1,disponede18
patas.
Lafunciónquecumplecadaunadeellaseslasi-
guiente:
Patas1,2,317y18-RA0-RA4/TOCK1:EselPORT
A.Correspondena5 líneasbidireccionalesdeE/S.
EscapazdeentregarnivelesTTLcuandolatensión
dealimentaciónaplicadaenVDDesde5V±5%.El
pinRA4,siseprogramacomosalidaesdecolector
abierto. Como entrada puede programarse en fun-
cionamiento normal o como entrada del contador-
/temporizadorTMR0.
______
Pata 4 - MLCR / Vpp: Es una pata de múltiples
aplicaciones,eslaentradadeResetsiestáanivel
bajo y también es la habilitación de la tensión de
programacióncuandoseestáprogramandoeldispo-
sitivo.CuandosutensiónesladeVDD,elPICfuncio-
nanormalmente.
Patas5y14-VSSyVDD: Sonrespectivamentelas
patasdemasayalimentación.Latensióndealimen-
tación de un PIC está comprendida entre 2V y 6V
aunqueserecomiendanosobrepasarlos5,5V.
Dependiendodelaletraqueposeaalfinal,elPIC
serálatensiónadmisible.
Losmodelosquecontienen las letrasC,FoCR
admiten tensiones de alimentación comprendidas
entre4Vy4,5Vcomomínimohasta5,5Va6Vcomo
máximo.
CAPItUlO 1 - Arquitectura de un PIC
el mi cro con tro la dor PIC 16F84A, de la mar ca Mi cro chip, es del ti po de 8 bits con ee PrOM ti po flash re for za do en cap su la do de 18pa tas. el ele va do ren di mien tode es te mi cro con tro la dor dedi se ño avan za do, per mi terea li zar una gran can ti dadde fun cio nes y pres ta cio nesco mo ve re mos a con ti nua -ción.
Figura 1
5
Los modelos que contienen las letras LC, LF o
LCRadmitendesde2Va6V.
Patas 6, 7, 8, 9, 10, 11, 12,13 - RB0-RB7: Es el
PORTB.Correspondenaocholíneasbidireccionales
deE/S.PuedenmanejarnivelesTTLcuando la ten-
sióndealimentaciónaplicadaenVDDesde5V±5%.
RB0 puede programarse además como entrada de
interrupciones externas INT. Los pines RB4 a RB7
pueden programarse para responder a interrupcio-
nesporcambiodeestado.LaspatasRB6yRB7se
correspondenconlaslíneasdeentradaderelojyen-
tradadedatosrespectivamente,cuandoestáenmo-
doprogramacióndelintegrado.
Patas15y16-OSC1/CLKINyOSC2/CLKOUT: Co-
rrespondenalospinesdelaentradaexternadere-
loj y salidadeosciladoracristal respectivamente.
Los distintos elementos de la familia 16X84X, de-
pendiendo de la nomenclatura que utilizan tienen
distintas características de frecuencia máxima de
funcionamiento,tipodeosciladorutilizadoparage-
nerarfrecuenciasderelojymargendelatensiónde
alimentación.
Losmicrocontroladores PIC, permiten cuatro ti-
posdeosciladoresexternosparaaplicarles la fre-
cuencia de funcionamiento.Durante el proceso de
grabación, antes de introducir el programa enme-
moria,debeindicarseeltipodeosciladorempleado
enlosbitsFSOC1yFSOC2delaPalabradeConfigu-
ración.Lostiposdeosciladoresquepuedenutilizar
losPIC16X54/84son:
*Osciladordecristaloresonadordealtaveloci-dad"HS"(HighSpeedCrystal/Resonator):Esunosci-ladorconunafrecuenciacomprendidaentre4MHzy20MHz(figura2).
* Oscilador o resonador cerámico "XT" (Crystal-/Resonator): Es un oscilador estándar que permiteunafrecuenciadeclockmáximade4MHz.
*Osciladoracristaloresonadorcerámicodeba-japotencia"LP"(LowPowerCrystal):Setratadeunosciladordebajoconsumoconstruidoconuncristaldecuarzoounresonadordiseñadoparatrabajarconfrecuenciascomprendidasentre30kHzy200kHz.
* Oscilador RC (resistencia capacitor): Tambiénesposibleconstruirunosciladormediantelacoloca-ción de una resistencia y un capacitor externo. Setratadeunosciladordebajocosto.
Sucircuitodeaplicacióneselquesemuestraenlafigura3.PoseebajaprecisiónlacualdependedelaestabilidaddelaredRC,peroesfácildeconstruirydebajoprecioloquelohaceinteresanteparamu-chasaplicaciones.Laresistenciadebetenerunva-lorcomprendidoentre5kΩy10kΩ.
Elcircuitoqueoperaconuncristalounresona-
dorsemuestraenlafigura2ydependedelosvalo-
res de C1, C2 y del cristal para el buen funciona-
mientodelmismo.Serecomiendaverlatabladeda-
tosdelfabricante,aunqueparalosPIC16X54/84los
capacitorespuedenserdelordendelos27pFpara
casitodoelrangodefrecuencias.
Enlafigura3semuestraunosciladorconstruido
apartirdeunaceldaRC.
re sU Men del dIs PO sI tI vOElPIC16F84A,utilizadoenmuchasaplicacionesy
quehaservidodebaseparalaelaboracióndevar-
iostextos,pertenecealafamiliaderangomediode
losmicrocontroladoresPIC.Undiagramaenbloques
seencuentraenlafigura4.
FichaDidácticaAntesdeavanzarsobrelaestructurainternade
unPIC,vamosarealizarelprimerresumenmedian-
teunafichatécnicaquecontieneladescripciónin-
ternadelcircuitointegrado.
Los circuitos integrados programables (PIC) de
Microchipsonmicrocontroladoresconunaestructu-
rainternacomolamostradaenlafigura4.
Existeungrupodebloquesdedicadosamejorar
el funcionamiento pero sin influir directamente en
el flujode señales.Vemosun temporizadordeen-
cendido,untemporizadordearranquedeloscilador
deCLOCK,uncircuitoderesetyuncircuitollamado
devigilanciaoWATCHDOG.
Microcontroladores PIC
Figura 2 Figura 3
6
Losdosprimerosbloquesprocuranunarranque
ordenadoparanoproducirunacargaalmismotiem-
posobrelafuente.Elcircuitointernoderesetseen-
cargadevolvera “cero”el funcionamientodel cir-
cuitocuandosearequerido.Porúltimo,existeuncir-
cuitoconunnombrecurioso,siel lectorsabealgo
deingléshabrátraducidoelnombreliteralmenteco-
mo“perroguardián”.Sufunciónesestarvigilanteel
máximo tiempo que tarda el microprocesador en
completarsuprograma(omejorseríadecir,laderi-
vaciónmáslargadesuprograma)yencasodesupe-
rarseesetiempo,provocarunresetautomáticopor-
queelmicroprocesadorsequedótrabadoenalguna
partedesuprograma.Tambiénsedicequeelmicro-
CAPItUlO 1 - Arquitectura de un PIC
Figura 4
7
procesadorsequedócolgadoocongelado.Esteblo-
quedecircuitosnotrabajaindependientementesi-
noquerequiereconexionesalexterioryalinterior
deldispositivo.Porejemplo,nosiempresonuti-
lizadosyeselprogramaquiendeterminasuutiliza-
ciónyademásajustasusparámetros.Estosereali-
zaatravésdelbloquedecontrolodecodificadorde
instrucciones.
Analicemos ahora la sección de arriba a la iz-
quierdaendondeobservamoslamemoriadeprogra-
ma,elcontadordeprograma,elregistrodeinstruc-
cionesylapilaoSTACKde8niveles.
Cuando hablamos de registros nos referimos a
pequeñas unidades de memoria transitoria, cons-
truida por lo general con un registro de desplaza-
miento.Sonmemoriasvolátilesqueseutilizanpara
guardarinformaciónporuntiempomínimoconelfin
derealizarunaoperacióncomplejadevariospasos.
El contador de programa es el responsable de
queelmicroprocesadorvayaanalizandolasinstruc-
cionesenordenascendente.Elguardaelnúmerode
instrucciónenelSTACKylainstrucciónmismalepa-
saregistrodeinstrucciones,desdedondeseenvía
alrestodelmicroprocesador.
ElSTACKes,enrealidad,unapiladeregistros(en
nuestro ejemplo hay 8) debido a que el programa
puedetenerderivaciones(enlajergaLOOPS,ruloso
subprogramas).
Cuandoseterminadeejecutarun loopsedebe
volveralmismopuntodelprogramaendondeseha-
bíaproducidolabifurcaciónyesoesposibleporque
esenúmerode instrucciónquedóguardadoenuno
delosregistrosdelapila.
Escomúnqueunlooptenga,asuvez,unloopse-
cundario y cuando se ejecuta ese loop secundario
sedebevolveralmismopuntodelloopprimario,eso
seconsigueguardandoesenúmerodeinstrucción
delloopsecundarioenotroregistrodelapila.
Analicemosahoralaseccióninferiorderecha.En
ese sector se ubican los bloques responsables de
efectuar operaciones matemáticas y lógicas bina-
rias; recordemos que el nombre ALU proviene de
AritmeticLogicUnite(unidadariméticaylógica).En
estesectoresimprescindibleutilizarunregistroya
que una operación aritmética o lógica siempre se
efectúa entre dos números. Los números binarios
quedebenprocesarse se tomande lamemoriade
datos,elprimeroseacumulaenelregistrodetraba-
jooregistroW(deWork=trabajo)elsegundoesel
presenteenelinstanteenqueseinvocalamemoria
dedatos.
Comolasoperacionespuedenserencadenadas
(cuandoel resultadosirvecomooperandode lasi-
guienteoperación,talcomoelcasodeunproducto)
elregistroWtieneunretornoalaALU.
Vemosademásque laALUestácomandadapor
elbloqueMUX(MUltipleXador).Enefecto,laALUre-
quierequeseleenvíennúmerosparaprocesarque
lelleguendesdelamemoriadedatosperoantesse
ladebepredisponerparaqueefectúe laoperación
requerida(comparación,rotacióndedígitos,etc.).
Elregistrodeestadooestatuscolaboradurante
lasoperacionesmatemáticas.
Piense cómooperaUd. para realizar una resta:
primeroubicaelprimernúmero,luegoelsegundoy
despuéscomienzaaanalizarlosbitsmenossignifi-
cativos(lasunidades),perosielnúmerodearribaes
menorqueelnúmerodeabajo,entoncestomapres-
tadode lacolumnade lasdecenas, luegodebe re-
cordarestoporqueelnúmerodearribaenlacolum-
nadelasdecenasseredujoenunaunidad.
En realidad, aunque se trate de una operación
entredosnúmerossuejecuciónrequiereguardarlo
quese llamaacarreoenotro registroyéstenoes
otracosamásqueel registroSTATUS.Enresumen,
las características sobresalientes de los PICs son
lassiguientes:
Denominación:PIC1XXXX.
Longituddepalabra:14bits.
Memoria: EEPROM. Desde 512bytes de ROM y
32bytesdeRAMa4kBdeROMy256bytesdeRAM.
InterfaceI/O:13patasseleccionablesdeentra-
da/salidaenlosmodelosestándar.
Arquitectura:VonNeumann (Instrucciones yda-
tosjuntos).Lamayoríadelasinstruccionesseejecu-
tanenunciclo.Peroposeeunsetdesólo35instruc-
cionesdetipoRISC(ReducedInstructionSetCompu-
ter).
Alimentación:4a6V.
Encapsulado: Múltiples versiones, lo normal es
DIPde18patas.
Fácil de programar, fácil de cargar, extremada-
menteconfiable,económico.Seencuentragrancan-
tidaddesoftwareyhardwaresincargo.
Ideal paraAplicacionesen servicio deequipos,
diseños y construcción de "circuitos integrados a
medida".
La memoria de programa contiene palabras de
1kB,loquepermitelaformaciónde1024instruccio-
nes,yaquecadapalabradelprogramaposeeelmis-
moanchoquecadainstrucción.Lamemoriadeda-
tosRAMcontiene68bytes.LamemoriadedatosEE-
PROMcontiene64bytes.
Ademásexisten13patasdeI/Oquesepueden
configurarparaelusuarioenformaindividual.Algu-
naspatassonmultiplexadasconotrasfuncionesdel
dispositivo (tal como vimos anteriormente). Estas
funcionesincluyen:
Microcontroladores PIC
8
• Interrupcionesexternas.• CambiosenlainterrupcióndePORTB.• EntradadeclockTimer0.
Latabla1muestralasfuncionesdelaspatasdel
dispositivoconlasdescripcionesydetallesdecada
una.
lO qUe debe sAber sObre lOs PICs
ElPIC16X84,aligualquelosdemásmiembrosde
sufamilia,secaracterizanporque:
a)ElProcesadoressegmentadotipo"pipe-line":
Loquesignificaqueaplicalatécnicadesegmenta-
ciónquepermitealprocesadorrealizarsimultánea-
mentelaejecucióndeunainstrucciónylabúsqueda
delcódigodelasiguienteinstrucción.Estopermite
quesepuedaejecutaruna instrucciónenunciclo.
(Cadaciclodeinstrucciónsoncuatrociclosdereloj).
Esdecir,lamayoríadelasinstruccionessereali-
zanenun ciclo de contador deprograma (ciclo de
instrucción)excepto las instruccionesdesaltoque
necesitandosciclosparaejecutarla.
Se determina el ciclo de instrucción dividiendo
porcuatrolafrecuenciadeloscilador,elegidapara
elfuncionamientodelmicrocontroladortalcomose
observaenlafigura5.
Esdecir, laseñalqueprovienedelosciladorex-
terno, conectado a los pines OSC1/CLKIN y
OSC2/CLKOUT del microcontrolador, se divide en
cuatro ciclos, obteniéndose así la señal requerida
porelprocesadorinternopararealizarlasoperacio-
nes.Deestamanerasepuederealizarlabúsqueda
yejecucióndelainstrucción.
Elrelojdeinstruccióneselciclointernoquepo-
seeelmicrocontroladorparacronometrareltiempo
deejecucióndelasinstruciones.
Lospulsosentrantesdel relojsondivididospor
4, generando diferentes señales denominadas Q1,
Q2,Q3yQ4.ElestadoQ1haceincrementarelconta-
dordeprograma,Q2yQ3,seencargandeladecodi-
ficaciónyejecuciónde la instrucciónyporúltimo,
Q4eslafasedebúsquedadelainstrucción.Elcódi-
gosealmacenaenelregistrodeinstrucciones.
b) El procesador es de tipoRISC: Esto implica
queelµPpuedeoperarconunjuegodeinstruccio-
nesmínimo(35instrucciones).LasCPU´satendien-
doaltipodeinstruccionesqueutilizanpuedenclasi-
ficarseen:
• CISC: (Complex InstructionSetComputer).Pro-cesadoresdejuegodeinstruccionescomplejo,quedisponen de un elevado número de instrucciones(unas80),algunasdeellascomplejasypotentes,pe-roquerequierenmuchosciclosdemáquinaparaeje-cutarlasinstruccionesmáspoderosas.
• RISC:(ReducedInstructionSetComputer).Con-troladores quemanejan un juego de instruccionesreducido,enlosquelacantidaddeinstruccionesesmínima(ennuestrocaso35).Lasinstruccionessonmuysimplesysuelenejecutarseenunciclomáqui-na.AdemáslosRISCdebentenerunaestructurapi-peline(veanuevamentelafigura1)yejecutantodaslasinstruccionesalamismavelocidad.
• SISC: (Specific InstrictionSetComputer).Com-putadorasquemanejanunsetdeinstruccioneses-pecífico.
CAPItUlO 1 - Arquitectura de un PIC
9
Tabla 1
Microcontroladores PIC
10
Figura 5
Figura 6
c)Poseenunaarquitectura
tipoHarvard: Para la construc-
ción de microprocesadores
existen básicamente dos tipos
dearquitecturas,unaenlaque
losdatosylamemoriadelpro-
grama poseen la misma direc-
ción (denominada Von Neu-
mann)yotraenlaqueexisteun
BUSde comunicación indepen-
diente para la memoria de da-
tos y la memoria de programa (arquitectura Har-
vard).
Lamayoríadelosmicroprocesadorestradiciona-
lessebasanenlaestructuratipoVonNeumann(fi-
gura6),quesecaracterizapordisponerdeunaúni-
camemoriaprincipalenlaquesealmacenanlosda-
tosylasinstrucciones,teniendoencuentaqueexis-
teunsistemadeBUSdeaccesoformadopor:
• Busdedatos
• Busdedirecciones
• Busdecontrol
ElmodeloHarvard, representadoen la figura7,
disponededosmemorias:
• Memoriadedatos
• MemoriadePrograma
Enlosprocesadoresbasadosenestaarquitectu-
ra cada memoria dispone de su respectivo bus, lo
quepermite,quelaCPUpuedaaccederdeformain-
dependienteysimultáneaalamemoriadedatosya
ladeprograma(instrucciones).Comolosbusesson
independienteséstospuedentenerdistintosconte-
nidosenlamismadirección.
d)Sondearquitecturaortogonalbasadaenban-
coderegistros: Estosignificaquecualquierinstruc-
ciónpuedeutilizar cualquierelementode laarqui-
tectura como fuente o destino.
Además todos los elementos del
sistema (temporizadores, puertos
de entrada/salida, posiciones de
memoria,etc.),estánimplementa-
dos físicamente como registros
(deahíelnombre“bancoderegis-
tros”). Al tener manejo de banco
de registros, la ALU (Unidad Arit-
mético-Lógica)efectúasusopera-
ciones con dos operandos, uno
queprovienedelregistroW(Work-
queenotrasCPUs recibeelnom-
bredeAcumulador-),yelotroque
seencuentraencualquierotrore-
gistrodelµP.Enlafigura8vemos
eldiagramaqueindicacómoseejecutaunainstruc-
ción,laALUrecibedatosdelregistrodetrabajoyun
registroMPXyelresultadopuedeiracualquierre-
gistrooalregistroW.
ElPIC16X54/84poseecaracterísticasimportan-
tesquelohaceútilparaeldiseñodecircuitosgene-
rales.Entrelascaracterísticasmásimportantespo-
demosresaltarlassiguientes:
• MemoriadeprogramaEEPROMde1Kx14bits• Memoriadedatosdivididaen2áreas:
ÁreaRAMformadapor22registrosdepro-pósito específico (SFR) y 36 de propósito general(GPR).
ÁreaEEPROMformadapor64bytes.• ALUde8bitsyregistrodetrabajoWdelquenor-
malmente recibe un operando que puede ser cual-quierregistro,memoria,puertodeEntrada/Salidaoelpropiocódigodeinstrucción.
• Varioscanalesparaconectaralbusdedatos:PortA de 5 bits <RA0:RA4> , PortB de 8 bits<RB0:RB7>,TemporizadorconPreescalerTMR0,etc.
• Contadordeprogramade13bits(loqueenteo-ríapermitiríadireccionar4kBdememoria,aunqueel16X84sólodisponede1kBdememoriaimplementa-da).
• Pilade8niveles.LaarquitecturadelPIC16X84semantienepara
CAPItUlO 1 - Arquitectura de un PIC
11
Figura 7
Figura 8
todoslosmicrocontroladoresdeestasubfamilia,di-
ferenciándoseunosdeotrospor lassiguientesca-
racterísticas:
• PIC16F84: Lamemoriadeprogramaesde lk,laspalabrassondel4bits,perodetipoFlash.Lame-moriadedatosRAMtiene68registrosdetamañoby-tedepropósitogeneral,enlugarde36.
• PIC16CR84: Lamemoriadeprogramaesde1kconpalabrasde14bitstipoROMyladedatostieneigualescaracterísticasqueelPIC16F84.
• PIC16F83:Lamemoriadeprogramaesde512
palabrasde14bitsylaRAMdeda-tos tiene 36 bytes de registros depropósitogeneral.
• PIC16CR83: Es igual que elPIC16F83, pero lamemoria de ins-trucciones es de tipo ROM, o sea,sólo grabable durante el procesode fabricación para ser utilizadosconfinesespecíficos(circuitointe-gradoamedida).
Lacaracterísticamásimportan-
tedelPIC16C84esquesumemoria
deprogramaesdeltipoEEPROMy
enelcasodelPIC16F84laprincipal
característicaesquesumemoriaesdeltipoflash,
porlodemás,otrosdispositivosdeestafamiliadis-
ponendemásmemoria,tienenmásperiféricos,etc.
Losmicrocontroladoresdelagamamediadispo-
nen de un Contador de Programa (PC ó CP) de 13
bits,cuyosbitsdemenorpesocorrespondenalos8
bitsdel registroPCL, implementadoen laposición
de memoria RAM 02h (y duplicado en la posición
82h),y los cinco bits demayor peso del CP corres-
ponden con los 5 bits de menor peso del registro
PCLATCH,implementadoenlaposicióndememoria
RAM0Ah(yduplicadoenlaposición8Ah),loquele
permite direccionar hasta 8k x 14 bits dividido en
páginasde2kx14bits.ElPIC16C84disponede1k
x14bitsdememoria implementada,desde laposi-
ción0000hhastala03FFh,los3bitdemayorpeso
delCPnoseutilizan,asípuesladirección20h,320h,
420h,A20h,1420h,etc.seconsideracomolamisma
(figura9).
UnResetprovocaqueseponganacerotodoslos
bits de los registros PCL (parte baja del PC) y
PCLATCH,forzandoqueladireccióndeinicioseala
0000h. El vectorde reset sealmacenaen ladirec-
ción0000h,mientrasqueel vectorde interrupción
estáenladirección0004h(figura10).
Lamemoriadeprogramadeusuariopropiamen-
tedicha,comienzaenlaposición0005hyllegahas-
tala03FFh.
Lapilaesunazonadememoria,queseencuen-
traseparadatantodelamemoriadeprogramacomo
de la de datos. Tiene una estructura LIFO (Last In
FirstOut),loquesignificaqueelúltimodatoquese
guardaeselprimeroquesale. Tiene8nivelescon
unalongitudde13bitscadauno.Sufuncionamien-
toescomoeldeunbuffercircular,detalformaque
el valorqueseobtieneal realizarnuevedesplaza-
mientos,esigualalprimerdesplazamiento.Laúnica
maneradecargar laPilaesa travésde la instruc-
ciónCALL(llamadaasubrutina)oporunainterrup-
ciónquehacenqueconcadaunadeellas,secargue
elcontenidodelPCenel valorsuperiorde laPila.
Microcontroladores PIC
12
Figura 10
Figura 9
PararecuperarelcontenidodelaPilaenlaPChay
queejecutarunainstrucciónRETURN,RETLWoRET-
FIE(vueltadelprogramadeatenciónaunasubruti-
naointerrupción).
PA lA brAs de COn FI gU rA -CIOn e Iden tI FI CA CIOn
LosPICdelagamamediadisponendeunapala-
bradeconfiguraciónde14bitsqueseescribedu-
ranteelprocesodegrabacióndeldispositivoyque
debehacersedeacuerdoconelsistemaenelquese
vaainsertar.Dichosbitsocupanlaposiciónreserva-
dadememoriadeprograma2007h.Laestructurade
lapalabradeconfiguracióneslamostradaenlafi-
gura11.
Bit4:CP,bitdeconfiguracióndelaprotección
1=Proteccióndecódigodesactivado
0=Proteccióndecódigoactivado
Bit 3: PWRTE, activación del temporizador "Po-
wer-Up"
1=Desactivado
0=Activado
Bit2:WDTE, bitdeconfiguraciónhabilitacióndel
Watchdog(WDT)
1:WDTactivado
0:WDTdesactivado
Bit 1 y Bit 0: FOSC<1:0>, tipo de oscilador em-
pleado
11:OsciladorRC
10:OsciladorHS(8-20MHz)
01:OsciladorXT(100KHz-4MHz)
00:OsciladorLP(Bajoconsumo32-200Hz)
Ademásdisponedecuatroposicionesdememo-
ria de programa ubicadas en las direcciones
<2000h:2003h>, reservadas para las Palabras de
IdentificaciónID.Estaspalabrasqueseescribendu-
ranteel procesodegrabación, sólo emplean los4
bitsdemenospesoyseutilizanporelprogramador
paraindicarelcódigodeldispositivo,elnúmerode
serie,laversióndelprograma,etc.
Or gA nI zA CIOn de lA Me MO rIA
EnelPIC16F84Aexistendosbloquesdememo-
ria.Estossonlamemoriadelprogramaylamemoria
dedatos.Cadabloqueposeesupropiobus,de tal
formaqueel accesoa cadaunopuedeproducirse
duranteelmismociclodeloscilador.
Lamemoriadedatospuededividirsemásaúnen
laRAMdefinesgeneralesylosRegistrosdeFuncio-
nesEspeciales(SFR).
Eláreadelamemoriadedatoscontienetambién
losdatosdelamemoriaEEPROM.Estamemoriano
estádirectamenteintroducidaenlamemoriadeda-
tos,sinoesregistradaenformaindirecta.Estosig-
nificaqueunpunteroindirectodedireccionesespe-
cificaladireccióndelamemoriadedatosEEPROM
paraescribiry leer.Los64bytesdelamemoriade
datosEEPROMposeenelrangodedireccionesde0h
a3Fh.MásdetallessobrelamemoriaEEPROMvere-
mosenotroapartado.
OrganizacióndelaMemoriadeProgramas.ElPIC16FXXposeeuncontadordeprogramasde
13bitscapazdedireccionarunespaciodememoria
deprogramasde8kx14.ParaelPic16F84A,lospri-
meros1kx14(0000h-03FFh)estánfísicamenteim-
plementadoscomovimosen lafigura10.Talcomo
semuestra,elaccesoaunalocaciónporencimade
ladirecciónfísicamenteimplementada,causaráun
plegado. Por ejemplo, las locaciones 20h, 420h,
820h,C20h,1020h,1420h,1820hy1C20htendránla
mismainstrucción.
Elvectorderesetestáen000hyelvectordein-
terrupten0004h.
Nota: Como puede observar, estamos “repitien-
do”algunosconceptos;estolohacemosporquetra-
tamosdeveruntemadesdedistintospuntosdevis-
taconelobjetodefacilitarelaprendizajedellector.
OrganizacióndelaMemoriadeDatos.La memoria de datos está repartida en dos
áreas.ElprimeroeseláreadeRegistrosdeFuncio-
nesEspeciales(SFR),mientrasqueelsegundoesel
Registro de Fines Generales (GPR). Los registros
CAPItUlO 1 - Arquitectura de un PIC
13
Figura 11
SFR controlan el funcionamiento del dispositivo.
Partesdelamemoriadedatosestáncolocadosen
bancos.EstoesválidotantoparaeláreadeSFRco-
moparaeláreaGPR.EláreadeGPResapiladopara
permitirmásque116bytesdeRAMdeusogeneral.
LosáreasdeapiladosdelSFRsedestinanalosre-
gistros que controlan las funciones periféricas. El
apiladorequiereelusodebitsdecontrolparalase-
leccióndebancos.Estosbitsdecontrolseencuen-
tranenelregistrodeSTATUS.Lafigura12muestrala
organizacióndelmapadedatosdelamemoria.
Las instruccionesMOVWFyMOVFpermitenmo-
vervaloresdelregistroWhastacualquier locación
enelarchivoderegistros(“F”)yviceversa.
Sepuedeaccederalamemoriadedatosentera
enformadirectausandoladirecciónabsolutadeca-
daregistrooenformaindirectamedianteelRegis-
tro de Selección de Archivos (FSR). El direcciona-
miento indirectousaelbitRP0paraaccedera las
áreasapiladasdelamemoriadedatos.
Lamemoriadedatosestádividida endosban-
cosquecontienenlosregistrosdeusogeneralylos
registrosdefuncionesespeciales.ElBanco0esse-
leccionado eliminando el bit RP0 (STATUS<5>). El
ajustedelbitRP0seleccionaelBanco1.CadaBan-
coseextiendehasta7Fh(128bytes).Lasprimeras
doce locaciones de cada Banco están reservadas
paralosRegistrosdeFuncionesEspeciales(SFR).El
restosonRegistrosdeUsogeneralimplementados
comoRAM.
lOs re gIs trOs del PIC
ArchivodeRegistrodeUsoGeneral.CadaRegistrodeUsogeneral(GPR)tieneunan-
chode8bitsyseaccedeenformadirectaoindirec-
tamedianteelFSR,comoseexplicamásadelante.
LasdireccionesGPRenelbanco1estánconec-
tadoscondireccionesenelBanco0.Comoejemplo,
ladireccióndelalocación0Cho8Ch,llamaráelmis-
moGPR.
RegistrosdeFuncionesEspeciales(SFR).LosRegistrosdeFuncionesespecialesde laFi-
gura13sonusadosporlaCPUylasfuncionesPeri-
féricasparacontrolarelfuncionamientodeldisposi-
tivo.EstosregistrossonRAMEstáticos(sibienman-
tenemoslafiguraeninglésparapreservarelforma-
to dado por los manuales de Microchip, también
brindamoslaversiónencastellano).
Los Registros de Funciones Especiales pueden
clasificarseendosgrupos:
a)núcleoyb)periférico.
Aquellosasociadosconlasfuncionesdelnúcleo
sedescribenenestaSección.Losrelacionadoscon
elfuncionamientodelascaracterísticasperiféricas
sedescribenenlaSecciónrespectiva.
Leyendasdelafigura13AyB:
x=desconocido,
u=sincambio,
-=sinimplementar,leercomocero
q=valordependedelascondiciones.
Nota:
1.Elbytesuperiordelcontadordeprogramano
es directamente accesible. PCLATH es un registro
esclavoparaPC<12:8>.ElcontenidodePCLATHpue-
deser transferidoalbytesuperiordelcontadorde
Microcontroladores PIC
14
Figura 12
programa, pero el contenido de PC<12:8> no es
transferidonuncaaPCLATH.
2.LosbitsdeStatusTOyPDdelregistrodeSTA-
TUSnosonafectadosporelresetdeMCLR.
3.Otros resetsquenosonPOWERUP incluyen:
resetexternoporMCLRyelresetdeltemporizador
dewatchdog.
4.Entodoslosresetsdeldispositivo,estaspatas
sonconfiguradascomoentradas.
5.Esteeselvalorqueseencontraráenellatch
delasalidadelport.
RegistrodeStatusElregistrodelSTATUScontieneelstatusaritmé-
ticodelaALU,elstatusderesetyelbitselectorde
bancosparalamemoriadedatos.
Comoentodoregistro,elregistrodeSTATUSpue-
desereldestinodecualquier instrucción.Siel re-
gistro de STATUS es el destino de una instrucción
queafectalosbitsZ,DCoC,entonceslaescritura
de estos tres bits es desactivado. Estos bits son
ajustadosoanuladosenconcordanciaconlalógica
deldispositivo.Además, losbitsTO’yPD’ (lanota-
ciónTO’significaqueelbitestáactivocon“1”olo
queeslomismo:TO’=negadodeTO)nopuedenser
escritos. Por lo tanto, el resultado de una instruc-
ciónconelregistrodeSTATUScomodestino,puede
serdiferentealprevisto.
Porejemplo,CLRFSTATUSanularálostresbitssupe-
rioresyajustaráelbitZ.EstodejaráelregistrodeSTA-
TUScomo000uu1uu(dondeuquedasincambio).
SólolasinstruccionesBCF,BSF,SWAPFyMOVWF
debenserusadosparaalterarelregistroSTATUS,co-
mo veremosenel capítulo dedicadoal Set de Ins-
trucciones, debido a que estas instrucciones no
afectanningúnbitdestatus.
CAPItUlO 1 - Arquitectura de un PIC
15
Figura 13A
Microcontroladores PIC
16
Figura 13B
Notas:
1.LosbitsIRPyRP1(STATUS<:6>)noseusanen
elPIC16F84Aydebenserprogramadoscomoanu-
lados.ElusodeestosbitscomobitsR/Wdeuso
general,noesrecomendado,debidoaquepuede
afectar la compatibilidadparaarriba conproduc-
tosfuturos.
2. Los bits C y DC funcionan como bits de BO-
RROW’(BORROW’eselnegadodeBORROW),enope-
racionesderesta.Verejemplosenlasinstrucciones
deSUBLWySUBWFdelcapítulodeSetdeInstruccio-
nes.
3.CuandoelregistrodeSTATUSeseldestinopa-
raunainstrucciónqueafectalosbitsZ,DCoC,en-
toncesse impide laescrituradeestos tresbits.El
bitespecíficoseráactualizadoenconcordanciacon
lalógicadeldispositivo.
En la Figura14 vemosaspectosdel registrode
STATUS.
Veamosquésignificadoyquévalorpuedetener
cadabitdelregistroSTATUS:
Bit7,IRP: BitdeSeleccióndeBancodeRegistro,
usadoparadireccionamientoindirecto.ElbitIRPno
esusadoporelPIC16F84A.MantengaIRPdesactiva-
do.
Bit6-5,RP1:RP0:BitsdeSeleccióndeBancode
Registro,usadoparadireccionamientodirecto.
00=Banco0(00h–7Fh)
01=Banco1(80h–FFh)
Cada Banco posee 128 bytes. En el PIC-
16F84AseusasoloRP0.Mantenga.
RP1semantendrádesactivado.
Bit4,TO’: BitdeTimeout(findetiempo).
1=DespuésdeEncendido,instrucciónCLR-
WDT,oinstrucciónSLEEP(tomaelestado“1”).
0=Cuandoestáen “0”esporquesucedió
unTimeoutWDT(perroguardián).
Bit3,PD: BitdePowerDown.
1 = Después de Power up o por la instrucción
CLRWDT.
0=AlejecutarlainstrucciónSLEEP.
Bit2,Z: Bitcero.
1=Elresultadodeunaoperaciónaritméticao
lógicaescero.
0=Elresultadodeunaoperaciónaritméticao
lógicanoescero.
Bit1,DC:Bitdellevaroprestarenlasinstruccio-
nesADDWFyADDLW.Paraprestarlapolaridadesin-
vertida.
1=Cuandoocurreunexcesoenelresultado
del4ºbitdemenospeso.Acarreoenlasuma.
0=Cuandonoocurreunexcesoenelresulta-
dodel4ºbitdemenospeso.Nohayacarreoenlasu-
ma(enlarestaeslocontrario).
Bit0,C: Bitdecarry/borrow(llevar/prestar)para
lasinstruccionesADDWFyADDLW.
1=Cuandoocurreunexcesoenelresultado
delbitmássignificativo.Acarreoenlasumaynoen
laresta.
0=Cuandonoocurreunexcesoenelresul-
tadodelbitmássignificativo.Acarreoenlarestay
noenlasuma.
Nota:ParaBORROW(prestardígitos)seinvierte
lapolaridad.Unarestaseejecutaalsumarelcom-
plemento de dos del segundo operando. Para ins-
truccionesderotación(RRF,RLF),estebitescarga-
doconelbitdeordensuperioroinferiordelregistro
defuente.
Recuerdeque:
_____________
BORROW’=BORROWTO’=TO PD’=PD
CAPItUlO 1 - Arquitectura de un PIC
17
Figura 14
RegistroOPTION_REG.Ocupalaposiciónla81hdelbancoderegistro1.
Es recomendable darle otro nombre por ejemplo
"OPTION"enelprogramaensamblador,paraqueel
programaensambladornodémensajesdeerror,ya
queenlosPICdelagamabajaexistelainstrucción
OPTION.
ElregistroOPTION_REG(osimplementeregistro
OPTION)esunregistroparaescribiryleer,quecon-
tienevariosbitsdecontrolparaconfigurarelpres-
calerTMR0/WDT,elinterruptINTexterno,elTMR0y
elpull-updébildePORTB.
Nota:
CuandoelprescaleresasignadoaWDT(PSA=1),
TMR0tieneunaasignacióndeprescaladorde1:1.
Enlafigura15vemoselRegistrodeOPTION_REG
(dirección81h).
bit7,RPBU’: ResistenciaPull-up,PuertoB,habi-
litaelbit
1:Desactivadas
0:Activadas
bit6,INTEDG: Flancoactivoparaelcontroldein-
terrupciones
1:ConflancoAscendente
0:ConflancoDescendente
bit5,TOCS: FuentedeRelojparaTMR0
1: Pulsos introducidos a través de
RA4/T0CK1(Contador)
0:Pulsosde reloj internoFosc/4 (Tempori-
zador)
bit4,TOSE: TipodeflancoenTOCK1
1:IncrementodeTMR0cadaflancodescen-
dente
0: Incrementode TMR0cada flancoascen-
dente
bit3,PSA: Bitdeasignacióndelprescalerdivisor
defrecuencia
1:EldivisordefrecuenciaseasignaalWDT
0:EldivisordefrecuenciaseasignaalTMR0
bit2-0,PS2:PSO: Rangoconelqueactúaeldivi-
sorde frecuencia,ésteprocededeacuerdocon la
tabla2.
ElRegistroINTCONElregistroINTCONesunregistrodelecturayes-
critura que contiene los diferentes bits de activa-
cióndetodaslasfuentesdeinterrupción.Susdeta-
llesseencuentranenlafigura16.
Lassiglasdeestafigurasignificanlosiguiente:
Microcontroladores PIC
18
Tabla 2
Figura 15
Figura 16
R=BitLegible
W=BitEscribible
U=Bitsinimplementar,leercomocero
-X=valorenresetPOR.
Cadabitposeeelsignificadoytomaelvalorque
describimosacontinuación:
Bit7,GIE: BitGlobalInterruptEnable.
1=ActivatodoslosInterruptsinmáscara.
0=DesactivatodoslosInterrupt.
Bit6,EIIE: Bit EEWriteComplete InterruptEna-
ble.
1=ActivaelEEWriteCompleteInterrupt.
0 = Desactiva el EE Write Complete Inte-
rrupt.
Bit5,T0IE:BitdeTMR0OverflowInterruptEnable.
1=ActivaelTMR0Interrupt.
0=DesactivaelTMR0Interrupt.
Bit4,INTE: BitdeInterruptEnableRB0/INT.
1=ActivaelInterruptRB0/INT.
0=DesactivaelInterruptRB0/INT.
Bit3,RBIE: BitdeRBPortChangeInterruptEna-
ble.
1=ActivaelRBPortChangeInterrupt.
0=DesactivaelRBPortChangeInterrupt.
Bit2,T0IF: BitdeTMR0OverflowInterruptFlag.
1=TMR0tieneexcesoydebeserlimpiado
ensoftware.
0=TMR0notieneexceso.
Bit1,INTF: BitdeRB0/INTInterruptFlag.
1=OcurrióunRB0/INTInterrupt.
0=NoocurrióunRB0/INTInterrupt.
Bit0,RBIF:BitdeRBPortChangeInterruptFlag.
1=Cuandoporlomenosunadelaspatasde
RB7aRB4cambió(debeserlimpiadoensoftware).
0=NingunadelaspatasRB7:RB4cambió.
PCLyPCLATHElcontadordeprogramas(PCde“programcoun-
ter”,tambiéndenominadoCPenestetexto)especi-
fica ladirecciónde la instrucciónabuscarpara la
ejecución.
ElanchodelPCesde13bits.Elbytebajosede-
nominaRegistroPCL.EsteRegistroeslegibleyes-
cribible.ElbytealtosedenominaRegistroPCH.Este
Registro contiene PC<12:8> bits y no es legible ni
escribibleenformadirecta.Todas lasactualizacio-
nesdelRegistroPCHsecanalizana travésdelRe-
gistroPCLATH.
STACK(PILA)Lapilapermitequeocurraunacombinaciónde
hasta8llamadasdeprogramaeinterrupciones.La
pilacontieneladirecciónderetornodeestaramade
laejecucióndeprogramas.
Losdispositivosderangomedioposeenunapila
dehardwaredeunaprofundidadde8nivelespor13
bitsdeancho.Elespaciode lapilanoespartede
ningúnprogramanideespaciodedatosyelpuntero
delapilanoeslegibleniescribible.ElcontadorPC
(óCP)escolocadoalapilavíaPUSHcuandounains-
trucciónCALLesejecutadaocuandounaordende
interruptproduceuna ramificación.Lapilaejecuta
la orden POP cuando se ejecutan las órdenes RE-
TURN,RETLWoRETFIE.PCLATHnosemodificacuan-
dolapilaejecutaPUSHoPOP.
DespuésdeejecutarochoveceslaordenPUSH,
lanovenasobrescribeelvalorquefueraalmacena-
dodelprimerPUSH.EldécimoPUSHsobrescribeel
segundoPUSHyasísucesivamente.
REGISTROSINDFyFSRElregistroINDFnoesunregistrofísico.Dirigirse
aINDFenrealidadproduceladireccióndelregistro
que está contenido en el registro FSR. FSR es un
puntero. Esto se denomina Direccionamiento Indi-
recto.
EJEMPLOS:1:DireccionamientoIndirecto.
• Elarchivoderegistro05contieneelvalor10h.
• Elarchivoderegistro06contieneelvalor0Ah.
• Cargueelvalor05alregistroFSR.
• LalecturadelregistroINDFdevuelveelvalorde
10h.
• Incremente el valor del registro INDF por uno
(FSR=06).
• La lecturadel registro INDFdevuelveahorael
valorde0Ah.
La lectura indirecta de INDF mismo (FSR = 0),
producirá00h.
Escribiralregistroindirectamenteresultaenuna
no-operación,sibienelbitdeSTATUSpuedequedar
afectado.
Unprogramasimpleparadesactivarlaslocacio-
nes 20h-2Fh del RAM, usando el direccionamiento
indirecto,puedeverseenelsiguienteejemplo:vea
latabla3.
Unadirecciónefectivade9bitsseobtieneporla
concatenacióndelregistroFSRdeochobitsconel
bitIRP(STATUS<7>),comovemosenlafigura17.
Sinembargo,IRPnoesusadoenelPIC16F84A.
CAPItUlO 1 - Arquitectura de un PIC
19
POrts I/O
AlgunaspatasdeportsI/Oestánmultiplexadas
con una función alternativa para las prestaciones
periféricasdeldispositivo.Engeneral,cuandoseac-
tiva un periférico, esta pata no debe usarse como
pataI/Odeusogeneral.
RegistrosPORTAyTRISAPORTAesunpuertobidireccionaldeunanchode
5bits.Elregistrodedireccionesdedatoscorrespon-
dienteesTRISA.AjustarelbitdeTRISAa“1”,hará
delapatacorrespondientedePORTAunaentrada,lo
quesignificaqueeldriverdesalidacorrespondien-
teadquiereunmododealtaimpedancia.Desactivar
unbitdeTRISA(=0)conviertelapatacorrespondien-
tedePORTAensalida,
loquesignificaqueel
contenidodel latchde
salidaseencuentraen
lapataseleccionada.
NOTA: En un Reset
deFuente(POWERRE-
SET), estas patas son
configuradascomoen-
tradas y leen como
“0”.
En la lectura,el re-
gistrodePORTA leeel
status de las patas,
mientras que al escri-
bir, se escribe en el
latchdelport.
Un latch o cerrojo
esuncircuitoqueper-
mite retener datos en
unaposicióndepreparaciónhastaqueseapedido,
generalmentepormediodeotrocircuito.
Todas lasoperacionesdeescriturasondel tipo
de “lectura-modificación-escritura”. Esto significa
queescribiraunportimplicaquelaspatasdelport
sonleídas,estevaloresmodificado,ydespuéses-
critoallatchdelport.
La pata RA4 es multiplexada con el temporiza-
dor,“entradaTimer0” delaentradadelmódulodel
clockysetransformaenlapataRA4/T0CKI.Estapa-
taRA4/T0CKIeslaentradadeundisparadorSchmitt
yposeeunasalidadecolectorabierto.Lasdemás
patas de port RA poseen niveles de entrada TTL y
sondriverscompletosdeltipoCMOS.Enlafigura18
vemoseldiagramaenbloquesdeunadelaspatas
RA3aRA0.
Microcontroladores PIC
20
Figura 17
Tabla 3Movlw 0x22 ;cargoalregistroWconelnúmero22
;enhexadecimal
Movwf FSR ;transfieroelcontenidodeWalregistroFSR
PROX Clrf INDF ;borroelcontenidodelregistroINDF
Incf FSR ;incrementoenunaunidadelcontenido
;delregistroFSR
Btfss FSR,4 ;queelCPsalteunaunidadsielbit4
;delFSRes“1”
Goto PROX ;sielbit4deFSR=0,entoncesvuelva
;aPROX
ParainicializarelPORTA,podemosrealizarlasiguienterutina:
CLRFPORTA ;borroelcontenidodel
;registroPORTA
BSFSTATUS,RPO ;ponea“1”elbitRPOdel
;registroSTATUS
MOVLWB’00001111’ ;cargoaWconel
;número0x0F
MOVWFTRISA;seleccionoalaspatasRA3aRA0
;comosalidas
;ylapataRA4comoentrada.
Enelejemplodelprograma,lasdosprimerasins-
truccionesnotienennadaqueverconladefinición
de laspatasdelpuertoA,en realidad la inicializa-
cióncomienzaconlatercerainstrucciónolíneade
programa.Enlafigura19seobservaeldiagramade
lapataRA4.
Una síntesis
de la función
que cumple ca-
da pata del
PORT se mues-
traenlatabla4.
RegistrosPORTByTRISBPORTBesun
port bidireccio-
nal con un an-
chode8bits.El
registro de di-
reccionesdeda-
CAPItUlO 1 - Arquitectura de un PIC
21
Figura 19Figura 18
Tabla 4
tos correspondiente es TRISB. Si se ajusta el bit
TRISB=1,lapataPORTBcorrespondientesetrans-
formaenentrada,quieredecirquecolocaeldriver
desalidacorrespondienteenelmododealtaimpe-
dancia.
LimpiarelbitTRISB(=0),transformalapataco-
rrespondientedePORTBensalida,quieredecirque
elcontenidodellatchdesalidaapareceenlapata
seleccionada.
ParainicializarelPORTBpodemosejecutarlasi-
guientesentencia:
MOVLWB’00101111’;cargoaWconelnúmero0x0F
MOVWFTRISB;seleccionolaspatasRB0a
;RB3yRB5comosalidas,
;mientrasquelaspatasRB4,RB6yRB7
;seránentradas.
CadaunadelaspatasdePORTBposeeunresis-
tordepolarización interno.Unbitdecontrolúnico
puedeactivar todos los resistores. Se realiza esto
limpiandoelbitRBPU(OPTION<7>).
Este circuito es desactivado automáticamente
cuandolapatadelportesconfiguradacomosalida.
Estoscircuitossondesactivadosenunresetdeen-
cendido.
CuatrodelaspatasdePORTB,RB7:RB4,poseen
unacaracterísticade interruptalcambiar.Solo las
patasconfiguradascomoentradaspuedenproducir
esteinterrupt.
EstosignificaquetodapataRB7aRB4configu-
rada como salida está excluidade la comparación
deinterruptalcambiar.LaspatasdeentradadeRB7
aRB4,secomparanconelvaloranteriorasentado
enellatchdelaúltimalecturadePORTB.Lassalidas
dedesequilibriodeRB7aRB4soncombinadasen
unafunciónlógicaORparagenerarelcambiodelRB
PortconelbitdeindicaciónRBIF(INTCON<0>)como
flag.
Estainterrupciónpuededespertareldispositivo
deSLEEP.Elusuariopuedelimpiarelinterruptenla
rutinadeserviceenlasiguientemanera:
a)TodalecturaoescrituradePORTB.Estotermi-naconlacondicióndedesequilibrio.
b)LimpieelbitdelflagRBIF.
Una condición de desequilibrio hará ajustar el
bitdeflagRBIF.
LalecturadePORTBterminaconlacondiciónde
desequilibrio ypermite la limpiezadelbitRBIF. La
prestacióndeinterrumpiralcambiaresrecomenda-
daparaoperacionesdedespertaraloprimirunate-
clayparaoperacionesdondePORTBsoloesusado
paralaprestacióndeinterruptalcambiar.Nosere-
comiendaelescrutinio(polling)dePORTBmientras
seusalaprestacióndeinterruptalcambio.
Enlafigura20sepuedeobservareldiagramaen
bloquecorrespondientealsistemadepatasRB4a
RB7,mientrasquelafigura21muestralopropiopa-
ralaspatasRB0aRB3.
Enlatabla5vemoslasfuncionesdePORTB.
Microcontroladores PIC
22
Figura 20 Figura 21
MO dU lO teM PO rI zA dOr tI Mer0
El módulo temporizador/contador posee las si-
guientesprestaciones:
• Temporizador/contadorde8bits.
• Legibleyescribible.
• Selectordeclockinternooexterno.
• Prescaladorde8bitsprogramableporsoftware.
• InterruptporexcesodeFFha00h.
En la figura22 vemosundiagramaenbloques
simplificadodeltemporizador.
El temporizador TIMER0 puede funcionar como
temporizadorocomocontador.
Elmododetemporizadorseseleccionalimpian-
doelbitT0CS(OPTION_REG<5>).Enelmododetem-
porizador, elmódulo Timer0 incrementa cada ciclo
deinstruccionessindivisióndefrecuencia.Sisees-
cribeenelregistroTMR0,elincrementoesinhibido
durante los siguientes ciclos de instrucciones. El
usuariopuedeevitaresoescribiendounvalorajus-
tadoalregistroTMR0.
Elmododecontadorseseleccionaalajustarel
bitT0CS(OPTION_REG<5>).
Enelmododecontador,elmóduloTimer0incre-
mentaenelflancoascendenteodescendentedela
pataRA4/T0CKI.Elflancoascendenteesdetermina-
doporelbitTimerSourceEdgeSelect,T0SE(OPTION-
_REG<4>).LimpiandoelbitT0SEseleccionaelborde
ascendente.
CAPItUlO 1 - Arquitectura de un PIC
23
Tabla 5
Figura 22
Cuandoseusaunaentradadeclockexternoen
elTimer0,sedebencumplirciertosrequisitospara
queelclockexternopuedasersincronizadoconla
fasedelclockinterno(Tosc).Ademásexisteunretar-
doenel incremento realdel Timer0despuésde la
sincronización.
Prescaler(DivisordeFrecuencia)Sedisponedeuncontadorde8bitscomopresca-
lerenelmóduloTimer0,ocomopostescaladorpara
el temporizador Watchdog, respectivamente. En la
figura23vemosesteesquema.
Para mayor simplicidad, nos referimos a este
contador como prescaler. Observe que sólo existe
undivisorqueescompartidomutuamenteenforma
exclusivaporelmódulodelTemporizadoryelTem-
porizadordelWatchdog.Deestamanera,unaasig-
nacióndelprescalerparaelmódulodeltemporiza-
dorsignificaquenohaydivisorparaelTemporizador
delWatchdogyviceversa.
Elprescalernoeslegibleniescribible.
LosbitsPSAyPS2:PS0(OPTION_REG<3:0>)deter-
minanlaasignaciónylatasadeladivisión.Allim-
piarelbitPSAseasignaráelprescaleralmódulodel
Timer0.CuandoésteesasignadoalmóduloTimer0,
los valores de división son seleccionables en 1:2,
1:4,.....1:256.
ElajustedelbitPSAasignaráelprescaleralTem-
porizador Watchdog (WDT). Cuando el prescaler es
asignadoaWDT,losvaloresdedivisiónsonseleccio-
nablesen1:1,1:2,.....1:128.
Cuando está asignado al módulo Timer0, todas
las instrucciones escritas al registro TMR0, como
por ejemplo: CLRF 1, MOVWF 1, BSF 1,x ...y otros,
limpiarán el prescaler. Cuando está asignado al
WDT,una instrucciónCLRWDTlimpiaráelprescaler
juntoconWDT.
NOTA:Escribira TMR0cuandoelprescalerestá
asignadoaTimer0,limpiaráelconteodelprescaler,
peronomodificarásuasignación.
Cabeaclararquelaasignacióndelprescaleres-
tácompletamentebajoelcontroldelsoftwareypor
lo tanto puede ser cambiado durante la ejecución
delprograma.
NOTA: Para evitar un RESET no intencional del
dispositivo,esnecesarioejecutarunasecuenciade
instruccionesespecíficascuandosecambialaasig-
nacióndelprescalerdelTimer0aWDT.Estasecuen-
ciadebeserseguidaaúncuandoWDTestáinactivo.
InterrupcióndeTimer0LainterrupcióndeTMR0segeneracuandoelre-
gistroTMR0excedesucapacidaddeFFha00h.Este
exceso ajusta el bit T0IF (INTCON<2>). La interrup-
Microcontroladores PIC
24
Figura 23
ción puede ser enmascarada limpiando el bit T0IE
(INTCON<5>).
ElbitT0IFselimpiaporsoftwareporlarutinade
servicedelmóduloTimer0,antesde reactivaresta
interrupción. La interrupción TMR0 no puede “des-
pertar”alprocesadordeSLEEP,debidoaqueeltem-
porizadorestádesconectadoduranteSLEEP.
Enlatabla6vemoslosregistrosasociadoscon
elTimer.
Me MO rIA de dA tOs ee PrOMLamemoriadedatosEEPROMsepuedeleeryes-
cribirduranteelfuncionamientonormaldelµP,para
elrangocompletodeVdd.Estamemorianoestáor-
denadaenformademapadirectamenteenelespa-
ciodelosarchivosdelregistrosinoqueesdireccio-
nadaindirectamentemediantelosRegistrosdeFun-
cionesEspeciales(SFR).ExistencuatroSFRusados
paraleeryescribirenestamemoria.Estosregistros
son:
• EECON1
• EECON2(esteregistronoestáimplementadofí-
sicamente)
• EEDATA
• EEADR
EEDATAcontiene losdatosde8bitspara leery
escribir,yEEADRcontienelasdireccionesdelaslo-
cacionesdelEEPROMquesonaccedidos.Losdispo-
sitivosPIC16F84Aposeen64bytesdedatosdeEE-
PROMconunrangodedireccionesqueabarcade0h
a3Fh.
LamemoriadedatosEEPROMpermiteleeryes-
cribirbytes.Unaescrituradebyteborraautomática-
mentelalocaciónyescribelosdatosnuevos(borra
antesdeescribir).LamemoriadedatosEEPROMes-
tápreparadaparacicloselevadosdeleeryescribir.
Eltiempodeescribirescontroladoporuntempori-
zadorincorporadoenelchip.Eltiempodeescritura
puedevariarconlatensiónytemperaturaytambién
entreunaunidadyotra.Paralímitesexactossírvase
referiralasespecificacionesdecorrientealterna.
Cuandoeldispositivoposeeproteccióncodifica-
da,launidadCPUpuedecontinuardeleeryescribir
losdatosen lamemoriadelEEPROM.Elprograma-
dordeldispositivonotienemásaccesoalamemo-
ria.Enlafigura24vemoselregistroEECON1ensu
dirección88h.
Lassiglasdeestafiguratienenelsiguientesig-
nificado:
R=BitLegible W=BitEscribible
S=BitAjustableU = Sin Implementar, lea
comocero,
-n=ValordeacuerdoalResetPOR(donden
puedeserx,o).
Elsignificadoyestadodelosbitsdelamemoria
sonlossiguientes:
Bits7,6y5: SinImplementar,leacomocero.
Bit4,EEIF: BitindicadordeEEPROMWriteOpera-
tionInterrupt(FLAG).
1=Laoperacióndeescrituraestácumplida,
debeserborradoenelsoftware.
0=Laoperacióndeescribirnoestácumplida
onoempezóaún.
Bit3,WRERR: BitindicadordeErrorenEEPROM.
1 = Una operación de escribir terminó en
formaprematura.CausadoporunRESETMCLRoun
RESETWDTduranteelfuncionamientonormal.
0=Laoperacióndeescribirestáterminada.
Bit2,WREN: BitdeActivarlaEscritura.
1=Permiteciclosdeescritura.
0=InhibelaescrituraalEEPROM.
Bit1,WR: BitdeControldeEscritura.
1=Iniciaunciclodeescritura.Elbitesanu-
ladoporhardwareunavezterminada laoperación.
CAPItUlO 1 - Arquitectura de un PIC
25
Figura 24
Tabla 6
ElbitWRsólopuedeserajustadoporsoftware,pe-
ronoborrado.
0 = El ciclo de escritura al EEPROM está
completo.
Bit0,RD: BitdeControldeLectura.
1=IniciaunalecturadelEEPROM.Lalectu-
raocupasólounciclo.
RDesborradoconhardware.ElbitRDsó-
lopuedeserajustadoporsoftware,peronoborrado.
0=NocomienzaunalecturadelEEPROM.
LecturadelaMemoriadeDatosdeEEPROMPara leeruna locacióndememoriadedatos,el
usuariodebeescribirladirecciónalregistroEEADR
ydespuésajustarelbitdecontrolRD(EECON1<0>).
Eldatoestádisponibleenelsiguientecicloenelre-
gistro EEDATA y por lo tanto puede ser leído en la
instrucciónsiguiente.
EEDATAconservaráestevalorhastaotralectura
ohastaqueseaescritoporelusuarioduranteuna
operacióndeescribir.
Ejemplo:LecturadeEEPROMdeDatos.Veamoscomopo-
dríaserlasecuenciadeunprogramaparaleeruna
locacióndememoria,vea
latabla7.
Escritura de la Memo-riadeDatosEEPROM
Paraescribirunaloca-
cióndememoriadedatos
EEPROM, el usuario debe
escribir la dirección pri-
mero al registro EEADR y
losdatosalregistroEEDA-
TA.Despuéselusuariode-
be seguir una secuencia
específica para iniciar la
escritura de cada byte.
Cabeaclararquesideseo
leer o escribir una direc-
cióndememoriatambién
es posible “nombrar una
variable”,temaqueanali-
zaremosmásadelante.
EjemploEscritura de EEPROM
de Datos. Veamos cómo
podríaserlasecuenciade
unprogramaparaescribir
unalocacióndememoria,
vealatabla8.
Laescrituranoseiniciasilassecuenciasarriba
mencionadasnosecumplenexactamenteparacada
byte.Escribir55haEECON2,escribirAAhaEECON2,
despuésajustarelbitWR.Recomendamosespecial-
mente desactivar las interrupciones durante este
segmentodelcódigo.
Además,elbitWRENenEECON1debeserajusta-
doparaactivarlaescritura.Estemecanismoimpide
laescrituraaccidentalalEEPROMdedatosdebidoa
inesperadas ejecuciones del código, por ejemplo
porprogramasperdidos.Elusuariodebemantener
elbitWRENlimpioentodomomento,exceptocuan-
doestáactualizandoEEPROM:elbitWRENnoselim-
piaconhardware.
Despuésdehaberiniciadounasecuenciadees-
critura,lalimpiezadelbitWRENnoafectaráelciclo
deescritura.ElbitWRnopodráserajustadohasta
queelbitWRENestéajustado.
Al completar el ciclo de escritura, el bitWR es
limpiadoporelhardwareyelbitindicadordeEEWri-
teCompleteInterrupt(EEIF)tambiénseajusta.EEIF
debeserlimpiadoporsoftware.
VerificacióndeEscrituraDeacuerdoalaaplicación,laprácticadebuena
programaciónpuedeindicarquelosdatosescritos
Microcontroladores PIC
26
Tabla 7BCF STATUS,RPO ;poneaceroelbit5(RPO)delregistroSTATUS,
;dichobitseusaparadireccionamientodirectoy,
;enestecaso,elegimoselbanco0
MOVLW 0x20 ;cargoalregistroWconladireccióndelamemoria
;dedatosquevoyaleer
MOVWF EEADR ;muevoelcontenidodelregistroWalregistro
;EEADRqueeselregistrodedireccionamientode
;laEEPROM,dichodeotramanera,estoy
;realizandoeldireccionamientoparaleer
BSF STATUS,RPO ;poneaunoelbit5(RPO)delregistroSTATUS,
;dichobitseusaparadireccionamientodirectoy,
;enestecaso,elegimoselbanco1
BSF EECON1,RD ;poneaunoelbit0(RD)decontroldelecturadel
;registrodelamemoriadedatos(EECON1),esto
;significaqueseinicialalecturadeldato
;contenidoenladirecciónquehemos
;cargadoenEEADR
BCF STATUS,RPO ;poneaceroelbit5(RPO)delregistroSTATUS,
;dichobitseusaparadireccionamientodirectoy,
;enestecaso,elegimoselbanco0
MOVF EEDATA,W ;comoenlainstrucciónanteriordijimosque
;haríamosundireccionamientodirectoyEEDATA
;eselregistrodedatosdondeestálainformación
;leída,ahora,conlainstrucciónMOVFhemos
;cargadoalregistrodetrabajoconeldatoleído
;delamemoriadedatos.
a laEEPROMdeDatosdebenser verificados. Este
procedimientodebeserusadocuandounbitde la
EEPROMestámuycercadesu límiteespecificado.
Generalmenteuna fallade laEEPROMconsisteen
unbit que fueescrito como “0”, pero se lee como
“1”,debidoaproblemas.
Paraverificarundatoescrito,debemosprimero
leerlaposicióndememoriagrabada(sitomamosel
ejemplodereciéndeberíamosleereldatoconteni-
doenladirección22h);posteriormentedeberíamos
cargaralregistroWconeldatoqueesperamosen-
contrar,realizarunarestaentreeldatoleído(enEE-
DATA)yelcontenidodeW,luegopormediodelflag
ZdelregistrodeSTATUS,nosfijamossiladiferencia
escero;siestoocurre,elprogramacontinuaránor-
malmente.
Haymuchasformasdehaceresteproceso,pero
unaalternativaseríalavistaenlatabla9.
Enlatabla10vemoslosRegistrosyBitsasocia-
dosconlaEEPROMdeDatos.
lA CPU del PIC
Unmicrocontroladorsediferenciadeotrostipos
deprocesadoresportenercircuitosespecialespara
atenderlasnecesidadesdeciertasaplicacionesen
tiempo real.ElPIC16F84A,porejemplo,poseeuna
cantidad importante de este tipo de prestaciones
cuyopropósitoesaumentaralmáximolaconfiabili-
daddelsistema,minimizarloscostosporlaelimina-
cióndecomponentesexternos,proveermodosope-
rativodeeconomíadelconsumoyofrecerunabue-
naproteccióndecódigos.Estasprestacionesson:
• Seleccióndeloscilador.
• Reset
-ResetalEncender(POR)
-Temporizadordeencendido(PWRT)
-TemporizadordearranquedelOscilador
• Interrupciones
• TemporizadorWatchdog(WDTóperroguardián).
CAPItUlO 1 - Arquitectura de un PIC
27
Tabla 8BSF STATUS,RPO ;poneaunoelbit5(RPO)delregistroSTATUS,
;dichobitseusaparadireccionamientodirectoy,
;enestecaso,elegimoselbanco1
MOVLW 0x18 ;cargoalregistrodetrabajoconladirección
;delamemoriadondeescribiréeldato
MOVWF EEADR ;enladirecciónderegistrodeescritura
;colocoladireccióndondeescribiréeldato
MOVLW 0x12 ;cargoaWconelnúmero12enhexadecimalque
;seráeldatoquevoyaescribirenlaposición18h
MOVWF EEDATA ;escribimoseldatoenEEDATA
BSF EECON1,WREN ;solicitoelpermisodeescrituray
;comienzalasecuenciadeescritura
MOVLW 0x55 ;cargoaWcon55h
MOVWF EECON2 ;seescribeeldato12henEECON2
MOVLW 0xAA ;cargoaWconAAh
MOVWF EECON2 ;seescribeAAhenEECON2
BSF EECON1,WR ;comienzalaescritura
WI BTFSC EECON1,WR ;esperaaqueterminelaescritura
GOTO WI ;
BCF STATUS,R0 ;seleccióndelbanco0
Secuencia
requerida p
ara
realiz
ar
la e
scritu
ra
Microcontroladores PIC
28
Tabla 9BCF STATUS,RPO ;poneaceroelbit5(RPO)delregistroSTATUS,
;dichobitseusaparadireccionamientodirectoy,
;enestecaso,elegimoselbanco0
MOVLW 0x22 ;cargoalregistroWconladireccióndelamemoria
;dedatosquevoyaleer,enestecaso22h
MOVWF EEADR ;muevoelcontenidodelregistroWalregistro
;EEADRqueeselregistrodedireccionamientode
;laEEPROM,dichodeotramanera,estoy
;realizandoeldireccionamientoparaleer
BSF STATUS,RPO ;poneaunoelbit5(RPO)delregistroSTATUS,
;dichobitseusaparadireccionamientodirectoy,
;enestecaso,elegimoselbanco1
BSF EECON1,RD ;poneaunoelbit0(RD)decontroldelecturadel
;registrodelamemoriadedatos(EECON1),esto
;significaqueseinicialalecturadeldato
;contenidoenladirecciónquehemos
;cargadoenEEADR,enEEDATAtendréel
;número15h(siestátodobien),sihubounerror
;deescrituranohabráesevalor
BCF STATUS,RPO ;poneaceroelbit5(RPO)delregistroSTATUS,
;dichobitseusaparadireccionamientodirectoy,
;enestecaso,elegimoselbanco0
MOVLW 0x15 ;cargoaWcon15h
SUBWF EEDATA,W ;restoelcontenidodeEEDATAconeldeW
BTFSS STATUS,Z ;sielflagZdelSTATUSes“1”esporqueel
;resultadodelarestaescero(estátodobien),
;luego,lasiguienteinstrucciónseignorayel
;programacontinúanormalmente.SiZ=0,
;entoncesseejecutalapróximainstrucción
GOTO ERROR ;elprogramairáaunaetiquetaqueejecutauna
;rutinaqueindicaquehuboerror.
MOVLW ........ ;elprogramacontinúanormalmente
Tabla 10
• Sleep(mododeoperaciónenbajoconsumo)
• ProtectordeCódigos.
• LocacionesdeIdentificación(ID).
• Programación en serie (en la confección del
programa).
El PIC16F84Aposeeun temporizadorWatchdog
quepuedeserdesactivadosolamentemediantebits
deconfiguración.Paramayorconfiabilidadfunciona
consupropioosciladorRC.Existendostemporiza-
doresqueofrecenelretardonecesarioalaplicarali-
mentaciónalPIC.UnoeselTemporizadordearran-
que del oscilador (Oscillator Start-up Timer =OST),
cuyafuncióneslademantenerelchipenResethas-
taqueelosciladoracristalseestabiliza.Elotroes
el Temporizador de Encendido (Power-up Timer =
PWRT)queproveeunretardofijode72ms(valorno-
minal)alaplicartensiónVDDúnicamente.Estedise-
ñomantieneeldispositivoenResetduranteeltiem-
po de estabilización de la fuente de alimentación.
Conestosdostemporizadoresincorporados,lama-
yoría de las aplicaciones no necesita circuitos de
Resetexternos.ElmododeSLEEPofreceunaforma
de“apagado”demuybajoconsumo.Elusuariopue-
dedespertardesdeSLEEPmedianteunResetexter-
no, finde tiempodel TemporizadordeWatchdogo
una Interrupción. Se proveen varias opciones para
lososciladoresparapoderadaptarelcomponentea
diferentesaplicaciones.LaopcióndeosciladorRC
ahorra costos del sistema aunque no es estable,
mientrasquelaopciónconcristalahorraconsumo,
esmuyestableperoesmáscostosa.Comovimos,
enlapalabradeconfiguracióndelPICsedebedecir
quétipodeosciladorsevaaemplear.
BitsdeConfiguraciónTalcomovimosanteriormente,losbitsdeconfi-
guración pueden ser programados para leer “0” o
quedarsinprogramaciónparaleer“1”ydeestama-
neraseleccionardiferentesconfiguracionesdeldis-
positivo.Estosbitsseencuentranenlalocaciónde
memoriadelprograma2007h.
Enlatabla11vemosotroaspectodelapalabra
deconfiguración.
Lasreferenciassonlassiguientes:
R=bitquepuedeserleído
P=bitprogramable
u=sincambio
Yahemoshabladodelafunciónquecumplecada
bit.Ladirección2007hestáfueradelespaciodela
memoriadelprogramadeusuarioyperteneceales-
paciodelamemoriadetestespecialyconfiguración
(2000h–3FFFh).Esteespaciosóloesaccesibledu-
rantelaprogramación.
COn FI gU rA CIO nes del Os CI lA dOr
TiposdeOsciladoresElPIC16F84Apuedefuncionarconcuatromodos
diferentesdeoscilador.Elusuariopuedeprogramar
dosbitsdeconfiguración(FOSC1yFOSC0)parase-
leccionarunodeestoscuatromodos:
• LP=CristaldeBajaPotencia
• XT=CristaloResonador
• HS=CristaloResonadordeAltaVelocidad
• RC=OsciladorRC
OsciladordeCristaloResonadordeCerámicaEnlosmodosXT,LPoHSseconectauncristalo
resonador cerámico a las patas OSC1/CLKIN y
OSC2/CLKOUT para establecer la oscilación de
acuerdoalafigura2deestecapítulo.
EldiseñodelosciladordelPIC16F84Arequiereel
usodeuncristaldecorteparalelo.Elusodeuncris-
tal de corte serie puede dar oscilaciones con una
frecuenciafueradelrangoespecificadoporelfabri-
cantedelcristal.EnlosmodosXT,LPoHP,eldispo-
sitivopermitelaconexióndeunafuenteexternapa-
raexcitarlapataOSC1/CLKIN,comovemosenlafi-
gura25.
OsciladorRCParaaplicacionesinsensiblesavariacionestem-
porales,elusodelaopcióndeosciladorRCofrece
ventajasadicionales.LafrecuenciadelosciladorRC
CAPItUlO 1 - Arquitectura de un PIC
29
Tabla 11
Figura 25
esunafuncióndelatensióndelafuente,delvalor
deRext,delvalordeCextydelatemperaturadefun-
cionamiento.Ademásdeestosparámetros,también
puedehaberunavariacióndelafrecuenciadelosci-
ladordebidoalasvariacionesnormalesdelospará-
metrosdelproceso.Además,lasdiferenciasenlas
capacidades de conductores del dispositivo puede
introducir variaciones, especialmente con valores
muybajosdeCext.Elusuariodebetomarencuenta
asimismo, variaciones debido a las tolerancias de
loscomponentesexternosRyCusados.Lafigura3
vista anteriormente, muestra cómo conectar una
combinaciónRCalPIC16F84A.
ResetElPIC16F84Adistingueentrevariostiposdere-
set.
• Resetalencender(Power-onResetPOR).
• ResetMCLR’duranteelfuncionamientonormal.
• ResetMCLR’duranteSLEEP.
• ResetWDTduranteelfuncionamientonormal.
• ResetWDTdedespertarduranteSLEEP.
Nota: LanotaciónMCLR’implicaqueelresetse
activaconun“0”(negado),esdecir:
_____
MCLR’=MCLR
La figura 26 muestra un diagrama en bloques
simplificadodelcircuitoderesetincorporadoenel
chip.ElpasoderesetMCLR’poseeunfiltroderuido
paraignorarpulsospequeños.Lasespecificaciones
eléctricasfijanlosrequisitosdelanchodepulsone-
cesarioparalapataMCLR’.
Algunosregistrosnosonafectadosporninguna
condicióndereset,sustatusesdesconocidoenun
resetPORysincambiosencualquierotroreset.La
mayoría de los demás registros se colocan en un
“estadodereset”enresetsPOR,MCLR’oWDRdu-
ranteelfuncionamientonormalyenunresetMCLR’
duranteSLEEP.NosonafectadosporunresetWDT
duranteSLEEPdebidoaqueesteresetesvistoco-
moresumendelfuncionamientonormal.Enlatabla
Microcontroladores PIC
30
Figura 26
Tabla 12
12vemosladescripcióndecondicionesderesetpa-
raelcontadordeprogramasPCyelregistrodeSTA-
TUS.
Leyenda:
u=sincambios,
x=desconocido.
Nota1. Cuandoel“Despertar”(volverdeSLEEP)
sedebeaunaInterrupciónyelbitGIEesajustado,
el contadorPC se carga con el vector de interrupt
(0004h).
Enlatabla13sebrindaunadescripcióncomple-
tadelosestadoderesetparatodoslosregistros:
Leyenda:
u=sincambios
x=desconocido
-=bitsinimplementar,leídocomo0,
q=valordependelascondiciones.
Notas1:UnoomásbitsdeINTCONseránafecta-dosparacausardespertar.
Nota 2: Cuando el despertar se debe a un inte-rruptyelbitGIEesajustado,elcontadorPCsecar-gaconelvectordeinterrupt(0004h).
Nota3: Losvaloresparacadacondiciónespecífi-caestánlistadosenlatabladecondicionesderesetpara el contador de programas PC y el registro deSTATUS.
Nota4. Entodoresetdeldispositivo,estaspatassonconfiguradoscomoentradas.
Nota5:Esteesel valor que seencuentraenellatchdelportdesalida.
LosbitsTO’yPD’sonajustadosolimpiadosen
formadiferenteendiferentessituacionesdereset.
Estos bits se usanen software para determinar la
naturalezadelreset.
ResetdeEncendido(POR)Unpulsoderesetdeencendidosegeneraenel
chipcuandosedetectaunaelevacióndeVDDenel
rangode1,2a1,7Volt.ParaaprovecharelPOR,so-
lodebeconectarlapataMCLR’directamenteoatra-
vés de un resistor a VDD. Esto elimina los compo-
nentesRCexternosquesenecesitangeneralmente
para crear un reset de encendido. Se necesita un
tiempo de crecimiento mínimo para VDD para que
funcione correctamente. Las especificaciones res-
pectivassurgendelasEspecificacionesEléctricas.
Cuando el dispositivo comienza su funciona-
mientonormalalsalirde lacondiciónde reset,es
necesario asegurar los parámetros (tensión, fre-
cuencia,temperatura,etc)ensusvaloresnormales
para garantizar el funcionamiento. Si estas condi-
cionesnosoncumplidas,eldispositivodebemante-
nerseenresethastaquesenormalice.Enlafigura
27vemosuncircuitodeRESETdeencendidoexterno
paraunaaplicaciónlentadeVDD.
Elresetdeencendido(POR)noproduceunreset
internocuandoVDDcae.
CAPItUlO 1 - Arquitectura de un PIC
31
Tabla 13
Sobreelcircuitodelafigura27,debemosdecirlo
siguiente:
1.ElcircuitodePower-onReset(externo)sóloes
necesariocuandolatasadecrecimientodeVDDes
demasiadolenta.EldiodoDayudaadescargarelca-
pacitorrápidamentealapagarelequipo.
2.ElresistorR<40kΩesrecomendadoparaes-
tarseguroquelacaídadetensiónsobreRnoexce-
da0,2volt.Lamáximacorrientedefugasobrelapa-
ta MCLR’ está especificada en 5µA. Una caída de
tensiónmayorproduciráladegradacióndelnivelde
VihenlapataMCLR’.
3.ElresistorR1=100Ωa1000Ωlimitatodaco-
rrientequecirculaenMCLRdesdeuncapacitorex-
terno C en el supuesto que haya una ruptura de
MCLR’debidoaESDoEOS.
TemporizadordeArranquedelOscilador(OST)ElOST (Oscillator Start-up Timer =OST) tiene la
funcióndemantenerelchipenResethastaqueel
osciladoracristalseestabilizayentraenfunciones
enlosmodosXT,LPyHSdeloscilador.
TemporizadordeEncendido(PWRT)ElPWRT (Power-upTimer)esuncircuito interno
queproveeunretardofijode72ms(valornominal)al
aplicar tensiónVDDúnicamente. Este diseñoman-
tieneel dispositivoenReset durante el tiempode
estabilizacióndelafuentedealimentación.Cones-
tosdostemporizadoresincorporados,lamayoríade
lasaplicacionesnonecesitancircuitosdeResetex-
ternos.
el Pe rrO gUAr dIAn (Wdt)Setratadeuncontadorde8bitsqueactúacomo
temporizadorytieneelobjetivodegenerarunreset
a todoelsistemacuandosedesbordasuvalor.Su
control de tiempos es independiente del oscilador
principalysebasaenunaredRC.Latemporización
nominal con la que se halla programado el Perro
guardiánesde18ms,peropuedeaumentarseutili-
zandoelDivisordefrecuencia,conelcual,trabajan-
doenelrangomayor,puedealcanzarhasta2,3se-
gundos.
ParaevitarquesedesbordeelWDTygenereun
reset,hayquerecargarorefrescarsucuentaantes
dequellegueacompletarse.
Esterefresco,queenrealidadconsisteenponer-
lo a “0” para iniciar la temporización, se consigue
porsoftwareconlasinstruccionesCLRWDTySLEEP.
Eldiseñadordebeanalizarelprogramadetrabajoy
situar alguna de estas dos instrucciones en sitios
estratégicosporlosquepasaelflujodecontrolan-
tesque transcurrael tiempoquecontrolaelPerro
Guardián.
Deestamanera,sielprogramase“cuelga”(bu-
cleinfinito,esperadeacontecimientoquenosepro-
duce,etc.),noserefrescaatiempoalPerroguardián
yseproduceunareinicialización.
LainstrucciónCLRWDTborrasimplementeelva-
lor de WDT, reiniciando la cuenta. Sin embargo, la
instrucciónSLEEP,ademásdeborrarelWDT,detiene
atodoelsistemaentrandoenunmododetrabajoen
elqueelconsumoesmínimo(mododeReposoode
bajoconsumo).SinosedesactivaalPerroguardián
cuandoseentraenelmododeReposo,alacabarsu
conteoprovocaráunresetysesaldrádedichomo-
do.OtraformadesalirdelmododeReposoesacti-
vandolapatitaMCLR’.
Comohemosvisto,paradesactivaralPerroGuar-
dián,hayqueponerun“0”enelbit2 (WDTE)de la
Palabradeconfiguración.
ExistelaposibilidaddequeelDivisordefrecuen-
ciaopereconelTMR0oconelWDT,segúnelvalor
quetengaelbitPSA.Losimpulsosdeconteopasan
porelDivisorantesdeaplicarsealTMR0(prescaler).
Porelcontrario, los impulsospasanprimeroporel
WDTyluegoporelDivisor(Post-divisor).
In te rrUP CIO nes del MI CrOLasinterrupcionessonelmecanismomásim-
portanteparalaconexióndelmicrocontroladorcon
el mundo exterior, sincronizando la ejecución de
programasconacontecimientosexternos.
Lasinterrupcionessonunaespeciedesubruti-
nasdelascualessediferencianenlosprocedimien-
tosquelasponenenmarcha.Porotrapartelassu-
brutinas se ejecutan cada vez que en el programa
apareceunainstrucciónCALL,mientrasquelasinte-
rrupcionesseponenenmarchaalaparecerencual-
quierinstanteuneventoexternoalprograma,esde-
cirporunmecanismodehardware.ElPIC16X84/PIC,
porejemplo,disponede4posiblesfuentesdeinte-
rrupción:
1.ActivacióndelpinRB0/INT2.DesbordedeltemporizadorTMR0
Microcontroladores PIC
32
Figura 27
3.Cambiodeestadoenunadelas4patasdemáspeso(RB7:RB4)delPORTB
4. Finalizaciónde laescrituraen laEEPROMdedatos.
Cuandoseproducealgunodeestosestados,se
originaunapeticióndeinterrupción,quesiseacep-
ta,guardaelvalordelcontadordeprograma (PCó
CP)actualenlaPila,poneaceroelbitGIE(GlobalIn-
terrupt Enable), lo queprohibe cualquier otra inte-
rrupciónysecargaelPCconelvalor0004H,quees
laposicióndelvectordeinterrupción,ycomienzaa
ejecutarseelprogramadeatenciónalainterrupción
queseencuentraapartirdeestadirección.
Una interrupción está controlada mediante dos
bits.Unodeellosactúacomoseñalizadoroflagque
indicasisehaproducidoono la interrupción,y la
otrafuncionacomobitdepermisooinhibicióndela
interrupciónensí.
Losbitsdecontrolqueseencuentranenelregis-troINTCON(0Bhó8Bh)habilitanyconfiguranlasin-terrupciones.
Paraquesepuedaproducirunainterrupciónpor
algunadeestasfuentes,elbitcorrespondientede-
beestaren“1”,mientrasquelosbitsseñalizadores
oflagsqueestánenlosregistrosINTCONyEEDATA
(08h) informan si se ha producido la interrupción
cuandoéstosseponena“1”.Cualquieradelasinte-
rrupciones también puede sacar al procesador del
mododereposoSLEEP.
ElbitGIE(GlobalInterruptEnable)eseldeactiva-
ciónglobaldelpermisode interrupción,yseborra
automáticamentecuandoapareceunainterrupción,
con el objeto de evitar que se produzca otra inte-
rrupciónmientrasseestáatendiendoa laprimera.
Cuandoporprogramaseretornade la interrupción
conunainstrucciónRETFIE,elbitGIEsevuelveaac-
tivarponiéndosea1.Paraelrestodelosflagsobits
indicadoresdeinterrupción,noestáprevistomeca-
nismodepuestaacero,porloqueeselprogramade
atenciónalainterrupciónelquedeberealizareltra-
tamientode lacorrespondiente interrupciónyade-
más,elquedebeponerelolosflagsdeindicación
deinterrupcióna0.Denoserasí,nosepodrásalir
delarutinadeatenciónalainterrupción.Estafami-
liadePICsposeeunvectordeinterrupciónenladi-
rección0004h;estoquieredecirque,seacualseala
fuentedelainterrupción,elPCsecargacon0004h.
Porlotanto,elprogramadeatenciónalainterrup-
cióndebeencargarsedecomprobarelestadodeca-
daunodelosflagsparasabercuáleslafuentede
interrupciónyactuarsegúnelcaso.
Sisenecesitapreservaralgúnotroregistroade-
másdelPC,cuandoseatiendeunainterrupción,de-
beserelpropioprogramadeatenciónalainterrup-
ciónelqueseencarguedesalvarsuestadoalinicio
delarutinaydedevolverlosalfinaldelmismo,de
igualmodoquesehacíaenlassubrutinas.
Por lo dicho, el µP debe realizar determinados
procesos automáticamente mientras que otros se
ejecutanporprograma,estosprocesosson:
1.Cuandoseactivaunainterrupción,elflagco-rrespondienteseactiva.Sielbitdepermisocorres-pondienteestáen“1”yelbitdehabilitacióndeto-daslasinterrupciones(GIE)estáen“1”,seproducelainterrupción.
2.Paraevitarqueseproduzcaotrainterrupciónmientras se está atendiendo a otra anterior, el bitGIEseponeen“0”.
3.ElvalordelPCseguardaenlaPILA4.ElPCsecargaconelvalor0004h,queeselvec-
tordeinterrupciones5. El programador, debe comenzar la rutina de
atenciónalainterrupciónconunsaltoalaposiciónde memoria donde se encuentra el programa deatención a dicha interrupción, seguidamente seguardantodoslosregistrosquepuedansermodifi-cadosporésta,luegosiestánhabilitadasvariasvíasdeinterrupción,sedebeverificarelvalordelosflagparadeterminarlacausadelainterrupción.
6.Larutinadeinterrupciónllevaalprogramaalasubrutinacorrespondiente.
7.Antesderetornaralprogramaprincipalsede-benreestablecerlosvaloresqueteníanlosregistrosantesdeproducirse la interrupción y sedebenbo-rrarporsoftwarelosflagsqueindicanlasfuentesdelasinterrupciones.
8.Cuandosellegaalaúltimainstruccióndelaru-tinadeinterrupción,RETURN,secargaelPCconelvalorqueseguardó inicialmenteen laPILAyelbitGIEseponeautomáticamenteen“1”.
InterrupciónExterna(INT)La fuente de interrupciones INT es sumamente
importanteparaatendereventosexternosentiem-
poreal.CuandoenlalíneaRB0/INTsehaceunape-
ticióndeinterrupción,entonces,deformaautomáti-
ca,elbitINTFdelregistroINTCONseponeen“1”ysi
elbitGIE=1.Luegoseponeenmarchaelmecanismo
deatenciónalainterrupción.MedianteelbitINTDEG
delregistroOPTION,sepuedeseleccionarelflanco
activodeRBO/INT,yaqueconestapuestaen“1“el
flancoactivoeseldesubidaycuandoestáen“0”el
flancoactivoeseldebajada.Elprogramadeaten-
ciónalainterrupciónantesderegresaralprograma
principaldebeborrarelflagINTF,paraquenosere-
pitaelprocesodeatenciónalainterrupcióncuando
seejecutalainstrucciónderetornodeinterrupción
RETFIE.
CAPItUlO 1 - Arquitectura de un PIC
33
InterrupciónporDesbordedelTMR0ParaactivarlainterrupcióndelTMR0,losbitT0IE
yGIEdel registro INTCONdebenestaren “1”;bajo
estascondicionescuandoeltemporizadorTMR0se
desbordaalpasardeFFha00h,seactivaelflagTOIF
delregistroINTCON.
SinosecargadenuevoTMR0cuandosedesbor-
da,éstesiguecontandodesde00hhastaFFh.Este
registropuedeescribirseoleerseencualquiermo-
mento,perohayquetenerencuentaquealescribir
sobreél,sepierdendosciclosderelojparamante-
nerelsincronismo.
Cuando se carga el registro TMR0 con un valor
XXh,éstecuentaFFh-XXhimpulsosyeltiempoque
tardaenhacerlovienedadoporlaexpresión:
Temporización=4.Tosc.(256–N10).Rangodel
DivisordeFrecuencia
InterrupciónporCambiodeEstadoen laspatasRB7yRB4
Paraactivar la interrupciónporcambiodenivel
enlaspatasRB4yRB7,losbitsRBIEyGIEdelregis-
troINTCONdebenestara‘1”.Cuandoestoesasíyse
produceuncambiodenivelencualquieradelospi-
nesRB4óRB7,seactivaelflagRBIFdelregistroINT-
CON.Estetipodeinterrupcionesestáespecialmen-
tepensadaparaelcontroldeuntecladomatricial4
x4de16teclas.
InterrupciónporFinalizacióndelaEscrituraenlaEEPROMdeDatos
EláreadeEEPROMdisponede64bytesdondese
puedenalmacenardatosquenosepierdenaldesco-
nectarlaalimentación.LamemoriaEEPROMnoestá
mapeadaenlazonadememoriadedatosdondese
encuentranlosregistrosSFRyGPR.Parapoderleer-
layescribirladuranteelfuncionamientonormaldel
microcontroladorhayqueutilizarlosregistrosespe-
cialesEEDATA,EEADR,EECON1yEECON2,talcomo
yahemosvisto.RecuerdequeelRegistroEEADR,se
encuentraenlaposicióndememoria09hdelbanco
0,enélsecargadirectamenteladirecciónalaque
accedendelaEEPROMdedatos.Las64posiciones
deunbyteocupanlasdireccionesdeunmapaque
comienzaenlaposición00hyterminaenla3Fh,por
esolos2bitsdemáspesodelregistroEEADRsiem-
prevalen0.
LosbitRDyWRindicanrespectivamentelectura
oescritura.Nohayqueponerlosa0sóloa1.Sebo-
rranautomáticamentecuandolaoperacióndelectu-
rahasidocompletada.
ElregistroEECON2noestáimplementadofísica-
mente,porloqueesimposibleleerlo(siseintenta
leer,todossusbitsseponena0).Seempleacomo
dispositivodeseguridadduranteelprocesodees-
crituradelaEEPROM,paraevitarlasinterferencias
eneltiempoqueprecisasudesarrollo.Laseguridad
seconsigueescribiendolosvaloresconcretos55hy
AAh.UnciclodeescrituraenunaposiciónEEPROM
de datos tiene una duración de 10 ms, que es un
tiempo muy grande para la velocidad del procesa-
dor.
Microcontroladores PIC
34
Art Tapa - OBD y escaner.qxd:ArtTapa 17/01/14 09:56 Página 13
36
Microcontroladores PIC
Manejo de las
Instrucciones de un PICUna ins truc ción es un co man do, par te del pro gra ma, que se le apli ca al PIC pa ra que lo in ter pre te y eje cu -
te su cum pli mien to. La ins truc ción se com po ne de una se rie de bits pre sen ta da en sec cio nes o po si cio nes per -
fec ta men te de li mi ta das, que el pro ce sa dor in ter pre ta pa ra cum plir una or den de sea da, que dan do es ta ble ci -
das las va ria bles que se mo di fi can.
Di cho de otra for ma, las ins truc cio nes po seen un for ma to de acuer do a un sis te ma de co di fi ca ción. El for -
ma to cam bia de acuer do con la ope ra ción que se va a rea li zar.
37
In TrO dUC CIOn
Cadainstrucción,paralalíneabajadelosPICsti-
po16C5X,consisteenunapalabrade12bitsqueco-
difica en un solo bloque, la orden, el operador y la
ubicacióndelresultadooelsalto(encasodequelo
hubiere).EnlosmicrocontroladoresPICstipo16X84
cadainstruccióntieneunalongitudde14bits.
Los bits que actúan como datos de la memoria
EPROMserecibeneneldecodificadordeinstruccio-
nes,yoperanconelcontadordeprogramayelregis-
trodetrabajoW,paraaccederalugaresespecíficos
delmicrocontrolador, talescomo laALU,posiciones
dememoria,registros,etc.
Comosabemos,losPICs16X84entreotros,mane-
jan un set reducido de instrucciones (35 instruccio-
nesenloquesedenominaRISC)quepresentanuna
codificación muy particular llamada “formato de la
instrucción”.
Cadainstrucciónposeesuformatoyestotalmen-
tedefinidoporMICROCHIP.
Enlafigura1podemosapreciar“lasintaxis”de
unainstruccióndelset.Setratadelainstrucciónque
sumaelcontenidodelregistrodetrabajoconelcon-
tenidodeunregistrocuyadirecciónestádetermina-
daporeloperador“f”.
En esta figura, en primer lugar se observa la
“sintaxis”, es decir, la forma en
que el programador escribirá la
instrucción en el lenguaje “enten-
dibleporeloperador”(elprograma
en.asm).Lacodificacióneselfor-
mato de la palabra que define la
instrucciónyqueveremosendeta-
lle luego. Note que para que se
complete la instrucciónsenecesi-
taunasolapalabrayunsolociclo
delcontadordeprogramas.
Comoveremos,elresultadodela
operaciónseguardaenunsitiodefi-
nidoporelprogramador(dependien-
dodequéestadotomeelbit“d”)y
que esta instrucción modifica los
bitsC,DCyZdelregistrodeestado
(STATUS).
Estoquieredecirquecuandoco-
locolainstrucción:
ADDWFf,d
Elensambladorgeneraráelcódigo:
000111dfffff
CAPITULO 2 - Manejo de las instrucciones de un PIC
Figura 1Figura 1
Figura 2Figura 2
Enestecódigo,losseisbitsdemayorpeso(bits6
al11enlafigura2)definenlaoperaciónquevaarea-
lizar la instruccióndeacuerdoa lo requeridoporel
programador. Aquí se
defineunaordenqueel
PICinterpretayejecuta
sobre un operando de-
terminado, cuya direc-
ción la busca según lo
indicado por los 5 bits
menos significativos
(bits0al4enlafigura
2).
Elbit5esuncódigo
de reconocimiento de
destinoydeterminaen
quélugarsevaaalojar
el resultadode laope-
ración. Si este bit es
“0” el destino de la
operación será puesto
enelregistrodetraba-
jo (W). Si el bit “d” es
puestoa“1”eldestino
será el de la posición
de memoria definido
por“f”.
Los cinco bits de
menor peso en el for-
mato de la instrucción
representan la direc-
ción donde está guar-
dado el operando (f),
queestáenlamemoria
de datos y por tener
cincobitssólopodemosdireccionarunadelas32po-
sicionesdememoriadedatos.
Lamayoríadelasinstruccionesserealizanenun
ciclodecontadordeprograma(ciclodeinstrucción)
exceptolasinstruccionesdesaltoquenecesitandos
ciclosparaejecutarla.
Se determina el ciclo de instrucción dividiendo
porcuatrolafrecuenciadeloscilador,elegidaparael
funcionamientodelmicrocontroladortalcomoseob-
servaenlafigura3.
Esdecir,laseñalqueprovienedelosciladorexter-
no, conectado a los pines OSC1/CLKIN y OSC2/CL-
KOUT del microcontrolador, se divide en cuatro ci-
clos,obteniéndoseasílaseñalrequeridaporelpro-
cesadorinternopararealizarlasoperaciones.Dees-
tamanerasepuederealizarlabúsquedayejecución
delainstrucción.
Elrelojdeinstruccióneselciclointernoquepo-
seeelmicrocontroladorparacronometrareltiempo
deejecucióndelasinstruciones.
Lospulsosentrantesdelrelojsondivididospor4,
generandodiferentesseñalesdenominadasQ1,Q2,
Q3yQ4.ElestadoQ1haceincrementarelcontador
Microcontroladores PIC
38
Figura 4Figura 4
Figura 3Figura 3
deprograma,Q2yQ3,seencargandeladecodifica-
ciónyejecucióndelainstrucciónyporúltimo,Q4es
lafasedebúsquedadelainstrucción.Elcódigoseal-
macenaenelregistrodeinstrucciones.
EL SET dE InS TrUC CIO nES dEL 16X84Vimoscómoes laestructuradeuna instrucción,
razón por la cual le recomendamos que lea nueva-
menteelcomienzodeestecapítulosinoentiendelo
queacontinuaciónexpresaremos.
Loscódigos(denominadosmnemónicos)quesim-
bolizanunconjuntodeinstrucciones,representanla
tarea que debe hacer el microcontrolador una vez
quelasanaliceenfuncióndeloperando.
Un mnemónico ayuda a recordar el significado
quetienelainstrucción.
Parapoderanalizaralconjuntode instrucciones
queconformanelsetRISC,se lossueleagrupar te-
niendoencuentael tipodeoperaciónque realizan,
así es comúnquese laspresentebajo cuatroposi-
blesformas,asaber:
1. Ins truc cio nes orien ta das a re gis tros.
2. Ins truc cio nes orien ta das a bits.
3. Ins truc cio nes con li te ra les.
4. Ins truc cio nes de con trol y es pe cia les.
Enlafigura4vemosuncuadrodondesereprodu-
cenlasinstruccionesorientadasaregistros,lafigura
5muestralasoperacionesorientadasabitsylafigu-
ra6nospermiteconocercuálessonlasinstrucciones
conliteralesydecontrol.
Sobrelasnotasalasquehacemosreferenciaen
dichasfiguras,debetenerencuentalosiguiente:
Nota1. Almodificarunregistrodeentrada/salida
(E/S)conunaoperaciónsobreélmismo(porejemplo
MOVF PORTB,1), el valor utilizado es el que se en-
cuentrepresenteenlaspatasdelPORTB.
Porejemplo,sielbiestabletieneun"1"parauna
pataconfiguradacomoentradayseponeanivelba-
jodesdeelexterior,eldatosevolveráaescribirco-
moun"0".
Nota 2. Si se ejecuta esta instrucción sobre el
TMR0 y d=1, será borrado el divisor de frecuencia
(preescaler),siestáasignadoalTMR0.
CAPITULO 2 - Manejo de las instrucciones de un PIC
39
Figura 5Figura 5
Figura 6Figura 6
40
Nota 3. Si semodifica el Contador de Programa
(PCóCP)oesverdaderaunacondicióndeprueba,la
instrucciónrequieredosciclosdemáquina.Elsegun-
docicloseejecutacomounNOP.
Enlafigura7vemoscómodebenemplearsecada
unadeestasinstrucciones:
CSeponea1siseproduceunacarreodesdeel
bitdemayorpeso.
DCSeponea1sisegeneraunacarreodelbit3al
bit4.
ZSeponea1sielresultadodelaoperaciónesce-
ro.
EJEM PLO:
Queremossumarelcontenidodelregistrodetra-
bajoconelnúmero10expresadoenhexadecimal,la
instrucciónserá:
ADDLWH´10´
La notación H´10´ significa que el número está
expresado en hexadecimal. Si la notación fuese
D´10´significaqueelnúmeroestáexpresadoende-
cimalysifueseB´10´entonceselnúmeroestáenno-
taciónbinaria.
Volviendoanuestroejemplo:
Siantesdelainstrucciónteníaencadaregistro:
W=21h(21hsignificaqueelnúmeroestáexpre-
sadoenhexadecimal,queeslomismoque00100001
b–expresadoenbinario-)
Al ejecutarse la instrucción, se sumarán ambos
númerosyelresultadoseguardaenelregistroW,es
decir:
W=21h+10h=31h(enhexadecimal),ó
W=00010000b+00010000b=00100000b(en
binario)(Vealafigura8).
CSeponea1siseproduceunacarreodesdeel
bitdemayorpeso.
DCSeponea1sisegeneraunacarreodelbit3al
bit4.
ZSeponea1sielresultadodelaoperaciónesce-
ro.
EJEM PLO:
Supongamosquerersumarelcontenidodelregis-
trodetrabajoconelcontenidodeunregistrollama-
doREG,yqueremosguardarelresultadoenelregis-
trodetrabajo,lanotaciónserá:
ADDWF REG,0
SiantesdelainstrucciónW=10hyREG=21h,el
resultadodelasumaserá31hqueseguardaráenel
registrodetrabajo,esdecir,luegodelasumaelcon-
tenidodelosregistrosserá:
W=31h REG=21h
Microcontroladores PIC
Figura 7Figura 7
NotequeelcontenidodelregistroREGnosemo-
dificóluegodelaoperación.Silainstrucciónhubiese
sido:
ADDWF REG,1
Entonces el resultado se hubiese guardado en
REG,porlotanto,luegodelaoperaciónelcontenido
delosregistrossería:
W=10h REG=31h
Verfigura9.
ZSeponea1sielresultadodelaoperaciónesce-
ro.
EJEM PLO:
Supongamosquererhacer la función lógicaAND
entreelnúmero00010010bqueestáalmacenadoen
elregistrodetrabajoyelnúmero00111001b.Lains-
trucciónserá:
ANDLW B´00111001´
Luego,antesdelainstrucciónteníamos:
W=00010010b
Serealizalaoperación:
(00010010)AND(00111001)=00010000
Luegodelainstrucción,enWtendremos:
W=00010000b(Vealafigura10)
ZSeponea1sielresultadodelaoperaciónescero
CAPITULO 2 - Manejo de las Instrucciones de un PIC
41
Figura 8Figura 8
Figura 9Figura 9
Figura 10Figura 10
EJEM PLO:
Queremos realizar laoperaciónANDentreelnú-
mero00011110bqueestáalmacenadoenelregistro
STyelnúmero10010110bqueestáalmacenadoen
elregistrodetrabajo,lainstrucciónserá:
ANDWF ST,1
Antesdeejecutarselainstruccióntenemos:
W=10010110b ST=00011110b
Serealizarálaoperación:
(10010110)AND(00011110)=00010110
Esdecirqueenlosregistros,luegodeejecutada
lainstruccióntendremos:
W=10010110b(nohacambiado)
ST=00010110 (sehaalmacenadoel resultado).
(Fig.11)
EJEM PLO:
Queremos poner a “0” el bit Nº 5 del registro
DESC,luegolainstrucciónserá:
BCF DESC,5
SiantesdelainstrucciónelregistroDESCtenía:
DESC=11110111b
Alejecutarselainstrucción,elregistroquedacon
elvalor:
DESC=11100111b
Nota: Recuerdequeelbitmenossignificativoes
elceroyelmássignificativoesel7,esdecir,losocho
bitsdeunregistrosenumerande0a7.Vealafigura
12.
EJEM PLO:
Queremos poner a “1” el bit Nº 0 del registro
DESC,luegolainstrucciónserá:
BSF DESC,0
SiantesdelainstrucciónelregistroDESCtenía:
DESC=11110111b
Alejecutarselainstrucción,elregistroquedacon
elvalor:
DESC=11110110b(Vealafigura13)
EJEM PLO:
RUTINA BTFSC REG,2
GOTO DEC
GOTO SIM
Bien,aquíhemosintroducidoalgunasvariablesa
saber:
RU TI NA esunaetiqueta,demodotalquecuando
algunainstrucciónhagaqueelcontadordeprograma
Microcontroladores PIC
42
Figura 12Figura 12
Figura 11Figura 11
apunteadichaetiqueta,entoncesseejecutarálains-
trucciónBTFSC.
REG esunregistroqueyodebíahaberpostulado
conanterioridadenelprograma.
DEC y SIM sonetiquetas,demodoquecuandoel
contadordeprogramaestáapuntandoalalínea:
GOTO DEC
Entonceselprogramaseseguiráejecutandodes-
delalíneadondeestélaetiquetaDEC.
Siantesdelainstrucciónelcontadordeprograma
(PCóCP)estáenlalíneadondeseencuentralaeti-
quetaRUTINA, entonces se ejecutará la instrucción
BTFSC.Alejecutarse,sielBIT2del registroREGes
igualacero,elcontadordeprograma“saltará”unalí-
neaeiráaejecutarlainstrucción:
GOTO SIM
Porúltimo,notequeenestainstruccióntenemos
trescolumnasyes la formaenque,engeneral, va-
mos a escribir un programa en lenguaje de usuario
(editarunprograma).Enlaprimeracolumnasecolo-
canlas“etiquetas”,enlasegundacolumnaseescri-
besiemprelainstrucciónyenlaterceracolumnase
escribeeloperandode la instrucción.Normalmente
vaunacuartacolumnaprecedidadelsigno; (puntoy
coma)queseutilizaparaescribirobservacionesque
noserántenidasencuentaporelcompiladoroelen-
sambladorqueconvertiráalprogramaqueestabaen
lenguajedeusuarioenunprogramaen lenguajede
máquina(paralosPICSesunlenguajehexadecimalo
.hex).
Lamisma instrucción de nuestro ejemplo la po-
dríamosescribirdelasiguientemanera:
RU TI NA BTFSC REG,2
;co mien zo de una ru ti na
Lacuartacolumnanoserátenidaencuentadado
queestáprecedidadelsigno;(Vealafigura14).
EJEM PLO:
RUTINA BTFSS REG,0
GOTO DEC
GOTO SIM
Igual queenel casoanterior hemos introducido
algunasvariablesasaber:
RU TI NA esunaetiqueta,demodotalquecuando
algunainstrucciónhagaqueelcontadordeprograma
apunteadichaetiqueta,entoncesseejecutarálains-
trucciónBTFSS.
REG esunregistroqueyodebíahaberpostulado
conanterioridadenelprograma.
DEC y SIM sonetiquetas,demodoquecuandoel
contadordeprogramaestáapuntandoalalínea:
GOTO DEC
Entonceselprogramaseseguiráejecutandodes-
delalíneadondeestélaetiquetaDEC.
Siantesdelainstrucciónelcontadordeprograma
PCestá en la línea donde se encuentra la etiqueta
RUTINA,entoncesseejecutarálainstrucciónBTFSS.
Alejecutarse,sielBIT0del registroREGes iguala
uno,elcontadordeprograma“saltará”unalíneaeirá
CAPITULO 2 - Manejo de las Instrucciones de un PIC
43
Figura 13Figura 13 Figura 14Figura 14
aejecutarlainstrucción:
GOTO SIM(Verfigura15)
EJEM PLO:
DIV CALL RUTIN
EnlalíneaDIVseencuentrala instrucciónCALL.
CuandoelPCapuntaaestalínea,automáticamente
vaaejecutarunprogramaqueseencuentraenlalí-
neaqueposeelaetiquetaRUTIN.Cuandoterminade
ejecutarselasubrutina,sevuelvealprogramaprinci-
pal a la línea siguiente a DIV (se dice DIV+1). (Ver
figura16).
ZSeponea1sielresultadodelaoperaciónesce-
ro.
EJEM PLO:
CLRF REG
Siantesdelainstrucción:
REG=5Ah
Alejecutarse:
REG=00h
flagZ=1 (Vealafigura17)
ZSeponea1sielresultadodelaoperaciónesce-
ro.
EJEM PLO:
CLRW
Siantesdelainstrucción:
W=00111111b
Alejecutarse:
W=00
flagZ=1
En definitiva, es una instrucción que se utiliza
cuando debemos asegurarnos que el contenido del
Microcontroladores PIC
44
Figura 17Figura 17
Figura 16Figura 16
Figura 15Figura 15
registrodetrabajoesiguala“0”.
Observelafigura18.Cuandoseejecutanlasins-
truccionesCLRWDToSLEEP,T0#seponea1.Sepone
a0sieltemporizadorWatchdogsedesborda.
PD# se pone a 1 cuando ejecuta la instrucción
CLRWDToSLEEP.
EJEM PLO:
CLRWDT
Siantesdeejecutarselainstrucción:
WDT=00000100b
Alejecutarse:
WDT=00000000b
PreescalerWDT=0
bitdeestadoT0=1
bitdeestadoPD=1
Verfigura19.
ZSeponea1sielresultadodelaoperaciónesce-
ro.
EJEM PLO:
COMFDIS,0
Realizaelcomplementodelnúmeroalmacenado
enelregistroDISyguardaelresultadoenelregistro
W.Siantesdelainstrucción:
DIS=00111110b
W=00000000b
Alejecutarse:
DIS=00111110b
W=11000001b
flagZ=0
Verfigura20.
ZSeponea1sielresultadodelaoperaciónesce-
ro.
CAPITULO 2 - Manejo de las Instrucciones de un PIC
45
Figura 18Figura 18 Figura 19Figura 19
Figura 20Figura 20
EJEM PLO:
DECFSINT,1
CuandoelPCllegaaestalínea,sedecrementael
contenido del registro SINT y en dicho registro se
guardaelresultado.Elregistrodetrabajonointervie-
neparanada.Siantesdelainstrucción:
SINT=00110111b
Z=0
Alejecutarse:
SINT=00110110b
Z=0
Vealafigura21.
EJEM PLO:
TEMP DECFSZ DEL,1
GOTO TEMP
CLRF REG
Conestaslíneasdeprogramaestamosrealizando
una “temporizacón”, consumiendo ciclos de reloj.
CuandoelPCseubicaenlalíneaTEMP,sedecremen-
taelcontenidodelregistroDEL.Supongamosqueel
registroDELestabacargadoconelnúmero50expre-
sado en notación decimal, al ejecutarse la instruc-
ción, ahora el contenido de dicho registro será 49
(distintodecero)porlotantoelPCseubicaráenlasi-
guiente línea (GOTO TEMP). Cuando esto ocurre, la
instrucciónestáenviandoalPCnuevamentealaeti-
quetaTEMP,conlocualsevolveráadecrementarel
contenidodelregistroDELqueahoratendrácargado
elnúmero48.
Estecicloserepiteconstantementehastaqueen
elregistroDELseencuentreelnúmero00encuyoca-
soelCPsaltaráunalíneayejecutarálasiguienteins-
trucciónqueenestecasoesCLRFREG.
Vealafigura22.
EJEM PLO:
GOTO TEMP
Al ejecutarse la instrucción, el contador de pro-
gramasedirigealadireccióndondeseencuentrala
etiquetaTEMP.
Vealafigura23.
ZSeponea1sielresultadodelaoperaciónesce-
roalhaberdesbordamiento.
EJEM PLO:
INCF REG,1
CuandoelPCllegaaestainstrucciónseincremen-
ta el contenido del registro REG y el resultado se
guardaenelmismoregistro,enestecasoelregistro
detrabajonointervieneparanada.Siantesdelains-
trucción:
REG=FFh
flagZ=0
Microcontroladores PIC
46
Figura 22Figura 22
Figura 21Figura 21
Alejecutarse:
REG=00(FFh+1h=00h)
flagZ=1
Vealafigura24.
EJEM PLO:
ABA INCFSZ DEN,1
GOTO ABA
GOTO SIGA
Paraentendercómoesquesiincrementamosun
númeroenalgúnmomentoéstepuedellegaracero,
hayquedecirquecuandosellegaalacapacidadmá-
ximadeunregistro,elpróximoincrementoharáque
éstesecoloqueencero(entodossusbits)producién-
doseundesborde.
SielregistroDENteníaelnúmero:
DEN=01110001b
AlejecutarselainstrucciónINCFSZ:
DEN=01110010b(seincrementóenunaunidad)
EntonceselPCvaaladirecciónGOTOABAloque
hacequesevuelvaaincrementarnuevamenteelcon-
tenidodeDEN.
EstecicloserepitehastaqueelcontenidodeDEN
seaceroencuyocasoelPCsaltauna instruccióny
ejecutarálalíneaGOTOSIGA(SIGAeselnombreque
lehemosdadoaotravariableoregistro).Vealafigu-
ra25.
ZSeponea1sielresultadodelaoperaciónescero
EJEMPLO:
IORLW 0x32
OseaqueserealizalaoperaciónORentreelcon-
tenidodelregistrodetrabajoyelnúmero32expresa-
doenhexadecimal,luego:
32h=00110010b
SienWestáalmacenadoelnúmero:
W=00011110b,luegodelainstrucción,en
elregistrodetrabajosealmacenaráelresulta-
doesdecir:
CAPITULO 2 - Manejo de las Instrucciones de un PIC
47
Figura 23Figura 23
Figura 24Figura 24 Figura 25Figura 25
W=00101100b
Verfigura26.
ZSeponea1sielresultadodelaoperaciónesce-
ro.
EJEM PLO:
IORWF RES,1
Siantesdelainstrucción:
RES=13h=00010011b
W=91h=10010001b
Alejecutarselainstrucción:
RES=00010011bOR10010001b=10010011b
=93h
Elcontenidodelregistrodetrabajonosealtera.
Vealafigura27.
EJEM PLO:
MOVLW 0x50
Alejecutarselainstrucción,enelregistrodetra-
bajotendremos:
W=50h
La instrucción MOVLW suele emplearse en la
construcción de las denominadas “tablas” que se
construyenmediantelacomparacióndenúmeros.En
esecasosecargadirectamenteenelregistrodetra-
bajoelnúmerodereferenciaquesecompararácon
cantidadesalmacenadasenmemoria(datos)median-
teunainstrucciónposterior.Vealafigura28.
ZSeponea1sielresultadodelaoperaciónesce-
ro.
EJEM PLO:
MOVF SER,0
SielcontenidodelregistroSERes:
SER=12h
Luegodeejecutarselainstrucciónsetendrá:
Microcontroladores PIC
48
Figura 27Figura 27
Figura 28Figura 28Figura 26Figura 26
W=12h
SER=12h
Notequeenestecasosieloperandohubiesesido
SER,1, entoncesel propio contenidodel registro se
hubiesecargadoenelmismoregistro,loqueseem-
pleaparacorroborarquerealmenteesaposiciónde
memoriatieneeldatoesperado.Vealafigura29.
EJEM PLO:
MOVWF DIR
EnestecasosecargaalregistroDIRconelconte-
nidodelregistrodetrabajo(W).Siantesdelainstruc-
ción:
W=4Ch
Alejecutarse:
DIR=4Ch
W=4Ch
MOVWFes unade las instruccionesmásemplea-
dasparalaconstruccióndeprogramasdadoquesue-
leserelmedioempleadoparacargardatosenposicio-
nesdememoriaRAM.Paraquetengaunaidea,esmuy
comúnencontrarlasiguientesecuencia:
MOVLW d’22”
MOVWF DIR
AquíhemoscargadoalregistroDIRconelnúmero
22expresadoendecimal.Vealafigura30.
EJEM PLO:
NOP
Vea la figura 31.
EJEM PLO:
RETFIE
Alejecutarseestainstrucciónelcontadordepro-
gramasedirigealadireccióncargadaenlaposición
másaltadelapilayelbitGIEseponea1conelob-
jetodehabilitar nuevamente laposibilidadde inte-
rrupción.Vealafigura32.
EJEM PLO:
RETLW k
Comoes lógico,esta instrucciónestá ligadacon
lassubrutinas,dadoquenosindicaqueéstahater-
minadoyelretornoinmediatoconlacargaenelre-
gistrodetrabajoWdeunnúmeroqueestáexpresado
en la siguiente columna de la instrucción. Además
cargaalCPconel valorquepreviamentealmacenó
CAPITULO 2 - Manejo de las Instrucciones de un PIC
49
Figura 30Figura 30
Figura 31Figura 31
Figura 29Figura 29
enlaPILA(STACK).
Estainstruccióntardadosciclosdeinstrucción.
SiempreWdebe regresar conun literal (muchas
veceseseliteralescero).Muchasvecesesútilesta
instrucción,especialmentecuandodeseamosregre-
saralprogramaprincipalconalgúnvalorobtenidode
lasubrutina.Vealafigura33.
Estainstrucciónnoameritaejemploalguno,dado
que cuando ésta se ejecuta, se vuelve al programa
principalaunadirecciónqueestáalmacenadaenel
STACK.Vealafigura34.
EJEM PLO:
RLF REG,0
Siantesdelainstrucción:
REG=11100110b
flagC=0
Comod=0elresultadoseguardaráenW.
Alejecutarselainstrucción:
REG=11100110b
W=11001100b
flagC=1
Vealafigura35
Microcontroladores PIC
50
Figura 35Figura 35
Figura 32Figura 32
Figura 33Figura 33
Figura 34Figura 34
EJEM PLO:
RRF REG,0
Siantesdelainstrucción:
REG1=11100110b
flagC=1
Comod=0elresultadoseguardaráenW.
Alejecutarselainstrucción:
REG=11100110b
W=01110011b
flagC=0
Vealafigura36
TOSeponea1alejecutarlainstrucciónSLEEPo
CLRWDT.
PDSeponea0alejecutarlainstrucciónSLEEP.
Esunainstrucciónmuyusadaenprogramasalma-
cenados en los microprocesadores empleados en
controles remoto. Normalmente el circuito está en
modoSLEEPmientrasnosedetectelaaccióndeuna
tecla,perocuandonohayningunaorden,vuelveaes-
teestado.Vealafigura37.
ZSeponea1sielresultadodelaoperaciónesce-
ro.
DCSeponea1sisegeneraunacarreodelbit3al
grupode4bitssuperior.
CSeponea1sisegeneraunacarreodelbitde
mayorpeso.
EJEM PLO:
SUBLW 0x05
a)Siantesdelainstrucción:
W=01h
Alejecutarselainstrucción:
W=(05–01)=04
flagC=1;elresultadoespositivo
b)Siantesdelainstrucción:W=05h
Alejecutarselainstrucción:W=(05–05)=00h
flagC=1;elresultadoescero
flagZ=1
c)Siantesdelainstrucción.W=07h
Alejecutarse:W=(05–07)=FEh
flagC=0;elresultadoesnegativo.
Vealafigura38.
ZSeponea1sielresultadodelaoperaciónescero.
DCSeponea1sisegeneraunacarreodelbit3al
grupode4bitssuperior.
CAPITULO 2 - Manejo de las Instrucciones de un PIC
51
Figura 36Figura 36
Figura 37Figura 37
CSeponea1sisegeneraunacarreodelbitde
mayorpeso.
Tengapresentequeelcomplementoa2deunre-
gistro (sustraendo), equivale a restar dicho registro
de256(255+1).Sielresultadoselodebemossumar
aotroregistro(minuendo),sielminuendo(quelova-
mos a sumar), es mayor o igual que el sustraendo
(quese lo restamosa256),el resultadoserámayor
que255yporendeseproduciráundesbordeuover-
flowconloqueC="1".EstoquieredecirquesiC=1en-
tonceselreultadodelarestaespositivo.
Paraelacarreodecimal,elbitDCsecolocaráen
"1" cuando el valor del nibble menos significativo
(desdeelbit0al3)delregistroW,seamenorqueel
nibblemenossignificativodelregistroREG(registro
fuente).
EJEM PLO:
SUBWF REG,1
a)Siantesdelainstrucción:
REG=04h
W=02h
Alejecutarselainstrucción:
REG=(04–02)=02h
W=02h
flagC=1;elresultadoespositivo
b)Siantesdelainstrucción:
REG=04h
W=04h
Alejecutarselainstrucción:
REG=(04–04)=00h
W=04h
flagC=1;elresultadoescero
flagZ=1;elresultadoescero
c)Siantesdelainstrucción:
REG=01000110b(70endecimal)
W=11100000b(224endecimal)
Aquíocurreuncasoespecial,veamosporqué.La
operacióneslasiguiente:
•Se realizael complementoa2del sustraendo
(complementoa2deW)
•SesumaelcontenidodeREGcondichocomple-
mentoa2deW.
•El resultadodeestaadición,seráel resultado
delaresta.
Registrow 11100000
Complementoa1 00011111
Sumando1 +1
–––––––––––
Resultado 00100000(complementoa2
delcontenidodeW=32endecimal)
Ahoradebemossumar32más70queeselconte-
nidodeREG,elresultadoserá:
32+70=102
•Elresultadonoexcedede255,porloquenohay
bitdeacarreoyenconsecuencia"C"esiguala0(lo
queindicaresultadonegativo).
Cuandoelminuendoseamenorqueelsustraen-
do,elnúmeroquedebemosrestarde256,esmayor
queelquehabráquesumar(REG),porlotantonoha-
brá desbordamiento y el bit Carry C será siempre
iguala"0".
ElacarreodecimalDCsehacolocadoen1,yaque
elvalordelpackmenossignificativo(delbit0al3),
delregistrodetrabajoW(es0000)yesmenorqueel
delregistroREG(registrofuente,es0110).Porúltimo
elbitZes0,yaqueelresultadodelaoperaciónnoes
cero.
Comoconsecuenciadeun resultadonegativo,el
registroRegpermaneceinalterableyenelregistroW
estaráelresultadodelaoperación:
W=00100110b(decimal102)
REG=01000110b(decimal70)
FlafC=1
FlagDC=0
FlagZ=0
Vealafigura39
Microcontroladores PIC
52
Figura 38Figura 38
EJEM PLO:
SWAPF INDI,0
Siantesdelainstrucción:
INDI=10100101h
Comod=0elresultadosealmacenaráenW,luego
delaejecucióndelainstruccióntendremos:
INDI=10100101b
W=01011010b
Vealafigura40
ZSeponea1siel resultadode laúltimaopera-
ciónescero.
EJEM PLO:
XORLW B’00111000’
Siantesdelainstrucción:
W=10110101b
Alejecutarselainstrucción:
W=10110101b⊕ 00111000b=10001101
Vealafigura41.
EJEMPLO:
XORWF REG,1
Siantesdelainstrucción:
REG=00111000b
W=10110101b
Comod=1,elresultadosealmacenaenREG
Alejecutarselainstrucción:
REG=10110101b⊕ 00111000b=10001101
W=10110101b
CAPITULO 2 - Manejo de las Instrucciones de un PIC
53
Figura 39Figura 39
Figura 40Figura 40
Figura 41Figura 41
Nota1:
En las instrucciones CALL y GOTO los 11 <10:0>
bitsdemenospesocorrespondenalcódigodeopera-
ción,mientrasque los2bitdemayorpeso<12:11>
lossuministranrespectivamentelosbit4y3delre-
gistroPCLATHquerealmenteapuntanaunadelas4
páginasdelmapadememoriaquepuededireccionar
elPC.
PA LA brAS dE COn fI gU rA CIOn
E IdEn TI fI CA CIOn
LosPICdelagamamediadisponendeunapala-
bradeconfiguraciónde14bitsqueseescribeduran-
teelprocesodegrabacióndeldispositivoyquedebe
hacersedeacuerdoconelsistemaenelquesevaa
insertar.
Dichosbitsocupan laposiciónreservadademe-
moriadeprograma2007h.Laestructuradelapalabra
deconfiguracióneslasiguiente:
Bit 4: CP, bit de con fi gu ra ción de pro tec ción de có -
di go
1=Proteccióndecódigodesactivado
0=Proteccióndecódigoactivado
Bit 3: PWR TE, Ac ti va ción del tem po ri za dor "Po wer-
Up"
1=Desactivado
0=Activado
Bit 2: bit de con fi gu ra ción ha bi li ta ción del Watch -
dog (WDT)
1:WDTactivado
0:WDTdesactivado
Bit 1 y Bit 0: FOSC<1:0>, ti po de os ci la dor em plea -
do
11:OsciladorRC
10:OsciladorHS(8-20MHz)
01:OsciladorXT(100KHz-4MHz)
00: Oscilador LP (Bajo consumo 32-
200Hz)
Microcontroladores PIC
54
Tec Punta - Redes:ArtTapa 08/27/2013 15:29 Página 69
Ele Auto - Uso escaner.qxd:ArtTapa 17/01/14 10:04 Página 65
CAPITULO 3 - Aprendiendo a programar
57
Aprendiendo aProgramar
Hace unos cuantos años, comenzamos a mostrar cómo se debenescribir programas en nuestra querida revista Saber Electrónica;fue así que tanto Federico Prado, el Ing. Alberto Picerno y esteautor hemos escrito artículos con la explicación de programassencillos que le permitirán aprender a utilizar las instrucciones delPIC 16X84.
En este capítulo utilizaremos la misma técnica comenzando desdeel principio, basándonos en prototipos reales.
CIr CUI TO dE Un En TrE nA dOr
En Sa ber Elec tró ni ca he mos de sa rro lla do un “en -
tre na dor” pa ra apren der a pro gra mar y car gar PICs,
es te en tre na dor se mues tra en la fi gu ra 1.
Sea el pro gra ma: (Programa 1).
El pro gra ma co mien za con un (;), por lo tan to, lo
que si gue en el ren glón es to ma do co mo un co men ta -
rio. Los sig nos = for man un re sal te pa ra in di car el ini -
cio del pro gra ma y ayu dan a dar le una dis tri bu ción
agra da ble a la vis ta.
El pro gra ma se lis ta en cua tro co lum nas; la pri me -
ra sir ve pa ra co lo car las “va ria bles” que uti li za re mos
Microcontroladores PIC
58
Figura 1Figura 1
; Pri mer pro gra ma de prác ti ca
List p = 16C84 ; voy a uti li zar el PIC16C84
ptob equ 0x06 ; ini cia li zo la va ria ble ptob en
; la di rec ción 06h
Re set org h’0’ ; co mien za el pro gra ma
Ini cio movlw h’0’ ; car go a W con 0
tris ptob ; man do el con te ni do de W a ptob
movlw h’0f’ ; car go a W con el nú me ro bi na rio 15
ci clo nop ; ru ti na nu la
go to ci clo ; va ya a ci clo
Programa 1
co mo re gis tros y las “eti que tas” que son ubi ca cio nes
del pro gra ma adón de se de be ir cuan do el ope ran do
de una ins truc ción así lo re quie ra.
En la se gun da co lum na se co lo ca la ins truc ción y
en la ter ce ra el ope ran do de la ins truc ción. La cuar ta
co lum na siem pre va pre ce di da de (;) y se uti li za pa ra
co lo car ob ser va cio nes que le sir van al pro gra ma dor
co mo guía pa ra sa ber qué qui so ha cer o qué fun ción
cum ple esa sen ten cia, ob via men te, al com pi lar esa
ins truc ción, las ob ser va cio nes no son te ni das en
cuen ta.
List p = 16C84
Es el en ca be za do del pro gra ma que le in di ca al
en sam bla dor qué ti po de PIC se es tá uti li zan do pa ra
que és te pue da re co no cer qué set de ins truc ción de -
be uti li zar.
ptob equ 06
Nom bré a la va ria ble ptob y la co lo qué en la di rec -
ción 06 de la RAM, “es ta di rec ción es tá re ser va da pa -
ra el PUER TO B”, es de cir, ra ti fi co que ptob es el re gis -
tro del PORT B.
Cuan do, más ade lan te, de ba en viar in for ma ción
al puer to b, só lo de bo men cio nar ptob.
Re set org 0
Sig ni fi ca que al rea li zar se el re set, el pro gra ma
co mien za por la po si ción 0 de la me mo ria del pro gra -
ma. Pe ro de in me dia to pa sa a la po si ción 1 que tie ne
es cri ta la si guien te sen ten cia:
Ini cio movlw 0
Con es to se car ga el re gis tro w con el he xa de ci -
mal 0 (es de cir el bi na rio 00000000)
tris ptob
Es ta ins truc ción en vía la in for ma ción del re gis tro
W al puer to B pa ra in di car le que to dos sus pi nes son
de sa li da (si se hu bie ra car ga do el bi na rio 11111111
to dos los pi nes se rían de en tra da y si se hu bie ra car -
ga do 11001010 al gu nos se rían en tra das y otros sa li -
das).
movlw 0f
Car ga el re gis tro W con el he xa de ci mal 15 que
equi va le al bi na rio 00001111 y
movlw ptob
En vía el va lor car ga do al puer to "B" que pro du ci rá
un es ta do al to en RB0, RB1, RB2 y RB3 y un es ta do
ba jo en RB4, RB5, RB6 y RB7. La in for ma ción del puer -
to pa sa al buf fer que lle va las pa tas 15, 16, 17 y 18 de
un PIC16C84 a ma sa en cen dien do los leds D7, D8, D9
Y D10.
Ci clo nop
Rea li za una ru ti na nu la, es de cir, que no efec túa
ope ra ción al gu na.
go to ci clo
En vía el pro gra ma ha cia la eti que ta "ci clo". Las
dos úl ti mas ope ra cio nes ha cen que al eje cu tar se un
pro gra ma, és te se que de en un la zo que se lla ma
“loop ce rra do”.
La úni ca ma ne ra de sa lir de es te loop es pul san -
do RE SET. En ton ces se ob ser va que los leds se apa -
gan has ta que se suel ta el pul sa dor y el pro gra ma co -
mien za nue va men te por la eti que ta RE SET.
Ob via men te, es te pro gra ma de be ser edi ta do en
un u ti li ta rio ade cua do (MPLAB, por ejem plo) y lue go
de be ser com pi la do (uti li zan do el MPASM o el mis mo
MPLAB) pa ra ob te ner el ar chi vo .hex que me per mi ti -
rá car gar el PIC que de be ré co lo car en el cir cui to de
la fi gu ra 1 pa ra ve ri fi car que real men te “ha ce” lo que
es ta mos di cien do.
Pa ra car gar el PIC con el pro gra ma .hex se uti li za
un pro to ti po ade cua do (car ga dor de PICs) que con sis -
te en un cir cui to que es ma ne ja do por un pro gra ma
59
CAPITULO 3 - Aprendiendo a programar
Fig. 2Fig. 2
pa ra per mi tir la car ga. To do es te pro ce so se ex pli ca
con to tal cla ri dad en el pri mer tex to de es ta se rie, ti -
tu la do: “To do So bre PICs”.
En la fi gu ra 2 se pue de ob ser var un dia gra ma de
flu jo que re fle ja el fun cio na mien to del pro gra ma que
aca ba mos de ex pli car.
¿Cuánto tardanenencenderse los leds luegode
soltarelbotóndereset?
Si se ob ser va el cir cui to, se ve rá un cris tal de
clock de 4MHz (0,25µS de pe río do); co mo in ter na men -
te exis te un di vi sor x4 ca da ope ra ción se rea li za rá en
0,25 x 4 = 1µS. Si con ta mos las sen ten cias has ta lle -
gar a car gar el puer to B, ve re mos que hay 5 (cin co
ren glo nes de pro gra ma); por lo tan to, la de mo ra es de
5µS.
Si Ud. no quie re ar mar el en tre na dor com ple to
(que sir ve pa ra un sinfín de apli ca cio nes que se en se -
ñan en el Cur so: “PICs para Estudiantes &
Aficionados”, que es tá en ven ta en va rios paí ses de
Amé ri ca a tra vés de la red de dis tri bui do res de Edi to -
rial Quark y Saber Internacional - vea en Inter net la di -
rec ción: www .we be lec tro ni ca .co m.ar) le pro po ne mos
que ar me só lo lo im pres cin di ble pa ra en cen der los
leds se gún el cir cui to de la fi gu ra 3; un cir cui to tan
sim ple que no re quie re pla que ta, pue de ar mar se ti po
ara ña so bre la me sa de tra ba jo, por que no es al go pa -
ra mos trar si no pa ra apren der. Ob ser ve que los leds
es tán co nec ta dos di rec ta men te al puer to B pre dis -
pues to co mo de sa li da por el pro gra ma. En efec to, el
puer to de sa li da ad mi te per fec ta men te los 3mA que
to ma ca da led al co nec tar los con re sis to res en se rie
de 1k5. Co mo úni ca pre cau ción pa ra el ar ma do de be
uti li zar un zó ca lo de 18 pa tas pa ra el PIC. Las co ne -
xio nes de X1, C1 y C2 de ben ser lo más cor tas po si -
bles. Si us ted re pa ra TV y vi deo gra ba do res se gu ra -
men te ten drá cris ta les de 3,58MHz (de PALN o NTSC o
in clu si ve de PALM).
Pue de uti li zar los sin ma yor in con ve nien te pe ro re -
cuer de que los tiem pos cal cu la dos es ta rán afec ta dos
de un coe fi cien te igual a 3,58/4.
Nues tro pro gra ma va a ha cer uso de lo que se lla -
ma una su bru ti na. Una su bru ti na es co mo un se gun do
pro gra ma ane xo al prin ci pal. El pro gra ma prin ci pal va
a la su bru ti na a tra vés de una ins truc ción "CALL" que
no ha bía mos em plea do has ta aho ra.
Es ta ins truc ción sal ta del pa so del pro gra ma don -
de se en cuen tra, a la su bru ti na y cuan do se eje cu ta
por com ple to vuel ve al mis mo pun to del pro gra ma en
don de se ha bía pro du ci do el sal to.
Una su bru ti na de be es tar siem pre di ri gi da a una
eti que ta pa ra que el sal to se rea li ce con un des ti no
bien de ter mi na do.
Por lo ge ne ral, las su bru ti nas se es cri ben a con ti -
nua ción del pro gra ma prin ci pal, pe ro es to es sim ple -
men te una cos tum bre, bien po drían ubi car se en otro
lu gar co mo el prin ci pio. Re cuer de que to do co mien za
cuan do se pul sa re set o cuan do se en cien de el equi -
po y, en ese mo men to, se eje cu ta lo in di ca do con la
eti que ta re set y se sal ta al ren glón si guien te. Cuan do
ter mi na una su bru ti na, se de be co lo car una re fe ren -
cia "RE TURN", que sig ni fi ca re tor nar al si guien te ren -
glón del pro gra ma prin ci pal don de es tá la in vo ca ción
a la su bru ti na.
Otra ins truc ción nue va que no ha bía mos uti li za do
es "decfsz" que siem pre va acom pa ña da de un nú me -
ro he xa de ci mal. Es ta ins truc ción se uti li za pa ra pro -
gra mar re tar dos. Por ejem plo, si su pa so del pro gra -
ma fue ra:
CONST equ 06
decfsz CONST
En el en ca be za do se de cla ra que la va ria ble
CONST es ta rá en la di rec ción 06 lue go, al eje cu tar se
la ins truc ción el con te ni do de la va ria ble CONST se ha
de cre men ta do en una uni dad.
Es to pa re ce más una com pli ca ción sin sen ti do,
pe ro no es así; en un pro gra ma bien es truc tu ra do los
cam bios se rea li zan en el en ca be za do y, ade más, mu -
chas ve ces es ne ce sa rio cam biar so li da ria men te va -
rios ope ran dos y el mé to do pro pues to lo lo gra fá cil -
men te.
Tam bién va mos a uti li zar una ins truc ción de do ble
uso y que for ma par te de una su bru ti na (ge ne ral men -
Microcontroladores PIC
60
Fig. 3Fig. 3
ENCENDIDO INTERMITENTE
DE UN LED
te la cie rra). Se tra ta de "retlw" que de be ir acom pa -
ña do de un li te ral (nú me ro he xa de ci mal). Es ta ope ra -
ción car ga el re gis tro w con el li te ral que lo acom pa -
ña y re tor na al pro gra ma prin ci pal to do en un so lo
ren glón. Su fun cio na mien to se apre cia rá me jor cuan -
do vea mos el pro gra ma de apli ca ción pe ro es equi va -
len te a:
movlw 0x12 ; car go a W con el nú me ro 12h
re turn
A es ta altura Ud. de be re cor dar unas cuan tas sen -
ten cias y to da vía fal tan unas cuan tas más (re cuer de
to do lo vis to en el ca pí tu lo 2). Co mo ayu da pa ra que
no de ba es tu diar to das las sen ten cias de me mo ria le
de ci mos que lo me jor es re la cio nar las con pa la bras
co mu nes del idio ma in glés. Por ejem plo "equ" pro vie -
ne de "equal" que sig ni fi ca igual. En la fi gu ra 4 le da -
mos una ta bla con más ayu das.
Pa ra di se ñar un pro gra ma us ted de be te ner en cla -
ro la fun ción del pro yec to. En nues tro ca so que re mos
que al en cen der la fuen te el led co nec ta do a RB0 se
en cien da y apa gue con un tiem po que pue da mo di fi -
car se fá cil men te pa ra al te rar el pro gra ma. Al apre tar
el pul sa dor de re set se de be apa gar el led y al sol tar lo
se en cen de rá lue go de un re tar do y con ti nua rá al ter -
nan do pe río dos de en cen di do y apa ga do.
El pro gra ma com ple to lo va mos a di vi dir en dos
par tes: un pro gra ma prin ci pal y una su bru ti na que lla -
ma mos “re tar dar”.
Los ha ce mos así por que ca si to dos los pro gra mas
in clu yen re tar do y el di se ño de esa su bru ti na lo po de -
mos em plear pos te rior men te y nos aho rra re mos tra -
ba jo.
Un pro gra ma de be es tar es truc tu ra do en for ma
cla ra, se de ben di fe ren ciar cla ra men te los dis tin tos
sec to res y es to se ha ce no só lo pa ra que sea agra da -
ble a la vis ta, si no pa ra fa ci li tar los fu tu ros cam bios.
La pri me ra sec ción es el tí tu lo y la de cla ra ción de
qué PIC se va a uti li zar. La se gun da es el en ca be za do
en don de se le da nom bre a los li te ra les (nú me ros he -
xa de ci ma les) más im por tan tes. La ter ce ra es el pro -
gra ma prin ci pal y la cuar ta las su bru ti nas, vea pro-
grama 2.
Ana li ce mos el en ca be za do, las pri me ras lí neas
has ta la eti que ta “portb” ya las co no ce mos del pro -
gra ma an te rior (aquí em plea mos portb en lu gar de
ptob). Lue go te ne mos tres sen ten cias que le dan
nom bre reg1, reg2 y reg3 a tres re gis tros de uso ge -
ne ral, ubi ca dos en las po si cio nes de me mo ria RAM
des ti na das a los re gis tros. Re cuer de que las pri me -
ras 12 po si cio nes de me mo ria has ta 0B es tán ocu pa -
das por re gis tros fi jos. A par tir de 0C se ubi can los re -
gis tros de pro pó si tos ge ne ra les de los cua les usa re -
CAPITULO 3 - Aprendiendo a programar
61
Fig. 4Fig. 4
mos 3, a sa ber: 0C, 0D y 0E (que son los re gis tros que
he mos de no mi na do reg1, reg2 y reg3).
En esos re gis tros vol ca mos ini cial men te los li te -
ra les 30, 40 y 50 que nom bra mos co mo “grue so”,
“me dio” y “fi no”. Es to se rea li za en las tres úl ti mas
sen ten cias del en ca be za do que son aque llas que Ud.
de be va riar si de sea que el rit mo de en cen di do se ha -
ga más len to o más rá pi do. Des de lue go que es tas
tres sen ten cias no son im pres cin di bles pe ro si no se
usan, lue go ha bría que bus car den tro de la su bru ti na
pa ra cam biar los li te ra les. Tra ba jan do de es ta ma ne -
ra es más fá cil in tro du cir cam bios por que los ha ce -
mos des de el en ca be za do.
La sec ción prin ci pal del pro gra ma es muy si mi lar
a la uti li za da en el pri mer pro gra ma pa ra en cen der
per ma nen te men te un led, vea programa 3.
Siem pre se co mien za a ana li zar el pro gra ma ob -
ser van do qué ocu rre al rea li zar un re set. En es te ca -
so, ve mos que to do co mien za en la po si ción 00 de la
me mo ria de pro gra ma. En la si guien te po si ción se en -
vía el con trol del pro gra ma a la po si ción “co men zar”,
en don de se pre dis po ne el puer to b pa ra ope rar co mo
sa li da. Lue go, co mien za el pro gra ma prin ci pal en el
eti que ta ppal, en don de se car ga el re gis tro w con el
nú me ro he xa de ci mal 01. Cuan do es te nú me ro se des -
car ga en el puer to “b” se en cien de el led co nec ta do
en RB0.
Aho ra se en vía el con trol a la su bru ti na “de mo ra”
por que pre ten de mos que el led que de en cen di do al -
go me nos de un se gun do. Cuan do se cum pla ese
tiem po vol ve rá el con trol des de “de mo ra” con ti nuan -
do por la car ga de w con el he xa de ci mal 00. Al des car -
gar w en el pun to “b” se pro du ce el apa ga do de led
co nec ta do en RB0.
Nue va men te el con trol pa sa a la su bru ti na de mo -
ra, en don de se que da por al go me nos de 1 se gun do
Microcontroladores PIC
62
;===========================================================
; Se cuen cia dor de en cen di do de un led
list p=16C84 ;mi cro PIC16C84
;===========================================================
portb equ 06 ;el puer to b se ubi ca en la di rec ción de
;me mo ria RAM06
reg1 equ 0c ;asig na ción de los regis tros don de se car gan los
reg2 equ 0d ;di fe ren tes li te ra les
reg3 equ 0e ;
grue so equ 40 ;al li te ral 40 lo lla ma mos grue so
me dio equ 40 ;al li te ral 40 lo lla ma mos me dio
fi no equ 50 ;al li te ral 50 lo lla ma mos fi no
;===========================================================
re set org 0 ;un re set en vía a la po si ción 00 de la me mo ria
;de pro gra ma.
Go to co mien zo ;reen vío al co mien zo del pro gra ma
;===========================================================
Programa 2
re set org 0 ;un re set en vía el pro gra ma a la po si ción 0
go to co men zar ;se en vía el con trol al co mien zo
co men zar movlw 00 ;se car ga w con 00
tris ptob ;se pro gra ma el puer to b co mo sa li da
ppal movlw 01 ;se car ga w con 01
movwf ptob ;se des car ga w en el puer to b pa ra
;en cen der el led co nec ta do RB0
call de mo ra ;se man tie ne el led en cen di do por
;un in ter va lo de tiem po
movlw 00 ;se car ga w con 00
movwf ptob ;se des car ga w en el puer to b pa ra
;apa gar el led de RB0
call de mo ra ;se man tie ne el led apa ga do por
;un in ter va lo de tiem po
go to ppal ;con ti nua el pro gra ma en el prin ci pio
;has ta rea li zar un re setPrograma 3
an tes de vol ver al pro gra ma prin ci pal. Cuan do vuel ve
es en via do de in me dia to al co mien zo de ppal con un
nue vo en cen di do de RB0 y así per ma nen te men te has -
ta que se ope re el re set.
Es el tur no de pla ti car so bre la su bru ti na demora.
Es ta su bru ti na es más com pli ca da que el pro gra ma
prin ci pal. Lo que ocu rre es que la di se ña mos pa ra uso
ge ne ral, ya que la va mos a apli car en una in fi ni dad de
pro gra mas. En prin ci pio, la de mo ra la va mos a po der
va riar con tres nú me ros he xa de ci ma les que fue ron
de fi ni dos en el en ca be za mien to co mo “grue so”, “me -
dio” y “fi no” por que ope ran de ese mo do so bre el re -
tar do fi nal, vea programa 4.
La su bru ti na co mien za car gan do los re gis tros de
uso ge ne ral con los nú me ros he xa de ci ma les de cla ra -
dos en el en ca be za do. Lue go que los tres re gis tros
es pe cia les es tán car ga dos con los he xa de ci ma les
30, 40 y 50 se co mien za a de cre men tar el re gis tro 3
de a una uni dad; mien tras el re gis tro ten ga un nú me -
ro ma yor o igual a 1 se con ti núa es te pro ce so, pe ro al
lle gar a ce ro se sal ta a la si guien te sen ten cia que jus -
ta men te es un "go to".
Es co mo si el con trol re tor na ra y fue ra a dem1
tan tas ve ces co mo lo in di ca el nú me ro he xa de ci mal
car ga do en el re gis tro 1. Lue go la su bru ti na pa sa a la
si guien te sen ten cia que co mien za a de cre men tar el
nú me ro car ga do en reg2, só lo que el "go to" es a la eti -
que ta dem2 que es an te rior a la dem1, es de cir, que
se vuel ve a pa sar por "dem1" a ha cer to do el pri mer
de cre men to del nú me ro guar da do en "reg3" y re cién
des pués se ha ce el si guien te de cre men to en el re gis -
tro "reg2". Cuan do "reg2" lle ga a ce ro se pro du ce el
pri mer de cre men to de "reg3" y pa ra que se pro duz ca
el se gun do tie nen que de cre men tar se a ce ro "reg2".
En una pa la bra, que la su bru ti na da mu chí si mas vuel -
tas so bre "dem 1", mu chas so bre "dem2" y po cas so -
bre "dem3". Fi nal men te cuan do "reg3" lle ga a ce ro, se
pa sa retlw que reen vía el con trol al pro gra ma prin ci -
pal jus to en la sen ten cia que in vo có a la su bru ti na pe -
ro an tes de re tor nar lle va el re gis tro w a ce ro. El pro -
gra ma ter mi na en "end" que no pue de con si de rar se
co mo una sen ten cia, ya que no rea li za nin gu na ta rea;
sin em bar go, su exis ten cia es im pres cin di ble pa ra
que el pro gra ma dor de PICs dé por ter mi na da su ta -
rea. Cuan do no se co lo ca el pro gra ma en sam bla dor
emi te un men sa je de error.
Ten ga en cuen ta “que le es ta mos en se ñan do a pro -
gra mar”, es de cir, a uti li zar las ins truc cio nes del set
del PIC. Si Ud. es pro gra ma dor, es tos ejem plos le van
a pa re cer muy tor pes, da do que el ex per to sa be có mo
uti li zar ru ti nas que per mi tan ha cer lo mis mo con me -
nos es fuer zo de pro gra ma ción. Ud. es tá apren dien do
co mo cuan do co men zó a su mar y en aque lla opor tu ni -
dad se gu ra men te le cos ta ba en ten der que 1 + 1 es
igual a dos, aun que hoy le pa rez ca un ejem plo muy
bur do. Vol vien do a nues tro pro gra ma, sa be mos que la
su bru ti na "de mo ra" tie ne una cier ta du ra ción. Con un
mí ni mo co no ci mien to de ma te má ti cas po de mos cal cu -
lar ese re tar do en fun ción de los nú me ros he xa de ci -
ma les que ha lla mos ele gi do.
To me mos pri me ro el "loop" (ru lo) más in ter no de
la su bru ti na; mien tras no se cum pla que "reg 3" = 0 se
CAPITULO 3 - Aprendiendo a programar
63
de mo ra movlw grue so ;re car ga w con el nú me ro he xa de ci mal
;“grue so” es de cir, con 30
movwf reg1 ;se vuel ca “grue so” en el re gis tro
;reg 1
dem3 movlw me dio ;se car ga w con el nú me ro he xa de ci mal
;“me dio” es de cir con 40
movwf reg2 ;se vuel ca "me dio" en el re gis tro
;reg2.
dem2 movlw fi no ;se car ga w con el nú me ro he xa de ci mal "fi no"
;es de cir con 50.
movwf reg3 ;se vuel ca "fi no" en el re gis tro reg3.
dem1 decfsz reg3 ;se de cre men ta el re gis tro reg3 en una uni dad
;y si el re sul ta do es ce ro se sal ta a la si guien te
;ins truc ción, si no se si gue de cre men tan do.
go to dem1 ;re tor no a la fre cuen cia eti que ta dem1.
decfsz reg2 ;idem con reg2.
go to dem2 ;re tor no a la eti que ta dem2.
decfsz reg3 ;idem con reg1.
go to dem1 ;re tor no a la eti que ta dem3.
retlw 0 ;se car ga w con 0 y se re tor na al pro gra ma
;prin ci pal
end
Programa 4
con su me un ci clo de ins truc ción por vuel ta (ge né ri ca -
men te po de mos de cir que to das las sen ten cias con -
su men un ci clo sal vo las de sal to co mo la "go to" que
con su me dos).
Nú me ro de ci clos "reg 3" = 3 x "grue so"
= 3 x 80 (ya que 50 Hex = 80 de ci mal)
= 240 ci clos de ins truc ción
Pa ra cal cu lar la de mo ra de los dos loops si guien -
tes es con ve nien te rea li zar un dia gra ma de los mis -
mos tal co mo el mos tra do en la fi gu ra 5.
Aho ra ve mos que el loop in ter me dio du ra 2 + 1 +
1 + 1 = 5 ci clos de ins truc ción a los cua les se les su -
man los 240 ci clos del loop más in ter no. En to tal se -
rían 5 + 240 = 245. Pe ro es te loop es re co rri do has ta
que el he xa de ci mal 40 (equi va len te al de ci mal 64) se
anu le:
nú me ro de ci clos "reg 2" = 245 x me dio
= 245 x 64
= 15.860 ci clos de ins truc ción.
El loop más ex ter no du ra 2 + 1 + 1 + 1 = 5 ci clos de
ins truc ción a los cua les se les su man los 15.860.
Pe ro es te loop es re co rri do has ta que el he xa de -
ci mal 40 (equi va len te al de ci mal 64) se anu le:
nú me ro de ci clos "reg 1" = 15.860 x fi no
= 15.860 x 64
= 1.015.040 ci clos de ins truc ción.
Microcontroladores PIC
64
Fig. 6Fig. 6
Fig. 5Fig. 5
Nos que da rían 1 + 1 ci clos al co mien zo de la su -
bru ti na y 2 ci clos al fi nal pa ra lle gar a un va lor de
1.015.044 ci clos de ins truc ción.
La du ra ción de un ci clo de ins truc ción de pen de
del cris tal uti li za do. Si usa mos un cris tal de 4MHz ca -
da ci clo de ins truc ción du ra 1µs y ten dría mos una de -
mo ra de 1,015 seg.
El led es ta ría en cen di do ca si un se gun do y apa ga -
do otro tan to.
El fun cio na mien to del pro gra ma prin ci pal y la su -
bru ti na de de mo ra pue den re pre sen tar se en un dia -
gra ma de flu jo co mo el mos tra do en la fi gu ra 6 pa ra
el pro gra ma prin ci pal.
Ele gi mos tra ba jar con cua tro leds pa ra que us ted
pue da en ten der el te ma con más fa ci li dad. Pe ro to do
lo que ve re mos pue de apli car se a un se cuen cia dor de
8 leds. Nues tro dis po si ti vo en cien de cua tro leds en
se cuen cia de ma ne ra que nun ca es tén en cen di dos to -
dos al mis mo tiem po.
En el ejem plo an te rior vi mos pri me ro el pro gra ma
y lue go el dia gra ma de flu jo. En rea li dad el mé to do es
el in ver so. Un dia gra ma de flu jo per mi te vi sua li zar el
fun cio na mien to de un pro gra ma y por lo tan to de be
efec tuar se pre via men te.
Por ejem plo, en la fi gu ra 7 pue de ver el dia gra ma
de flu jo co rres pon dien te a la ru ti na “de mo ra” del pro -
gra ma que per mi te el en cen di do in ter mi ten te de un
led.
El pro gra ma es la in ter pre ta ción del dia gra ma de
flu jo; en el pro gra ma se plas man los de ta lles que no
tie ne el dia gra ma de flu jo. Pa ra cons truir el pro gra ma
de nues tro se cuen cial, nos ba sa mos en el dia gra ma
de flu jo de la fi gu ra 8.
Ob ser ve que lue go de ini cia do, el pro ce so no se
de tie ne ja más, ya que ter mi na da la se cuen cia, vuel ve
a co men zar. Ob via men te, la apli ca ción de un re set
apa ga rá to dos los leds mien tras se man ten ga el re set
pul sa do.
En es te pro gra ma se van a uti li zar nue vas ins truc -
cio nes que de be mos de ta llar. En tre otras uti li za mos
la ins truc ción movf que se acom pa ña con un do ble
ope ran do. Es una sen ten cia que sir ve pa ra rea li zar
CAPITULO 3 - Aprendiendo a programar
65
Fig. 7Fig. 7
Fig. 8Fig. 8
SECUENCIADOR DE 4 CANALES
trans fe ren cias en el con te ni do de cual quier re gis tro
nom bra do co mo pri mer ope ran do al re gis tro W.
Otra ins truc ción nue va es rlf, cu ya fun ción es des -
pla zar el con te ni do de un re gis tro nom bra do co mo
ope ran do.
El con te ni do se des pla za ha cia la iz quier da y el
pri mer bit vuel ve a in gre sar co mo úl ti mo.
Fi nal men te se uti li za tam bién la ins truc ción btfss
que in clu ye dos ope ran dos; el pri mer ope ran do in di -
ca en qué re gis tro se rea li za la ope ra ción y el se gun -
do que po si ción del re gis tro se ana li za (en que bit, del
bit 0 al bit 7). La ope ra ción con sis te en ana li zar la po -
si ción si guien te a la nom bra da co mo se gun do ope -
ran do. Por ejem plo:
btfss rot,4
Aquí se ana li za el es ta do de 5 bit (bit 4, da do que
el pri mer bit o bit me nos sig ni fi ca ti vo es el bit 0), si
és te es ce ro se con ti nua con la sen ten cia si guien te ,
si es 1 se sal tea en la si guien te se cuen cia. En la fi gu -
ra 9 se rea li za un di bu jo que ex pli ca es tas úl ti mas
ins truc cio nes.
Ima gí ne se a movf co mo si vol ca ra el con te ni do de
un bal de en otro, se lo asi mi la a un trans va sa mien to.
La sen ten cia rlf la pue de ima gi nar co mo si apre ta ra
un re gis tro con el de do pues to por la de re cha del mis -
mo; el bit que se cae por la iz quier da lo to ma con la
ma no y lo po ne por la de re cha don de que dó un es pa -
cio va cío.
Vea a btfss co mo si es tu vie ra con la ma no so bre
el quin to bit. Si esa po si ción es ta fría, man de el con -
trol de pro gra ma al ren glón si guien te. Si es tá ca lien -
Microcontroladores PIC
66
Fig. 9Fig. 9
CAPITULO 3 - Aprendiendo a programar
67
; SE CUEN CIA DOR
list P=16C84 ;el dis po si ti vo usa el 16C84
;-------------------------------------------------------------------------------------------
ptob equ 06 ;el puer to f se ubi ca en 06 de la RAM.
Rot equ 0d ;al re gis tro ubi ca do 0d se lo lla ma est.
Reg1 equ 0e ;al re gis tro ubi ca do en 0e se lo lla ma reg1
reg2 equ 0f ;al re gis tro ubi ca do en 0f se lo lla ma reg1
reg3 equ 10 ;al re gis tro ubi ca do en 10 se lo lla ma reg3
grue so equ 00 ;se asig nan nom bres a los li te ra les.
me dio equ 40 ;se asig nan nom bres a los li te ra les.
fi no equ 50 ;se asig nan nom bres a los li te ra les.
;-------------------------------------------------------------------------------------------
re set org 0 ;re set en di rec ción 00h
go to co men zar ;se lle va el con trol a co mien zo
co men zar movlw 00 ;se car ga w con 00h
tris ptob ;se pro gra ma el puer to "b" co mo sa li da.
ppal movlw 01 se car ga w con 01h
movwf rot ;se des car ga w en el re gis tro rot
;pre pa rán do lo pa ra la ro ta ción.
sec movf rot,0 ;el con te ni do de rot pa sa a w
movwf ptob ;en cien de el led co nec ta do don de in di ca w
call de mo ra ;se man tie ne en cen di do el led.
rlf rot ;se mue ven los bits de "rot".
btfss rot,4 ;se com prue ba el 5º bit.
go to sec ;si el 5º bit es ce ro se reen vía a sec.
go to ppal ;si el 5º bit es uno se reen vía a ppal pa ra
;co men zar una nue va se cuen cia.
de mo ramovlw grue so ;re car ga w con el nú me ro he xa de ci mal
;“grue so” es de cir, con 30
movwf reg1 ;se vuel ca “grue so” en el re gis tro
;reg 1
dem3 movlw me dio ;se car ga w con el nú me ro he xa de ci mal
;“me dio” es de cir con 40
movwf reg2 ;se vuel ca "me dio" en el re gis tro
;reg2.
dem2 movlw fi no ;se car ga w con el nú me ro he xa de ci mal
;"fi no" es de cir con 50.
movwf reg3 ;se vuel ca "fi no" en el re gis tro reg3.
dem1 decfsz reg3 ;se de cre men ta el re gis tro reg3 en una
;uni dad y si el re sul ta do es ce ro se sal ta a
;la si guien te ins truc ción, si no se si gue
;de cre men tan do.
go to dem1 ;re tor no a la fre cuen cia eti que ta dem1.
decfsz reg2 ;idem con reg2.
go to dem2 ;re tor no a la eti que ta dem2.
decfsz reg3 ;idem con reg1.
go to dem1 ;re tor no a la eti que ta dem3.
retlw 0 ;se car ga w con 0 y se re tor na al
;pro gra ma prin ci pal.
end
Programa 5
te, sal tee el que si gue y man de el con trol al pos te rior
a és te. Bien, el pro gra ma del se cuen cia dor es en rea -
li dad una mo di fi ca ción del pro gra ma de en cen di do y
apa ga do de un led. Co mo ve mos, los pro gra mas di fí -
cil men te se ini cien des de ce ro siem pre se uti li zan
otros pro gra mas que se mo di fi can y ade más se uti li -
zan su bru ti nas com ple tas co mo la "de mo ra". Vea pro-
grama 5.
To do co mien za car gan do el re gis tro w con el he xa -
de ci mal 01, es de cir que el re gis tro se lle na rá con el
bi na rio co rres pon dien te 00000001. Es te con te ni do se
trans va sa a "rot" y lue go de vuel ta a "w", des de don -
de se lo en vía al puer to "b" pa ra en cen der el úl ti mo
led. Aho ra el con trol del pro gra ma se en vía a de mo ra
pa ra que el led per ma nez ca en cen di do cer ca de 1 se -
gun do.
A con ti nua ción se pro du ce la ro ta ción de los bits
de "rot" con lo cual que da car ga do con el bi na rio
00000010. Aho ra se com prue ba el es ta do del quin to
bit; co mo es 0 se reen vía el con trol a "sec”, se car ga
"w" con el con te ni do de "rot" se trans va sa "rot" a "w"
y lue go se en vía "w" al "ptob", en ton ces el se gun do
led se en cien de y así su ce si va men te, has ta que se
en cien de el cuar to led. En ese mo men to, al ha cer la
ro ta ción se lle va el quin to bit a 1, mo men to en que se
sal tea el go to "sec", se ha ce un go to a ppal y co mien -
za una nue va se cuen cia. Si lo ana li za mos glo bal men -
te, lo úni co que ha ce el pro gra ma es car gar el puer to
w con los bi na rios 00000001; 00000010; 00000100;
00001000 y rea li zar un cam bio ca da se gun do apro xi -
ma da men te.
Su ge ri mos que cam bie ini cial men te la su bru ti na
de mo ra pa ra que la se cuen cia sea más rá pi da. Lue go
lo in vi ta mos a rea li zar un cam bio ma yor, que im pli -
que se cuen ciar 8 leds en lu gar de 4, y por úl ti mo lo in -
vi ta mos a cons truir una guir nal da pa ra un ar bo li to de
na vi dad. Lo úni co que se mo di fi ca en es te ca so es
que con el sis te ma sim pli fi ca do, se re quie re ma ne jar
un so lo led. Pa ra ma ne jar una can ti dad ma yor, le su -
ge ri mos el cir cui to de la fi gu ra 10.
Microcontroladores PIC
68
Fig. 10Fig. 10
El pro gra ma que re cién vi mos pue de uti li zar se pa -
ra ge ne rar se ña les de au dio con for ma de es ca le ra,
que son el me dio idó neo pa ra com pro bar la li nea li dad
de los am pli fi ca do res de po ten cia de au dio. En efec -
to, una es ca le ra de 8 es ca lo nes de 1kHz de fre cuen -
cia apro xi ma da, nos per mi te pro bar si la am pli fi ca -
ción es li neal. Bas ta con usar un os ci los co pio y me -
dir si los 8 es ca lo nes ge ne ra dos son idén ti cos.
En fun ción del es ca lón de for ma do, se pue de lue -
go de ter mi nar en qué par te del am pli fi ca dor se en -
cuen tra la fa lla. Por ejem plo, los es ca lo nes cen tra les
se de for man cuan do fa lla el cir cui to de co rrien te va -
cío. Una fa lla en los es ca lo nes ex tre mos sig ni fi ca que
no fun cio nan co rrec ta men te los cir cui tos de boos -
trap. (fi gu ra 11). Es ta for ma de on da es tam bién ideal
pa ra con tro lar la res pues ta en fre cuen cia del am pli fi -
ca dor de po ten cia, sin ne ce si dad de rea li zar va rias
me di cio nes con un os ci la dor de au dio. Un am pli fi ca -
dor so bre com pen sa do en fre cuen cia (real ce de agu -
dos) pro du ci rá so breim pul sos en los es ca lo nes y uno
sub com pen sa do (fal ta de agu dos) re don dea rá los
fren tes (fi gu ra 12).
La fa bri ca ción de un ge ne ra dor es ca le ra nos da
mo ti vo pa ra es tu diar el ma ne jo de lla ves ana ló gi cas
con un PIC. Es ta es una de las uti li da des más im por -
tan tes del PIC y se usa en una gran can ti dad de apli -
ca cio nes.
Por ejem plo, un uso fre cuen te es la co di fi ca ción y
de co di fi ca ción de se ña les de TV. En es te pro yec to
usa re mos dos lla ves CD4066 pa ra con mu tar 8 va lo res
de ten sión de sa li da, que for man una se ñal es ca le ra
de 8 pel da ños y 3,5V de am pli tud pi co a pi co. El cir cui -
to se mues tra en la fi gu ra 13.
Los re sis to res R15 a R23 for man ca da pel da ño de
la es ca le ra y su va lor de be ser su ma men te exac to. Si
no pue de con se guir re sis to res al 1%, los de be con se -
guir con re sis to res en pa ra le lo me di dos con un buen
tés ter di gi tal. Una vez ar ma da la se rie y con CI1 fue -
ra del zó ca lo se de ben con tro lar las ten sio nes con ti -
nuas en las unio nes de los re sis to res con un tés ter di -
gi tal.
Los re sis to res R6 a R9 y R11 a R14 se uti li zan co -
mo re pa ra do res pa ra fa ci li tar el ser vi ce. En el uso
nor mal no cum plen fun ción es pe cial al gu na.
El re set es au to má ti co al en cen der la fuen te de
5V a tra vés de R10 y C3 que de mo ran el cre ci mien to
de la ten sión so bre el ter mi nal 4 (MCLR’).
El puer to A se co nec ta con re sis to res de 1kΩ a
los +5 V pa ra evi tar cap ta cio nes es pu rias. La sa li da
de se ñal en es ca le ra se pro du ce so bre la co ne xión
co mún de sa li da de las lla ves ana ló gi cas y se ate núa
con el fin de re du cir la im pe dan cia de sa li da me dian -
te R24 y RV1. La ten sión de sa li da má xi ma es de
100mV pap apro xi ma da men te. La úni ca mo di fi ca ción
que re quie re el pro gra ma es la mo di fi ca ción de las
cons tan tes li te ra les pa ra que ca da es ca lón du re
12µS. (8 es ca lo nes du ra ran 8 x 125 = 1000µS = 1mS).
Si re pa sa mos la sec ción de la su bru ti na de mo ra
del ar tí cu lo an te rior ve re mos que ca da ins truc ción
sim ple de mo ra 1 µS y que el loop de fi ni do con "FI NO"
du ra 3 x FI NO µS. En nues tro ca so, de be mos bus car
un nú me ro he xa de ci mal cu yo equi va len te ana ló gi co
sea 125.
Lo más sim ple es re cu rrir al tan teo, usan do he -
xa de ci ma les que ter mi nen en ce ro; sa bien do que
el he xa de ci mal 10 co rres pon de al ana ló gi co 16, po -
de mos de du cir que el ana ló gi co 20 co rres pon de al
32, el 30 al 48 y así su ce si va men te, ir mul ti pli can -
do el he xa de ci mal x 1,6. Si 3 x FI NO = 125 µS im pli -
ca que FI NO = 125/3 = 41,6 ana ló gi co, que di vi di do
por 1,6 es 26. Apro xi ma mos al he xa de ci mal 30, ya
que con és te ten dre mos que el loop "FI NO" de mo ra -
rá 3 x 30 Hex = 3 x 48 = 144µS. La fre cuen cia ob te -
ni da se rá de F = 1/(144 x 8) = 868Hz que se apro xi -
ma a la bus ca da. Si de sea ma yor pre ci sión ajus te
el li te ral "FI NO". Sintetizando:el pro gra ma de be va -
riar se ha cien do que fi no val ga 30 y me dio y grue so
sean am bos igua les a 00.
CAPITULO 3 - Aprendiendo a programar
69
Fig. 11Fig. 11
Fig. 12Fig. 12
GENERADOR DE SEÑALES DE AUDIO
Pien se que el cir cui to pro pues to pue de te ner mu -
chas po si bi li da des de mo di fi car se a vo lun tad y adap -
tar se a otros usos. Por ejem plo, si en lu gar de co nec -
tar las en tra das de las lla ves a ten sio nes con ti nuas,
las apli can a se ña les al ter nas pro ve nien tes de 8 os -
ci la do res si nu soi da les, se pue de ha cer un ba rre dor
de au dio. Si re du ce la fre cuen cia de re pe ti ción pue de
cons truir un ge ne ra dor mu si cal de acor des de 8 no -
tas, si mi la res a los uti li za dos co mo bo ci na mu si cal
en au to mó vi les y etc., etc., etc. Pien se en otras po si -
bi li da des más.
LosFormatosdelosArchivos
Men cio na mos el pro gra ma MPASM, que es un en -
sam bla dor que trans for ma el pro gra ma di se ña do por
no so tros en un idio ma he xa de ci mal co rres pon dien te
al PIC. El pro gra ma ge ne ra do a ma no (el que es cri be
el pro gra ma dor, en ba se a las pau tas da das en es te
ca pí tu lo) tie nen una ex ten sión ASM (de “ASEMBLER"
o en sam bla dor) y cuan do lo apli cá ba mos al MPASM
se ge ne ra ban tres ar chi vos con ter mi na cio nes di fe -
ren tes .err .err don de se en cuen tran los men sa jes de
error, si se co me tió un error de sin ta xis al es cri bir el
ar chi vo .asm.asm; un ar chi vo .lst.lst con los ren glo nes nu me -
ra dos pa ra ubi car en cual se pro du ce el error y el más
im por tan te, el ar chi vo .hex que con tie ne los da tos
que su pues ta men te en tien de el mi cro pro ce sa dor.
En rea li dad del mi cro pro ce sa dor no en tien de el
ar chi vo con ter mi na ción .hex.hex. El ne ce si ta otro pro -
gra ma que trans for ma el .hex en un len gua je bi na rio
de da tos en se rie que es lo úni co que en tien de el mi -
cro pro ce sa dor PIC, és to es lo que ha ce un “PRO GRA -
MA DOR” o car ga dor de PICs.
Vea mos un pro gra ma di fe ren te al pro pues to pa ra
ro tar el en cen di do de 4 leds. Es te pro gra ma sir ve pa -
ra en cen der 8 leds en su ce sión de la fi gu ra 3 y con al -
gu nos cam bios pa ra ex ci tar las lla ves ana ló gi cas del
ge ne ra dor de es ca le ra que aca ba mos de ana li zar, vea
el programa 6.
En la pri me ra sen ten cia se ob ser va la de cla ra ción
del mi cro pro ce sa dor uti li za do. Co mo pue de obser var
Microcontroladores PIC
70
Fig. 13Fig. 13
SECUENCIADOR DE 8 CANALES
en lu gar de uti li zar el 16C84, co mo lo hi ci mos has ta
aho ra, uti li za mos el 16F84. La di fe ren cia en tre am bos
ra di ca en el ti po de me mo ria uti li za da.
El 16F84 con tie ne una me mo ria más rá pi da del ti -
po EE PROM FLASH que se pue de rees cri bir un mi llón
de ve ces. El al ma ce na mien to de es ta in for ma ción es -
tá ga ran ti za do por el fa bri can te por un lap so ma yor a
40 años con el dis po si ti vo sin ali men ta ción.
El 16C84 es to tal men te si mi lar, pe ro con tie ne una
me mo ria EE PROM co mún, de ac ce so más len to y con
me no res ga ran tías de man te ni mien to de la in for ma -
ción gra ba da. Tam bién se pue de uti li zar el 16F83 si -
mi lar al 16F84 pe ro con la mi tad de ca pa ci dad de me -
mo ria y por lo tan to más ba ra to. Cual quie ra de los
tres in te gra dos pue de ali men tar se con ten sio nes de
4 a 6V.
En el sec tor en tre lí neas pun tea das, se de cla ra
don de se van a ubi car 3 va ria bles que uti li za el pro -
gra ma, lla ma das ptob, j y k. Aquí se pue de ob ser var
que la po si ción de me mo ria pue de de cla rar se de di fe -
ren tes mo dos. En el pri mer ren glón só lo es cri bi mos
06. Cuan do no se co lo ca el nú me ro en tre acen tos, ni
se co lo ca una le tra ade lan te, se in ter pre ta que se tra -
ta de un nú me ro he xa de ci mal.
Es de cir que el pro gra ma en sam bla dor (el MPASM)
in ter pre ta un nú me ro "por de fec to" co mo si fue ra he -
xa de ci mal.
En el se gun do y ter cer ren glón se uti li za un cri te -
rio di fe ren te. La le tra H sig ni fi ca que el nú me ro en tre
acen tos se rá he xa de ci mal; en es te ca so par ti cu lar se
uti li za rán las po si cio nes de me mo ria 1F y 1E pa ra
guar dar a las va ria bles j y k.
En la car pe ta re set se ubi ca la par te del pro gra ma
que se eje cu ta só lo cuan do se pre sio na el pul sa dor
de re set. Se tra ta de 5 ren glo nes o sen ten cias de las
cua les la pri me ra ubi ca el con trol en la po si ción de
me mo ria de pro gra ma ce ro. En la se gun da se car ga el
re gis tro de tra ba jo w con el nú me ro ce ro. Ob ser ve
que en es te ca so uti li za mos otra no ta ción di fe ren te;
la le tra B in di ca que a con ti nua ción se co lo ca rá un nú -
me ro bi na rio de 8 dí gi tos (el PIC em plea do só lo pue -
de ma ne jar has ta 8 bits). En la si guien te sen ten cia se
vuel ca el con te ni do del re gis tro de tra ba jo en ptob,
que en el co pe te se de cla ró ubi ca do en la po si ción de
me mo ria 06. Es ta po si ción de me mo ria con tro la la
dis po si ción del puer to "B" co mo de sa li da (acla ra mos
que el uso del co man do TRISge ne ra rá un men sa je de
pre cau ción pe ro que por aho ra no de be mos te ner en
cuen ta).
En la sen ten cia 4 de la car pe ta "re set", se vuel ve
CAPITULO 3 - Aprendiendo a programar
71
Programa 6
a car gar el re gis tro de tra ba jo con el bi na rio
"00000001"; es to no im pli ca que se rea li ce nin gu na
mo di fi ca ción en la dis po si ción de puer tos, ya que una
vez car ga da la po si ción de me mo ria, és ta no se mo di -
fi ca rá has ta que se pro duz ca un re set. El re gis tro w
se uti li za pa ra car gar in for ma ción nue va y ubi car la
lue go don de se de sea.
Por ejem plo, en la sen ten cia 5 se des car ga w en
el puer to de sa li da B, que con TRIS se de cla ró co mo
de sa li da. Es to sig ni fi ca que se va a en cen der el led
ubi ca do en la pa ta 6 del mis mo (B0). Aquí ter mi na la
car pe ta re set y no se vol ve rá a ella has ta que se opri -
ma re set o se des co nec te y re co nec te al mi cro pro ce -
sa dor.
La si guien te car pe ta se lla ma "mciclo" y co mien za
con el co man do "rlf" uti li za do pa ra mo ver pos te rior -
men te el bit pues to en uno del puer to B, una po si ción
ha cia la iz quier da. De cual quier mo do al eje cu tar rlf
no se pro du ci rá to da vía el cam bio de es ta do en las
sa li das. En la se gun da sen ten cia de la car pe ta "mci-
clo" se car ga el re gis tro de tra ba jo, pe ro aho ra uti li za -
mos otra no ta ción di fe ren te. La le tra D in di ca que va -
mos a car gar un nú me ro de ci mal y lue go en tre acen -
tos de ci mos que ese nú me ro se rá el 50 (es to es ade -
cua do pa ra usar el mi cro pro ce sa dor co mo ge ne ra dor
de on da en es ca le ra, pe ro de be cam biar se por 500 si
se va a uti li zar co mo se cuen cia dor; co mo ve mos es te
nú me ro de ter mi na la du ra ción de los es ca lo nes o el
tiem po de en cen di do de ca da led). En la ter ce ra sen -
ten cia se des car ga el nú me ro 50 en la va ria ble "j"
que an tes se de cla ró ubi ca da en la po si ción de me -
mo ria 1F.
Aquí em pie za la car pe ta "jciclo" de una so la sen -
ten cia, en don de el mis mo nú me ro 50 se vuel ca en la
va ria ble "k" que an tes se de cla ró ubi ca da en la po si -
ción de me mo ria 1E.
La si guien te car pe ta lla ma da "kci clo" se uti li za rá
pa ra de cre men tar es tos nú me ros 50 ubi ca dos en 1F y
en 1E de mo do de es ta ble cer una de mo ra ne ce sa ria
pa ra que los es ca lo nes o el en cen di do de los leds du -
re el va lor que no so tros im pon ga mos.
La pri mer sen ten cia de la car pe ta "kciclo", de cre -
men ta ken una uni dad. El co man do "decfsz" es del ti -
po con di cio nal; si el va lor de k es su pe rior a ce ro (1 a
50 en nues tro ca so), el con trol del pro gra ma va a la
sen ten cia si guien te que es in con di cio nal y reen vía el
con trol de pro gra ma a la car pe ta "kciclo". Cuan do k
lle ga al va lor ce ro, en vía el con trol a la sen ten cia pos -
te rior a "goto", ob vian do el bu cle "kciclo". En una pa -
la bra que los dos pri me ros ren glo nes de la car pe ta"kciclo" de cre men tan el nú me ro 50 has ta ce ro y co mo
ca da sen ten cia du ra 1µseg, ya que es ta mos usan do
un cris tal de 4MHz, po de mos cal cu lar que es te bu cle
del pro gra ma du ra 100µseg.
En la ter ce ra sen ten cia se de cre men ta la va ria ble
"j", del mis mo mo do que se hi cie ra con "k" pe ro se re -
tor na a la car pe ta "jci clo" pa ra ge ne rar un nue vo bu -
cle de 100µseg. Es to im pli ca que los dos bu cles tie -
nen una du ra ción de 100 x 100µseg, es de cir:
10.000µseg o 10mseg (con 500, ca da bu cle du ra
1000µseg y el pro duc to es 1.000.000 de µseg o 1seg).
Trans cu rri do es te tiem po el con trol pa sa a la quin ta
sen ten cia de la car pe ta "kci clo" que es una sen ten cia
in con di cio nal go to que en vía el con trol a la car pe ta
"mci clo". Re cién en es te mo men to se pro du ce la ro ta -
ción de ptob, se apa ga el pri mer led y se en cien de el
si guien te por otro lap so de tiem po de 1seg.
El pro gra ma irá cam bian do el bi na rio acu mu la do
en el puer to B, co rre rá el 1 a la iz quier da has ta que
sal ga del re gis tro y vuel va a in gre sar por la de re cha.
Cuan do uno tie ne es cri to el pro gra -
ma con el edit del DOS, de be ve ri fi car lo
ex haus ti va men te, con tro lar el en co lum -
na do y los erro res de sin ta xis an tes del
pun to y co ma se pa ra dor. De cual quier
mo do siem pre se pue de des li zar un
error que pro vo ca rá una fa lla en el pro -
gra ma. Si us ted tra ba ja co rrec ta men te,
el pro gra ma en sam bla dor MPASM le
avi sa rá de los erro res y le da rá al gu nas
ad ver ten cias úti les so bre el uso de al -
gu nas sen ten cias.
Pa ra ver có mo fun cio na és to, vol va -
mos a es cri bir el pro gra ma del se cuen -
cial de 8 ca na les mo di fi cán do lo de mo -
do que pre sen te al gu nos erro res, vea el
programa 7.
Microcontroladores PIC
72
Fig. 14Fig. 14
COMPILACION
DE UN PROGRAMA
A con ti nua ción se abrió el MPASM y se eje cu tó el
ar chi vo mo di fi ca do con in ten ción de ob te ner el ar chi -
vo HEX que re quie re el pro gra ma dor de pics. Pe ro si
lo so li ci ta mos se pue den ge ne rar los ar chi vos .err y
.lst que se rán de gran uti li dad pa ra en con trar erro res
de ti peo (si no sa be có mo se rea li za es te pro ce so, lea
el tex to: “To do So bre PICs”, de Edi to rial Quark).
Vea mos có mo se pro du ce la lim pie za de un pro -
gra ma con erro res. Al eje cu tar el ar chi vo con F10 del
MPASM, el en sam bla dor ofre ce un re sul ta do co mo el
in di ca do en la fi gu ra 14.
Lue go se mues tra la pan ta lla gra fi ca da en la fi gu -
ra 15 don de se in di can 5 erro res y 6
pre cau cio nes, ade más de la in di ca -
ción de la can ti dad de lí neas to ta les
en sam bla das (30 en es te ca so). Aho -
ra se de ben en con trar las lí neas con
erro res y pa ra eso se de be edi tar el
ar chi vo .ERR con el mis mo edi tor de
DOS que es ta mos uti li zan do.
Por ca da error o ad ver ten cia hay
una lí nea de res pues ta que co mien -
za con "WARNING" (ad ver ten cia) o
ERROR (error) y un nú me ro de có di go
por el que se pue den ob te ner más
de ta lles so bre el error o la ad ver ten -
cia, lue go el nom bre de ar chi vo ana -
li za do con el ár bol de di rec to rios co -
rres pon dien te y el nú me ro de lí nea
que con tie ne el error o ad ver ten cia.
Lue go un se pa ra dor dos pun tos y el
ti po de error o ad ver ten cia. Los men sa jes de ad ver -
ten cia no im pi den el de sa rro llo de la pos te rior pro -
gra ma ción, pe ro los men sa jes de error sí. Va mos a
aten der pri me ro los men sa jes de error y lue go los de
ad ver ten cia.
No es ne ce sa rio nu me rar las lí neas de pro gra ma
a ma no, y a ve ces no es con ve nien te, por que la fal ta
de un se pa ra dor (pun to y co ma) pue de ge ne rar lí neas
fan tas mas y con fun dir nos. Es pre fe ri ble edi tar el ar -
chi vo .lst (en nues tro ca so SECU8NO.LST) que tie ne al
mis mo tiem po los men sa jes de error y el nú me ro de lí -
nea.
CAPITULO 3 - Aprendiendo a programar
73
Fig. 15Fig. 15
Programa 7
Observe la fi gu ra 16, en la pri me ra co lum na se
mar can los erro res o pre cau cio nes y la lo ca li za ción y
va lor de las va ria bles. En la se gun da, el nú me ro de lí -
nea y a con ti nua ción la lí nea de pro gra ma. El pri mer
error lo te ne mos in di ca do an tes de la lí nea 00005: y
nos in di ca que las va ria bles o sím bo los LA y VA RIA -
BLE no es tán de fi ni dos pre via men te y que se pro duz -
co un cam bio de ope ra dor. Mi ran do la lí nea se ob ser -
Microcontroladores PIC
74
Fig. 16Fig. 16
va que el úni co
pro ble ma es que
fal ta el se pa ra -
dor de co men ta -
rios y el en sam -
bla dor con fun dió
el co men ta rio
con una sen ten -
cia.
El si guien te
error es tá en la
lí nea 12 y nos in -
di ca que el error
se pro du ce des -
pués de la pri me -
ra co lum na, en -
tre pa rén te sis se
en cuen tra el ar gu men to u or den equi va len te (molw
por movlw). En la lí nea 22 es tá el si guien te error y
con sis te en la or den GO TO es cri ta co mo GO RO. Vea -
mos aho ra los men sa jes de ad ver ten cia. El pri me ro
es tá en la pri mer lí nea y se pro du ce por que es ta lí nea
es tá di ri gi da al pro gra ma dor y no pue de ser en ten di -
da por el en sam bla dor.
Se pue de de jar sin in con ve nien tes. La si guien te
es tá en la lí nea 12 y se gu ra men te va a de sa pa re cer
cuan do se co rri ja la or den movlw. Lue go pa sa mos a la
lí nea 13 en don de es tá la or den TRIS; ocu rre que en
los mi cro pro ce sa do res más mo der nos es ta or den se
mo di fi ca por otra más com ple ja; por aho ra se pue de
se guir usan do TRIS pa ra pro gra mar los puer tos si se
usa el 16C84 o el 16F84. La si guien te pre cau ción es -
tá en la lí nea 18 y se de be a que el de ci mal 50000 es -
tá fue ra del ran go ad mi ti do por el mi cro pro ce sa dor.
Es ta pre cau ción de be ser con si de ra da mo di fi can do el
va lor por uno me nor. La si guien te pre cau ción es tá en
la lí nea 22 y se co rre gi rá al reem pla zar GO RO por GO -
TO. Al co rre gir los erro res y agre gar el se pa ra dor, el
MPASM va a re por tar só lo dos ad ver ten cias. Una en la
lí nea 1 por la de cla ra ción del mi cro pro ce sa dor di ri gi -
da al pro gra ma dor de PICs y la otra es la re fe ri da a la
or den TRIS que pue de ser ig no ra do por el mo men to.
Pa ra pro gra mar un PIC se de ben co nec tar va rias
de sus pa tas en una dis po si ción de ter mi na da que ha -
ce ac ce si ble su me mo ria pa ra re ci bir da tos se rie des -
de el puer to pa ra le lo de su PC.
El puer to pa ra le lo de la PC, en don de us ted co nec -
ta ha bi tual men te la im pre so ra, tie ne va rias vías de
co ne xión, cu yo es ta do pue de mo di fi car se por me dio
de un pro gra ma ade cua do.
Con un pro gra ma ade cua do co mo el NOPP Ud.
po dría va riar el es ta do de la pa ta 14 del puer to pa -
ra le lo de la PC en una rá pi da su ce sión que se co -
rres pon da con la in for ma ción se rie ne ce sa ria pa ra
car gar el PIC.
En una pa la bra que ca da hi lo de un puer to pa -
ra le lo pue de trans for mar se en un puer to se rie. Ca -
be acla rar que es te pro gra ma, de la em pre sa
Gerns back, pue de ba jar lo de In ter net de la di re -
cción:
ftp://ftp .gerns back .com /pu b/EN /noppp .zip
En el mo men to de gra bar un PIC se lo de be dis po -
ner se gún lo in di ca do en la fi gu ra 17. Las co ne xio nes
de fuen te y las se ña les de ben ser apli ca das se gún
una se cuen cia pre de ter mi na da que de be res pe tar se
in va ria ble men te:
A)ElprimerpasoescolocarelPICenelzócalodel
programador con señales y fuentes a potencial de
masa.
B)LevantarlatensióndefuenteVDDaunpoten-
cialde5V±0,2Vporlapata14(VDD).
C)Levantar latensióndefuenteVPPaunpoten-
cialde13V±0,3Vporlapata4(MCLRNEGADO).
D) Esperarenesascondicionesun tiemposupe-
riora1mS.
E) Posicionar el primer dato en la pata 13 (RB7)
conunpotencialalto(mayora4V)obajo(menora1V).
F)Cuandolapata12(RB6)paseaunestadoalto,
superiora4V,eldatosecargaenlamemoria.
G)Continuarcargandolosdatosconelmismocri-
terioaunritmotalqueeldatoestépresentepor lo
menosdurante100nS.
H)Cuandotodoslosdatosfueroncargadossede-
beesperar1segundo.
CAPITULO 3 - Aprendiendo a programar
75
Fig. 17Fig. 17
CARGA DEL PROGRAMADE UN PIC
I)Desconectarlafuentede13V.
J)Desconectarlafuentede5V.
K)Retirarelmicrograbado.
Por so bre to das la co sas, de be res pe tar se el cri -
te rio de no sa car un PIC de su zó ca lo con las fuen tes
co nec ta das por que pue de des pro gra mar se o, peor
aún, da ñar se de fi ni ti va men te. Tam bién es muy im por -
tan te res pe tar las ten sio nes de fuen te y no de mo rar
la lle ga da de da tos, lue go co nec tar VPP (por que po -
drían car gar se da tos fal sos por in ter fe ren cias elec -
tro mag né ti cas).
Co mo us ted pue de ob ser var de la des crip ción an -
te rior la en tra da RB6 es uti li za da co mo clock y la RB7
co mo en tra da de da tos en una clá si ca ope ra ción de
trans fe ren cia de da tos en se rie. Hay un tiem po en tre
el mo men to en que MCLR’ (MCLR NE GA DO) sa le de la
con di ción de re set has ta que apa re ce el pri mer da to
o el pri mer pul so de clock. Tam bién hay un tiem po mí -
ni mo pa ra la per ma nen cia de un da to en la en tra da (la
re pre sen ta ción usa da pa ra un da to sig ni fi ca que el
mis mo pue de ser al to o ba jo, de pen de del bit que se
es té gra ban do). Lo que no hay es un tiem po má xi mo
pe ro evi den te men te cuan do ma yor es es te tiem po
más len ta se rá la car ga del pro gra ma.
El tiem po más ade cua do de pen de de fac to res ta -
les co mo el lar go del ca ble uti li za do pa ra co nec tar el
pro gra ma dor a la PC. Si el ca ble es lar go, los pul sos
tien den a de for mar se y ate nuar se, so bre to do cuan do
son de cor ta du ra ción (100nS equi va len a una fre -
cuen cia de 10MHz). Pa ra evi tar pro ble mas to dos los
pro gra ma do res tra ba jan a ve lo ci da des in fe rio res a la
má xi ma, so bre to do con si de ran do que la ca pa ci dad
de me mo ria no es muy gran de y pa ra el uso ca se ro no
son im pres cin di bles gran des ve lo ci da des de gra ba -
ción.
Lue go de gra bar un PIC se pue de ve ri fi car que su
pro gra ma ha ya si do co rrec ta men te gra ba do. Es to se
rea li za uti li zan do la mis ma pa ta 13 del PIC (RB7) que,
co mo sa be mos, es de I/O (In pu t/Out put ; en tra da /sa -
li da).
La trans for ma ción del mo do de es cri tu ra a lec tu -
ra no re quie re cam bios de hard wa re; es de cir que va -
le lo in di ca do en la fi gu ra 17. El mi cro de tec ta los pri -
Microcontroladores PIC
76
Fig. 18Fig. 18
CAPITULO 3 - Aprendiendo a programar
77
me ros bit emi ti dos pa ra sa ber si de be gra bar o leer y
lue go trans for ma RB7 en puer to de sa li da pa ra po der
leer los da tos gra ba dos. Así con ti núa to do has ta el fi -
nal de la lec tu ra de da tos.
La me jor prue ba pa ra sa ber si la gra ba ción es exi -
to sa con sis te en mo di fi car la ten sión de la fuen te
VDD des de 4 a 6V. Pri me ro se de be rea li zar una ve ri -
fi ca ción a 5V exac tos, lue go se de be pa sar a 6V y rea -
li zar una nue va ve ri fi ca ción; por úl ti mo ubi car la fuen -
te en 4V y rea li zar la úl ti ma prue ba.
Es ta ve ri fi ca ción es su ma men te im por tan te por -
que un PIC mal gra ba do pue de pre sen tar fa llas en su
fun cio na mien to o peor aún pue de fun cio nar co rrec ta -
men te al prin ci pio pe ro bo rrar se en po cos días.
Va mos aho ra a adap tar nues tro pro gra ma dor pa -
ra que fun cio ne con el soft wa re NOPP.
Las di fe ren cias en tre un pro gra ma dor y otro mu -
chas ve ces se de ben a la uti li za ción de di fe ren tes pa -
tas del puer to pa ra le lo de la PC. En efec to el soft wa -
re del pro gra ma dor pue de ele gir di fe ren tes pa tas pa -
ra uti li zar las co mo en tra das y sa li das de da tos se rie.
Tam bién es po si ble que se uti li cen otras pa tas pa ra
ge ne rar las ten sio nes de con trol de fuen tes y, por úl -
ti mo, al gu nos soft wa re só lo con tro lan la fuen te VPP;
que es jus ta men te el ca so que nos ocu pa. Por úl ti mo
los pro gra ma do res más com ple tos uti li zan una fuen -
te re gu la da que pue de ajus tar se en tre 4 y 6V pa ra
com pro bar la efec ti va gra ba ción de los da tos.
En la fi gu ra 18 rea li za mos dos mo di fi ca cio nes.
Por un la do agre ga mos la lla ve LL1 pa ra ope rar la
fuen te de 5V a ma no. Cuan do la lla ve es tá ce rra da Q1
con du ce y el mi cro es tá ali men ta do con 5V por la pa -
ta 14. La ac ción de la lla ve se con tro la por el en cen di -
do del led ver de. Por lo tan to, us ted de be co lo car el
PIC en el zó ca lo o re ti rar lo só lo cuan do el led ver de
es tá apa ga do.
Con re fe ren cia a la fuen te agre ga mos un re gu la -
dor LM317 en lu gar del 78L5 que tie ne la po si bi li dad
de po der pro gra mar su ten sión de sa li da. En efec to el
pre set RV1 en un ex tre mo de be ajus tar la sa li da en
4V y en el otro lo de be ajus tar en 6V.
Tan to la sec ción de fuen te co mo el vol tí me tro ne -
ce si tan ajus tes a rea li zar con un tés ter di gi tal. La
fuen te re quie re el ajus te de R21. Co mien ce co lo can -
do re sis to res de 1kΩ; lue go de be va riar am bos va lo -
res has ta que la sa li da cam bie en tre los lí mi tes es pe -
ci fi ca dos de 4 y 6V. En el vol tí me tro se de ben ajus tar
los re sis to res de 27 y 22kΩ pa ra que el led se en cien -
da en el ran go de 4,8 a 5,2V.
Con re fe ren cia a los cam bios en el puer to pa ra le -
lo pre fe ri mos mo di fi car el ca ble de co ne xión de jan do
el co nec tor de la pla que ta sin mo di fi ca cio nes.
Ob ser ve que si la pla que ta es tá des co nec ta da o
la fuen te es tá apa ga da el soft wa re NOPP re co no ce
es te es ta do a tra vés de la pa ta 5 de la fi cha DB9 que
es tá a po ten cial al to por me dio de R9 y abor ta la ope -
ra ción de car ga.
El tran sis tor Q2 que con tro la la fuen te VPP se ma -
ne ja a tra vés de CI1 des de la pa ta 1 de la fi cha DB9.
Pe ro la fuen te de 5V de be rá ma ne jar se a ma no por in -
ter me dio de la lla ve LL1. ***********
Micro - Curso Micro 2.qxd:*Cap 4 - telefonia 17/01/14 09:59 Página 56
2ª de forros.qxd:club 18/09/13 12:08 Página 2ªFo1
3ª de forros.qxd:sumario 223 18/09/13 12:11 Página 3ªFo1
4ª de forros.qxd:sumario 223 18/09/13 12:11 Página 4ªFo1