Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Micro Control Adores PIC Vallejo PDF
Micro Control Adores PIC Vallejo PDF
Vallejo
Vallejo
EDITORIAL
QUARK
Con el aval de
Representante exclusivo para todo el mundo: Centro Japonés de Información Electrónica, Norte 2 Nº 4, Col. Hogares Mexi-
canos Ecatepec, Edo. de México. - Director: Atsúo Kitaura - Tel.: (0155) 5787-1779 - www.centrojapones.com
Solicite información al (005411)4301-8804 o por Internet a: www.webelectronica.com.ar
(Los compradores de esta edición tienen acceso a información adicional con el password: pic2)
La editorial no se responsabiliza por el contenido del material firmado. Todos los productos o marcas que se mencionan son a los efectos
de prestar un servicio al lector, y no entrañan responsabilidad de nuestra parte. Está prohibida la reproducción total o parcial del material
contenido en esta publicación, así como la industrialización y/o comercialización de los circuitos o ideas que aparecen en los menciona-
dos textos, bajo pena de sanciones legales, salvo mediante autorización por escrito de la editorial.
El Registro INTCON .......................................27
Indice PCL y PCLATH ...............................................28
STACK (PILA) .................................................28
Cap tulo 1 Registros INDF y FSR ....................................29
Arquitectura de un PIC PORTS I/O......................................................30
Registros PORTA y TRISA .............................30
Introducci n ......................................................5 Registros PORTB y TRISB.............................32
Caracter sticas del PIC .....................................5 M dulo Temporizador TIMER0 .......................34
Caracter sticas Perif ricas................................5 Prescaler (Divisor de Frecuencia) ..................35
Caracter sticas Especiales del Interrupci n de Timer0....................................36
Microcontrolador ...............................................6 Memoria de Datos EEPROM..........................36
Patas del PIC....................................................6 Lectura de la Memoria de
Resumen del Dispositivo ..................................9 Datos de EEPROM.........................................38
Ficha Did ctica ...............................................10 Escritura de la Memoria de
Lo que Debe Saber Datos EEPROM..............................................39
Sobre los PICs................................................13 Verificaci n de Escritura .................................40
a) El Procesador es segmentado La CPU del PIC ..............................................42
tipo "pipe line" .................................................13 Bits de Configuraci n......................................43
b) El Procesador es de tipo RISC ..................14 Configuraciones del Oscilador........................43
c) Poseen una arquitectura Oscilador de Cristal o
tipo Harvard ....................................................14 Resonador de Cer mica.................................44
d) Son de arquitectura ortogonal basada Oscilador RC...................................................44
en banco de registros .....................................15 Reset...............................................................44
Palabras de Configuraci n Reset de Encendido .......................................47
e Identificaci n................................................18 Temporizador de Arranque del
Organizaci n de la Memoria...........................19 Oscilador (OST)..............................................48
Organizaci n de la Memoria Temporizador de Encendido
de Programas .................................................19 (PWRT) ...........................................................48
Organizaci n de la Memoria El Perro Guardi n (WDT) ...............................48
de Datos..........................................................19 Interrupciones del Micro .................................49
Los Registros del PIC.....................................20 Interrupci n Externa (INT) ..............................51
Archivo de Registro de Interrupci n por Desborde
Uso General....................................................20 del TMR0 ........................................................51
Registros de Funciones Interrupci n por Cambio de
Especiales (SFR)............................................21 Estado en las patas RB7 y RB4 .....................51
Registro de Status ..........................................23 Interrupci n por Finalizaci n de la Escritura
Registro OPTION_REG..................................25 en la EEPROM de datos ................................51
2 Microcontroladores PIC
Indice
Dedico este libro a todos los que trabajan por una Argentina mejor, a los que creen que
es posible cambiar las cosas desde el trabajo y el esfuerzo colectivo, a los que creen
que las respuestas est n en casa... en esta hermosa y bendita Am rica Latina.
Dedico este libro a quienes saben construir en paz...
Dedico este libro a quienes integran Editorial Quark, Imprenta Rosgal y Centro Japon s
de Informaci n Electr nica.
Horacio Daniel Vallejo
Microcontroladores PIC 3
Microcontroladores PICs
Pr logo:
Los microcontroladores de la empresa Microchip, los PIC , est n ocupando un lugar
de privilegio dentro de la industria electr nica, gracias a la facilidad de implementar
programas con un set reducido de instrucciones y a la importancia que poseen sus ca-
racter sticas.
Cuando en 1998 publiqu el primer art culo sobre estos circuitos integrados, no cre
que su divulgacii n llegar a tan lejos; sin embargo, cuatro a os despu s debo recono-
cer que trabajar con estos chips es un placer del que no se deben privar los amantes
de la electr nica.
Hace algo m s de un a o Editorial Quark public el primer libro sobre este tema titu-
lado: Todo Sobre PICs , texto que trata sobre las caracter sticas fundamentales de es-
tos dispositivos y qu es necesario para editar programas, simularlos y cargarlos en la
memoria de los integrados. Dicho libro fue el punto de partida de una serie que conti-
n a con el presente tomo y muy pronto continuar con Sistemas y Dispositivos con
PICs , el tercer libro de una obra que vaya a saber en qu tomo va a culminar.
Todo Sobre PICs (que tambi n fue el primer texto publicado por Editorial Quark en for-
ma simult nea en varios pa ses de Am rica Latina) es el libro que debe leer todo aqu l
que se inicia en esta disciplina, mientras que Microcontroladores PICs persigue ense-
ar al lector a construir programas para armar sus propios dispositivos. ste es tam-
bi n un texto b sico dado que utilizamos estructuras muy sencillas para realizar los pri-
meros programas. Somos conscientes que para que alguien pueda trabajar con un dis-
positivo primero debe conocerlo y por ello en el cap tulo 1 hablamos sobre los diferen-
tes bloques que integran a los PIC, bas ndonos en la familia 16X54/84 (que fue el
componente que tomamos como referencia en el primer libro). De esta manera Ud. de-
be saber qu es y c mo se emplea la memoria de datos, la memoria de programas, el
perro guardi n, el registro STATUS, etc.
Una vez que tiene conocimientos sobre los recursos con que cuenta, en el cap tulo 2
presentamos las 35 instrucciones del set RISC de esta familia, dando ejemplos de uso
en cada caso. Por ello, es probable que cuando lea algunos temas del cap tulo 1 (co-
mo verificaci n de un dato escrito en la memoria) precise conocer c mo se manejan
determinadas instrucciones. Dicho de otra forma, si al leer un punto en particular no
entiende alg n concepto, 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 n sobre circuitos reales ,
utilizando algunos temas escritos por el Ing. Picerno en Saber Electr nica, modifica-
dos convenientemente para que aprenda mientras se ejercita .
Estoy convencido que este texto es mejor que el primero, pero no caben dudas que,
si Ud. no sabe nada sobre microcontroladores, precisar leer el libro Todo Sobre PICs.
4 Microcontroladores PICs
Arquitectura de un PIC
ARQUITECTURA
DE UN PIC
Introducci n
Microcontroladores PIC 5
Arquitectura de un PIC
6 Microcontroladores PIC
Arquitectura de un PIC
Figura 1
Microcontroladores PIC 7
Arquitectura de un PIC
Figura 2
Figura 3
8 Microcontroladores PIC
Arquitectura de un PIC
Figura 4
Microcontroladores PIC 9
Arquitectura de un PIC
10 Microcontroladores PIC
Arquitectura de un PIC
Denominación: PIC1XXXX.
Longitud de palabra: 14 bits.
Memoria: EEPROM. Desde 512bytes de ROM y 32bytes de RAM a 4kB de
ROM y 256bytes de RAM.
Interface I/O: 13 patas seleccionables de entrada/salida en los modelos están-
dar.
Arquitectura: Von Neumann (Instrucciones y datos juntos). La mayoría de las ins-
trucciones se ejecutan en un ciclo. Pero posee un set de sólo 35 instrucciones de ti-
po RISC (Reduced Instruction Set Computer).
Alimentación: 4 a 6V.
Encapsulado: Múltiples versiones, lo normal es DIP de 18 patas.
Fácil de programar, fácil de cargar, extremadamente confiable, económico. Se
encuentra gran cantidad de software y hardware sin cargo.
Ideal para Aplicaciones en servicio de equipos, diseños y construcción de "cir-
cuitos integrados a medida".
Microcontroladores PIC 11
Arquitectura de un PIC
• Interrupciones externas.
• Cambios en la interrupci n de PORTB.
• Entrada de clock Timer0.
La Tabla 1 muestra las funciones de las patas del dispositivo con las descripcio-
nes y detalles de cada una.
12 Microcontroladores PIC
Arquitectura de un PIC
Figura 5
Microcontroladores PIC 13
Arquitectura de un PIC
Figura 6
14 Microcontroladores PIC
Arquitectura de un PIC
Figura 7
Microcontroladores PIC 15
Arquitectura de un PIC
rea RAM formada por 22 registros de prop sito espec fico (SFR) y
36 de prop sito general (GPR).
rea EEPROM formada por 64 bytes.
• ALU de 8 bits y registro de trabajo W del que normalmente recibe un operando
que puede ser cualquier registro, memoria, puerto de Entrada/Salida o el propio c -
digo de instrucci n.
• Varios canales para conectar al bus de datos: PortA de 5 bits <RA0:RA4> ,
PortB de 8 bits <RB0:RB7>, Temporizador con Preescaler TMR0, etc.
• Contador de programa de 13 bit (lo que en teor a permitir a direccionar 4kB de
memoria, aunque el 16X84 solo dispone de 1kB de memoria implementada).
• Pila de 8 niveles.
Figura 8
• PIC 16F84: La memoria de programa es de lk, las palabras son de l4 bits, pe-
ro de tipo Flash. La memoria de datos RAM tiene 68 registros de tama o byte de
prop sito general, en lugar de 36.
• PIC16CR84: La memoria de programa es de 1k con palabras de 14 bits tipo
ROM y la de datos tiene iguales caracter sticas que el PIC16F84.
• PIC16F83: La memoria de programa es de 512 palabras de 14 bits y la RAM
de datos tiene 36 bytes de registros de prop sito general.
• PIC16CR83: Es igual que el PIC16F83, pero la memoria de instrucciones es de
tipo ROM, o sea, s lo grabable durante el proceso de fabricaci n para ser utilizados
con fines espec ficos (circuito integrado a medida).
16 Microcontroladores PIC
Arquitectura de un PIC
memoria es del tipo flash, por lo dem s, otros dispositivos de esta familia disponen
de m s memoria, tienen m s perif ricos, etc.
Los microcontroladores de la gama media disponen de un Contador de Progra-
ma (PC CP) de 13 bits, cuyos bits de menor peso corresponden a los 8 bits del re-
gistro PCL, implementado en la posici n de memoria RAM 02h (y duplicado en la
posici n 82h),y los cinco bit de mayor peso del CP corresponden con los 5 bits de
menor peso del registro PCLATCH, implementado en la posici n de memoria RAM
0Ah (y duplicado en la posici n 8Ah), lo que le permite direccionar hasta 8k x 14 bits
dividido en p ginas de 2k x 14 bits. El PIC16C84 dispone de 1k x14 bits de memo-
ria implementada, desde la posici n 0000h hasta la 03FFh, los 3 bit de mayor peso
del CP no se utilizan, as pues la direcci n 20h, 320h, 420h, A20h,1420h, etc. se
considera como la misma (figura 9).
Figura 9
Microcontroladores PIC 17
Arquitectura de un PIC
Tiene 8 niveles con una longitud de 13 bits cada uno. Su funcionamiento es como el
de un buffer circular, de tal forma que el valor que se obtiene al realizar nueve des-
plazamientos, es igual al primer desplazamiento. La nica manera de cargar la Pila
es a trav s de la instrucci n CALL (llamada a subrutina) o por una interrupci n que
hacen que con cada una de ellas, se cargue el contenido del PC en el valor supe-
rior de la Pila. Para recuperar el contenido de la Pila en el PC hay que ejecutar una
instrucci n RETURN, RETLW o RETFIE (vuelta del programa de atenci n a una su-
brutina o interrupci n).
Figura 11
18 Microcontroladores PIC
Arquitectura de un PIC
Organizaci n de la Memoria
En el PIC16F84A existen dos bloques de memoria. Estos son la memoria del pro-
grama y la memoria de datos. Cada bloque posee su propio bus, de tal forma que el
acceso a cada uno puede producirse durante el mismo ciclo del oscilador.
La memoria de datos puede dividirse m s a n en la RAM de fines generales y
los Registros de Funciones Especiales (SFR).
El rea de la memoria de datos contiene tambi n los datos de la memoria EE-
PROM. Esta memoria no est directamente introducida en la memoria de datos, si
no es registrada en forma indirecta. Esto significa que un puntero indirecto de direc-
ciones especifica la direcci n de la memoria de datos EEPROM para escribir y leer.
Los 64 bytes de la memoria de datos EEPROM poseen el rango de direcciones de
0h a 3Fh. M s detalles sobre la memoria EEPROM veremos en otro apartado.
Microcontroladores PIC 19
Arquitectura de un PIC
20 Microcontroladores PIC
Arquitectura de un PIC
Microcontroladores PIC 21
Arquitectura de un PIC
Figura 13.B
22 Microcontroladores PIC
Arquitectura de un PIC
a) n cleo y
b) perif rico.
Aquellos asociados con las funciones del n cleo se describen en esta Secci n.
Los relacionados con el funcionamiento de las caracter sticas perif ricas se descri-
ben en la Secci n respectiva.
Leyendas de la figura 13 A y B:
x = desconocido,
u = sin cambio,
- = sin implementar, leer como cero
q = valor depende de las condiciones.
Nota:
1. El byte superior del contador de programa no es directamente accesible.
PCLATH es un registro esclavo para PC<12:8>. El contenido de PCLATH puede ser
transferido al byte superior del contador de programa, pero el contenido de
PC<12:8> no es transferido nunca a PCLATH.
2. Los bits de Status TO y PD del registro de STATUS no son afectados por el
reset de MCLR.
3. Otros resets que no son POWER UP incluyen: reset externo por MCLR y el re-
set del temporizador de watchdog.
4. En todos los resets del dispositivo, estas patas son configuradas como entra-
das.
5. Este es el valor que se encontrar en el latch de la salida del port.
Registro de Status
El registro del STATUS contiene el status aritm tico de la ALU, el status de reset
y el bit selector de bancos para la memoria de datos.
Como en todo registro, el registro de STATUS puede ser el destino de cualquier
instrucci n. Si el registro de STATUS es el destino de una instrucci n que afecta los
bits Z, DC o C, entonces la escritura de estos tres bits es desactivado. Estos bits son
ajustados o anulados en concordancia con la l gica del dispositivo. Adem s, los bits
TO y PD (la notaci n TO significa que el bit est activo con 1 o lo que es lo mis-
mo: TO = negado de TO) no pueden ser escritos. Por lo tanto, el resultado de una
instrucci n con el registro de STATUS como destino, puede ser diferente al previsto.
Por ejemplo, CLRF STATUS anular los tres bits superiores y ajustar el bit Z.
Esto dejar el registro de STATUS como 000u u1uu (donde u queda sin cambio).
S lo las instrucciones BCF, BSF, SWAPF y MOVWF deben ser usados para al-
Microcontroladores PIC 23
Arquitectura de un PIC
terar el registro STATUS, como veremos en el cap tulo dedicado al Set de Instruc-
ciones, debido a que estas instrucciones no afectan ning n bit de status.
Notas:
1. Los bits IRP y RP1 (STATUS<:6>) no se usan en el PIC16F84A y deben ser
programados como anulados. El uso de estos bits como bits R/W de uso general, no
es recomendado, debido a que puede afectar la compatibilidad para arriba con pro-
ductos futuros.
2. Los bits C y DC funcionan como bits de BORROW (BORROW es el negado
de BORROW), en operaciones de resta. Ver ejemplos en las instrucciones de
SUBLW y SUBWF del cap tulo de Set de Instrucciones.
3. Cuando el registro de STATUS es el destino para una instrucci n que afecta
los bits Z, DC o C, entonces se impide la escritura de estos tres bits. El bit espec fi-
co ser actualizado en concordancia con la l gica del dispositivo.
En la Figura 14 vemos aspectos del registro de STATUS.
Figura 14
Veamos qu significado y qu valor puede tener cada bit del registro STATUS:
24 Microcontroladores PIC
Arquitectura de un PIC
Bit 1, DC: Bit de llevar o prestar en las instrucciones ADDWF y ADDLW. Para
prestar la polaridad es invertida.
1 = Cuando ocurre un exceso en el resultado del 4… bit de menos peso. Aca-
rreo en la suma.
0 = Cuando no ocurre un exceso en el resultado del 4… bit de menos peso.
No hay acarreo en la suma (en la resta es lo contrario).
Nota: Para BORROW (prestar d gitos) se invierte la polaridad. Una resta se eje-
cuta al sumar el complemento de dos del segundo operando. Para instrucciones de
rotaci n (RRF, RLF), este bit es cargado con el bit de orden superior o inferior del
registro de fuente.
Recuerde que:
_________ ___ ___
BORROW = BORROW TO = TO PD = PD
Registro OPTION_REG.
Ocupa la posici n la 81h del banco de registro 1. Es recomendable darle otro
nombre por ejemplo "OPTION" en el programa ensamblador, para que el programa
ensamblador no d mensajes de error, ya que en los PIC de la gama baja existe la
instrucci n OPTION.
El registro OPTION_REG (o simplemente registro OPTION) es un registro para
escribir y leer que contiene varios bits de control para configurar el prescaler
TMR0/WDT, el interrupt INT externo, el TMR0 y el pull-up d bil de PORTB.
Microcontroladores PIC 25
Arquitectura de un PIC
Nota:
Cuando el prescaler es asignado a WDT (PSA = 1), TMR0 tiene una asignaci n
de prescalador de 1:1.
En la figura 15 vemos el Registro de OPTION_REG (direcci n 81h).
Figura 15
bit 2-0, PS2:PSO: Rango con el que act a el divisor de frecuencia, ste procede
de acuerdo con la siguiente tabla:
26 Microcontroladores PIC
Arquitectura de un PIC
El Registro INTCON
El registro INTCON es un registro de lectura y escritura que contiene los diferen-
tes bits de activaci n de todas las fuentes de interrupci n. Sus detalles se encuen-
tran en la figura 16.
Figura 16
Microcontroladores PIC 27
Arquitectura de un PIC
PCL y PCLATH
El contador de programas (PC de program counter , tambi n denominado CP en
este texto) especifica la direcci n de la instrucci n a buscar para la ejecuci n. El an-
cho del PC es de 13 bits. El byte bajo se denomina Registro PCL. Este Registro es
legible y escribible. El byte alto se denomina Registro PCH. Este Registro contiene
PC<12:8> bits y no es legible ni escribible en forma directa. Todas las actualizacio-
nes del Registro PCH se canalizan a trav s del Registro PCLATH.
STACK (PILA)
La pila permite que ocurra una combinaci n de hasta 8 llamadas de programa e
interrupciones. La pila contiene la direcci n de retorno de esta rama de la ejecuci n
de programas.
Los dispositivos de rango medio poseen una pila de hardware de una profundi-
dad de 8 niveles por 13 bits de ancho. El espacio de la pila no es parte de ning n
programa ni de espacio de datos y el puntero de la pila no es legible ni escribible. El
contador PC ( CP) es colocado a la pila v a PUSH cuando una instrucci n CALL es
ejecutada o cuando una orden de interrupt produce una ramificaci n. La pila ejecu-
28 Microcontroladores PIC
Arquitectura de un PIC
EJEMPLOS:
1: Direccionamiento Indirecto.
• El archivo de registro 05 contiene el valor 10h.
• El archivo de registro 06 contiene el valor 0Ah.
• Cargue el valor 05 al registro FSR.
• La lectura del registro INDF devuelve el valor de 10h.
• Incremente el valor del registro INDF por uno (FSR = 06).
• La lectura del registro INDF devuelve ahora el valor de 0Ah.
La lectura indirecta de INDF mismo (FSR = 0), producir 00h. Escribir al registro
indirectamente resulta en una no-operaci n, si bien el bit de STATUS puede quedar
afectado.
Un programa simple para desactivar las locaciones 20h-2Fh del RAM, usando el
direccionamiento indirecto, puede verse en el siguiente ejemplo
Una direcci n efectiva de 9 bits se obtiene por la concatenaci n del registro FSR
de ocho bits con el bit IRP (STATUS<7>), como vemos en la figura 17.
Microcontroladores PIC 29
Arquitectura de un PIC
Figura 17
PORTS I/O
Algunas patas de ports I/O est n multiplexadas con una funci n alternativa para
las prestaciones perif ricas del dispositivo. En general, cuando se activa un perif -
rico, esta pata no debe usarse como pata I/O de uso general.
30 Microcontroladores PIC
Arquitectura de un PIC
te valor es modificado, y despu s escrito al latch del port. La pata RA4 es multiple-
xada con el temporizador, entrada Timer0 de la entrada del m dulo del clock y se
transforma en la pata RA4/T0CKI. Esta pata RA4/T0CKI es la entrada de un dispa-
rador Schmitt y posee una salida de colector abierto. Las dem s patas de port RA
poseen niveles de entrada TTL y son drivers completos del tipo CMOS. En la figura
18 vemos el diagrama en bloques de una de las patas RA3 a RA0.
Para inicializar el PORTA, podemos realizar la siguiente rutina:
CLRF PORTA ; borro el contenido del registro PORTA
Figura 18 Figura 19
En el ejemplo del programa, las dos primeras instrucciones no tienen nada que
ver con la definici n de las patas del puerto A, en realidad la inicializaci n comienza
con la tercera instrucci n o l nea de programa. En la figura 19 se observa el diagra-
ma de la pata RA4.
Una s ntesis de la funci n que cumple cada pata del PORT se muestra en la si-
guiente tabla:
Microcontroladores PIC 31
Arquitectura de un PIC
32 Microcontroladores PIC
Arquitectura de un PIC
Microcontroladores PIC 33
Arquitectura de un PIC
• Temporizador/contador de 8 bits.
• Legible y escribible.
• Selector de clock interno o externo.
• Prescalador de 8 bits programable por software.
• Interrupt por exceso de FFh a 00h.
Figura 22
34 Microcontroladores PIC
Arquitectura de un PIC
Figura 23
Para mayor simplicidad, nos referimos a este contador como prescaler. Observe
que s lo existe un divisor que es compartido mutuamente en forma exclusiva por el
m dulo del Temporizador y el Temporizador del Watchdog. De esta manera, una
asignaci n del prescaler para el m dulo del temporizador significa que no hay divi-
sor para el Temporizador del Watchdog y viceversa.
Microcontroladores PIC 35
Arquitectura de un PIC
Interrupci n de Timer0
La interrupci n de TMR0 se genera cuando el registro TMR0 excede su capaci-
dad de FFh a 00h. Este exceso ajusta el bit T0IF (INTCON<2>). La interrupci n pue-
de ser enmascarada limpiando el bit T0IE (INTCON<5>). El bit T0IF se limpia por
software por la rutina de service del m dulo Timer0, antes de reactivar esta interrup-
ci n. La interrupci n TMR0 no puede despertar al procesador de SLEEP, debido a
que el temporizador est desconectado durante SLEEP.
En la siguiente tabla vemos los registros asociados con el Timer.
36 Microcontroladores PIC
Arquitectura de un PIC
en forma de mapa directamente en el espacio de los archivos del registro sino que
es direccionada indirectamente mediante los Registros de Funciones Especiales
(SFR). Existen cuatro SFR usados para leer y escribir en esta memoria. Estos regis-
tros son:
• EECON1
• EECON2 (este registro no est implementado f sicamente)
• EEDATA
• EEADR
EEDATA contiene los datos de 8 bits para leer y escribir, y EEADR contiene las
direcciones de las locaciones del EEPROM que son accedidos. Los dispositivos
PIC16F84A poseen 64 bytes de datos de EEPROM con un rango de direcciones que
abarca de 0h a 3Fh.
La memoria de datos EEPROM permite leer y escribir bytes. Una escritura de by-
te borra autom ticamente la locaci n y escribe los datos nuevos (borra antes de es-
cribir). La memoria de datos EEPROM est preparada para ciclos elevados de leer
y escribir. El tiempo de escribir es controlado por un temporizador incorporado en el
chip. El tiempo de escritura puede variar con la tensi n y temperatura y tambi n en-
tre una unidad y otra. Para l mites exactos s rvase referir a las especificaciones de
corriente alterna.
Cuando el dispositivo posee protecci n codificada, la unidad CPU puede conti-
nuar de leer y escribir los datos en la memoria del EEPROM. El programador del dis-
positivo no tiene m s acceso a la memoria.
En la figura 24 vemos el registro EECON1 en su direcci n 88h.
Figura 24
Microcontroladores PIC 37
Arquitectura de un PIC
Ejemplo:
Lectura de EEPROM de Datos. Veamos como podr a ser la secuencia de un pro-
grama para leer una locaci n de memoria:
BCF STATUS, RPO ; pone a cero el bit 5 (RPO) del registro STATUS,
; dicho bit se usa para direccionamiento directo y,
; en este caso, elegimos el banco 0
38 Microcontroladores PIC
Arquitectura de un PIC
BSF STATUS, RPO ; pone a uno el bit 5 (RPO) del registro STATUS,
; dicho bit se usa para direccionamiento directo y,
; en este caso, elegimos el banco 1
BCF STATUS, RPO ; pone a cero el bit 5 (RPO) del registro STATUS,
; dicho bit se usa para direccionamiento directo y,
; en este caso, elegimos el banco 0
Ejemplo
Escritura de EEPROM de Datos. Veamos c mo podr a ser la secuencia de un
programa para escribir una locaci n de memoria:
BSF STATUS, RPO ; pone a uno el bit 5 (RPO) del registro STATUS,
; dicho bit se usa para direccionamiento directo y,
; en este caso, elegimos el banco 1
MOVLW 0x18 ; cargo al registro de trabajo con la direcci n
; de la memoria donde escribir el dato
Microcontroladores PIC 39
Arquitectura de un PIC
GOTO WI ;
BCF STATUS,R0 ; selecci n del banco 0
Verificaci n de Escritura
De acuerdo a la aplicaci n, la pr ctica de buena programaci n puede indicar que
los datos escritos a la EEPROM de Datos deben ser verificados. Este procedimien-
to debe ser usado cuando un bit de la EEPROM est muy cerca de su l mite espe-
cificado. Generalmente una falla de la EEPROM consiste en un bit que fue escrito
como 0 , pero se lee como 1 , debido a problemas.
Para verificar un dato escrito, debemos primero leer la posici n de memoria gra-
bada (si tomamos el ejemplo de reci n deber amos leer el dato contenido en la di-
recci n 22h); posteriormente deber amos cargar al registro W con el dato que espe-
ramos encontrar, realizar una resta entre el dato le do (en EEDATA) y el contenido
40 Microcontroladores PIC
Arquitectura de un PIC
de W, luego por medio del flag Z del registro de STATUS, nos fijamos si la diferen-
cia es cero; si esto ocurre, el programa continuar normalmente. Hay muchas for-
mas de hacer este proceso, pero una alternativa ser a:
BCF STATUS, RPO ; pone a cero el bit 5 (RPO) del registro STATUS,
; dicho bit se usa para direccionamiento directo y,
; en este caso, elegimos el banco 0
BSF STATUS, RPO ; pone a uno el bit 5 (RPO) del registro STATUS,
; dicho bit se usa para direccionamiento directo y,
; en este caso, elegimos el banco 1
BCF STATUS, RPO ; pone a cero el bit 5 (RPO) del registro STATUS,
; dicho bit se usa para direccionamiento directo y,
; en este caso, elegimos el banco 0
Microcontroladores PIC 41
Arquitectura de un PIC
En la pr xima tabla vemos los Registros y Bits asociados con la EEPROM de Da-
tos.
42 Microcontroladores PIC
Arquitectura de un PIC
(Power-up Timer = PWRT) que provee un retardo fijo de 72ms (valor nominal) al apli-
car tensi n VDD nicamente. Este dise o mantiene el dispositivo en Reset durante
el tiempo de estabilizaci n de la fuente de alimentaci n. Con estos dos temporiza-
dores incorporados, la mayor a de las aplicaciones no necesita circuitos de Reset
externos.
El modo de SLEEP ofrece una forma de apagado de muy bajo consumo. El
usuario puede despertar desde SLEEP mediante un Reset externo, fin de tiempo del
Temporizador de Watchdog o una Interrupci n. Se proveen varias opciones para los
osciladores para poder adaptar el componente a diferentes aplicaciones. La opci n
de oscilador RC ahorra costos del sistema aunque no es estable, mientras que la
opci n con cristal ahorra consumo, es muy estable pero es m s costosa. Como vi-
mos, en la palabra de configuraci n del PIC se debe decir qu tipo de oscilador se
va a emplear.
Bits de Configuraci n
Tal como vimos anteriormente en este cap tulo, los bits de configuraci n pueden
ser programados para leer 0 o quedar sin programaci n para leer 1 y de esta ma-
nera seleccionar diferentes configuraciones del dispositivo. Estos bits se encuentran
en la locaci n de memoria del programa 2007h.
A continuaci n vemos otro aspecto de la palabra de configuraci n:
Microcontroladores PIC 43
Arquitectura de un PIC
Figura 25
Oscilador RC
Para aplicaciones insensibles a variaciones temporales, el uso de la opci n de
oscilador RC ofrece ventajas adicionales. La frecuencia del oscilador RC es una fun-
ci n de la tensi n de la fuente, del valor de Rext, del valor de Cext y de la tempera-
tura de funcionamiento. Adem s de estos par metros, tambi n puede haber una va-
riaci n de la frecuencia del oscilador debido a las variaciones normales de los par -
metros del proceso. Adem s, las diferencias en las capacidades de conductores del
dispositivo puede introducir variaciones, especialmente con valores muy bajos de
Cext. El usuario debe tomar en cuenta asimismo variaciones debido a las toleran-
cias de los componentes externos R y C usados. La figura 3 de este cap tulo, mues-
tra c mo conectar una combinaci n RC al PIC16F84A.
Reset
El PIC16F84A distingue entre varios tipos de reset.
44 Microcontroladores PIC
Arquitectura de un PIC
Microcontroladores PIC 45
Arquitectura de un PIC
Leyenda:
u = sin cambios,
x = desconocido.
Leyenda:
u = sin cambios
x = desconocido
- = bit sin implementar, le do como 0,
q = valor depende las condiciones.
Notas 1: Uno o m s bits de INTCON ser n afectados para causar despertar.
Nota 2: Cuando el despertar se debe a un interrupt y el bit GIE es ajustado, el
contador PC se carga con el vector de interrupt (0004h).
46 Microcontroladores PIC
Arquitectura de un PIC
Nota 3: Los valores para cada condici n espec fica est n listados en la tabla de
condiciones de reset para el contador de programas PC y el registro de STATUS.
Nota 4. En todo reset del dispositivo, estas patas son configurados como entra-
das.
Nota 5: Este es el valor que se encuentra en el latch del port de salida.
Figura 27
Microcontroladores PIC 47
Arquitectura de un PIC
48 Microcontroladores PIC
Arquitectura de un PIC
Los bits de control que se encuentran en el registro INTCON (0Bh 8Bh) habili-
tan y configuran las interrupciones.
Para que se pueda producir una interrupci n por alguna de estas fuentes, el bit
Microcontroladores PIC 49
Arquitectura de un PIC
correspondiente debe estar en 1 , mientras que los bits se alizadores o flags que
est n en los registros INTCON y EEDATA (08h) informan si se ha producido la inte-
rrupci n cuando stos se ponen a 1 . Cualquiera de las interrupciones tambi n pue-
de sacar al procesador del modo de reposo SLEEP.
El bit GIE (Global Interrupt Enable) es el de activaci n global del permiso de in-
terrupci n, y se borra autom ticamente cuando aparece una interrupci n, con el ob-
jeto de evitar que se produzca otra interrupci n mientras se est atendiendo a la pri-
mera. Cuando por programa se retorna de la interrupci n con una instrucci n RET-
FIE, el bit GIE se vuelve a activar poni ndose a 1. Para el resto de los flags o bits
indicadores de interrupci n, no est previsto mecanismo de puesta a cero, por lo que
es el programa de atenci n a la interrupci n el que debe realizar el tratamiento de la
correspondiente interrupci n y adem s, el que debe poner el o los flags de indica-
ci n de interrupci n a 0. De no ser as , no se podr salir de la rutina de atenci n a
la interrupci n.
Esta familia de PICs posee un vector de interrupci n en la direcci n 0004h; esto
quiere decir que, sea cual sea la fuente de la interrupci n, el PC se carga con 0004h.
Por lo tanto, el programa de atenci n a la interrupci n debe encargarse de compro-
bar el estado de cada uno de los flags para saber cu l es la fuente de interrupci n
y actuar seg n el caso.
Si se necesita preservar alg n otro registro adem s del PC, cuando se atiende
una interrupci n, debe ser el propio programa de atenci n a la interrupci n el que se
encargue de salvar su estado al inicio de la rutina y de devolverlos al final del mis-
mo, de igual modo que se hac a en las subrutinas.
Por lo dicho, el P debe realizar determinados procesos autom ticamente mien-
tras que otros se ejecutan por programa, estos procesos son:
50 Microcontroladores PIC
Arquitectura de un PIC
Microcontroladores PIC 51
Arquitectura de un PIC
******************************************************
52 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
MANEJO DE LAS
INSTRUCCIONES DE UN PIC
INTRODUCCI N
Microcontroladores PIC 53
Manejo de las Instrucciones de un PIC
Figura 1
ADDWF f,d
54 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
Figura 2
Microcontroladores PIC 55
Manejo de las Instrucciones de un PIC
Figura 3
56 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
Figura 4
Microcontroladores PIC 57
Manejo de las Instrucciones de un PIC
Figura 5
Figura 6
Sobre las notas a las que hacemos referencia en dichas figuras, debe
tener en cuenta lo siguiente:
Nota 1. Al modificar un registro de entrada/salida (E/S) con una opera-
58 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
Microcontroladores PIC 59
Manejo de las Instrucciones de un PIC
EJEMPLO:
Queremos sumar el contenido del registro de trabajo con el n mero 10
expresado en hexadecimal, la instrucci n ser :
ADDLW H«10«
La notaci n H«10« significa que el n mero est expresado en hexadeci-
mal. Si la notaci n fuese D«10« significa que el n mero est expresado en
decimal y si fuese B«10« entonces el n mero est en notaci n binaria.
Volviendo a nuestro ejemplo:
Si antes de la instrucci n ten a en cada registro:
W = 21h (21h significa que el n mero est expresado en hexadecimal,
que es lo mismo que 0010 0001 b —expresado en binario-)
Al ejecutarse la instrucci n, se sumar n ambos n meros y el resultado
se guarda en el registro W, es decir:
W = 21 h + 10 h = 31 h (en hexadecimal),
W = 0001 0000 b + 0001 0000 b = 0010 0000 b (en binario)
60 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
W = 10 h REG = 31 h
Microcontroladores PIC 61
Manejo de las Instrucciones de un PIC
ANDLW B«00111001«
W = 0001 0010 b
Se realiza la operaci n:
W = 0001 0000 b
62 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
ANDWF ST,1
Antes de ejecutarse la instrucci n tenemos:
W = 1001 0110 b ST = 0001 1110 b
Se realizar la operaci n:
(1001 0110) AND (0001 1110) = 0001 0110
Es decir que en los registros, luego de ejecutada la instrucci n tendremos:
W = 1001 0110 b (no ha cambiado)
ST = 0001 0110 (se ha almacenado el resultado).
Microcontroladores PIC 63
Manejo de las Instrucciones de un PIC
EJEMPLO:
Queremos poner a 0 el bit N… 5 del registro DESC, luego la instrucci n
ser :
BCF DESC, 5
64 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
Queremos poner a 1 el bit N… 0 del registro DESC, luego la instrucci n ser :
BSF DESC, 0
Microcontroladores PIC 65
Manejo de las Instrucciones de un PIC
EJEMPLO:
GOTO DEC
GOTO SIM
66 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
Microcontroladores PIC 67
Manejo de las Instrucciones de un PIC
GOTO DEC
GOTO SIM
EJEMPLO:
DIV CALL RUTIN
68 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
CLRF REG
Si antes de la instrucci n:
REG = 5A h
Al ejecutarse:
REG = 00 h
flag Z = 1
Microcontroladores PIC 69
Manejo de las Instrucciones de un PIC
EJEMPLO:
CLRW
Si antes de la instrucci n:
W= 0011 1111 b
Al ejecutarse:
W = 00
flag Z = 1
70 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
CLRWDT
Si antes de ejecutarse la instrucci n:
WDT = 0000 0100 b
Al ejecutarse:
WDT = 0000 0000 b
Preescaler WDT = 0
bit de estado T0 = 1
bit de estado PD = 1
Microcontroladores PIC 71
Manejo de las Instrucciones de un PIC
EJEMPLO:
COMF DIS,0
Al ejecutarse:
DIS = 0011 1110 b
W = 1100 0001 b
flag Z = 0
72 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
DECF SINT,1
Al ejecutarse:
Microcontroladores PIC 73
Manejo de las Instrucciones de un PIC
EJEMPLO:
74 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
GOTO TEMP
Microcontroladores PIC 75
Manejo de las Instrucciones de un PIC
EJEMPLO:
INCF REG,1
REG = FF h
flag Z = 0
Al ejecutarse:
REG = 00 (FF h +1 h = 00 h)
flag Z = 1
76 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
Microcontroladores PIC 77
Manejo de las Instrucciones de un PIC
EJEMPLO:
IORLW 0x32
32 h = 0011 0010 b
78 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
W = 0010 1100 b
EJEMPLO:
IORWF RES,1
Si antes de la instrucci n:
Microcontroladores PIC 79
Manejo de las Instrucciones de un PIC
Al ejecutarse la instrucci n:
EJEMPLO:
MOVLW 0x50
W = 50 h
80 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
MOVF SER,0
Si el contenido del registro SER es:
SER = 12 h
Luego de ejecutarse la instrucci n se tendr :
W = 12 h
SER = 12 h
Note que en este caso si el operando hubiese sido SER,1, entonces el
propio contenido del registro se hubiese cargado en el mismo registro, lo
que se emplea para corroborar que realmente esa posici n de memoria tie-
ne el dato esperado.
Microcontroladores PIC 81
Manejo de las Instrucciones de un PIC
EJEMPLO:
MOVWF DIR
W = 4C h
Al ejecutarse:
DIR = 4C h
W = 4C h
MOVLW d 22
MOVWF DIR
82 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
NOP
Microcontroladores PIC 83
Manejo de las Instrucciones de un PIC
EJEMPLO:
RETFIE
EJEMPLO:
RETLW k
Como es l gico, esta instrucci n est ligada con las subrutinas, dado
que nos indica que sta ha terminado y el retorno inmediato con la carga
en el registro de trabajo W de un n mero que est expresado en la siguien-
te columna de la instrucci n. Adem s carga al CP con el valor que previa-
mente almacen en la PILA (STACK).
Esta instrucci n tarda dos ciclos de instrucci n.
84 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
Siempre W debe regresar con un literal (muchas veces ese literal es ce-
ro). Muchas veces es til esta instrucci n, especialmente cuando desea-
mos regresar al programa principal con alg n valor obtenido de la subruti-
na.
Microcontroladores PIC 85
Manejo de las Instrucciones de un PIC
EJEMPLO:
RLF REG,0
Si antes de la instrucci n:
86 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
RRF REG,0
Si antes de la instrucci n:
Microcontroladores PIC 87
Manejo de las Instrucciones de un PIC
88 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
SUBLW 0x 05
a) Si antes de la instrucci n:
W = 01 h
Al ejecutarse la instrucci n:
W = (05 — 01) = 04
flag C = 1 ; el resultado es positivo
b) Si antes de la instrucci n: W = 05 h
Microcontroladores PIC 89
Manejo de las Instrucciones de un PIC
c) Si antes de la instrucci n. W = 07 h
90 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
SUBWF REG,1
a) Si antes de la instrucci n:
REG = 04 h
W = 02 h
Al ejecutarse la instrucci n:
b) Si antes de la instrucci n:
REG = 04 h
W = 04 h
Al ejecutarse la instrucci n:
c) Si antes de la instrucci n:
Microcontroladores PIC 91
Manejo de las Instrucciones de un PIC
32 + 70 = 102
92 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
SWAPF INDI,0
Si antes de la instrucci n:
Microcontroladores PIC 93
Manejo de las Instrucciones de un PIC
EJEMPLO:
XORLW B 0011 1000
Si antes de la instrucci n:
W = 1011 0101 b
Al ejecutarse la instrucci n:
94 Microcontroladores PIC
Manejo de las Instrucciones de un PIC
EJEMPLO:
XORWF REG,1
Si antes de la instrucci n:
**************************************************
Nota 1:
En las instrucciones CALL y GOTO los 11 <10:0> bits de menos peso
corresponden al c digo de operaci n, mientras que los 2 bit de mayor pe-
so <12:11> los suministran respectivamente los bit 4 y 3 del registro
PCLATH que realmente apuntan a una de las 4 p ginas del mapa de me-
moria que puede direccionar el PC.
Microcontroladores PIC 95
Manejo de las Instrucciones de un PIC
Palabras de Configuraci n
e Identificaci n
Los PIC de la gama media disponen de una palabra de configuraci n de
14 bits que se escribe durante el proceso de grabaci n del dispositivo y que
debe hacerse de acuerdo con el sistema en el que se va a insertar. Dichos
bits ocupan la posici n reservada de memoria de programa 2007h. La es-
tructura de la palabra de configuraci n es la siguiente:
**************************************************************
96 Microcontroladores PIC
Aprendiendo a Programar
Aprendiendo a Programar
Introducci n
Hace aproximadamente tres a os, comenzamos a mostrar c mo se deben
escribir programas en nuestra querida revista Saber Electr nica; fue as que
tanto Federico Prado, el Ing. Alberto Picerno y este autor hemos escrito art cu-
los con la explicaci n de programas sencillos que le permitan aprender a utili-
zar las instrucciones del PIC 16X84.
En este cap tulo utilizaremos la misma t cnica comenzando desde el princi-
pio, bas ndonos en prototipos reales.
Circuito de un Entrenador
En Saber Electr nica hemos desarrollado un entrenador para aprender a
programar y cargar PICs, este entrenador se muestra en la figura 1.
Figura 1
Microcontroladores PIC 97
Aprendiendo a Programar
Sea el programa:
List p = 16C84
Es el encabezado del programa que le indica al ensamblador qu tipo de
PIC se est utilizando para que ste pueda reconocer qu set de instrucci n de-
be utilizar.
ptob equ 06
Nombr a la variable ptob y la coloqu en la direcci n 06 de la RAM, esta
direcci n est reservada para el PUERTO B , es decir, ratifico que ptob es el re-
gistro del PORT B. Cuando, m s adelante, deba enviar informaci n al puerto b,
s lo debo mencionar ptob.
Reset org 0
Significa que al realizarse el reset, el programa comienza por la posici n 0
de la memoria del programa. Pero de inmediato pasa a la posici n 1 que tiene
98 Microcontroladores PIC
Aprendiendo a Programar
Inicio movlw 0
Con esto se carga el registro w con el hexadecimal 0 (es decir el binario
00000000)
tris ptob
Esta instrucci n env a la informaci n del registro W al puerto B para indicar-
le que todos sus pines son de salida (si se hubiera cargado el binario 11111111
todos los pines ser an de entrada y si se hubiera cargado 11001010 algunos se-
r an entradas y otros salidas).
movlw 0f
Carga el registro W con el hexadecimal 15 que equivale al binario 00001111 y
movlw ptob
Env a el valor cargado al puerto "B" que producir un estado alto en RB0,
RB1, RB2 y RB3 y un estado bajo en RB4, RB5, RB6 y RB7. La informaci n del
puerto pasa al buffer que lleva las patas 15, 16, 17 y 18 de un PIC16C84 a ma-
sa encendiendo los leds D7, D8, D9 Y D10.
Ciclo nop
Realiza una rutina nula, es decir, que no efect a operaci n alguna.
goto ciclo
Env a el programa hacia la etiqueta "ciclo". Las dos ltimas operaciones
hacen que al ejecutarse un programa, ste se quede en un lazo que se llama
loop cerrado .
La nica manera de salir de este loop es pulsando RESET. Entonces se ob-
serva que los leds se apagan hasta que se suelta el pulsador y el programa co-
mienza nuevamente por la etiqueta RESET.
Obviamente, este programa debe ser editado en un utilitario adecuado
(MPLAB, por ejemplo) y luego debe ser compilado (utilizando el MPASM o el
mismo MPLAB) para obtener el archivo .hex que me permitir cargar el PIC que
deber colocar en el circuito de la figura 1 para verificar que realmente hace
lo que estamos diciendo.
Para cargar el PIC con el programa .hex se utiliza un prototipo adecuado
(cargador de PICs) que consiste en un circuito que es manejado por un progra-
ma para permitir la carga. Todo este proceso se explica con total claridad en el
primer texto de esta serie, titulado: Todo Sobre PICs .
Microcontroladores PIC 99
Aprendiendo a Programar
Fig. 2
Encendido Intermitente
de un Led
Si Ud. no quiere armar el entrenador completo (que sirve para un sinf n de
aplicaciones que se ense an en el Curso: Todo Sobre PICs , que est en ven-
ta en varios pa ses de Am rica a trav s de la red de distribuidores de Editorial
Quark y Centro Ja-
pon s - vea en Inter- Fig. 3
net la direcci n:
www.webelectroni-
ca.com.ar) le propo-
nemos que arme s -
lo lo imprescindible
para encender los
leds seg n el circuito
de la figura 3; un cir-
cuito tan simple que
no requiere plaque-
ta, puede armarse ti-
po ara a sobre la
mesa de trabajo,
porque no es algo para mostrar sino para aprender. Observe que los leds est n
conectados directamente al puerto B predispuesto como de salida por el pro-
grama. En efecto, el puerto de salida admite perfectamente los 3mA que toma
cada led al conectarlos con resistores en serie de 1k5. Como nica precauci n
para el armado debe utilizar un z calo de 18 patas para el PIC. Las conexiones
de X1, C1 y C2 deben ser lo m s cortas posibles. Si usted repara TV y video-
grabadores seguramente tendr cristales de 3,58MHz (de PALN o NTSC o in-
clusive de PALM). Puede utilizarlos sin mayor inconveniente pero recuerde que
los tiempos calculados estar n afectados de un coeficiente igual a 3,58/4.
Nuestro programa va a hacer uso de lo que se llama una subrutina. Una su-
brutina es como un segundo programa anexo al principal. El programa principal
va a la subrutina a trav s de una instrucci n "CALL" que no hab amos emplea-
do hasta ahora.
Esta instrucci n salta del paso del programa donde se encuentra, a la su-
brutina y cuando se ejecuta por completo vuelve al mismo punto del programa
en donde se hab a producido el salto.
Una subrutina debe estar siempre dirigida a una etiqueta para que el salto
se realice con un destino bien determinado. Por lo general, las subrutinas se es-
criben a continuaci n del programa principal, pero esto es simplemente una
costumbre, bien podr an ubicarse en otro lugar como el principio. Recuerde que
todo comienza cuando se pulsa reset o cuando se enciende el equipo y, en ese
momento, se ejecuta lo indicado con la etiqueta reset y se salta al rengl n si-
guiente. Cuando termina una subrutina, se debe colocar una referencia "RE-
TURN", que significa retornar al siguiente rengl n del programa principal don-
de est la invocaci n a la subrutina.
Otra instrucci n nueva que no hab amos utilizado es "decfsz" que siempre
va acompa ada de un n mero hexadecimal. Esta instrucci n se utiliza para
programar retardos. Por ejemplo, si su paso del programa fuera:
CONST equ 06
decfsz CONST
A esta altura Ud. debe recordar unas cuantas sentencias y todav a faltan
unas cuantas m s (recuerde todo lo visto en el cap tulo 2). Como ayuda para
que no deba estudiar todas las sentencias de memoria le decimos que lo me-
jor es relacionarlas con palabras comunes del idioma ingl s. Por ejemplo "equ"
proviene de "equal" que significa igual. En la figura 4 le damos una tabla con
m s ayudas.
Fig. 4
Para dise ar un programa usted debe tener en claro la funci n del proyec-
to. En nuestro caso queremos que al encender la fuente el led conectado a RB0
se encienda y apague con un tiempo que pueda modificarse f cilmente para al-
terar el programa. Al apretar el pulsador de reset se debe apagar el led y al sol-
tarlo se encender luego de un retardo y continuar alternando per odos de en-
cendido y apagado.
;===========================================================
; Secuenciador de encendido de un led
list p=16C84 ;micro PIC16C84
;===========================================================
portb equ 06 ;el puerto b se ubica en la dirección de
;memoria RAM06
reg1 equ 0c ;asignación de los registros donde se cargan los
reg2 equ 0d ;diferentes literales
reg3 equ 0e ;
grueso equ 40 ;al literal 40 lo llamamos grueso
medio equ 40 ;al literal 40 lo llamamos medio
fino equ 50 ;al literal 50 lo llamamos fino
;===========================================================
reset org 0 ;un reset envía a la posición 00 de la memoria
;de programa.
Goto comienzo ;reenvío al comienzo del programa
;===========================================================
La subrutina comienza cargando los registros de uso general con los n me-
ros hexadecimales declarados en el encabezado. Luego que los tres registros
especiales est n cargados con los hexadecimales 30, 40 y 50 se comienza a
decrementar el registro 3 de a una unidad; mientras el registro tenga un n me-
ro mayor o igual a 1 se contin a este proceso, pero al llegar a cero se salta a
la siguiente sentencia que justamente es un "goto". Es como si el control retor-
nara y fuera a dem1 tantas veces como lo indica el n mero hexadecimal carga-
do en el registro 1. Luego la subrutina pasa a la siguiente sentencia que co-
mienza a decrementar el n mero cargado en reg2, s lo que el "goto" es a la eti-
queta dem2 que es anterior a la dem1, es decir, que se vuelve a pasar por
"dem1" a hacer todo el primer decremento del n mero guardado en "reg3" y re-
ci n despu s se hace el siguiente decremento en el registro "reg2". Cuando
"reg2" llega a cero se produce el primer decremento de "reg3" y para que se
produzca el segundo tienen que decrementarse a cero "reg2". En una palabra,
que la subrutina da much simas vueltas sobre "dem 1", muchas sobre "dem2"
y pocas sobre "dem3". Finalmente cuando "reg3" llega a cero, se pasa retlw
que reenv a el control al programa principal justo en la sentencia que invoc a
la subrutina pero antes de retornar lleva el registro w a cero. El programa ter-
mina en "end" que no puede considerarse como una sentencia, ya que no rea-
liza ninguna tarea; sin embargo, su existencia es imprescindible para que el
programador de PICs d por terminada su tarea. Cuando no se coloca el pro-
grama ensamblador emite un mensaje de error.
Tenga en cuenta que le estamos ense ando a programar , es decir, a utili-
zar las instrucciones del set del PIC. Si Ud. es programador, estos ejemplos le
van a parecer muy torpes, dado que el experto sabe c mo utilizar rutinas que
permitan hacer lo mismo con menos esfuerzo de programaci n. Ud. est apren-
diendo como cuando comenz a sumar y en aquella oportunidad seguramente
le costaba entender que 1 + 1 es igual a dos, aunque hoy le parezca un ejem-
plo muy burdo.
Volviendo a nuestro programa, sabemos que la subrutina "demora" tiene
una cierta duraci n. Con un m nimo conocimiento de matem ticas podemos
calcular ese retardo en funci n de los n meros hexadecimales que hallamos
elegido.
Tomemos primero el "loop" (rulo) m s interno de la subrutina; mientras no se
cumpla que "reg 3" = 0 se consume un ciclo de instrucci n por vuelta (gen ri-
camente podemos decir que todas las sentencias consumen un ciclo salvo las
de salto como la "goto" que consume dos).
Fig. 5
btfss rot,4
Aqu se analiza el estado de 5 bit (bit 4, dado que el primer bit o bit menos
significativo es el bit 0), si ste es cero se continua con la sentencia siguiente ,
si es 1 se saltea en la siguiente secuencia. En la figura 9 se realiza un dibujo
que explica estas ltimas instrucciones.
Fig. 9
; SECUENCIADOR
Fig. 10
gura 11). Esta forma de onda es tambi n ideal para controlar la respuesta en
frecuencia del amplificador de potencia, sin necesidad de realizar varias medi-
ciones con un oscilador de audio. Un amplificador sobrecompensado en fre-
cuencia (realce de agudos) producir sobreimpulsos en los escalones y uno
subcompensado (falta de agudos) redondear los frentes (figura 12).
Fig. 11
Fig. 12
Fig. 13
vez armada la serie y con CI1 fuera del z calo se deben controlar las tensio-
nes continuas en las uniones de los resistores con un t ster digital.
Los resistores R6 a R9 y R11 a R14 se utilizan como reparadores para fa-
cilitar el service. En el uso normal no cumplen funci n especial alguna.
El reset es autom tico al encender la fuente de 5V a trav s de R10 y C3 que
demoran el crecimiento de la tensi n sobre el terminal 4 (MCLR ).
El puerto A se conecta con resistores de 1k‰ a los +5 V para evitar capta-
ciones espurias. La salida de se al en escalera se produce sobre la conexi n
com n de salida de las llaves anal gicas y se aten a con el fin de reducir la im-
pedancia de salida mediante R24 y RV1. La tensi n de salida m xima es de
100mV pap aproximadamente. La nica modificaci n que requiere el progra-
ma es la modificaci n de las constantes literales para que cada escal n dure
12 S. (8 escalones duraran 8 x 125 = 1000 S = 1mS).
Si repasamos la secci n de la subrutina demora del art culo anterior vere-
mos que cada instrucci n simple demora 1 S y que el loop definido con "FI-
NO" dura 3 x FINO S. En nuestro caso, debemos buscar un n mero hexade-
cimal cuyo equivalente anal gico sea 125.
Lo m s simple es recurrir al tanteo, usando hexadecimales que terminen en
cero; sabiendo que el hexadecimal 10 corresponde al anal gico 16, podemos
deducir que el anal gico 20 corresponde al 32, el 30 al 48 y as sucesivamen-
Secuenciador de 8 Canales
Veamos un programa diferente al propuesto para rotar el encendido de 4
leds. Este programa sirve para encender 8 leds en sucesi n de la figura 3 y con
algunos cambios para excitar las llaves anal gicas del generador de escalera
que acabamos de analizar:
Compilaci n de un Programa
Cuando uno tiene escrito el programa con el edit del DOS, debe verificarlo
exhaustivamente, controlar el encolumnado y los errores de sintaxis antes del
punto y coma separador. De cualquier modo siempre se puede deslizar un error
que provocar una falla en el programa. Si usted trabaja correctamente, el pro-
grama ensamblador MPASM le avisar de los errores y le dar algunas adver-
tencias tiles sobre el uso de algunas sentencias.
Para ver c mo funciona sto, volvamos a escribir el programa del secuen-
cial de 8 canales modific ndolo de modo que presente algunos errores:
editar el archivo .ERR con el mismo editor de DOS que estamos utilizando.
Por cada error o advertencia hay una l nea de respuesta que comienza con
"WARNING" (advertencia) o ERROR (error) y un n mero de c digo por el que se
pueden obtener m s detalles sobre el error o la advertencia, luego el nombre de ar-
chivo analizado con el rbol de directorios correspondiente y el n mero de l nea que
contiene el error o advertencia. Luego un separador dos puntos y el tipo de error o
advertencia. Los mensajes de advertencia no impiden el desarrollo de la posterior
programaci n, pero los mensajes de error s . Vamos a atender primero los mensajes
de error y luego los de advertencia. No es necesario numerar las l neas de progra-
ma a mano, y a veces no es conveniente, porque la falta de un separador (punto y
coma) puede generar l neas fantasmas y confundirnos. Es preferible editar el archi-
vo .lst (en nuestro caso SECU8NO.LST) que tiene al mismo tiempo los mensajes de
error y el n mero de l nea. Ver figura 16.
En la primera columna se marcan los errores o precauciones y la localizaci n y
valor de las variables. En la segunda, el n mero de l nea y a continuaci n la l nea de
programa. El primer error lo tenemos indicado antes de la l nea 00005: y nos indica
que las variables o s m-
bolos LA y VARIABLE
no est n definidos pre-
viamente y que se pro-
duzco un cambio de
operador. Mirando la l -
nea se observa que el
nico problema es que
falta el separador de
comentarios y el en-
samblador confundi el
comentario con una
sentencia.
El siguiente error
est en la l nea 12 y
nos indica que el error
se produce despu s de
la primera columna, en-
tre par ntesis se en-
cuentra el argumento u
orden equivalente
(molw por movlw). En la
l nea 22 est el siguien-
te error y consiste en la Fig. 16
orden GOTO escrita como GORO. Veamos ahora los mensajes de advertencia. El
primero est en la primer l nea y se produce porque esta l nea est dirigida al pro-
gramador y no puede ser entendida por el ensamblador.
Se puede dejar sin inconvenientes. La siguiente est en la l nea 12 y seguramen-
te va a desaparecer cuando se corrija la orden movlw. Luego pasamos a la l nea 13
en donde est la orden TRIS; ocurre que en los microprocesadores m s modernos
esta orden se modifica por otra m s compleja; por ahora se puede seguir usando
TRIS para programar los puertos si se usa el 16C84 o el 16F84. La siguiente precau-
ci n est en la l nea 18 y se debe a que el decimal 50000 est fuera del rango ad-
mitido por el microprocesador. Esta precauci n debe ser considerada modificando el
valor por uno menor. La siguiente precauci n est en la l nea 22 y se corregir al
reemplazar GORO por GOTO. Al corregir los errores y agregar el separador, el
MPASM va a reportar s lo dos advertencias. Una en la l nea 1 por la declaraci n del
microprocesador dirigida al programador de PICs y la otra es la referida a la orden
TRIS que puede ser ignorado por el momento.
A) El primer paso es colocar el PIC en el z calo del programador con se ales y fuentes
a potencial de masa.
B) Levantar la tensi n de fuente VDD a un potencial de 5V – 0,2V por la pata 14 (VDD).
C) Levantar la tensi n de fuente VPP a un potencial de 13V – 0,3V por la pata 4 (MCLR
NEGADO).
Fig. 17
len a una frecuencia de 10MHz). Para evitar problemas todos los programadores tra-
bajan a velocidades inferiores a la m xima, sobre todo considerando que la capaci-
dad de memoria no es muy grande y para el uso casero no son imprescindibles gran-
des velocidades de grabaci n.
Luego de grabar un PIC se puede verificar que su programa haya sido correcta-
mente grabado. Esto se realiza utilizando la misma pata 13 del PIC (RB7) que, co-
mo sabemos, es de I/O (Input/Output ; entrada/salida).
La transformaci n del modo de escritura a lectura no requiere cambios de hard-
ware; es decir que vale lo indicado en la figura 17. El micro detecta los primeros bit
emitidos para saber si debe grabar o leer y luego transforma RB7 en puerto de sali-
da para poder leer los datos grabados. As contin a todo hasta el final de la lectura
de datos.
La mejor prueba para saber si la grabaci n es exitosa consiste en modificar la
tensi n de la fuente VDD desde 4 a 6V. Primero se debe realizar una verificaci n a
5V exactos, luego se debe pasar a 6V y realizar una nueva verificaci n; por ltimo
ubicar la fuente en 4V y realizar la ltima prueba.
Esta verificaci n es sumamente importante porque un PIC mal grabado puede
presentar fallas en su funcionamiento o peor a n puede funcionar correctamente al
principio pero borrarse en pocos d as.
Vamos ahora a adaptar nuestro programador para que funcione con el software
NOPP.
Las diferencias entre un programador y otro muchas veces se deben a la utiliza-
ci n de diferentes patas del puerto paralelo de la PC. En efecto el software del pro-
gramador puede elegir diferentes patas para utilizarlas como entradas y salidas de
datos serie. Tambi n es posible que se utilicen otras patas para generar las tensio-
nes de control de fuentes y, por ltimo, algunos software s lo controlan la fuente
VPP; que es justamente el caso que nos ocupa. Por ltimo los programadores m s
completos utilizan una fuente regulada que puede ajustarse entre 4 y 6V para com-
probar la efectiva grabaci n de los datos.
En la figura 18 realizamos dos modificaciones. Por un lado agregamos la llave
LL1 para operar la fuente de 5V a mano. Cuando la llave est cerrada Q1 conduce
y el micro est alimentado con 5V por la pata 14. La acci n de la llave se controla
por el encendido del led verde. Por lo tanto, usted debe colocar el PIC en el z calo
o retirarlo s lo cuando el led verde est apagado.
Con referencia a la fuente agregamos un regulador LM317 en lugar del 78L5 que
tiene la posibilidad de poder programar su tensi n de salida. En efecto el preset RV1
en un extremo debe ajustar la salida en 4V y en el otro lo debe ajustar en 6V.
Tanto la secci n de fuente como el volt metro necesitan ajustes a realizar con un
t ster digital. La fuente requiere el ajuste de R21. Comience colocando resistores de
1k‰; luego debe variar ambos valores hasta que la salida cambie entre los l mites
Fig. 18