Beruflich Dokumente
Kultur Dokumente
Estudiantes y Aficionados
Fig. 3
un temporizador de arranque del oscilador de CLOCK, un (unidad arimtica y lgica). En este sector es imprescin-
circuito de reset y un circuito llamado de vigilancia o dible utilizar un registro ya que una operacin aritmtica
WATCHDOG. Los dos primeros bloques procuran un o lgica siempre se efecta entre dos nmeros. Los n-
arranque ordenado para no producir una carga al mismo meros binarios que deben procesarse se toman de la me-
tiempo sobre la fuente. Por ltimo, existe un circuito con moria de datos, el primero se acumula en el registro de
un nombre curioso: perro guardin. Su funcin es estar trabajo o registro W (de Work = trabajo) el segundo es el
vigilante el mximo de tiempo que tarda el microprocesa- presente en el instante en que se invoca la memoria de
dor en completar su programa (o mejor sera decir, la de- datos. Como las operaciones pueden ser encadenadas
rivacin ms larga de su programa) y en caso de superar- (cuando el resultado sirve como operando de la siguien-
se ese tiempo, provocar un reset automtico porque el te operacin, tal como el caso de un producto) el registro
microprocesador se qued trabado en alguna parte de su W tiene un retorno a la ALU.
programa. Tambin se dice que el microprocesador se Vemos adems que la ALU est comandada por el
qued colgado o congelado. bloque MUX (MUltipleXador). En efecto, la ALU requiere
Este bloque de circuitos no trabaja independiente- que se le enven nmeros para procesar que le lleguen
mente sino que requiere conexiones al exterior y al inte- desde la memoria de datos, pero antes se la debe predis-
rior del dispositivo. Por ejemplo, no siempre son utilizados poner para que efecte la operacin requerida (compara-
y es el programa quien determina su utilizacin y adems cin, rotacin de dgitos, etc.).
ajusta sus parmetros. Esto se realiza a travs del bloque El registro de estado o estatus colabora durante las
de control o decodificador de instrucciones. operaciones matemticas. Piense cmo opera Ud. para
Analicemos ahora la seccin de arriba a la izquierda realizar una resta: primero ubica el primer nmero, luego
en donde observamos la memoria de programa, el conta- el segundo y despus comienza a analizar los bits menos
dor de programa, el registro de instrucciones y la pila o significativos (las unidades), pero si el nmero de arriba
STACK de 8 niveles. Cuando hablamos de registros nos es menor que el nmero de abajo, entonces toma presta-
referimos a pequeas unidades de memoria transitoria, do de la columna de las decenas, luego debe recordar es-
construida por lo general con un registro de desplaza- to porque el nmero de arriba en la columna de las dece-
miento como los analizados en el rey micro. Son memo- nas se redujo en una unidad. En realidad, aunque se tra-
rias voltiles que se utilizan para guardar informacin por te de una operacin entre dos nmeros su ejecucin re-
un tiempo mnimo, con el fin de realizar una operacin quiere guardar lo que se llama acarreo en otro registro y
compleja de varios pasos. ste no es otra cosa ms que el registro STATUS.
El contador de programa es el responsable de que el El PIC16C84 contiene adems de todo lo visto una
microprocesador vaya analizando las instrucciones en or- memoria RAM de registros que puede ser llamada desde
den ascendente. Este guarda el nmero de instruccin en el registro de instruccin a travs de un multiplexador de
el STACK y la instruccin misma la pasa al registro de ins- direcciones. Esta seccin slo se utiliza en desarrollos
trucciones desde donde se enva al resto del microproce- avanzados. Ahora bien, un microcontrolador sin programa
sador. El STACK es, en realidad, una pila de registros (en no sabe hacer nada, es como un nio recin nacido; tie-
nuestro ejemplo hay 8), debido a que el programa puede ne algunos reflejos condicionados como el de succin
tener derivaciones (en la jerga LOOPS, rulos o subpro- que le permite alimentarse pero no sabe hacer ms que
gramas). Cuando se termina de ejecutar un loop se debe eso. Nosotros deberemos ensearle a realizar acciones y
volver al mismo punto del programa en donde se haba lo vamos a hacer como a un beb, paso a paso. Su capa-
producido la bifurcacin y eso es posible porque ese n- cidad de aprendizaje es enorme y sumamente variada. Le
mero de instruccin qued guardado en uno de los regis- vamos a ensear a llorar a intervalos regulares, a encen-
tros de la pila. Es comn que un loop tenga, a su vez, un der luces, a sumar, a restar, etc.
loop secundario y cuando se ejecuta ese loop secundario Ensearle significa programarlo y eso se realiza con
se debe volver al mismo punto del loop primario, eso se una plaqueta de programacin que depende de cada
consigue con guardar ese nmero de instruccin del loop marca y modelo de microcontrolador. Antiguamente los
secundario en otro registro de la pila. microprocesadores tenan una ventanita transparente y
Analicemos ahora la seccin inferior derecha. En ese era necesario exponerlos a la luz ultravioleta para borrar
sector se ubican los bloques responsables de efectuar su memoria e introducir un programa nuevo. Actualmente
operaciones matemticas y lgicas binarias; recordemos cuentan con memorias que no tienen este requisito. Bas-
que el nombre ALU proviene de Aritmetic Logic Unite ta con cargarlos con un programa para que se borre el
provee un retardo al
Figura encendido o posterior
11 al pulsado de reset
porque C1 se cargar
lentamente a travs
de R1 con una cons-
tante de tiempo de
Fig. 10 22k x 10F =
220mS.
El resistor R3 limi-
ta la corriente de
descarga de C1 a
El Reset valores compatibles con sus caractersticas de corriente
de pico mxima.
El PIC se resetea cuando la pata 4 (MCLR negada) D1 descarga a C1 cuando la tensin de fuente decae
se pone a potencial bajo. Para simplificar el circuito de re- para permitir un reset inmediato cuando la fuente se apa-
set el PIC posee un temporizador interno que permite ga y se enciende en rpida sucesin. R2 limita la corrien-
realizar un reset automtico cuando se aplica tensin de te de reset, tomada desde el microprocesador. Este se-
5V. En estos casos el circuito externo de reset slo impli- gundo sistema se suele utilizar cuando se requiere un re-
ca el uso de un resistor de 10k entre la pata 4 y fuente seteado remoto a travs de varios metros de cable que
tal como se muestra en la figura 11. podran captar zumbido (C1 reduce la impedancia del cir-
En muchos circuitos es necesario realizar un reset cuito de reset).
manual y para ello
existen dos posi-
bilidades, una es Fig. 12
utilizar slo el
temporizador in-
terno (por progra-
ma) y la otra es
agregar una cons-
tante de tiempo
exterior como se
muestra en la fi-
gura 12. En el se-
gundo circuito C1
programa en un lenguaje entendible por el usuario, nor- moria de programa del PIC. Tambin se puede emplear
malmente conocido como assembler. Los PIC basan su cualquier otro cargador, hasta iuncluso se podran cargar
programacin en un set reducido de instrucciones que los datos manualmente, tal como veremos oportuname-
permiten editar el programa generando un archivo con nte. Todos los programas cargadores precisarn de un
extensin asm. circuito elctrico o hardware para poder realizar la fun-
Existen programas que se encargan de traducir el cin de carga.
programa escrito en lenguaje assembler (asm) a progra-
ma escrito en lenguaje de mquina (hex); a estos progra-
mas se los denomina traductores o ensambladores. LOS CARGADORES DE PICS
Por lo tanto, para escribir un programa y cargarlo en
un PIC precisamos: Dijimos que un cargador de PIC debe poseer por un
lado el circuito que permita cargar el programa desde una
Un utilitario o programa que nos permita escribir el computadora (hardware) y el programa que permita ma-
juego de sentencias a cargar en la memoria de programa nejar a dicho circuito para realizar la operacin de carga
del PIC. Este utilitario es un editor y como ejemplo tene- (software). El circuito debe ser muy simple.
mos el MPLAB. Vamos a suponer que no tenemos un dispositivo pro-
Un utilitario o programa que nos permita traducir el gramador a nuestra disposicin; es decir que deberemos
programa escrito en assembler a lenguaje de mquina armar tambin un dispositivo programador de nuestros
para que podamos cargarlo en el PIC. A ese programa se PICs que se conecte al puerto paralelo de una PC (el
lo denomina ensamblador y como ejemplo tenemos al puerto de impresora).
MPASM. Nuestra intencin es que construya un dispositivo pa-
Un utilitario para cargar el archivo que tiene el pro- ra programar PIC que sea muy sencillo de modo que se
grama en lenguaje de mquina (archivo con extensin pueda armar en el mismo protoboard y que se conectar
hex) en la memoria del PIC. A estos programas se los de- a la PC por intermedio de una manguera.
nomina cargadores y como ejemplo tenemos al NOPPP, Como todos sabemos, un dispositivo para una PC
al PIC PRO y a tantos otros, muchos de los cuales men- (hardware), siempre necesita un programa que lo contro-
cionaremos ms adelante. le (software). Nuestra intencin es que Ud. no compre na-
da ms que lo imprescindible; as que vamos a usar un
Pero tambin existen otros utilitarios que permiten si- software gratuito llamado NOPPP que puede bajarse por
mular y emular un programa para ver cmo se compor- Internet. Ud puede bajar este programa, el MPLAB, el
ta antes de cargarlo en el PIC. MPASM y otros programas y utilitarios, siguiendo los pa-
El simulador permite detectar errores en el programa sos dados en la pgina de contenidos especiales de Sa-
(el MPLAB permite simular) para poder corregirlos. El ber Electrnica y, lo que es ms importante, en forma to-
emulador permite que una computadora se comporte co- talmente GRATUITA.
mo PIC siendo las patas del puerto, las correspondientes Para ello dirjase a: www.webelectronica.com.ar (si
a las del PIC. no tiene Internet o no sabe cmo se hace, lleve este es-
Esto quiere decir que si queremos hacer circuitos con crito a cualquier cybercaf y pdale al encargado que le
PICs, para poder predisponerlo adecuadamente precisa- baje los programas). Haga doble click sobre el cono
remos: password y luego digite la clave aiwa15.
Recuerde que cuando decimos programar nos esta-
Programa MPLAB: Para editar (escribir) un progra- mos refiriendo a disear un programa para un PIC y a la
ma en lenguaje assembler y as generar el archivo con persona que realiz ese trabajo la llamamos programa-
extensin asm. El MPLAB tambin me permite simular dor; cuando decimos cargar nos estaremos refiriendo a
el funcionamiento del programa para detectar errores y llenar con datos la memoria de un PIC y el dispositivo que
corregirlos. realiza esta funcin lo llamaremos cargador de PICs.
Programa MPASM: Para ensamblar o convertir el Aunque parezca increble nuestro amplio idioma no tiene
archivo asm en archivo hex con el objeto de cargarlo en una palabra precisa que diferenciara a la accin del apa-
el PIC. rato y se suscitaban graves confusiones al leer, por algo
Programa NOPPP: O cualquier otro cargador que tan simple. En realidad, s estaba acuado un trmino
permita ingresar el archivo con extensin hex en la me- prctico para el dispositivo: quemador de PICs, pero el
mismo slo se puede aplicar a aquellos PICs que slo se fricos tienen diferentes opciones: el clock puede ser a
pueden grabar una sola vez. Por otro lado, el trmino se cristal cuando se requiera precisin, o a RC (como en
puede confundir con un dispositivo que funcionando mal nuestro caso) cuando slo se requiere que la secuencia
quema a los PICs en lugar de cargarlos, tal como el au- de encendido tenga un tiempo aproximado. En cuanto al
tor mencionar con respecto a un programador comer- reset, ste puede ser externo con un pulsador o interno y
cial. automtico, cada vez que se conecta la alimentacin de
Navegando por Internet es posible encontrar gran 5V.
cantidad de programas cargadores de PICs, nosotros ha- Una vez definidas estas cosas se puede dibujar el cir-
remos referencia a los cargadores:
* Cargador NOPPP
* Cargador PROPIC
* Cargador Universal de PICs y EEPROM
* Cargador PIC800
* Cargador PP84
NOPPP es un programa de uso libre ampliamente di- cuito completo, tal como lo mostramos en la figura 13.
fundido que sirve para cargar PICs del tipo 16C84, 16F83 Observemos primero la seccin perifrica imprescin-
y 16F84, pero tambin se dn otros cargadores con sus dible. El clock est generado por un oscilador RC realiza-
respectivos programas, que sirven para otros componen- do con el PIC, R1 y C1 (elegidos para obtener una se-
tes. cuencia completa que dure un segundo aproximadamen-
PICPRO es un programador avanzado en relacin te), en tanto que el reset se realiza en forma automtica,
con el NOPPP y sirve para ser montado cuando no se cada vez que se enciende el equipo, por intermedio de
quieren correr riesgos con la PC que se est utilizando R6. Nuestro circuito de aplicacin no puede ser ms sen-
para cargar PICs y cuando se desea tener un trabajo li- cillo, slo utilizamos cuatro LEDs sobre las patas RA0 a
bre de errores (el NOPPP es un programa para aprendi- RA3 (puerto A tomado parcialmente) y sus correspon-
zaje). dientes resistores de pull up (resistores a fuente). Nada
El Programador Universal sirve para programar: ms simple y fcil de armar en un panel protoboard.
12C508, 12C509, 12C67X, 16C55X, 16C61, 16C62X,
16C71, 16C71X, 16C8X, 16F8X, 16F873/4/6/7, Qu ocurrira si compro los componentes, los armo
16C73/74/76/77. Tambin programa memorias EEPROM y pruebo directamente el circuito?
de la serie 24LCXX. No va a funcionar porque como el PIC no est instrui-
PIC800 es un programador para 16C84, 16F84, do para realizar ninguna funcin y los LEDs van a perma-
16F873/74/76/77. necer todos encendidos. El PIC tiene una memoria inter-
PP84 es un programador sencillo del tipo NOPPP de na que debe cargarse con nmeros binarios de 8 dgitos;
buenas prestaciones. exactamente tiene 48 posiciones de memoria (numera-
das desde el 0 hasta el 2F en nmeros hexadecimales),
Un circuito con PIC siempre se compone de dos sec- en donde se le indicar qu tarea debe realizar o qu da-
ciones. El circuito del dispositivo deseado y los necesa- tos fijos debe cargar para ejecutar esas tareas.
rios componentes perifricos imprescindibles para que el En nuestro caso activar transistores internos en algu-
PIC funcione, a saber clock y reset (la primer seccin nas patas del puerto A (predispuestas como salidas) de
cambia con cada proyecto, en tanto que la segunda pue- modo de generar cortocircuitos momentneos a masa en
de ser comn a muchos proyectos). Ambos circuitos peri- forma secuencial.
El dispositivo con un zcalo para conectar el PIC e mo es un hardware que deberemos usar ms adelante
instruirlo (cargarle los datos en la memoria de program- para programar otros PICs conviene armarlo en forma
na) se llama genricamente Programador de PICs, pe- ms definitiva utilizando una plaqueta de circuito impreso
ro nosotros en este artculo convenimos en llamarlo Car- o una plaqueta ojalillada. Si Ud. slo desea armar el cir-
gador de PICs y es como un apndice de nuestra PC, cuito de este artculo puede armar tanto el cargador co-
conectado con un cable al puerto paralelo de la misma. mo el circuito de aplicacin en dos lugares distintos del
Si la PC tiene dos puertos paralelos de salida se usa- mismo protoboard.
r uno para la impresora y el otro para nuestro programa- El PIC, como una memoria, tiene una pata que pre-
dor, si slo tiene uno, se desconectar provisoriamente la dispone el dispositivo para leer o para escribir. Si la pata
impresora para conectar el programador, o mejor an, se 4 del PIC est a un potencial comprendido entre 13 y 14
conectarn ambos dispositivos a travs de una caja se- V, el PIC est preparado para escribir los datos que pro-
lectora que se consigue en los negocios de computado- vienen de la PC. Si la pata 4 est por debajo de 6V, el dis-
ras y se usa para conectar dos impresoras a la misma positivo est previsto para ser ledo. Los datos a leer o es-
PC. cribir se ponen/obtienen de la pata 13 del PIC con la pa-
Si Ud. tiene un mnimo conocimiento sobre computa- ta 12 del mismo que opera como clock.
doras, sabr que un dispositivo conectado a la PC es to- Aquellos que conocen el proceso de carga de datos
talmente intil si no est acompaado de un programa en una memoria serie, no tendrn mayores inconvenien-
instalado en el disco rgido de la misma. En algunos ca- te en entender la frase anterior. Para aquellos que no co-
sos se necesitan dos programas, a saber: el driver del nocen el proceso explicamos lo siguiente:
dispositivo y un programa de aplicacin que utilice dicho Un PIC se lee/escribe accediendo a las diferentes po-
dispositivo. En el caso de dispositivos que se conectan en siciones de memoria por la misma pata por la que se ob-
el puerto paralelo, el programa driver no es necesario tienen/ingresan los datos (la pata 13). La seal primero
porque dicho puerto ya est debidamente habilitado para elige la posicin de memoria a ser leda/escrita, y luego
usar la impresora. Lo que s se requiere obligatoriamen- que esa posicin est accesible se escriben/leen los da-
te, es un software de aplicacin del programador que tos. El clock que se coloca en la pata 12 sirve para indi-
suele proveerlo el fabricante del mismo. car en qu momento se debe transferir la informacin.
Programadores y software de aplicacin de los mis- Los datos pueden estar sobre la pata 13 todo el tiempo
mos hay muchos. Algunos son muy simples y econmi- que Ud. desee, ya que no sern ni ledos ni escritos por
cos (tan econmicos que muchos se entregan gratuita- la PC hasta que se produzca un cambio de estado (de al-
mente por Internet, es decir que el autor regala el softwa- to para bajo) en la pata 12.
re y da las explicaciones para armar el hardware) y otros En la figura 14 mostramos las formas de seal indica-
son muy complejos y caros. La diferencia entre unos y Fig. 14
otros suele ser la posibilidad de aceptar ms tipos de
PICs (adems del 16C84 y 16F84 existen muchos otros)
e inclusive microprocesadores o memorias de otras mar-
cas. Tambin se diferencian en la velocidad a la cual car-
gan el PIC; los hay de alta productividad que trabajan con
un elevado flujo de datos y otros ms lentos que slo sir-
ven para tareas de aprendizaje.
En nuestro caso vamos a trabajar con un software
que se llama NOPPP, que es absolutamente gratuito y se
puede bajar desde Internet. Este software est previsto
para ser usado slo con los PIC16C84, PIC16C83 y
PIC16F84 que son los ms utilizados.
Con respecto al hardware, Ud. puede usar el que pro-
pone el autor del software que es muy sencillo o usar otro
que le propongo yo ms adelante y que tiene algunas
ventajas con respecto a una mejor forma de los pulsos de
programacin. El NOPPP es suficientemente sencillo co-
mo para implementarlo en un panel protoboard, pero co-
perfectamente predeterminada que debe respetarse a ul- del programa, el PIC analiza su predisposicin y si el
tranza. Las predisposiciones son tres y las vamos a ana- Watchdog timer (literalmente perro guardin) est habili-
lizar por orden: tado provoca un reset programado. En los programas
ms simples y donde se producen loops infinitos a prop-
a) La prohibicin de lectura. El PIC se programa pe- sito (de los que slo se sale tocando un pulsador), se
ro el programa no puede ser ledo. Cada tanto aparece in- suele dejar el perro guardin desconectado para evitar un
formacin en Internet sobre alguna empresa dedicada a funcionamiento errtico. Cada cargador de programas
leer PICs protegidos, sin embargo, an no he conseguido tiene un software diferente y esto implica que las predis-
leer ningn PIC protegido. Aclaremos que el programa posiciones anteriores, tambin llamadas fusibles de pre-
protegido no se puede leer, pero el PIC se puede volver disposicin se accionen con sentencias diferentes que
a grabar. El autor escuch tambin una especie que dice sern explicadas ms adelante.
que el PIC16Fxx fue creado por una supuesta filtracin
en el secreto del programa de los PIC16Cxx, pero el au-
tor no tiene pruebas de la certeza de esta noticia. EL CARGADOR NOPPP
b) Habilitacin del timer de reset. En el pinup del
PIC se puede observar que la pata llamada MCLR nega- El NOPPP es un software para un cargador muy sim-
do (4) tiene un doble uso. En principio sirve para predis- ple y efectivo. Realmente no tiene defectos importantes y
poner el PIC en grabacin o lectura, como ya fuera co- nos permite cargar los PIC 16C83, 16C84 y 16F84 en for-
mentado; pero cuando su tensin cae por debajo de 1V, ma muy econmica ya que el hardware correspondiente
el PIC se resetea y comienza la lectura del programa por slo requiere dos diodos rpidos de seal, un BC548 y 4
el principio. Este tipo de reset se llama reset a pulsador y resistores, adems de una fuente regulada doble de 13 y
se utiliza para provocar alguna accin como, por ejemplo, 5V y un conector para el puerto paralelo de la PC. Ms
comenzar una secuencia de encendidos de LEDS o en- adelante veremos el circuito completo pero para entender
cender un LED por un tiempo predeterminado. Este mo- el funcionamiento del cargador de programas nada mejor
do de funcionamiento requiere una accin externa de re- que el circuito simplificado de la figura 16. A propsito, el
set (apretar un pulsador). La misma accin de reset se nombre del software proviene de las iniciales de NO Pie-
puede conseguir en forma automtica cada vez que se ce Programer Pic, es decir: programador para PIC sin pie-
conecta la fuente de 5V. Este modo de trabajar slo re- zas en alusin a los muy pocos componentes que requie-
quiere que la pata MCLR (pata 4) est permanentemen- re. Las patas de comunicacin con el puerto paralelo de
te conectada a 5V (con un puente o un resistor de 1k) y la PC estn indicadas como 1J1, 2J1, etc, ya con J1 de-
que el PIC est predispuesto con el Power-up Timer en signamos al conector de entrada y el nmero inicial indi-
ON (temporizador de encendido conectado). Cuando el
temporizador est habilitado, luego de conectar la fuente
de 5V, comienza un conteo interno (que dura 72ms) du- Fig. 16
rante el cual el PIC pone todas sus compuertas internas
en cero (reset) y recin despus comienza a efectuar los
pasos que le indica el programa. A propsito, el nombre
MCLR proviene de MASTER CLEAR (literalmente, lim-
piador maestro).
c) Circuito de vigilancia (perro guardin). En reali-
dad el PIC tiene un reset extra que opera luego de un
cierto tiempo si no se realiza la operacin final del progra-
ma. Es como una especie de rutina automtica de des-
congelamiento que opera en caso de falla del programa.
Eventualmente puede ingresar algn pulso de energa al
sistema que enve al programa a un loop (rizo) eterno
(una derivacin o camino cerrado sobre s mismo). Una
vez que el programa ingres en ese camino no puede sa-
lir de l salvo que se produzca un reset. Si pasa un tiem-
po considerable sin que se llegue a la ltima sentencia
garse completo.
Ahora que conoce-
mos el funcionamiento
del cargador de progra-
mas NOPPP vamos a
completar el circuito
con una fuente de ali-
mentacin y el conec-
tor para PC (figura 17).
Observe que las
fuentes estn confor-
madas por dos regula-
dores de 5 y de 12V
Fig. 17 pero, como necesita-
mos un regulador de
13V, realizamos una
ca a qu pata se dirige el cable (tambin incluimos el co- pequea modificacin en el regulador de 12V; agregando
lor del mismo). Los datos (oscilando de 0 o 5V) ingresan los diodos D1 y D2 la tensin de salida se incrementa a
en sucesin por el cable 14J1 y, atravesando el resistor un valor de 13,2V. El otro cambio importante es el agre-
R2, llegan a la pata 13 del PIC. La pata 13 perteneciente gado de capacitores de filtro que, como Ud. observa,
al puerto B se comporta como una pata de entrada de siempre se ubican de a dos: un electroltico para filtrar las
datos en tanto el cable 2J1 se encuentra en el estado ba- bajas frecuencias y un cermico disco para las altas fre-
jo es decir que la pata 4 Vpp est a un potencial de 13V cuencias.
aproximadamente. Por ltimo se agrega un conector del tipo DB21 ma-
Al mismo tiempo, el cable 17J1 se manda a potencial cho para conectar el dispositivo directamente a la salida
de masa para que los datos entrantes no salgan a su vez de la impresora de una PC. En el circuito dibujamos el co-
por el cable 11J1; de este modo, el diodo D1 no permite nector visto por el lado de las patas de conexiones y el
que el potencial del cable supere la tensin de barrera del cdigo de colores de cable adecuado para usar un cable
diodo (es decir que el diodo D1 opera como una llave). plano de 5 hilos (negro, marrn, rojo, naranja y amarillo)
Como ya sabemos los datos deben ser validados por me- al cual se le retuerce por encima otro de color blanco que
dio de un cambio de estado de la seal de clock que in- opera como masa y blindaje. Todo este circuito es suma-
gresa desde la PC por el cable 1J1. mente sencillo y si Ud. slo quiere conocer los PICs me-
Frmese una imagen mental del flujo de datos. Pien- diante este manual tcnico, pero no se va dedicar a tra-
se en la PC como si bombeara datos al PIC por el cable bajar permanentemente con ellos, puede armarlo en un
14J1; el PIC, para no inflarse, los devuelve por el cable mdulo de armado sin soldaduras (protoboard) junto con
11J1. En realidad, los datos ingresan por la pata 13 del el circuito de un destellador rtmico (figura 18).
PIC y se instalan en la memoria; pero a continuacin, el
programa de carga verifica que el dato est en la posicin
de memoria correspondiente y si as ocurre, se habilita la
carga del siguiente dato. La secuencia es tal que:
Fig. 19
Fig. 22
Fig. 23
El Set de Instrucciones
Manejo de las Instrucciones de un PIC
Aprenda a manejar el set RISC de un PIC para realizar sus propios programas.
INTRODUCCIN
Una instruccin es un comando, parte del programa,
que se le aplica al PIC para que lo interprete y ejecute su
cumplimiento. La instruccin se compone de una serie de
bits presentada en secciones o posiciones perfectamen-
te delimitadas, que el procesador interpreta para cumplir
una orden deseada, quedando establecidas las variables
que se modifican.
Dicho de otra forma, las instrucciones poseen un for-
mato de acuerdo a un sistema de codificacin. El forma-
to cambia de acuerdo con la operacin que se va a rea-
lizar.
Cada instruccin, para la lnea baja de los PICs tipo
16C5X, consiste en una palabra de 12 bits que codifica Figura 24
en un solo bloque, la orden, el operador y la ubicacin del
resultado o el salto (en caso de que lo hubiere). En los programas.
microcontroladores PICs tipo 16X84 cada instruccin tie- Como veremos, el resultado de la operacin se guar-
ne una longitud de 14 bits. da en un sitio definido por el programador (dependiendo
Los bits que actan como datos de la memoria de qu estado tome el bit d) y que esta instruccin mo-
EPROM se reciben en el decodificador de instrucciones, difica los bits C, DC y Z del registro de estado (STATUS).
y operan con el contador de programa y el registro de tra- Esto quiere decir que cuando coloco la instruccin:
bajo W, para acceder a lugares especficos del microcon- ADDWF f,d
trolador, tales como la ALU, posiciones de memoria, re-
gistros, etc. El ensamblador generar el cdigo:
Como sabemos, los PICs 16X84, entre otros, mane- 0001 11df ffff
jan un set reducido de instrucciones (35 instrucciones en En este cdigo, los seis bits de mayor peso (bits 6 al
lo que se denomina RISC) que presentan una codifica- 11 en la figura 25) definen la operacin que va a realizar
cin muy particular llamada formato de la instruccin. la instruccin de acuerdo a lo requerido por el programa-
Cada instruccin posee su formato y es total-
mente definido por MICROCHIP.
En la figura 24 podemos apreciar la sintaxis de
una instruccin del set. Se trata de la instruccin que
suma el contenido del registro de trabajo con el con-
tenido de un registro cuya direccin est determina-
da por el operador f. En esta figura, en primer lugar
se observa la sintaxis, es decir, la forma en que el
programador escribir la instruccin en el lenguaje
entendible por el operador (el programa en .asm).
La codificacin es el formato de la palabra que defi-
ne la instruccin y que veremos en detalle luego. No-
te que para que se complete la instruccin se nece- Figura 25
sita una sola palabra y un solo ciclo del contador de
dor. Aqu se define una orden que el PIC interpreta y eje- Los pulsos entrantes del reloj son divididos por 4, ge-
cuta sobre un operando determinado, cuya direccin la nerando diferentes seales denominadas Q1, Q2, Q3 y
busca segn lo indicado por los 5 bits menos significati- Q4. El estado Q1 hace incrementar el contador de progra-
vos (bits 0 al 4 en la figura 25). ma, Q2 y Q3, se encargan de la decodificacin y ejecu-
El bit 5 es un cdigo de reconocimiento de destino y cin de la instruccin y por ltimo, Q4 es la fase de bs-
determina en qu lugar se va a alojar el resultado de la queda de la instruccin. El cdigo se almacena en el re-
operacin. Si este bit es 0 el destino de la operacin se- gistro de instrucciones.
r puesto en el registro de trabajo (W). Si el bit d es
puesto a 1 el destino ser el de la posicin de memoria
definido por f. EL SET DE INSTRUCCIONES DEL 16X84
Los cinco bits de menor peso en el formato de la ins-
truccin representan la direccin donde est guardado el Vimos cmo es la estructura de una instruccin, ra-
operando (f), que est en la memoria de datos y por te- zn por la cual le recomendamos que lea nuevamente el
ner cinco bits slo podemos direccionar una de las 32 po- comienzo de este captulo si no entiende lo que a conti-
siciones de memoria de datos. nuacin expresaremos.
La mayora de las instrucciones se realizan en un ci- Los cdigos (denominados mnemnicos) que simbo-
clo de contador de programa (ciclo de instruccin) excep- lizan un conjunto de instrucciones, representan la tarea
to las instrucciones de salto que necesitan dos ciclos pa- que debe hacer el microcontrolador una vez que las ana-
ra ejecutarla. Se determina el ciclo de instruccin divi- lice en funcin del operando.
diendo por cuatro la frecuencia del oscilador, elegida pa- Un mnemnico ayuda a recordar el significado que
ra el funcionamiento del microcontrolador tal como se ob- tiene la instruccin.
serva en la figura 26. Para poder analizar al conjunto de instrucciones que
Es decir, la seal que proviene del oscilador externo, conforman el set RISC, se los suele agrupar teniendo en
conectado a los pines OSC1/CLKIN y OSC2/CLKOUT del cuenta el tipo de operacin que realizan, as es comn
microcontrolador, se divide en cuatro ciclos, obtenindo- que se las presente bajo cuatro posibles formas, a saber:
se as la seal requerida por el procesador interno para
realizar las operaciones. De esta manera se puede reali- 1. Instrucciones orientadas a registros.
zar la bsqueda y ejecucin de la instruccin. 2. Instrucciones orientadas a bits.
El reloj de instruccin es el ciclo interno que posee el 3. Instrucciones con literales.
microcontrolador para cronometrar el tiempo de ejecucin 4. Instrucciones de control y especiales.
de las instrucciones.
En la figura 27 vemos un cuadro
donde se reproducen las instruccio-
nes orientadas a registros, la figura
28 muestra las operaciones orienta-
das a bits y la figura 29 nos permite
conocer cules son las instrucciones
con literales y de control.
Sobre las notas a las que hace-
mos referencia en dichas figuras, de-
be tener en cuenta lo siguiente:
Nota 1. Al modificar un registro
de entrada/salida (E/S) con una
operacin sobre l mismo (por ejem-
plo MOVF PORTB,1), el valor utiliza-
do es el que se encuentre presente
en las patas del PORTB. Por ejem-
plo, si el biestable tiene un "1" para
una pata configurada como entrada
Figura 26
y se pone a nivel bajo desde el exte-
rior, el dato se volver a escribir como un "0". Nota 3. Si se modifica el Contador de Programa (PC
Nota 2. Si se ejecuta esta instruccin sobre el TMR0 CP) o es verdadera una condicin de prueba, la instruc-
y d=1, ser borrado el divisor de frecuencia (preescaler), cin requiere dos ciclos de mquina. El segundo ciclo se
si est asignado al TMR0. ejecuta como un NOPPP.
Figura 27
Figura 28
Figura 29
Programacin de PICs
Aprendiendo a Programar: Carga y Programacin de PICs
Sepa cmo es la estructura de un programa y cmo se deben utilizar las instrucciones.
CIRCUITO DE UN Figura 30
ENTRENADOR
En Saber Electrnica hemos
desarrollado un entrenador para
aprender a programar y cargar
PICs, este entrenador se muestra
en la figura 30.
Antes de dar los primeros
ejemplos es conveniente tener en
cuenta los siguientes conceptos:
Figura 32
Figura 33
En la figura 33 se observa el programa correspon- algn momento le dir al programa que vaya hacia
diente a un secuenciador de 8 canales que hemos esa direccin.
editado en el programa MPLAB.
kloop decfsz k,f
list p=16f84 goto kloop
include <p16f84.inc> Ahora doy la instruccin para que se decremente
__CONFIG _RC_OSC & _WDT_OFF & _PWRTE_ON el contenido de la variable k y si ese contenido es 0
Este juego de sentencias indica que se va a utili- entonces que salte una instruccin; sino es 0 enton-
zar el PIC 16F84, se pide que se carguen las libreras ces mando al contador de programa a la etiqueta
del PIC y se configura al programa para trabajar con kloop para que se haga un nuevo decremento. Es de-
clock RC, el temporizador WDT apagado y el tempori- cir, estoy haciendo un lazo cerrado para perder tiem-
zador libre activo. po
Figura 34
INTRODUCCIN MP40000.EXE
MP40000.WO2
MP40000.WO3
MPLAB es un entorno de desarrollo integrado que le
MP40000.WO4
permite escribir y codificar los microcontroladores PIC de
MP40000.WO5
Microchip para ejecutarlos. El MPLAB incluye un editor de
MP40000.WO6
texto, funciones para el manejo de proyectos, un simula-
dor interno y una variedad de herramientas que lo ayuda-
Si Ud. lo prefiere, puede venir a nuestras oficinas con
rn a mantener y ejecutar su aplicacin. Tambin provee
este libro y 6 disquetes vrgenes y tendr la oportunidad
una interfase de usuario para todos los productos con
de llevarse dicho programa sin cargo.
lenguaje Microchip, programadores de dispositivos, siste-
Copie el contenido de los 6 disquetes en el disco rgi-
mas emuladores y herramientas de tercer orden.
do de su PC (en un lugar que pueda identificar).
El MPLAB est diseado para ser ejecutado bajo
Cuando ejecute el archivo .EXE, comenzar la insta-
Windows 3.11, y puede operar con Windows 95, 98 y su-
lacin del MPLAB en su sistema. Seguidamente deber
periores (vea www.microchip.com). Asume que el usuario
elegir los componentes del MPLAB que desea instalar en
ya conoce el entorno de Windows y sabe manejarlo. La
su sistema. A menos que haya comprado un programador
gua que describimos le permitir realizar las siguientes
o emulador del dispositivo, slo debiera instalar las si-
tareas:
guientes herramientas del software:
Manejar el escritorio MPLAB
Archivos MPLAB IDE
Crear un nuevo archivo de cdigo fuente para el en-
Archivos MPASM/MPLINK/MPLIB
samble e ingresarlo a un nuevo proyecto para el 16F84
Archivos de Proteccin del Simulador MPLAB-SIM
Identificar y corregir los errores simples
Archivos de Ayuda (vea la figura 1 que aparecer
Ejecutar el simulador interno
cuando ejecute el programa).
Para que Ud. aprenda a programar sus microcontro-
Luego aparecer el men de la figura 35 que le per-
ladores, damos a continuacin, paso a paso, las instruc-
mitir seleccionar los componentes de lenguaje Micro-
ciones de instalacin y uso de la aplicacin:
chip que desee instalar. Usualmente debiera seleccionar-
los todos (por defecto). Al hacer doble click en
MP40000.EXE, el instalador le va diciendo lo que debe
INSTALACIN
Figura 35
Descargue los archivos del software de instalacin y
ejecute el archivo MPxxxxx.EXE. Estos archivos puede
obtenerlos por medio de Internet en la direccin:
http//www.microchip.com/10/Tools
hacer. Luego de instalarlos, ejecute MPLAB.EXE o clique que pueden ser resistidos por el simulador. Clique 16F84
el cono MPLAB para iniciar el sistema. y luego presione el botn "Reset". De este modo se ini-
Aparecer el escritorio del MPLAB (figura 36). ciar el simulador, y debera aparecer en la barra de es-
tado "16F84" y "Sim". Se encuentra as en el modo simu-
lador para el 16F84.
Figura 37 Figura 39
Figura 41
Figura 40
fijo estndar para los archivos de proyectos en el MPLAB. Nota: Como puede ver, hay una cantidad de filas y
El prefijo del nombre de archivo del proyecto, en este columnas en este dilogo.
caso "tutor84", ser el prefijo por defecto de muchos de Cada fila usualmente corresponde a un "cambio",
los archivos que el MPLAB usar o crear para esta gua. aquellos elementos que se establecen en la lnea de co-
Clique "Aceptar (OK)" para que aparezca el dilogo Pro- mando cuando se invoca una herramienta. De hecho, la
yecto MPLAB. Este dilogo puede parecer confuso, pero configuracin de estos cambios se refleja en la ventana
en realidad es muy simple. "Lnea de Comando (comand line)", prxima al margen
Nota: El simulador, los programadores y los sistemas inferior de la pantalla. Esta es la lnea de comando que se
emuladores que operan con el MPLAB usan un archivo usar cuando se invoque el MPASM desde el MPLAB. Por
hex creado por el ensamble, la compilacin y/o el linking el momento, puede usar las configuraciones por defecto,
del cdigo fuente. Algunas herramientas diferentes pue- pero cuando ya sepa construir una aplicacin, probable-
den crear archivos hex, al tener en cuenta que estas he- mente desear cambiar algunas.
rramientas formarn parte de cada proyecto. Al clicar el botn "Aceptar (OK)", aplicar estas con-
Los proyectos le dan la flexibilidad para describir c- figuraciones, y retornar al dilogo "Editar Proyecto
mo se construir la aplicacin y qu herramientas se usa- (Edit Project)", con el cono (botn) "Agrega Nodo (Add
rn para crear el archivo .hex. Obviamente, en la gua Node)" disponible. Presione el botn "Agregar Nodo".
nos ocuparemos de todos estos detalles. Aparecer el dilogo de exploracin de Windows estn-
El dilogo "Editar Proyecto" ser semejante al mos- dar, con el mismo directorio usado para el proyecto. Ingre-
trado en la figura 40. se el nombre de archivo: tutor84.asm y presione "Acep-
Advierta que el nombre del archivo de destino ya ha tar". Retornar al dilogo "Editar Proyecto", donde po-
sido completado. Ya conoce el modo de desarrollo que dr ver "tutor84.asm" aadido debajo del archivo hex,
configuramos previamente y asume que usaremos la se- que indica que es un nodo concurrente. Al presionar
rie de herramientas de lenguaje Microchip. En la ventana "Aceptar", retornar al escritorio MPLAB con un archivo
"Archivos de Proyecto (Files proyect)", encontrar tu- de cdigo fuente abierto y an sin nombre.
tor84. [hex]. Al destacar este nombre, se podr utilizar el
cono "Propiedades del Nodo (Node Properties)". Se- Cmo Crear un nuevo Archivo Fuente Simple
guidamente debe indicarle al MPLAB cmo crear el archi- Clique dentro del espacio en blanco de la ventana de
vo hex. Hgalo clicando el botn "Propiedades del Nodo". archivo creada. Seguramente se llamar "Sin ttulo (Un-
titled)". De este modo acceder al "foco" de la ventana. ya est listo para escribir el cdigo que almacenar en el
Use la opcin de men "Archivo>Guardar como...", y PIC para que cumpla una funcin determinada.
guarde el archivo vaco como tutor84.asm. Cuando abra
el dilogo de exploracin estndar, encontrar su ubica- Ingresar el Cdigo Fuente
cin en el directorio del proyecto. Ingrese el nombre de ar- Use el mouse para ubicar el cursor al comienzo de la
chivo y presione "Aceptar". Vea la figura 42. ventana de archivo vaco tutor84.asm, e ingrese el texto
de la tabla 1, exactamente como est escrito en cada l-
nea. No debe ingresar los comentarios (los textos que si-
Figura 42 guen a cada punto y coma).
Este cdigo es un programa muy simple que incre-
menta un contador y lo "resetea" a un valor predetermina-
do cuando el contador vuelve a cero.
proceso de ensamble, aparecer la ventana "Resulta - La lnea del cdigo fuente en esta direccin ser destaca-
dos de Constr uccin (Build Results" (figura 43): da con una barra oscura. Tambin advertir que en la ba-
rra de estado, la PC se establecer en 0x00.
Use el tem de men "Debug>Ejecutar>Paso (De-
bug>Run>step)" (figura 44). Al hacerlo, el contador del
programa avanzar hasta la siguiente ubicacin de ins-
truccin. La barra oscura seguir el cdigo fuente y el
contador del programa desplegado en la barra de estado
Figura 43 avanzar hasta "4".
Cuando ejecute el tem de men "Debug>Ejecutar-
>Paso", advierta la aparicin de un texto en el lado dere-
Ha ingresado intencionalmente al menos un error si cho del tem de men que dir "F7". El mismo equivale a
ingres el cdigo tal como lo hemos escrito en el paso an- "tecla de funcin siete" en su teclado. Muchas funciones
terior. El ltimo "goto" en el programa refiere a un rtulo del MPLAB se asignan a "teclas-especiales". Estas teclas
inexistente llamado "bug". Dado que este rtulo no ha si- cumplen la misma funcin que los tems de men a los
do definido previamente, el lenguaje ensamblador infor- cuales corresponden. Presione F7 varias veces y ver c-
mar el error. Tambin podra relevar otros errores. mo el contador del programa y la barra avanzan a travs
Haga un doble click sobre el mensaje de error. De del programa.
este modo ubicar el cursor en la lnea que contiene el Ejecute el tem de men "Debug>Ejecutar>Ejecutar
error en el cdigo fuente. Cambie "bug" por "start". Use la (Debug>Run>Run)" o presione F9 para inciar la ejecu-
ventana "Resultados de construccin (Build Results)" cin del programa desde la la ubicacin actual del conta-
para hacer una bsqueda de errores, y reparar los que dor. Los colores de la barra de estado cambiarn, para in-
aparecieran en el cdigo fuente. Reensamble el archivo dicar que el programa est ejecutando las instrucciones.
ejecutando la funcin de men "Proyecto>Construir to- Ninguno de los campos de la barra de estado se actuali-
do". Este procedimiento puede demandar un par de re- zar mientras el programa est en ejecucin.
peticiones. Detenga el programa ejecutando el tem de men
Nota: Cuando reconstruya un proyecto, todos sus ar- "Debug>Run>Halt (detener)" o presionando F5. La ba-
chivos fuente sern guardados en el disco. rra de estado volver a su color original, y el contador del
Luego de reparar todos los problemas en el cdigo programa y otras informaciones de su estado sern ac-
fuente, la ventana "Resultados de construccin" mostrar tualizadas.
el mensaje "Construccin completada exitosamente Nota: Otra manera de ejecutar funciones es usar la
(Build completed successfully)". Ya ha completado un barra de herramientas ubicada en el margen superior de
proyecto que puede ejecutarse usando el simulador. la pantalla. Si ubica el cursor sobre los tems de la barra
de herramientas, podr ver el nombre de su funcin en la
Ejecucin de su Programa barra de estado. El botn de la izquierda es un botn es-
Use "Debug>Ejecutar>Reset (Debug>Run>Re- tndar "cambiar barra de herramientas (change tool
set)" para iniciar el sistema. El contador del programa se bar)" que le permite desplegar las barras de herramien-
resetear a cero, que es el vector de reset en el 16F84. tas disponibles. Estas pueden ser personalizadas, como
podr advertirlo en la seccin "Algunas Sugerencias" al fi-
nal de esta gua. En la barra de herramientas de Debug,
la luz verde es equivalente a F9 (Ejecucin) y la luz roja
equivale a F5 (Detencin).
Hasta aqu, aprendi a instalar el programa y crear un
archivo para aprender a prog r amar.
amar Dimos un ejem-
plo de programacin y ya sabemos cmo correr el pro -
g r ama en la PC para saber si todo est bien, antes de
escribir dicho programa en nuestro PIC. Sin embargo,
cuando los programas son ms largos, es posible come-
ter errores que pueden ser evitados. A continuacin expli-
Figura 44 camos el procedimiento.
Abrir Otras Ventanas Para Watch Symbol)" (figura 45). Tipee "c1" en la caja de nom-
el Seguimiento de Errores bre de smbolo para que la lista se despliegue hasta el
Hay muchas maneras de visualizar el programa y su smbolo deseado. Seleccinelo, presione el botn "Agre-
ejecucin usando el MPLAB. Por ejemplo, este programa gar (Add)", y luego el botn "Cerrar (Close)". Aparece-
est destinado a incrementar un contador temporario pe- r en su escritorio MPLAB una ventana de observacin
ro, cmo puede asegurarse que se est produciendo di- que mostrar el valor actual del valor "c1" del contador
cho incremento? Una manera es abrir e inspeccionar una temporario.
ventana de registro de archivo. Puede hacerlo ejecutando Presione F7 varias veces para advertir cmo se ac-
el tem de men "Ventana>registros de archivo (Win- tualiza la ventana de observacin mientras el valor del
dow>File Register)". Aparecer una pequea ventana contador se incrementa. Si dej la ventana de registro de
con todos los registros de archivo o el RAM del 16F84. archivo abierta, la misma tambin ser actualizada (mue-
Presione F7 (ejecute instruccin por instruccin, si va una de ellas para que pueda ver las dos en la panta-
piensa anularlo) varias veces, y observe la actualizacin lla).
de valores en la ventana de registro de archivo. Hemos Puede guardar la ventana de observacin y sus con-
colocado la variable del contador en la ubicacin de direc- figuraciones al ejecutar el tem "Guardar observacin
cin 0x0C. Mientras el contador temporario se incremen- (Save Watch)" debajo del botn del sistema, ubicado en
te, este incremento se reflejar en la ventana de registro el ngulo superior izquierdo de la ventana de observa-
de archivo. Los registros de archivo cambian de color cin. Al clicar este botn, se desplegar un men en cas-
cuando su valor cambia, de modo que los cambios pue- cada. Seleccione "Guardar observacin" y aparecer el
dan advertirse fcilmente en la inspeccin. De todos mo- dilogo de exploracin estndar ubicado en el directorio
dos, en muchos programas complejos, varios valores del proyecto. Elija algn nombre arbitrario y presione
pueden cambiar, as resultar ms difcil focalizar las va- "Aceptar (OK)".
riables que le interesan. Usando una ventana de observa- Si no nombra la ventana de observacin, el MPLAB lo
cin especial, este problema puede solucionarse. har por usted. La ubicacin y el estado en la pantalla de
Ahora, ya sabemos mejor qu es lo que estamos ha- la ventana abierta o cerrada sern guardados con el pro-
ciendo: yecto, de modo que la prxima vez que abra su proyecto,
sus ventanas de observacin aparecern restauradas.
Prog r amamos algo que incrementa en 1 cada Nota: Tambin puede editar ventanas de observacin
vez que viene una seal y podemos ver ificar lo vir - luego de crearlas. Use el botn del sistema y seleccione
tualmente, antes de prog r amar el PIC. "Agregar Observacin (Add Watch)" para que aparez-
ca un dilogo mediante el cual podr agregar ms tems.
Creacin de una Ventana de Observacin Con la tecla "Ins" podr hacer lo mismo. Si desea borrar
un tem, seleccinelo y presione la tecla Suprimir (Dele-
Ejecute el tem de men "Ventana>Nueva ventana te); la observacin referida desaparecer de la ventana.
de observacin (Window>New Watch Window)". Apa- Puede seleccionar "Editar observacin (Edit Watch)"
recer el dilogo "Agregar Smbolo de Observacin (Add en el men del sistema para cambiar el modo en el cual
se muestra el tem (en hex, binario, como una variable de
16-bit en vez de 8-bit, etc.).
ERRORES MPASM - Si el MPASM le da un error, haga MENUES DESACTIVADOS - Si encuentra menes desacti-
un doble click sobre el error en la ventana de error para ir vados (opacados), verifique que no haya ingresado el mo-
al error en el cdigo fuente. Si tiene mltiples errores, do "slo Editor (Editor Only)".
siempre elija el primer error generalmente un error cau- Si est seguro de que ha realizado correctamente la
sa errores subsiguientes y al reparar el primero corregir configuracin, intente salir del MPLAB y reinicie el progra-
los restantes. ma.
Importante: Este manual se complementa con bibliografa sobre reparacin de equipos sin cargo. Por ser comprador de esta edi-
cin, Ud. tiene acceso a informacin y programas GRATIS. Para acceder a los mismos, vaya a nuestro sitio:www.webelectronica-
.com.ar. Luego haga click en el cono password y digite la clave: aiwa15
ISBN: 987-9227-92-1
Editorial Quark SRL - Herrera 761, (1295) Bs. As. Argentina - Director: Horacio D. Vallejo - Tel.: (005411) 4301-8804
En Internet: www.webelectronica.com.ar - Impresin: Talleres Grficos Conforti, Bs. As. - octubre de 2002.
Distribucin en Argentina: Capital - Carlos Cancellaro e Hijos SH, Gutenberg 3258, Capital - Interior: Bertrn S.A.C., Av. Vlez Sarsfield 1950, Capital