Sie sind auf Seite 1von 169

Escuela de Educación Técnica Nro.

1 de Merlo
“Ingeniero francisco E. Urondo”

TTP Montaje de Circuitos y Sistemas


Electrónicos
3o AÑO
Profesor Christian G. Roggro
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Índice
Introducción  ……………………………………………………………………………  1 
Referencia Histórica…………………………………………………………………  4 
Principales fabricantes de microprocesadores ………………………….  13 
Sistema mínimo microprocesador ……………………………………………  14 
Arquitectura Von Neumann ……………………………………………………..  26 
Arquitectura hardvard ……………………………………………………………..  27 
Introducción a los microcontroladores …………………………………….  29 
Controlador y Microcontrolador ………………………………………………  33 
Microprocesador y Microcontrolador ………………………………………  34 
Aplicaciones de los Microcontroladores …………………………………..  36 
Que Microcontrolador emplear? ……………………………………………..  37 
Los microcontroladores mas populares …………………………………..  39 
Almacenamiento y ejecución del programa ……………………………..  40 
Arquitectura básica …………………………………………………………………  41 
Procesador o CPU ……………………………………………………………………  43 
Memoria ………………………………………………………………………………….  44 
Puertas de Entrada/Salida ……………………………………………………….  47 
Reloj principal …………………………………………………………………………  47 
Recursos especiales ……………………………………………………………….  47 
Temporizadores ………………………………………………………………………  48 
Perro guardián ………………………………………………………………………..  48 
Protección ante fallo de alimentación …………………………………….  49 
Estado de reposo o de bajo consumo ……………………………………..  49 
Conversor A/D ………………………………………………………………………..  49 
Conversor D/A ………………………………………………………………………..  49 
Comparador analógico ……………………………………………………………  50 
Modulador de ancho de pulso ………………………………………………..  50 
Puertas de Entrada/Salida digitales ………………………………………..  50 
Puertas de comunicación ………………………………………………………..  50 
Herramientas para el desarrollo de aplicaciones ……………………  51 
Ejemplos de microcontroladores, usos y aplicaciones ……………  52 
Los microcontroladores PIC …………………………………………………….  55 
Porque los PIC ………………………………………………………………………..  55 
Breve reseña histórica acerca de los PIC ……………………………….  56 
Características relevantes ………………………………………………………  56 
Análisis comparativo de prestaciones …………………………………….  58 
Las tres gamas de pic ……………………………………………………………..  58 
La gama baja …………………………………………………………………………..  63 
La gama media ………………………………………………………………………..  64 
La gama alta ……………………………………………………………………………  65 

I
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

PIC16CXX la potencia y flexibilidad de la gama media ……………  65 
Arquitectura interna y organización de la memoria …………………  66 
El PC (Contador de Programa)………………………………………………….  67 
Direccionamiento de datos ……………………………………………………..  68 
Los registros de las gama media    
            Organización de la memoria de datos ………………………….  69 
Registros específicos   
             El PC …………………………………………………………………………..  71 
             El registro W ………………………………………………………………  71 
             El registro Status ………………………………………………………..  71 
             El registro INTCON ……………………………………………………..  73 
             El registro INDF …………………………………………………………..  74 
             El registro PCL y PCLATH …………………………………………….  74 
             Los registros STACK ……………………………………………………  74 
             El registro PCON ………………………………………………………..  74 
             El registro FSR …………………………………………………………….  75 
             Los puertos registro PRTx y TRISx ……………………………….  75 
Instrucciones del PIC   
             Instrucciones de byte que operan con registros ……………  76 
             Instrucciones de byte que operan sobre W y literales …..  78 
             Instrucciones de Bit ……………………………………………………  79 
             Instrucciones de control ……………………………………………..  80 
             Instrucciones especiales …………………………………………….  82 
Resumen de instrucciones ………………………………………………………  87 
Modos de direccionamiento   
             Direccionamiento de la memoria de datos …………………  88 
             Direccionamiento de la memoria de programa …………..  89 
Temporizadores, puertos de E/S, reset y estado de reposo   
             Control de tiempos ……………………………………………………..  90 
             El temporizador principal, TMR0 …………………………………  91 
             El registro OPTIONS ……………………………………………………  92 
             El perro guardián WDT ……………………………………………….  93 
             El modo de reposo o SLEEP …………………………………………  94 
Arquitectura del PIC16F84 ………………………………………………………  94 
Conociendo al microcontrolador PIC 16F84 ……………………………..  95 
Caracteristicas basicas del PIC 16F84 ………………………………………  95 
Identificación de los pines utilizados para los puertos de E/S …  96 
Identificación de los pines de alimentación del microcontrolador  96 
El reloj y el ciclo de instrucción ……………………………………………….  96 
             El oscilador …………………………………………………………………  97 
Inicialización "RESET" del microcontrolador …………………………….  99 
Puertos del microcontrolador PIC16F84 …………………………………..  101 
Programación ASM ………………………………………………………………….  103 

II
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Código maquina y ensamblador  104 
Emulación ……………………………………………………………………………….  104 
Simulador ………………………………………………………………………………..  105 
Depurador ……………………………………………………………………………….  105 
Emulador "In Circuit" ……………………………………………………………….  106 
Edición de programas ………………………………………………………………  106 
Escritura del código fuente ……………………………………………………..  107 
Programa Fuente …………………………………………………………………….  108 
Convenciones en la escritura del código fuente ……………………..  108 
   
ANEXOS   
   
Anexo I ‐ Sistemas de numeración ……………………………..………………….  115 
Anexo II ‐ Set de instrucciones PIC  16F84 ………………………………………  129 
Anexo III ‐ Programador de PIC ………………………………………………………  137 
Anexo IV ‐ Circuito de aplicación (tester de cables de red) …………..  141 
Anexo V ‐ Display LCD ……………………………………………………………………..  145 
   
Bibliografía ………………………………………………………………………………………  163 

III
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Introducción

A mediados del siglo XX, tras el desarrollo de la bomba atómica y las centrales nucleares, comienza a
hablarse de la Era atómica. Algo más adelante, cuando el hombre pisa por primera vez la Luna, se
habla de la Era espacial. Sin ninguna duda, nuestra época está siendo la Era de las comunicaciones
debido, fundamentalmente, al desarrollo de la informática y las telecomunicaciones, sustentadas por
el enorme avance de las tecnologías electrónicas, microelectrónicas y optoelectrónicas.

Para confirmarlo, sólo meditemos sobre el avance de la telefonía celular y satelital, sobre el enorme
potencial de información que nos pone al alcance de la mano Internet, así como sobre la posibilidad
de comunicarnos con otros países por escrito o videoconferencia, dependiendo cada vez más del
omnipotente computador personal, que incide más y más en nuestra sociedad (automatización de
plantas industriales, control de tráfico por tierra, mar y aire, gestión de empresas y bancos, diseño de
ingeniería, etc.).

La electrónica ha sido –y es– la causante y soporte de esta verdadera revolución de la sociedad. Y,


dentro del campo de la electrónica, el microprocesador –o su versión “customizada”, el
microcontrolador– es, con frecuencia, el gran protagonista.

El desarrollo de los microprocesadores, un invento introducido recientemente –en 1971– en el ámbito


comercial, ha revolucionado las áreas más importantes de la electrónica y este avance no le resulta
ajeno al individuo medio que trabaja asiduamente con su computador personal (Pentium, Power PC,
etc.), aún cuando la mayor parte de los microprocesadores no reside en los computadores, sino
oculta en cualquier dispositivo electrónico que el usuario utiliza sin ser consciente de él.

En 1971, la compañía de semiconductores Intel lanza al mercado el primer microprocesador, lo que


impone un cambio decisivo en las técnicas de diseño de los equipos de instrumentación y control.
Este circuito integrado contiene todos los componentes de la unidad central de procesos (CPU) de
una computadora dentro de un solo dispositivo. Los fabricantes, conscientes de la importancia de
este mercado, crean una amplia gama de estos circuitos integrados, constituyendo familias de
microprocesadores.

1
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En el año 1976, gracias al aumento de la densidad de integración de componentes en un circuito


integrado, sale a la luz el primer ordenador en un chip: en él se integran, junto con el
microprocesador, otros subsistemas que anteriormente formaban unidades independientes (memoria,
entradas/salidas, etc.). A este nuevo integrado se lo denomina microcomputadora monopastilla.

Cuando los sistemas basados en microprocesadores se especializan en aplicaciones industriales,


aparece la versión industrial de la microcomputadora monopastilla, el microcontrolador, que produce
un obvio beneficio en aplicaciones pequeñas. Su característica más sobresaliente es que se trata de
un sistema integrado.

El microprocesador es un componente electrónico complejo que incorpora las funciones típicas de


todo un computador. La clave del éxito de los microprocesadores como componente electrónico
reside en que, modificando el programa almacenado en memoria, puede adaptarse a numerosas y
diferentes aplicaciones.

Así, en la actualidad, debido a su creciente potencia de cálculo y variedad de funciones integradas, se


ha convertido en el estándar para la implementación de soluciones, tanto de cálculo como de control.

De este modo, los microprocesadores no sólo se utilizan para construir potentes computadoras –
quizás su aplicación más difundida– sino también para la realización de tareas de control en sistemas
de aplicación específica (por ejemplo, el control de un horno a microondas, un teléfono celular o unos
frenos ABS para el automóvil), sustituyendo la circuitería convencional.

Las áreas de aplicación de este tipo de productos también exceden el ambiente de los procesos
continuos y se expanden en una gran diversidad de rubros: cervecerías, curtiembres, edificios
inteligentes, bancos de prueba o ensayo, estaciones de carga, frigoríficos, plantas automotrices,
industrias alimenticias, industrias madereras, industrias metalúrgicas, industrias petroleras,
laboratorios, medición de energía, plantas petroquímicas, plantas aceiteras, plantas embotelladoras,
plantas generadoras de energía, plantas papeleras, plantas pesqueras, plantas potabilizadoras, silos,
subestaciones eléctricas y centros de comando, supermercados, sistemas de transporte y muchas
más.

En nuestro curso estudiaremos al microprocesador desde dos puntos de vista:

• Como componente electrónico –se trata de un componente especial, ya que tiene un aspecto
hardware, y otro software o de programación.

• Como ladrillo básico en la construcción de sistemas de procesamiento de datos –


microprocesador, mP, µP – o de control –microcontrolador, mC, µC– que sustituye a sistemas
cableados.

2
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En las aplicaciones sencillas, resultan preferibles las soluciones no programables que no requieren
desarrollo de software (Escribir software consume mucho tiempo, por lo que resulta más costoso; por
esto, en aplicaciones sencillas y/o de poca tirada, a menudo es más razonable efectuar tareas en
hardware.) Sin embargo, conforme aumenta la complejidad del sistema, aumentan las ventajas del
uso de sistemas programables.

Una de las principales ventajas de los sistemas programables es su flexibilidad, la que permite
actualizar el funcionamiento de un sistema tan sólo mediante el cambio del programa, sin tener que
volver a diseñar el hardware. Esta flexibilidad es muy importante, al permitir que los productos se
actualicen con facilidad y economía.

Un µC típico tiene instrucciones para:

• Transferir información entre registros y memoria.


• Realizar operaciones aritméticas y lógicas.
• Efectuar comparaciones y pruebas sobre el contenido de sus registros de memoria.
• Controlar la secuencia de ejecución de programas.
• Controlar entradas y salidas.

La gran oferta de microcontroladores y las muy similares prestaciones que todos ellos ofrecen, han
desviado el foco de atención de los potenciales usuarios hacia cuestiones que poco tienen que ver
con la funcionalidad misma del producto. Se asume que cualquier microcontrolador que esté
disponible en el mercado es bueno y relativamente fácil de usar. En el pasado, un producto debía
demostrar que era capaz de hacer determinada tarea; hoy esto se da por descontado y, por lo tanto,
lo que pesa en la decisión de utilizar un determinado producto es su precio, el apoyo y soporte local
inmediato, los antecedentes de aplicaciones instaladas, la capacidad de conectarse con el
equipamiento de campo que se utiliza en el país donde se comercializa, etc.

Podemos decir que los microcontroladores tienden, con el tiempo, a ser todos iguales. Van
incorporando prestaciones similares modeladas por un set de instrucciones cada vez más parecido,
que afecta a casi todos los fabricantes de microprocesadores y microcontroladores.

Otra ventaja interesante que ofrece la utilización de microcontroladores –sobre todo para quien
desarrolla aplicaciones basadas en ellos, es que permite obtener mayores ganancias como resultado
del valor que agrega al hacer la tarea de integración o de “armado” (En otro ámbito, todos sabemos
que es mucho más barato comprar una PC en partes sueltas y luego armarla, que ir a comprarla a un
negocio en donde nos la entregan funcionando, con todo instalado y probado. Lo mismo pasa con los
mC.). Sin duda, para un usuario final con muchos recursos puede ser más interesante evitarse
problemas y comprar un producto “llave en mano”; pero, para el integrador o el usuario que recién
comienza, un alto costo inicial puede ser una barrera para decidirse a comenzar.

3
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En la figura siguiente vemos equipos de control industrial; en cada uno de ellos existe un
microprocesador o microcontrolador para llevar a cabo las tareas de supervisión y control, o para
comunicarse entre ellos y dar información a un computador central:

Se trata de sistemas de control clásicos donde se pone de manifiesto el empleo intensivo de los
microprocesadores y microcontroladores en la industria.

Referencia histórica

En 1971, la compañía de semiconductores Intel lanza al mercado el primer microprocesador. Veamos


algunos datos que nos muestran cómo va desplegándose el proceso tecnológico que permite llegar a
estos complejos sistemas electrónicos:

3000 A.C: Ábaco, empleado para realizar cálculos aritméticos.

Edad Media: Autómatas de reloj: máquinas con un programa interior fijo.

Siglo XVII: Blaise Pascal, matemático francés, construye la primera máquina mecánica capaz de
sumar y restar.

1674: G. H. von Leibniz, matemático alemán, incorpora a la máquina de Pascal la posibilidad de


multiplicar y dividir.

4
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

1850: D. D. Parmalee automatiza la máquina Pascal-Leibniz. Aparecen las primeras cajas


registradoras. Finales del siglo XIX. Charles Babbage, matemático inglés, idea una máquina quees
capaz de realizar cualquier operación. La máquina se instruye desde el exterior pormedio de un
sistema de tarjetas perforadas.

1925: V. Bush, ingeniero norteamericano, construye la primera máquina capaz deresolver ecuaciones
diferenciales.

1940: Von Neumann acaba configurando la arquitectura básica de los ordenadores modernos,
basada en los conceptos de programa almacenado y de ruptura de la secuencia de programa
mediante la toma de decisiones. Su diagrama de bloques:

A partir de la concepción de máquina universal de Von Neumann, los ordenadores se desarrollan


paralelamente a la tecnología. Aparecen cinco generaciones.

• Primera generación: Es la generación de las válvulas de vacío. Los ordenadores son muy
voluminosos, con alto consumo y coste muy elevado. Algunos ordenadores famosos de esta
generación son:

ENIAC –Electronic Numerical Integrator and Computer–, construido por la


Universidad de Pennsylvania durante la II Guerra Mundial, estructurado por John
Mauchly y John Eckert, estadounidenses, y puesta en funcionamiento en 1945,
marca el inicio de nuestra era computacional. Se trata de una máquina programable y
universal a la que se podía llamar electrónica; ocupa 160 metros cuadrados, pesa 30
toneladas, con 17.468 válvulas de vacío, 70.000 resistencias, 10.000 condensadores
y un consumo de, aproximadamente, 200 KW. Deja de funcionar en 1955 y es
desmontada en 1957.

5
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Fotografía del ENIAC. Fuente: http://ftp.arl.mil/

UNIVAC –Universal Automatic Computer–; construido en 1951, es el primer


computador digital con fines comerciales.

IBM604 e IBM650 aparecen en 1953 y se hacen muy populares en las


décadas de los ’50 y ’60.

• Segunda generación: Aparece con el transistor bipolar. Se consigue una gran


disminución de volumen, mayor fiabilidad y menor consumo. Los ordenadores se empiezan a
hacer populares en las grandes empresas.

• Tercera generación: Aparecen los primeros circuitos integrados, se agudizan aún más las
mejoras de la generación anterior. Paralelamente, empiezan a desarrollarse los lenguajes de
alto nivel –como el Fortran y el Cobol–, así como los primeros sistemas operativos.

• Cuarta generación: Aparecen las técnicas de alta escala de integración –LSI–, pro-
piciando, en 1971, la aparición del primer microprocesador 4004 de Intel. Posteriormente, en
1972, el 8008 de Intel y, a partir de éste, todos los fabricantes de circuitos integrados
empiezan a lanzar sus microprocesadores: 6800 y 6802 de Motorola, 6502 de Rockwell, Z80
de Zilog, 8088 de Intel, etc. El ordenador empieza a hacerse muy popular. Aparecen también
microprocesadores de 16 bits en el bus de datos: 8086, 80286 de Intel, 68000, 68010 de
Motorola, Z8000 de Zilog, etc.

6
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

• Quinta generación: Aumenta la densidad de integración al aparecer la tecnología VLSI1


de muy alta escala de integración. En 1976, gracias al aumento de la densidad de integración
de componentes en un circuito integrado, sale a la luz el primer ordenador en un chip; como
decíamos, a este nuevo integrado se le denominó microcomputadora monopastilla. Cuando
los sistemas basados en microprocesadores se especializan en aplicaciones industriales,
aparece la versión industrial de la microcomputadora monopastilla, el microcontrolador; estos
dispositivos producen un obvio beneficio en aplicaciones pequeñas; su característica más
sobresaliente es que son sistemas integrados, utilizados en la actualidad (en automóviles:
inyección, suspensión; control de procesos; control de interruptores de potencia; etc.).

En este marco, resulta interesante reconstruir la historia de cambios tecnológicos


desarrollada por Intel2 –una compañía del valle del silicio, especializada en la fabricación de
memorias. Veamos...

La casa Data Point saca a concurso un driver para la CRT3–hasta aquí, todo se hacia con
transistores. A este concurso sólo se presentan las firmas Texas Instruments e Intel. Al cabo del
tiempo, Texas se retira e Intel termina su proyecto; pero no gana, porque el dispositivo es
considerado poco eficiente como controlador: resulta 10 veces más lento de lo requerido y Datapoint
no lo compra.

Por la época (1969), la compañía japonesa Busicom, fabricante de calculadoras, encarga a Intel la
realización del circuito de control de un nuevo modelo de calculadora de sobremesa. El primer diseño
resulta tan complejo que Ted Hoff, ingeniero de Intel, rediseña el sistema basándose en la estructura
de los computadores: existiría un chip que integraría una CPU sencilla, que ejecutaría un programa
de control que se guardaría en una memoria ROM; emplearía una RAM para almacenamiento de
datos y un registro como puerto de entrada/salida. Por lo tanto, el nuevo diseño resulta un conjunto
de cuatro chips que implementaban la estructura de un computador de modo que, cambiando el
programa, podía dedicarse a realizar tareas muy diferentes.

Desde que se contrata a Intel hasta que el diseño resulta operativo pasan muchos meses, durante los
cuales los precios caen y el valor del contrato inicial resulta desorbitado. Busicom pide, entonces, a
Intel una rebaja en el precio. Intel acepta, a cambio de quedarse con los derechos del conjunto de

1
VRSI –Very large-scale integration–. Muy alta escala de integración; más de 10000 transistores por chip
2
http://www.intel.es ; http://www.intel.com
3
Tubos de rayos catódicos o terminal de video utilizado por televisores y computadoras.

7
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

circuitos integrados construido –la familia 4000– para poder comercializarlos por su cuenta.
Finalmente, Intel introduce en sus catálogos el chip programable desarrollado –el 4004– en
noviembre de 1971, bautizándolo como microprocesador y, así, comienza a comercializarlo.

El 4004 puede direccionar sólo 4096 (4k) localidades de memoria de 4 bits, reconocer 45
instrucciones y ejecutar una instrucción en 20 µseg en promedio. Intel, entonces, lo saca al mercado
para el uso de memorias. Al registrarse una demanda considerable, el equipo de diseño se pone a
trabajar para desarrollarlo, consiguiendo el 8080 y el 8008, que son de 8 bits.

Con el microprocesador surgen las primeras computadoras de tipo personal y la introducción del
procesador 8080, un dispositivo 10 veces más rápido que el 8008, con capacidad de direccionar 64kB
de memoria.

Dos ingenieros del equipo de desarrollo crean la empresa Zilog, que comienza a competir con Intel, y
fabrican el Z-80. Intel saca, entonces, el 8085 y, después, el 8086. Más tarde salen algunas versiones
posteriores como el 8088 que es de 16 bits pero con buses de 8.

MITS introduce, en 1975, un kit que, en la actualidad, es considerado como la primera computadora
personal: el modelo Altair. Esta pequeña computadora incluye una arquitectura abierta (basada en
ranuras o slots) que permite conectar varios aditamentos y periféricos de otras marcas.

Hacia 1980, el mundo de las computadoras personales está dominado, básicamente, por dos tipos de
sistemas:

1. El Apple II, con un gran número de usuarios y una importante base de software, que crece
rápidamente.

2. Un sistema más sencillo que gira en torno al original MITS Altair, que se basa en la filosofía
de la compatibilidad, apoyado en slots de expansión y en el empleo del sistema operativo
CP/M4. Son máquinas construidas por varias compañías y se venden con diversos nombres
aunque, en esencia, utilizan el mismo software y el mismo hardware interconectable.

En 1981 se presenta la IBM PC –IBM Personal Computer–, introduciendo los lenguajes y sistemas
operativos. La empresa llega a un acuerdo con Microsoft –por entonces una pequeña compañía–
para incluir su sistema operativo DOS en sus modelos. La primera IBM PC incluye un

4
Sistema operativo de gran utilización hasta que aparece el DOS desarrollado por Microsoft.

8
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

microprocesador Intel 8088, con 128kB de RAM (expandibles 512kB), una unidad de disco flexible de
51/4 pulgadas y 360kB de capacidad.

Luego, aparece el estándar que toma el nombre de IBM PC-XT –Personal Computer. Extended
Technology–; también aprovecha los microprocesadores de 16 bits y cumple con la principal virtud de
la plataforma: su arquitectura abierta.

La plataforma PC no es la única; pero sí es la predominante, por su amplia gama de aplicaciones, a


diferencia de otros formatos como Macintosh, Sun, Amiga, Silicon Graphics, etc.

La industria de microprocesadores se sigue desarrollando y se crea el 80186 que ofrece periferia


integrada. Más tarde, aparece el 80286, adoptado por IBM; se trata de un 8086 pero con mayor
capacidad de direccionamiento de memoria, que implementa el modo protegido.

Su evolución es el 80386, el primer micro Intel de 32 bits que puede direccionar hasta 4 GB. Cuenta
con modo protegido, modo real y un nuevo modo que es el virtual, que trabaja en modo real, pero en
realidad trabaja en protegido; de aquí surgen el 80386SX y el 80486 con sus variantes:

• 486 SX: Como 386 sin coprocesador matemático, con caché interna y mejor arquitectura.
• 486 DX: Genérico pero a 33 y 50 MHz.
• 486 DX2: Interno a doble frecuencia: 50,66 MHz.
• 486 DX4: Interno a cuádruple frecuencia: 75,100 MHz.

La evolución hasta el momento actual:

Equipo XT: Año 1981, con procesador 8086 u 8088 de Intel, máquina pionera de los PC, usaba
128K, 256 o 512 Kilobytes de memoria Ram. Se le instalaba el sistema operativo DOS, disco duro de
5 o 10 megabytes de capacidad. Su gabinete era horizontal. El monitor era monocromático con fondo
negro y letras de color verde. Su velocidad de procesamiento estaba entre los 4 y 8 MHz.

9
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Equipo AT 80286: Su memoria Ram podía alcanzar los 16 MB, adicionándole una placa de

expansión especial. El disco duro normal para él era de 30 o 40MB. Las unidades de diskettes de 1.2
y 1.44 MB de capacidad. Sistema operativo DOS 2.1. Gabinete horizontal. Los monitores eran a color
con tecnología EGA (baja resolución, comparados con los actuales VGA). Su velocidad promediaba
los 25MHz.

• Equipos AT 80386. Usaban en promedio 8 y 16 MB de ram, integrando módulos removibles


de memoria, tipo SIMM de 32 pines. El disco duro promediaba los 512 MB, DOS 4.0.
Monitores súper VGA. módem interno de 14.400 baudios por segundo. Velocidad promedio:
40MHz. Aparece la unidad CD ROM de simple velocidad.

• Equipos AT 80486. Ram promedio de 8 y 16 MB. Discos duros de 1 gigabyte promedio. DOS
6.22. Módem de 28.800 bps. Monitores con resolución .28. Unidad de CD ROM de 2, 4 y 8
velocidades.

• Equipos Pentium de 75MZ. Ram promedio de 16 MB expandible a 128 MB, discos duros de 3
gigas o mayor, módem de 33.600 bps, Windows 95, coprocesador matemático y memoria
caché interna. Unidad de CD ROM de 16 velocidades. Otros procesadores: el 586 y 686 de
AMD.

• Pentium MMX. Tecnología con prestaciones para multimedia, con velocidades de 200, 233 y
266 MHz. Discos duros de 4 y 6 gigas. RAM promedio de 16 y 32 MB expandible. Unidad de
CD ROM de 24 y 36 velocidades. Sistema Operativo Windows 95 A y Windows 95 B.

• Pentium Celeron. Con velocidades desde 300 MHz a 1.3 GHz, caché de 128 KB, discos
duros mayores de 6 gigas como promedio, monitores no entrelazados, RAM promedio de 32
MB expandible, motherboard multifuncional, tanto en equipos genéricos como de marca,
Incluye, normalmente, sonido, video y módem fax incorporado en la placa madre. La
velocidad de los módem promedio es de 56.600 bps. Las unidades de CD ROM alcanzan
velocidades de 40X. De mejora Windows 95 creando Windows 98.

• Las generaciones de Pentium II, Pentium III y Pentium IV. Básicamente, utilizan los mismos
elementos de base: motherboard multifuncional, ram promedio de 128 MB, discos de 15, 30,
40 o más gigas, multimedia de 52x-56x, módem de 56.600. Sus velocidades varían desde los
350MHz a 550MHz los pentium II, de 500, 1 GHz los pentium III y 1.4 a 2GHz los pentium IV.
Sistemas Operativos: Windows 98, Windows 2000, Windows NT, Windows Me y Windows
XP. Otros procesadores: los K6-2 y Athlon de AMD.

10
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

o Pentium5 P5: Trabaja a 5V con frecuencias de 60 y 66 MHz.


o Pentium P54: Trabaja con 3,34V y con frecuencias de 75 y 90 MHz.

o Pentium P54C/P54C5: Frecuencias de 100,120,135,150,166 MHz.


o Pentium P55C (MMX): Frecuencias de 166,200,233.
o Pentium PRO: Frecuencias de 180 y 200, con mejoras en arquitectura y
con la caché integrada, utiliza un zócalo Socket 8.

5
El Pentium es un micro de 32 bits, pero con bus de datos de 64.

11
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Pentium II: Fecuencias de 233, 266, 300, que es un PPRO sin caché con MMX y caché de
segundo nivel; tiene zócalo slot 1 y SEC. Utiliza el slot 2, que es una variante del slot 1, pero
incompatible con aquel. -Está optimizado para aplicaciones de 32 bits. -Posee 32 KBytes de
caché L1 (de primer nivel) repartidos en 16KB. para datos y los otros 16 para instrucciones.
La caché de segundo nivel puede ser de 512 KB o 1 MB. -Para comunicarse con el bus
utiliza una velocidad de 100 MHz. -Incorpora 7,5 millones de transistores. -Puede cachear
hasta 4 GB de memoria RAM.

• Pentium III: Se le han añadido las llamadas SSE –Streaming SIMD Extensions–, que son 70
nuevas instrucciones orientadas hacia tareas multimedia, especial-mente en 3D. Estas
extensiones son el equivalente a las 3D Now que lleva implementando AMD desde hace tiempo en

el K6-2, K6-III y Athlon y que también han incorporado otros fabricantes –como IDT– en sus
Winchip2 y 3.

12
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Por supuesto, dicho juego de instrucciones –a pesar de realizar operaciones similares en ambos
procesadores es totalmente incompatible...

Otra de las novedades introducidas y también la más polémica es la incorporación de un número de


serie que permite identificar unívocamente a cada una de las unidades, con lo que se obtiene una
especie de “carné de identidad”, único para cada PC. Este ID se puede utilizar para realizar
transacciones más seguras a través de Internet y para facilitar la vida a los administradores de redes;
pero, también ha sido duramente criticado por algunos grupos de presión como una invasión de la
privacidad, con lo que Intel se ha visto obligada a ofrecer una utilidad que permite desactivar dicha
función:

- Está optimizado para aplicaciones de 32 bits.

- Se comercializa en versiones que van desde los 450 hasta los 600 MHz.

- Posee 32 Kbytes de caché L1 (de primer nivel) repartidos en 16Kb. para

datos y los otros 16 para instrucciones.

- La caché L2 (segundo nivel) es de 512 Kb. y trabaja a la mitad de la

frecuencia del procesador.

- La velocidad a la que se comunica con el bus (la placa base) es de 100 MHz.

- Incorpora 9,5 millones de transistores.

- Pueden cachear hasta 4 GB.

- Los modelos actuales todavía están fabricados con tecnología de 0,25 micras.

Registros internos: Son bloques de biestables que permiten el almacenamiento de los datos
básicos con los cuales va a trabajar la CPU durante la ejecución de cada instrucción.

13
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Unidad de control: Su función es enviar, consecutivamente, instrucciones del programa desde la


memoria hasta la unidad de proceso.

Unidad de proceso u operativa: Las instrucciones son decodificadas y ejecutadas en esta


unidad.

Unidad de memoria: En ella se almacena el programa a ejecutar, en forma de secuencia de


instrucciones.

Unidad de entrada/salida: Realiza la comunicación con el mundo exterior, es decir, con el ser
humano. Recibe y representa los datos y resultados de forma asequible para el hombre.

• Pentium IV: Ya hay tres nuevos procesadores basados en la arquitectura Pentium

4: 2.53, 2.40 y 2.26 GHz. Estos nuevos chips incluyen un bus de sistema a 533 MHz
a diferencia de los anteriores Pentium 4 que interactuaban con un bus de velocidad menor: a
400 MHz. La compañía anunció, asimismo, la aparición del chipset 850E, diseñado para
operar a la velocidad del nuevo bus de sistema.

• Itanium: La arquitectura EPIC –Explicity Parallel Instruction Computing– paraleliza todas


aquellas órdenes que se ejecutan en un ordenador. Si en los procesadores superescalares,
como son el Pentium III o el Pentium 4, se ejecutan dos instrucciones por ciclo de reloj,
Itanium es capaz de ejecutar hasta seis instrucciones por ciclo. Esto significa que es tres
veces más rápido (En Itanium tenemos, por ejemplo, seis unidades de suma, dos de coma
flotante y cuatro de enteros).

Principales fabricantes

Gama Pentium: Classic, MMX, Pro, PII, Celeron, Xeon, PIII, P 4

K5, K6, K6-2, K6-III, Athlon

6x86, 6x86MX, MII, Media GX

Winchip C6, Winchip2, Winchip3

14
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Sistema mínimo microprocesador

El sistema mínimo está basado en la estructura de Von Neumann. Sus bloques básicos son:

1. Unidad central de proceso –CPU, Central Process Unit –, formada por los bloques:
1.1. Registros internos.

1.2. Unidad de control.

1.3. Unidad de proceso u operativa.

2 Unidad de memoria, donde residen las instrucciones del programa y sus datos.
3 Unidad de entrada/salida, encargada de recibir y entregar información al exterior.

Los tres módulos están conectados entre sí por medio de los buses de comunicación.

Nos referiremos a tres clases de buses de comunicación:

1. Bus de direcciones.

15
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

2. Bus de datos.
3. Bus de control.

1 Bus de direcciones: A0-AM-1: Es el empleado por la CPU para seleccionar la


dirección de memoria o el dispositivo de E/S con el cual va a intercambiar
información. Es, por tanto, unidireccional. El tamaño –número de conductores que lo
constituyen– determina la capacidad de direccionamiento de la CPU, que es el
máximo número de posiciones de memoria y dispositivos E/S a los que la CPU puede
m
acceder. Para m líneas la capacidad de direccionamiento será: 2 .
16
Ejemplos: -68HC08, Z80, 8051: m=16 Capacidad de dir.= 2 = 65536 posiciones (64
20
k Byte) -80286: m=20 Capacidad de dir.= 2 = 1.048.576 posiciones (1 Mega Byte)

2 Bus de datos: D0 - DN-1: El bus de datos es el conjunto de conductores a través


del cual el microprocesador intercambia información con la unidad de memoria o E/S
seleccionada mediante el bus de direcciones.

Características: -Bidireccional: La información puede viajar en los dos sentidos. -

Número de líneas (N): representa la cantidad de bits que se pueden

transmitir simultáneamente. Suele denominarse “la palabra del µP”. -Triestado: Las

líneas del bus de datos deben ser triestado. Las líneas triestado son aquellas

capaces de tener tres estados:

1. Estado alto (High, H).


2. Estado bajo (Low, L).
3. Estado de alta impedancia (High Impedance, HZ).

16
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

El µP se está comunicando con el dispositivo E/S 1. Sólo estos dos dispositivos pueden disponer del
bus de datos. El resto de dispositivos conectados físicamente al bus de datos debe permanecer con
sus líneas en alta impedancia (dispositivo E/S 2). La unidad de control de la CPU es la que decide
qué elemento envía la información y qué elemento la recibe, así como los elementos que deben
desconectarse del bus y ponerse en alta impedancia.

3 Bus de control: Está formado por un conjunto de líneas por las que circulan las
señales auxiliares de gobierno y sincronización del sistema. Las líneas existentes dependen
del fabricante del µP y de las funciones que desee implementarle.

Algunas señales típicas en todos los sistemas son:

• Señal de reloj de sincronización.


• Señal de RESET o inicialización.
• Señal de lectura/escritura en memoria, etc.

Su diagrama de bloques es el siguiente:

17
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Esta triple estructura que se ve en el diagrama programa-unidad de proceso-unidad de control surge


de la propia estructura de los algoritmos:

Ejemplo: Comprobar si dos números son iguales INICIO Iguales = 0 Leer A y B Hacer D = A - B Si D
= 0 hacer Iguales = 1 FIN

En la parte operativa se realizan acciones y ensayos:

• Leer A y B (acción).
• Hacer A-B y asignarlo a D (acciones).
• Comprobar si D=0 (ensayo).

18
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

La parte de control define el encadenamiento (orden) de las acciones, según el resultado de los
ensayos.

Esta estructura de los algoritmos es la que dio lugar a la arquitectura Von Neumann. El elemento
básico es el microprocesador o CPU que engloba a la unidad de control y a la unidad de proceso.

Le hablábamos al comienzo de los tres bloques básicos del sistema microprocesador. Nos
referiremos, a continuación a cada uno de ellos.

1. Unidad central de proceso –CPU–

Está formada por los siguientes bloques:

1.1. Registros internos

1.2. Unidad de control

1.3. Unidad de proceso u operativa

1.1. Registros internos

Los registros pueden escribirse, leerse e intercambiar información entre ellos por medio de los buses
internos de la CPU.

19
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Con estructuras adecuadas, es posible intercambiar información entre registros, car-gar registros,
descargarlos, etc.:

Las señales CS1 y CE2 son gestionadas por la unidad de control de la CPU instruida por el código de
la instrucción de transferencia A-B.

Los datos que están almacenados en los registros de la CPU tienen un tiempo de acceso muy bajo,
muy inferior del correspondiente a los datos que se encuentran en memoria externa.

Existen diferentes tipos de registros que permiten realizar diferentes funciones:

• De desplazamiento, empleando biestables D encadenados. Permiten hacer


rotaciones y desplazamientos de bits (x2, %2, E/S serie, etc.)
• Contadores, con biestables T encadenados. Permiten medir tiempos,
temporizar, etc.
• Registros índices o de direcciones. Permiten el acceso estructurado a datos
de memoria.
• Registros de datos, para almacenamiento de variables del programa.
• Registros especiales, contador de programa (Program Counter –PC–), punte-
ro de pila (Stack Pointer –SP–).

1.2. Unidad de control

Su misión principal consiste en interpretar y ejecutar las instrucciones que le llegan desde la memoria:

20
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

• El código binario de la instrucción en curso se recibe por el bus de datos y se almacena en el


Registro de Instrucciones (IR).
• El decodificador de instrucciones selecciona las posiciones que corresponden a esa
instrucción en una memoria ROM interna de la CPU. En ella se almacenan las diferentes
instrucciones elementales o microinstrucciones –µinstrucciones– que componen esa
instrucción.
• Estas microinstrucciones hacen que el secuenciador active las señales correspondientes para
ejecutar la instrucción.
• El contador de programa –PC– es un registro que contiene la dirección de memoria donde
está la siguiente instrucción del programa a ejecutar. Una de las primeras acciones del
secuenciador, antes de ejecutar una instrucción, es incrementar el PC para que apunte a la
instrucción siguiente.
• Existen instrucciones que permiten modificar el PC o incrementarlo en más de una unidad,
permitiendo la realización de saltos en la secuencia del programa.

1.3. Unidad de proceso u operativa

El bloque principal es la ALU –unidad lógico-aritmética– que permite realizar las operaciones
aritméticas y lógicas indicadas por las instrucciones del programa.

El secuenciador –UC–, instruido por el código de la instrucción en curso, activa las líneas de
selección de la ALU para realizar la operación.

21
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Los operandos se suministran por medio de dos registros cargados desde el bus de datos:

• Registro acumulador, contiene siempre el resultado de la última operación realizada en la


ALU.
• Registro segundo operando, suministra el segundo operando para realizar la instrucción y
viene normalmente aportado por el código de operación de la instrucción a ejecutar según los
diferentes modos de direccionamiento.

Esta forma de trabajar es típica de los micros de 8 bits y permite simplificar las instrucciones, ya que
cada instrucción sólo tiene que suministrar un operando: el otro se encuentra cargado previamente en
el acumulador.

El registro de estado está formado por bits denominados banderas –flags– 1 ó 0, de acuerdo con el
resultado obtenido. Algunos bits típicos son:

• Z, bit zero, se pone a 1 si el resultado fue nulo.


• C, bit carry, se pone a 1 si hubo acarreo de orden superior.
• V, bit overflow, se pone a 1 si hubo desbordamiento.
• I, bit de interrupción. Este bit es independiente del resultado. Escribiendo un
1 en él, por medio de la instrucción correspondiente, se puede inhibir la
interrupción exterior enmascarable.

Diagrama general de un sistema basado en un microprocesador de 8 bits:

22
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

La realización de una instrucción se lleva a cabo en dos fases:

• Fase de búsqueda. Es común a todas las instrucciones. Se inicia en el contador de programa,


que contiene la dirección de memoria donde se encuentra el código binario de la instrucción.
Esta dirección se coloca en el registro de direcciones de la CPU y, de ahí a la memoria, a
través del bus de direcciones. Una vez decodificada la dirección en la memoria, su contenido
se traslada al bus de datos hacia el registro de Instrucciones de la unidad de control. En este
momento finaliza la fase de búsqueda.

23
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

• Fase de ejecución. En esta fase se decodifica la instrucción dentro de la unidad de


control. Se busca su código de microinstrucciones en la memoria interna de la CPU y
se activan las señales correspondientes del secuenciador, para ejecutar la instrucción
completa. Durante la fase de ejecución, los buses externos del sistema no son
utilizados por la CPU. Pueden ser empleados por otros dispositivos externos para
transferir datos.

Las instrucciones que constituyen el programa se almacenan en memoria, en paquetes de 8 bits


(Bytes). Normalmente, la forma es la siguiente:

• Byte 1. Es el código de operación –COP o OPCODE– que indica la operación de la


que se trata y su función. Por ejemplo: Operación lógica AND.
• Byte 2 y siguientes. Normalmente, nos dan la información necesaria para acceder al
dato sobre el que va a trabajar la instrucción. Puede ser el propio dato, la dirección de
memoria donde se encuentra el dato, etc. las diferentes posibilidades para acceder a
ese dato se denominan modos de direccionamiento del microprocesador.

24
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Los COP suelen ser del mismo tamaño que el bus de datos del micro.

• En los micros de 8 bits (6805/08, Z80, 8051), los COP son de 8 bits.
• En los micros de 16 bits (68000, 8086, Z8000), los COP son de 16 bits.

En general, el conjunto de instrucciones del microprocesador se puede dividir en los siguientes


bloques funcionales:

• Aritméticas. Suma, resta, producto, etc.


• Lógicas. AND, OR, NOT, EXOR, etc.
• De transferencia. Permiten transferir datos entre registros, entre memoria y los
registros de la CPU, entre dos posiciones de memoria, etc.
• De entrada/salida. Permiten la lectura y escritura en los bloques periféricos de E/S.
• De ruptura de secuencia del programa. Permiten realizar saltos condicionales o
incondicionales dentro del programa.
• De control. Parada (STOP), no operación (NOP), interrupciones, etc.

25
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

2. Unidad de memoria

La memoria se emplea para dos funciones básicas:

• Almacenamiento de las instrucciones que constituyen el programa. Las instrucciones


se codifican mediante su código de operación –COP–, formado por uno o varios
Bytes.
• Almacenamiento de los datos y variables del programa. Éstos están normal-mente
agrupados en paquetes de 8 bits (Byte), 16 bits (Word) o 32 bits (Long Word).

La velocidad (o el tiempo de respuesta) de la memoria debe ser compatible con el microprocesador


empleado. Normalmente, se emplean memorias basadas en semiconductores:

• RAM, memorias de lectura/escritura para almacenamiento de variables y datos del


programa. Son volátiles.
• ROM (EPROM, EEPROM), memorias de sólo lectura para almacenamiento de
programas fijos (aplicaciones, rutinas básicas de sistemas operativos, etc.) y
constantes. Son no volátiles.

26
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

3. Unidad de entrada/salida

Permiten la comunicación del sistema microprocesador con el mundo exterior. Los dispositivos de E/S
se denominan habitualmente periféricos (por ejemplo: teclado, pantalla, impresora, unidades de disco,
etc.)

Cualquier periférico necesita un módulo adicional que permite realizar su conexión con los buses del
sistema microprocesador; este módulo se denomina interface:

Existen varios métodos para manejar los dispositivos de E/S:

o Mediante instrucciones específicas de E/S que se emplean en el programa


de control para acceder al periférico.
o Mediante acceso directo a memoria –DMA–. La CPU pone en triestado los
buses de direcciones y de datos. Un dispositivo controlador de DMA toma el
control de los buses y pasa los datos, directamente, entre el dispositivo E/S y
la memoria.
o Mediante técnicas de interrupción. El periférico activa las líneas de interrup-
ción de la CPU que detienen el programa en ejecución y trasladan el

27
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

contador de programa a la dirección de inicio de otro programa creado


especialmente para atender al periférico que solicita la interrupción. Suele
denominarse rutina de servicio.

o Mediante el tratamiento de E/S como posiciones de memoria. Permite el


empleo de las mismas instrucciones para acceso a memoria y a E/S. Una
zona del mapa de memoria es reservada para los dispositivos de E/S. Estas
posiciones se llaman puertos de E/S. Escribir o leer en uno de estos puertos
equivale a hacerlo en el periférico.

Arquitecturas básicas de microprocesadores y microcontroladores. Harvard versus Von Neumann

Harvard y Von Neumann son dos arquitecturas que se caracterizan por la forma en la que distribuyen
la memoria de datos y de programa dentro de un microcontrolador.

En la arquitectura Harvard, la memoria de datos y la de programa están separadas, y para almacenar


las instrucciones se utilizan lo que da en llamarse palabras. Palabras las hay de muchos tamaños
como, por ejemplo, en los microcontroladores PIC. Los PIC de gama baja usan palabras de 12 bit, los
de gama media 14 bit y los de gama alta 16 bit.

Por otro lado, está la arquitectura Von Neumann que se caracteriza por tener la memoria de programa
y la de datos implementada en un mismo bloque de memoria, compartiendo datos e instrucciones en
un mismo bus. En este tipo de microcontroladores se usan bytes para almacenar datos e
instrucciones. Ejemplos de estos microcontroladores son los Zilog, National Semiconductors o los de
Motorola.

Ambas arquitecturas tienen ventajas e inconvenientes y, como siempre pasa en el mundo de la


electrónica, la selección depende de la aplicación en la que vayamos a usar el microcontrolador, la
frecuencia de trabajo, la conexión a otros periféricos, etc.

28
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Arquitectura Von Neumann

Los sistemas basados en arquitectura Von Neumann tienen un solo bus para acceder tanto a datos
como a instrucciones. Diremos que un microcontrolador es de 4 bit cuando el bus de éste es de 4 bit;
será de 8 bit cuando el bus sea de 8 bit. Esto facilita en gran medida la conexión de memoria externa
a través de las líneas de entrada/ salida con una mínima implementación extra de hardware.

Por contra, tenemos que una instrucción puede ocupar más de un byte, con lo que para poder leer la
instrucción completa tendremos que hacer varias lecturas en la memoria. Será necesario emplear
varios ciclos de reloj para extraer una instrucción.

Otra desventaja es que es posible que el contenido del contador del programa se corrompa, con lo
que se podría estar leyendo un dato y tratar de interpretarlo como instrucción, con la consecuencia
del deterioro y caída del sistema. Normalmente, un microprocesador controla que el contador “no
haga cosas raras”.

Una de las características que poseen los microcontroladores basados en este tipo de arquitectura es
que suelen tener un repertorio de instrucciones bastante grande. Este tipo de repertorio se llama
CISC –Complex Instruction Set Computer–. La característica principal de este conjunto es que suele
ser bastante elevado, con instrucciones microcodificadas –una instrucción es decodificada por la CPU
en varias instrucciones básicas–. Es fácil deducir que esto hace la ejecución del programa un poco
más lenta; pero, tiene la ventaja de que ahorramos memoria: para dividir sólo usamos una instrucción
(Por supuesto, aún así, tenemos que tener en cuenta que la decodificación se está llevando a cabo
en el interior del microcontrolador, lo que va a ralentizar su ejecución; y considerar qué tipo de
microcontrolador usar, según la tarea a desarrollar).

De acuerdo con la problemática a resolver, debemos seleccionar el µC según:

o Arquitectura
o Conjunto de instrucciones
o Nº de instrucciones

29
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Por ejemplo:

ƒ Pic 16Cxxx Hardvard RISC 35


ƒ Pic 17Cxxx Hardvard RISC 58
ƒ Motorola HC11 Von Neumann CISC 109
ƒ Intel 8051 Von Neumann CISC 40

Así, pues, podemos decir que la principal ventaja de usar MCU6 con conjunto de instrucciones CISC
es que, para una instrucción compleja, sólo usaremos una posición de memoria (al contrario de lo que
ocurre con RISC –Reduced Instruction Set Computer, que consideraremos en un momento más–; en
este último conjunto de instrucciones, para realizar, por ejemplo, una división debemos de usar varias
instrucciones, consumiendo más memoria).

Frente a esta ventaja de los repertorios CISC, se nos presenta una desventaja con respecto
a los RISC, y es que el ancho de banda se ve reducido considerablemente, debido a que
una instrucción va a consumir varios ciclos de instrucción para ejecutarse. Como ya
analizamos, estos microcontroladores son más lentos que los que usan repertorios RISC y,
además, puede ser que el conjunto de instrucciones sea bastante grande (como vamos a
considerarlo en nuestro próximo capítulo para Motorola HC11 o INTEL 8051), lo que no es
en sí un gran problema pero sí un trabajo extra para aprender a usarse.

Arquitectura Harvard

La arquitectura Harvard se caracteriza por tener la memoria de datos separada de la memoria del
programa y éstas, a su vez, unidas a la CPU a través de buses independientes.

El que la información se almacene en palabras tiene una gran ventaja y es que tanto el código de
operación como el dato asociado a éste están en la misma posición (por tanto, su lectura es mucho
más rápida). Ésta es una gran ventaja ya que dota al microcontrolador de gran agilidad.

La técnica de procesar varias instrucciones al mismo tiempo se conoce como pipelining

o segmentación. Con esta técnica se dividen las instrucciones en distintas etapas, de modo que el

6
MCU es la abreviatura de chip o unidad microcontroladora o microprocesador monopastilla

30
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

procesador pueda procesar distintas instrucciones en estas etapas.

Veamos un ejemplo de esto.

Una instrucción típica se divide en cinco etapas:

1 Búsqueda de la instrucción.
2 Decodificación de la instrucción.
3 Lectura del dato a través del bus de datos, ya sea de la memoria RAM o de cualquier registro
4 mapeado en cualquier parte de la zona de memoria.
5 Ejecución de la instrucción.
6 Almacenamiento del resultado en memoria.

Una desventaja de este sistema es que la adición de memoria externa es mucho más compleja e,
incluso, a veces, imposible.

En contraposición con los microcontroladores con arquitectura von Neumann, los basados en Harvard
tienen repertorios de instrucciones RISC –Reduced Instruction Set Computer–.

Sus ventajas saltan a la vista: más rapidez de ejecución de código –incluso en algoritmos de división
que vienen implementados con más código en los RISC que en los CISC, la velocidad de ejecución
es mayor en los primeros– y menor el número de instrucciones –lo que simplifica, también, nuestro
aprendizaje cuando queremos programar un MCU para una tarea simple–.

Por el contrario, requiere utilizar más memoria en un PIC7 que en un HC08 o un 8051 para realizar
una función.

Introducción a los Microcontroladores

Los microcontroladores están conquistando el mundo. Están presentes en nuestro trabajo, en nuestra
casa y en nuestra vida, en general. Se pueden encontrar controlando el funcionamiento de los
ratones y de los teclados de las computadoras, en los teléfonos, en los hornos microondas y en los
televisores de nuestro hogar. Pero... la invasión acaba de comenzar y el nacimiento del siglo XXI será
testigo de la conquista masiva de estos diminutos computadores que gobernarán la mayor parte de

7
PIC es el nombre de los microcontroladores de la línea Microchip, HC08 de la línea Motorota y 8051 de la de Intel.

31
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

los aparatos que fabricaremos y usaremos los humanos.

Se trata de un computador monopastilla de limitadas prestaciones que, normalmente, se dedica a


resolver una tarea específica. Es más pequeño que una caja de fósforos –por lo que suele estar
incluido en el dispositivo que controla– y, en ocasiones, cuesta menos que aquélla.

Un microcontrolador es un microprocesador optimizado para controlar equipos electrónicos. Los


microcontroladores representan la inmensa mayoría de los chips de ordenador vendidos: un 50% está
integrado por controladores “simples” y otro 50% por DSP –Procesador digital de señal– más
especializados. Se puede tener uno o dos microprocesadores de propósito general en casa y entre
una y dos docenas de microcontroladores –si sumamos los que contiene cada dispositivo eléctrico de
lavadoras, horno microondas, teléfonos, etc.–.

Un microcontrolador difiere de una CPU normal, debido a que es más fácil convertirlo en un
ordenador en funcionamiento, con un mínimo de microchips externos de apoyo: el chip se coloca en
el dispositivo, conectado a la fuente de energía y de información que necesita... ¡y eso es todo! Por
supuesto, un microprocesador tradicional no nos permite hacer esto, ya que espera que todas estas
tareas sean manejadas por otros chips.

Consideremos un ejemplo. Un microcontrolador típico tiene un generador de reloj integrado y una


pequeña cantidad de memoria RAM y ROM/EPROM/EEPROM; para hacerlo funcionar, sólo se
necesitan unos pocos programas de control y un cristal de sincronización.

Por lo general, los microcontroladores también disponen de una gran variedad de dispositivos de
entrada/salida, como conversores analógico a digital, temporizadores, UART y buses de interfaz serie

32
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero
2
especializados, como I C y CAN. Frecuentemente, estos dispositivos integrados pueden ser
controlados por instrucciones de procesadores especializados. Algunos microcontroladores incluyen
un lenguaje de programación integrado, como el lenguaje de programación BASIC.

El controlador embebido se emplea para controlar el funcionamiento de una tarea determinada y,


debido a su reducido tamaño, suele ir incorporado –de ahí su denominación– en el propio dispositivo
al que gobierna. Se dice que es “la solución en un chip”, porque su reducido tamaño minimiza el
número de componentes y el costo.

El microcontrolador es un computador dedicado: En su memoria sólo reside un programa destinado a


gobernar una aplicación determinada; sus líneas de entrada/salida soportan el conexionado de los
sensores y actuadores de ese dispositivo a controlar. Una vez programado y configurado, el
microcontrolador solamente sirve para gobernar la tarea asignada8.

Estas características los hacen muy apropiados para desarrollar dispositivos de control o máquinas
automáticas, ya que poseen los elementos claves de control encapsulados en un mismo chip, lo que
posibilita una inmejorable inmunidad al ruido (Inmunidad al ruido muy envidiada en los sistemas con
microprocesador que poseen sus buses al aire, paseándose por el circuito impreso, o por cintas
planas de cables de interconexión entre periféricos e interfaces).

Un microcontrolador es la unión de tres tipos de dispositivos en un chip:

ٛ Un microprocesador.
ٛ Memorias.
ٛ Otros dispositivos periféricos.

Evidentemente, el corazón del microcontrolador es un microprocesador; pero, cabe recordar que...

El microcontrolador es para una aplicación concreta y no es universal como el microprocesador.

El número de productos que funcionan en base a uno o varios microcontroladores aumenta de forma
exponencial. Casi todos los periféricos del computador (ratón, teclado, impresora, etc.) son regulados
por el programa de un microcontrolador.

8
Aún cuando estamos enfatizando el hecho de que el microcontrolador es un dispositivo dedicado a una tarea en particular,
una vez programado, gracias a los avances de la tecnología, este programa puede ser actualizado tantas veces como sea
necesario, incluso en el mismo sistema de trabajo; es decir, podemos reprogramarlo para que realice otras tareas o mejorar su
funcionamiento incorporando rutinas más apropiadas.

33
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Los electrodomésticos de línea blanca (lavadoras, hornos, Etc.) y de línea marrón (televisores, videos,
aparatos de música, etc.) incorporan numerosos microcontroladores. Igualmente, los sistemas de
supervisión, vigilancia y alarma en los edificios utilizan estos chips para optimizar el rendimiento de
ascensores, calefacción, alarmas de incendio, robo...

Los microcontroladores ofrecen la única solución práctica a muchos problemas de diversos campos:

ٛ Periféricos y dispositivos auxiliares de los computadores.


ٛ Electrodomésticos.
ٛ Aparatos portátiles y de bolsillo (tarjetas, monederos, teléfonos, etc.).
ٛ Máquinas expendedoras y juguetería.
ٛ Instrumentación.
ٛ Industria de automoción.
ٛ Control industrial y robótica.
ٛ Electromedicina.
ٛ Sistema de navegación espacial.
ٛ Sistemas de seguridad y alarma.
ٛ Domotica en general.

34
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En las aplicaciones sencillas resultan preferibles las soluciones no programables que no requieren
desarrollo de software (escribir software consume mucho tiempo, por lo que resulta más costoso; en
aplicaciones sencillas y/o de poca tirada, a menudo es más razonable efectuar tareas en hardware).
Sin embargo, conforme aumenta la complejidad del sistema, aumentan las ventajas del uso de
sistemas programables.

Una de las principales ventajas de los sistemas programables es su flexibilidad, la que permite
actualizar el funcionamiento de un sistema mediante –tan sólo– el cambio del programa, sin tener que
volver a diseñar el hardware. Esta flexibilidad es muy importante, al permitir que los productos se
actualicen con facilidad y economía.

Controlador y Microcontrolador

Partamos de un ejemplo para caracterizar cómo se vinculan, y en qué se diferencian un controlador y


un microcontrolador. El controlador que regula el funcionamiento de un horno dispone de un sensor
que mide constantemente su temperatura interna y, cuando ésta traspasa los límites prefijados,
genera las señales adecuadas que accionan los efectores que intentan llevar el valor de la
temperatura dentro del rango estipulado.

Aunque el concepto de controlador ha permanecido invariable a través del tiempo, su implementación


física ha variado frecuentemente. Hace tres décadas, los controladores se construían exclusivamente
con componentes de lógica discreta; posteriormente, se emplearon los microprocesadores, que se
rodeaban con chips de memoria y E/S sobre una tarjeta de circuito impreso. En la actualidad, todos
los elementos del controlador se han podido incluir en un chip, el cual recibe el nombre de
microcontrolador, que consiste en un sencillo pero completo computador, contenido en el corazón –
chip– de un circuito integrado.

Un microcontrolador es un circuito integrado de alta escala de integración que incorpora la mayor

35
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

parte de los elementos que configuran un controlador.

Un microcontrolador dispone normalmente de los siguientes componentes:

ٛ Procesador o CPU.
ٛ Memoria RAM para contener los datos.
ٛ Memoria para el programa tipo ROM/PROM/EPROM.
ٛ Líneas de E/S para comunicarse con el exterior.
ٛ Diversos módulos para el control de periféricos (temporizadores, puertas serie y paralelo,

ADC: conversores analógico/digital, DAC: conversores digital/ analógico, etc.).

ٛ Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema.

Los productos que para su regulación incorpora un microcontrolador, disponen de las siguientes
ventajas:

ٛ Aumento de prestaciones. Un mayor control sobre un determinado elemento representa una


ٛ mejora considerable.
ٛ
ٛ Aumento de la fiabilidad. El microcontrolador reemplaza a un elevado número de elementos,
ٛ disminuye el riesgo de averías y requiere menos ajustes.
ٛ
ٛ Reducción del tamaño en el producto acabado. La integración del microcontrolador en un chip
ٛ disminuye el volumen, la mano de obra y el stock.
ٛ
ٛ Mayor flexibilidad. Las características de control están programadas, por lo que su
ٛ modificación sólo necesita cambios en el programa de instrucciones.

Microprocesador y microcontrolador

Un microprocesador es un sistema abierto (configuración variable) con el que puede construirse un


computador con las características que se desee, acoplándole los módulos necesarios.

Un microcontrolador es un sistema cerrado que contiene un computador completo y de prestaciones


limitadas que no se pueden modificar.

36
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

El microcontrolador es un sistema cerrado. Todas las partes del computador están contenidas en su
interior y sólo salen al exterior las líneas que gobiernan los periféricos.

Cuando el volumen de información es importante o bien cuando el tratamiento de sus datos es


exigente, el sistema con microprocesador es más apropiado, por tener una estructura abierta que
permite al diseñador seleccionar los periféricos más adecuados y prever futuras expansiones de
memoria.

Decidirse por construir el sistema con el microprocesador o utilizar, directamente, el microcontrolador


dependerá de la economía. Si el µC está limitado por su propia CPU, es necesario elegir un µP
potente y añadir los buffers, drivers, decodificadores, memorias... pertinentes. Generalmente, salvo
que la aplicación exija grandes prestaciones, el µC será una solución válida, con la ventaja de que
reduce el espacio y el hardware.

Si sólo dispusiésemos de un modelo de microcontrolador, éste debe tener muy potenciados todos sus
recursos para poderse adaptar a las exigencias de las diferentes aplicaciones. Esta potenciación
supone, en muchos casos, un despilfarro.

En la práctica, cada fabricante de microcontroladores ofrece un elevado número de modelos


diferentes, desde los más sencillos hasta los más poderosos. Es posible seleccionar la capacidad de
las memorias, el número de líneas de E/S, la cantidad y potencia de los elementos auxiliares, la
velocidad de funcionamiento, etc. Por todo ello, un aspecto muy destacado del diseño es la selección
del microcontrolador a utilizar.

37
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Aplicaciones de los microcontroladores

Cada vez existen más productos que incorporan un microcontrolador con el fin de aumentar
sustancialmente sus prestaciones, reducir su tamaño y costo, mejorar su fiabilidad y disminuir el
consumo.

Este dato puede dar una idea de la masiva utilización de estos componentes: Algunos fabricantes de
microcontroladores superan el millón de unidades de un modelo determinado, producidas en una
semana. Aunque en el mercado de la microinformática la mayor atención la acaparan los desarrollos
de los microprocesadores, lo cierto es que se venden cientos de microcontroladores por cada uno de
aquéllos.

Una aplicación típica podría emplear varios microcontroladores para controlar pequeñas partes del
sistema. Estos controladores podrían comunicarse entre ellos y con un procesador central,
probablemente más potente, para compartir la información y coordinar sus acciones, como, de hecho,
ocurre ya habitualmente en cualquier PC.

Existe una gran diversidad de microcontroladores. Quizá la clasificación más importante sea entre
microcontroladores de 4, 8, 16 ó 32 bits. Aunque las prestaciones de los microcontroladores de 16 y
32 bits son superiores a los de 4 y 8 bits, la realidad es que los microcontroladores de 8 bits dominan
el mercado y los de 4 bits se resisten a desaparecer. La razón de esta tendencia es que los
microcontroladores de 4 y 8 bits son apropiados para la gran mayoría de las aplicaciones, lo que hace
absurdo emplear micros más potentes y, consecuentemente, más caros.

Uno de los sectores que más tracciona el mercado del microcontrolador es el mercado
automovilístico. De hecho, algunas de las familias de microcontroladores actuales se desarrollaron
pensando en este sector, siendo modificadas posteriormente para adaptarse a sistemas más
genéricos. El mercado del automóvil es, además, uno de los más exigentes: los componentes
electrónicos deben operar con condiciones extremas de vibración, choques, ruido, etc. y seguir siendo
fiables, ya que el fallo de cualquier componente en un automóvil puede ser el origen de un accidente.

En cuanto a las técnicas de fabricación, cabe decir que prácticamente la totalidad de los
microcontroladores actuales se fabrica con tecnología CMOS 4 –Complementary Metal Oxide
Semiconductor–. Esta tecnología supera a las técnicas anteriores por su bajo consumo y su alta
inmunidad al ruido.

La distribución de las ventas, según su aplicación, es la siguiente:

¾ Una tercera parte se absorbe en las aplicaciones relacionadas con los computadores y sus
periféricos.

38
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

¾ La cuarta parte se utiliza en las aplicaciones de consumo (electrodomésticos, juegos, TV,


video, etc.)
¾ El 16% de las ventas mundiales se destina al área de las comunicaciones.
¾ Otro 16% es empleado en aplicaciones industriales.
¾ El resto de los microcontroladores vendidos en el mundo, aproximadamente un 10%, es
adquirido por las industrias de automación.

Los modernos microcontroladores de 32 bits también van afianzando sus posiciones en el mercado.
Las áreas más interesadas en ellos son las del procesamiento de imágenes, las comunicaciones, las
aplicaciones militares, los procesos industriales y el control de los dispositivos de almacenamiento
masivo de datos.

¿Qué microcontrolador emplear?

A la hora de escoger el microcontrolador a emplear en un diseño, hay que tener en cuenta multitud
de factores, como la documentación y herramientas de desarrollo disponibles y su precio, la
cantidad de fabricantes que lo producen y, por supuesto, las características del microcontrolador
(tipo de memoria de programa, número de temporizadores, interrupciones, etc.).

Costos:. Como es lógico, los fabricantes de microcontroladores compiten duramente para vender sus
productos. Y no les va demasiado mal ya que, sin hacer demasiado ruido, venden 100 veces más
microcontroladores que microprocesadores. Para que nos hagamos una idea: para el fabricante que
usa el microcontrolador en su producto, una diferencia de precio de algunos dólares en el
microcontrolador es importante (el consumidor debe pagar, además, el costo del empaquetado, el de
los otros componentes, el diseño del hardware y el desarrollo del software). Si el fabricante desea
reducir costos, debe tener en cuenta las herramientas de apoyo con que va a contar: emuladores,
simuladores, ensambladores, compiladores, etc. Es habitual que muchos de ellos se decidan por
microcontroladores pertenecientes a una única familia, para unificar herramientas de programación,
recursos humanos, etc.

Aplicación: Antes de seleccionar un microcontrolador es imprescindible analizar los requisitos de la


aplicación:

39
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

9 Procesamiento de datos. Puede ser necesario que el microcontrolador


realice cálculos críticos en un tiempo limitado. En ese caso, debemos
seleccionar un dispositivo suficientemente rápido para ello. Por otro lado,
es necesario tener en cuenta la precisión de los datos a manejar: si no es
suficiente con un microcontrolador de 8 bits, puede ser necesario acudir a
microcontroladores de 16 ó 32 bits o, incluso, a hardware de coma
flotante9. Una alternativa más barata y quizá suficiente es usar librerías,
para manejar los datos de alta precisión.

9 Entrada/salida. Para determinar las necesidades de entrada/salida del


sistema es conveniente dibujar su diagrama de bloques, de tal forma que
sea sencillo identificar la cantidad y el tipo de señales a controlar. Una vez
realizado este análisis, puede ser necesario añadir periféricos hardware
externos o cambiar a otro microcontrolador más adecuado a ese sistema.

9 Consumo. Algunos productos que incorporan microcontroladores están ali-


mentados con baterías; su funcionamiento puede ser tan vital como activar
una alarma antirrobo. Lo más conveniente, en un caso como éste, puede
ser que el microcontrolador esté en estado de bajo consumo pero que
despierte ante la activación de una señal (una interrupción) y ejecute el
programa adecuado para procesarla.

9
Generalmente, los microcontroladores de 8 bits están preparados para trabajar con números enteros y, si necesitamos
optimizar esto, tenemos dos posibilidades:

a- utilizar un microcontrolador que trabaja con exponente y mantisa (notación científica) , llamado de punto flotante,
generalmente de 16 o 32 bits;
b- utilizar librerías ya desarrolladas para microcontroladores de 8 bits que trabajan internamente como un
microcontrolador de 16 bits. En cuanto al manejo de datos y a las operaciones aritméticas y lógicas, éstas
sobrecargan al microcontrolador; pero, logran el objetivo principal: mayor precisión en los resultados, también
llamado doble precisión (dos Byte), cuádruple precisión (cuatro Bytes), etc.

40
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

9 Memoria. Para detectar las necesidades de memoria de nuestra aplicación


debemos separarla en memoria volátil (RAM), memoria no volátil (ROM,
EPROM, etc.) y memoria no volátil modificable (EEPROM). Este último
tipo de memoria puede ser útil para incluir información específica de la
aplicación, como un número de serie o parámetros de calibración. El tipo
de memoria a emplear vendrá determinado por el volumen de ventas
previsto del producto: de menor a mayor volumen será conveniente
emplear EPROM, OTP y ROM. En cuanto a la cantidad de memoria
necesaria, puede ser imprescindible realizar una versión preliminar,
aunque sea en pseudo-código, de la aplicación, y, a partir de ella, hacer
una estimación de cuánta memoria volátil y no volátil es necesaria y si es
conveniente disponer de memoria no volátil modificable.

9 Ancho de palabra. El criterio de diseño debe ser seleccionar el


microcontrolador de menor ancho de palabra que satisfaga los
requerimientos de la aplicación. Usar un microcontrolador de 4 bits supone
una reducción importante en los costes; mientras que uno de 8 bits puede
ser el más adecuado si el ancho de los datos es de un byte. Los
microcontroladores de 16 y 32 bits, debido a su elevado coste, se reservan
para aplicaciones que requieran sus altas prestaciones (Entrada/salida
potente o espacio de direccionamiento muy elevado).

9 Diseño de la placa. La selección de un microcontrolador concreto


condiciona el diseño de la placa de circuitos. Debe tenerse en cuenta que,
quizás, usar un microcontrolador barato encarezca el resto de
componentes del diseño.

Los microcontroladores más populares10:

™ 8048 (Intel). Es el padre de los microcontroladores actuales, el primero de todos. Su precio,


disponibilidad y herramientas de desarrollo hacen que todavía sea muy popular.

10
Es preciso resaltar en este punto que existen innumerables familias de microcontroladores, cada una de las cuales posee un
gran número de variantes.

41
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

™ 8051 (Intel, Atmel y otros). Es, sin duda, el microcontrolador más popular. Fácil de programar
y potente. Está bien documentado y posee cientos de variantes e incontables herramientas
de desarrollo.

™ 80186, 80188 y 80386 EX (Intel). Versiones en microcontrolador de los populares


microprocesadores 8086 y 8088. Su principal ventaja es que permiten aprovechar las
herramientas de desarrollo para PC.

™ 68HC11/HC08 (Motorola y Toshiba). Es un microcontrolador de 8 bits potente y popular con


gran cantidad de variantes.

™ 683xx (Motorola). Surgido a partir de la popular familia 68000, a la que se incorporan algunos
periféricos. Son microcontroladores de altísimas prestaciones.

™ PIC (MicroChip). Familia de microcontroladores que gana popularidad día a día. Fueron los
primeros microcontroladores RISC.

Almacenamiento y ejecución del programa

Un programa es una lista de instrucciones al procesador. Todos los µP y µC cuentan con un conjunto
de instrucciones que pueden ejecutar. Cada tipo de procesador y controlador tiene su propio conjunto
de instrucciones y, por lo general, los programas escritos para un dispositivo no funcionan en otro de
distinta marca.

Un µC típico tiene instrucciones para:

9 Transferir información entre registros y memoria;


9 Realizar operaciones aritméticas y lógicas; +
9 Efectuar comparaciones y pruebas sobre el contenido de sus registros de memoria;
9 Controlar la secuencia de ejecución de programas.

42
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Por lo general, la operación que una instrucción ha de ejecutar está definida por un código de
operación (en µC sencillos, generalmente de un solo byte) conocido también como opcode.

Algunas instrucciones requieren, además del opcode, información extra (operandos). Por ejemplo,
una instrucción para almacenar el contenido de un registro en una posición de memoria, necesita
incluir la dirección de memoria de destino.

La unidad de control y decodificación de instrucciones es el corazón del procesador. Es la encargada


de extraer de forma secuencial las instrucciones de la memoria y, luego, ejecutarlas.

Unido a la unidad de control se encuentra un generador de reloj, que utiliza un oscilador para producir
una señal de reloj muy precisa. El tiempo se divide en un cierto número de ciclos de reloj.

El funcionamiento de la unidad de control y decodificación de instrucciones se puede dividir en dos


partes (ambas duran varios ciclos de reloj):

9 Ciclo de búsqueda de instrucciones. En él se transfiere la dirección de la siguiente


instrucción al bus de direcciones, se envía una orden de lectura a los dispositivos de
memoria a través del bus de control, se lee la información del bus de datos y, si se
trata del primer byte de una instrucción, se transfiere este byte al registro de
instrucciones.
9 Ciclo de ejecución de instrucciones. En él se ejecuta la instrucción. El registro de
instrucciones está conectado a un decodificador que determina cuántos bytes de
información adicionales se requieren. Éstos se cargan mediante ciclos de búsqueda,
como ya indicamos.

Cuando la ejecución está completa, la máquina comienza, automáticamente, el ciclo de búsqueda de


la siguiente instrucción del programa.

La ejecución es, por tanto, una secuencia continua de ciclos de búsqueda y ejecución.

Recursos comunes a todos los microcontroladores

Nos referiremos en este punto a decisiones respecto de:

• Arquitectura básica.
• Procesador o CPU.
• Memoria.
• Puertas de entrada y salida.
• Reloj principal.

43
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Arquitectura básica

Aunque, inicialmente, todos los microcontroladores adoptan la arquitectura clásica de Von Neumann,
hoy día hay mayor tendencia hacia la arquitectura Harvard.

o Bus de datos. Se emplea para transferir datos. El número de líneas de este


bus es igual a la longitud de palabra del dispositivo.
o Bus de direcciones. Permite transferir información de direcciones. El número
de líneas en el bus de direcciones determina el numero de posiciones de me-
moria que el procesador puede especificar. Un bus de direcciones de 8 líneas
8
es capaz de posicionar sólo 2 (256) direcciones.
o Bus de control. El procesador utiliza las líneas del bus de control para
sincronizar operaciones con componentes externos.

Por ejemplo:

Si el procesador o microcontrolador desea almacenar una palabra de datos en una


ubicación de memoria particular, coloca los datos en el bus de datos, la dirección en la que se
van a almacenar los datos en el bus de direcciones y diversas señales de control para
sincronizar la operación de almacenamiento en el bus de control.

La necesidad de conseguir rendimientos elevados en el procesamiento de las

44
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

instrucciones ha desembocado en el empleo cada vez mayor de procesadores de arquitec-


tura Harvard, frente a los tradicionales que siguen la arquitectura de Von Neumann. Mientras
esta última –como le planteábamos en la primera parte del curso– se caracteriza porque la
CPU se conecta a una memoria única donde coexisten datos e instrucciones a través de un

sistema de buses, en la arquitectura Harvard son independientes la memoria de


instrucciones y la memoria de datos, y cada una dispone de su propio sistema de buses para
el acceso, lo que propicia el paralelismo:

La arquitectura Harvard dispone de dos memorias independientes:

o una que contiene sólo instrucciones


o otra, sólo datos.

Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones
de acceso (lectura o escritura) simultáneamente en ambas memorias.

Procesador o CPU

Es el elemento más importante del microcontrolador y determina sus principales características, tanto
a nivel hardware como software.

Se encarga de direccionar la memoria de instrucciones, recibir el código OP de la instrucción en


curso, su decodificación y la ejecución de la operación que implica la instrucción, así como la
búsqueda de los operandos y el almacenamiento del resultado.

45
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores actuales.

ٛ CISC. Un gran número de procesadores usados en los microcontroladores está basado en la


filosofía CISC –computadores de juego de instrucciones complejo–. Disponen de más de 80
instrucciones de máquina en su repertorio, algunas de las cuales son muy sofisticadas y

potentes, requiriendo muchos ciclos para su ejecución. Una ventaja de los procesadores
CISC es que ofrecen al programador instrucciones complejas que actúan como macros.

ٛ RISC. Tanto la industria de los computadores comerciales como la de los microcontroladores


están decantándose hacia la filosofía RISC –computadores de juego de instrucciones
reducido–. En estos procesadores, el repertorio de instrucciones máquina es muy reducido y
las instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez
de las instrucciones permiten optimizar el hardware y el software del procesador.

ٛ SISC. En los microcontroladores destinados a aplicaciones muy concretas, el juego de


instrucciones, además de ser reducido, es específico: las instrucciones se adaptan a las
necesidades de la aplicación prevista –computadores de juego de instrucciones específico–.

Memoria

En los microcontroladores, la memoria de instrucciones y datos está integrada en el propio chip:

o Una parte es no volátil, tipo ROM, y se destina a contener el programa de


instrucciones que gobierna la aplicación.
o Otra parte de memoria es tipo RAM, volátil, y se destina a guardar las variables y los
datos.

Hay dos peculiaridades que diferencian a los microcontroladores de los computadores personales:

o En los µC no existen sistemas de almacenamiento masivo como disco duro o


disquetes.
o Como los µC sólo se destinan a una tarea, en la memoria ROM sólo hay que
almacenar un único programa de trabajo.

La RAM en estos dispositivos es de poca capacidad, pues sólo debe contener las variables y los
cambios de información que se produzcan en el transcurso del programa.

Por otra parte, como sólo existe un programa activo, no se requiere guardar su copia en la RAM pues
se ejecuta directamente desde la ROM.

Los usuarios de computadores personales están habituados a manejar Megabytes de memoria; pero,
los diseñadores con microcontroladores trabajan con capacidades:

46
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

9 de ROM comprendidas entre 2 k bytes y 64 k bytes, y


9 de RAM comprendidas entre 20 bytes y 2 K bytes.

Según el tipo de memoria ROM que dispongan los microcontroladores, su aplicación y utilización son
diferentes. Las cinco versiones de memoria no volátil que se pueden encontrar en los
microcontroladores del mercado, son:

ƒ ROM con máscara. Es una memoria no volátil de sólo lectura, cuyo contenido se
graba durante la fabricación del chip. El elevado coste del diseño de la máscara sólo
hace aconsejable el empleo de los microcontroladores con este tipo de memoria
cuando se precisan cantidades superiores a varios miles de unidades.
ƒ OTP –One Time Programmable–. El microcontrolador contiene una memoria no volátil
de sólo lectura, “programable una sola vez” por el usuario. Es el usuario quien puede
escribir el programa en el chip mediante un sencillo grabador controlado por un
programa desde una PC. La versión OTP es recomendable cuando es muy corto el
ciclo de diseño del producto, o bien en la construcción de prototipos y series muy
pequeñas. Tanto en este tipo de memoria como en la EPROM, se suele usar la
encriptación mediante fusibles para proteger el código contenido.
ƒ EPROM –Erasable Programmable Read OnIy Memory–. Los microcontroladores que
disponen de memoria EPROM pueden borrarse y grabarse muchas veces. La
grabación se realiza, como en el caso de los OTP, con un grabador gobernado desde
una PC. Si, posteriormente, se desea borrar el contenido, disponen de una ventana
de cristal de cuarzo en su superficie por la que se somete a la EPROM a rayos
ultravioleta durante varios minutos. Las cápsulas son de material cerámico, por lo que
son más caros que los microcontroladores con memoria OTP, los que están hechos
con material plástico.
ƒ EEPROM –Electrical Erasable Programmable Read OnIy Memory-. Se trata de
memorias de sólo lectura, programables y borrables eléctricamente. Tanto la
programación como el borrado se realizan eléctricamente desde el propio grabador y
bajo el control programado de una PC. Las operaciones de grabado y de borrado son
muy cómodas y rápidas. No disponen de ventana de cristal de cuarzo en la
superficie. Los microcontroladores dotados de memoria EEPROM, una vez instalados
en el circuito, pueden grabarse y borrarse cuantas veces se quiera, sin ser retirados
de dicho circuito. Para ello se usan “grabadores en circuito” que confieren una gran
flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo.
El número de veces que puede grabarse y borrarse una memoria EEPROM es finito,
por lo que no es recomendable una reprogramación continua. Son muy idóneas para
la enseñanza y la ingeniería de diseño. Por todas estas ventajas, se va extendiendo
en los fabricantes la tendencia de incluir una pequeña zona de memoria EEPROM en
los circuitos programables para guardar y modificar cómodamente una serie de
parámetros que adecuan el dispositivo a las condiciones del entorno. Este tipo de
memoria es relativamente lento.
ƒ FLASH. Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y
borrar. Funciona como una ROM y una RAM; pero, consume menos y es más
pequeña. A diferencia de la ROM, la memoria FLASH es programable en el circuito.
Es más rápida y de mayor densidad que la EEPROM. La alternativa FLASH está
recomendada frente a la EEPROM, cuando se precisa gran cantidad de memoria de
programa no volátil. Es más veloz y tolera más ciclos de escritura/borrado. Las
memorias EEPROM y FLASH son muy útiles al permitir que los microcontroladores
que las incorporan puedan ser reprogramados “en circuito”, es decir, sin tener que
sacar el circuito integrado de la tarjeta. Así, un dispositivo con este tipo de memoria
incorporado al control del motor de un automóvil permite que pueda modificarse el
programa durante la rutina de mantenimiento periódico, compensando los desgastes
y otros factores tales como la compresión, la instalación de nuevas piezas, etc. La
reprogramación del microcontrolador puede convertirse en una labor rutinaria dentro

47
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

de la puesta a punto.

Hay miles de posiciones de memoria o más en un sistema de MCU.

Es importante, entonces, contar con un medio conveniente para no perder de vista su contenido. Un
mapa de memoria es una representación gráfica de la totalidad de la memoria del MCU.

Veamos el mapa de memoria de un microcontrolador:

48
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Las memorias pueden ser una forma de periféricos. Ya hemos discutido el uso de diferentes
tipos de memoria, pero sin considerar la lógica requerida para soportarlas.

ٛ Las ROM y RAM son muy íntegras y no requieren lógica de soporte más que la lógica de
selección de direcciones para distinguir una posición de otra. Esta lógica es provista en el mismo chip
que aloja a la memoria.

ٛ Las memorias EPROM (PROM borrable) y EEPROM (PROM borrable eléctricamente)


requieren una lógica de soporte para grabarlas (y borrarlas en las EPROM).

Por ejemplo, la lógica periférica de soporte para el MC68HC908KX8 es similar a un grabador de


PROM, contenido en la misma MCU. Un registro de control incluye bits de control para seleccionar
entre los modos de grabación y lectura, y para habilitar la fuente de alimentación de programación de
alta tensión.

Puertas de entrada y salida

La principal utilidad de las patitas que posee la cápsula que contiene un microcontrolador es soportar
las líneas de E/S que comunican al computador interno con los periféricos exteriores.

Según los controladores de periféricos que posea cada modelo de microcontrolador, las líneas de E/S
se destinan a proporcionar el soporte a las señales de entrada, salida y control.

Se pueden observar al menos trece líneas que pueden trabajar como entradas o salidas, sin contar la
de interrupción (IRQ1)

49
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Reloj principal

Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de
alta frecuencia, que configura los impulsos de reloj usados en la sincronización de todas las
operaciones del sistema.

Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se necesitan unos

pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos


componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador
cerámico o una red R-C. Aumentar la frecuencia de reloj supone disminuir el tiempo en que se
ejecutan las instrucciones, pero lleva aparejado un incremento del consumo de energía.

Recursos especiales

Cada fabricante oferta numerosas versiones respecto de la arquitectura básica de microcontrolador


que acabamos de presentar. En algunas amplía las capacidades de las memorias, en otras incorpora
nuevos recursos, en otras reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La
labor del diseñador es encontrar el modelo que satisfaga todos los requerimientos de su aplicación,
minimizando el costo, el hardware y el software.

Los principales recursos específicos que incorporan los microcontroladores son:

9 Temporizadores –Timers–
9 Perro guardián –Watchdog o COP–
9 Protección ante fallo de alimentación –Brownout o LVI–
9 Estado de reposo o de bajo consumo
9 Conversor A/D –ADC–
9 Conversor D/A –DAC–
9 Comparador analógico
9 Modulador de anchura de impulsos –PWM–
9 Puertas de E/S digitales
9 Puertas de comunicación

Temporizadores –Timers–

Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de


acontecimientos que suceden en el exterior (contadores).

Para la medida de tiempos, se carga un registro con el valor adecuado y, a continuación, dicho valor
se va incrementando o decrementando al ritmo de los impulsos de reloj o algún múltiplo, hasta que se
desborde y llegue a 0, momento en el que se produce un aviso.

Cuando se desea contar acontecimientos que se materializan por cambios de nivel o flancos en

50
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

alguna de las patitas del microcontrolador, el mencionado registro se va incrementando o


decrementando al ritmo de dichos impulsos.

Perro guardián –Watchdog o COP–

Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa el botón

del reset y se reinicia el sistema. Pero, un microcontrolador funciona sin el control de un supervisor y
de forma continuada las 24 horas del día, por lo que requiere este recurso especial.

El perro guardián consiste en un temporizador que, cuando se desborda y pasa por 0, provoca un
reset –automáticamente– en el sistema.

Se diseña el programa de trabajo que controla la tarea, de forma tal que refresca o inicializa al perro
guardián antes de que provoque el reset. Si falla el programa o se bloquea, no se refresca al perro
guardián y, al completar su temporización, “ladrará ” provocando el reset.

Protección ante fallo de alimentación –Brownout o LVI–

Se trata de un circuito que resetea al microcontrolador cuando la tension de alimentación (VDD) es


inferior a un valor mínimo –brownout–. Mientras la tension de alimentación es inferior al de brownout,
el dispositivo se mantiene reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho
valor.

Su denominación LVI corresponde a Interrupción por bajo nivel de tensión.

Estado de reposo o de bajo consumo

Son abundantes las situaciones reales de trabajo en las que el microcontrolador debe esperar, sin
hacer nada, a que se produzca algún acontecimiento externo que lo ponga de nuevo en
funcionamiento.

Para ahorrar energía –factor clave en los aparatos portátiles–, los microcontroladores disponen de
una instrucción especial (Sleep en los PIC; Stop wait, Sleep en Motorola) que los pasa al estado de
reposo o de bajo consumo, en el cual los requerimientos de potencia son mínimos. En dicho estado
se detiene el reloj principal y se “congelan” sus circuitos asociados, quedando sumido el mC en un
profundo “sueño”. Al activarse una interrupción ocasionada por el acontecimiento esperado, el
microcontrolador se despierta y reanuda su trabajo (En Motorola –dependiendo de cuál se utiliza–,
puede quedar algún circuito interno funcionando).

51
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Conversor A/D –ADC–

Los microcontroladores que incorporan un conversor A/D (analógico/digital) pueden procesar señales
analógicas, tan abundantes en las aplicaciones.

Un multiplexor permite aplicar a la entrada del ADC diversas señales analógicas, de-de las patitas del
circuito integrado.

Conversor D/A –DAC–

Transforma los datos digitales obtenidos del procesamiento del computador en su correspondiente
señal analógica, que saca al exterior por una de las patitas de la cápsula. Existen muchos sistemas
de control que trabajan con señales analógicas.

En algunos microcontroladores, dicha señal analógica puede generarse con la salida PWM
debidamente filtrada.

Comparador analógico

Algunos modelos de microcontroladores disponen internamente de un amplificador operacional que


actúa como comparador entre una señal fija de referencia y otra variable que se aplica por una de las
patitas de la cápsula.

La salida del comparador proporciona un nivel lógico 1 ó 0, según una señal sea mayor o menor que
la otra.

También hay modelos de microcontroladores con un módulo de tensión de referencia que


proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores (por
ejemplo: AT80251 de Atmel).

Modulador de ancho de pulso o PWM

Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen al exterior a
través de las patitas del encapsulado.

Permiten implementar salidas analógicas si son filtradas con un capacitor y una resistencia.

Además, se logra comandar servos de aeromodelismo –que son muy aplicados en robótica– y

52
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

generar control de ángulo para señales de alterna de 220 Vac con triacs.

Puertas de E/S digitales

Todos los microcontroladores destinan algunas de sus patitas a soportar líneas de E/S digitales. Por
lo general, estas líneas se agrupan de ocho en ocho, formando puertas.

Las líneas digitales de las puertas pueden configurarse como Entrada o como Salida, cargando un 1
ó un 0 en el bit correspondiente de un registro destinado a su configuración.

Puertas de comunicación

Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros dispositivos


externos, otros buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos
con otros elementos bajo otras normas y protocolos, algunos modelos disponen de recursos que
permiten directamente esta tarea, entre los que destacan:

¾ UART, adaptador de comunicación serie asíncrona.


¾ USART, adaptador de comunicación serie síncrona y asíncrona.
¾ Puerta paralela esclava para poder conectarse con los buses de otros
microprocesadores.
¾ USB –Universal Serial Bus–, moderno bus serie para los PC.
¾ Bus I 2 C, que es un interfaz serie de dos hilos desarrollado por Philips.
¾ CAN –Controller Area Network– para permitir la adaptación con redes de co-
nexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el
cableado de dispositivos en automóviles (En EE.UU. se usa el J185O).

Herramientas para el desarrollo de aplicaciones

Entre todos los demás, uno de los factores que más importancia tiene a la hora de seleccionar un
microcontrolador es el soporte –tanto software como hardware– de que dispone. Un buen conjunto de
herramientas de desarrollo puede ser decisivo en la elección, ya que supone una ayuda inestimable
en el desarrollo del proyecto.

Las principales herramientas de ayuda al desarrollo de sistemas basados en microcontroladores son:

53
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

¾ Ensamblador. La programación en lenguaje ensamblador puede resultar un tanto ardua para el


principiante; pero, permite desarrollar programas muy eficientes, ya que otorga al programador el
dominio absoluto del sistema. Los fabricantes suelen proporcionar el programa ensamblador de
forma gratuita y, en cualquier caso, siempre se puede encontrar una versión gratuita para los
microcontroladores más populares.
¾ Compilador. La programación en un lenguaje de alto nivel (como el C); permite disminuir el
tiempo de desarrollo de un producto. No obstante, si no se programa con cuidado, el código
resultante puede ser mucho más ineficiente que el programado en ensamblador. Las versiones
más potentes suelen ser muy caras; aunque, para los microcontroladores más populares pueden
encontrarse versiones demo limitadas e, incluso, compiladores gratuitos.
¾ Depuración. Debido a que los microcontroladores van a controlar dispositivos físicos, los
desarrolladores necesitan herramientas que les permitan comprobar el buen funcionamiento del
microcontrolador, cuando es conectado al res-to de circuitos.

¾ Simulador. Son capaces de ejecutar en un PC programas realizados para el microcontrolador.


Los simuladores permiten tener un control absoluto sobre la ejecución de un programa, siendo
ideales para su depuración. Su gran inconveniente es que es difícil simular la entrada y salida de
datos del microcontrolador. Tampoco cuentan con los posibles ruidos en las entradas; pero, al
menos, permiten el paso físico de la implementación de un modo más seguro y menos costoso,
puesto que ahorramos en grabaciones de chips para la prueba in-situ.

¾ Placas de evaluación. Se trata de pequeños sistemas con un microcontrolador ya montado, que


suelen conectarse a un PC desde el que se cargan los programas que se ejecutan en el
microcontrolador. Las placas suelen incluir visualizadores LCD, teclados, LED, fácil acceso a los
pines de E/S, etc. El sistema operativo de la placa recibe el nombre de programa monitor. El
programa monitor de algunas placas de evaluación, aparte de permitir cargar programas y datos
en la memoria del microcontrolador, posibilita realizar, en cualquier momento, ejecuciones paso a
paso, monitorizar el estado del microcontrolador o modificar los valores almacenados en los
registros o en la memoria.

¾ Emulador en circuito. Se trata de un instrumento que se coloca entre el PC anfitrión y el zócalo


de la tarjeta de circuito impreso donde se alojará el microcontrolador definitivo. El programa es
ejecutado desde el PC; pero, para la tarjeta de aplicación es como si lo hiciese el mismo
microcontrolador que luego irá en el zócalo. Presenta en pantalla toda la información tal y como
luego sucederá cuando se coloque la cápsula.

Ejemplos de microcontroladores, usos y aplicaciones

54
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Gran parte de los fabricantes de circuitos integrados dispone de su propia línea de


microcontroladores.

En la tabla reseñamos los fabricantes más destacados:

55
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Fabricante Modelo de µC

Intel 8048, 8051, 80C196, 80186, 80188, 80386EX

Motorola 6805, 68HC11, 68HC08, 68HC16, 683XX


Hitachi HD64180
Philips Gama completa de clónicos del 8051 / 52
SGS-Thomson (ST) ST-62XX
Microchip PICs (Familias 12, 14, 16, 17 y 18)
National Semiconductor COP8, derivados de 8051/ 8052
Zilog Z8, Z80
Texas Instruments TMS370, derivados de 8051/ 8052
Toshiba TLCS-870
Infineon C500
Dallas DS5000
Nec 78K
Atmel AT91, AT89S8252, derivados de 8051/ 8052

Cada fabricante de microcontroladores oferta un elevado número de modelos diferentes, desde los más sencillos
hasta los más poderosos, de forma que es posible seleccionar la capacidad de la memoria, el número de líneas
de E/S, la cantidad y potencia de elementos auxiliares, la velocidad de funcionamiento, etc.

En la figura se muestra el ranking de ventas en Europa de microcontroladores de 8 bits: Se considera a Intel


como el padre de los microcontroladores y al 8048 como el primer microcontrolador de 8 bits (fabricado por Intel
en la década de los ’70). Otra de las principales empresas del mundo de dispositivos programables es Motorola,
que dispone de potentes microcontroladores como son las familias 68HC11 y 68HC08.

56
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Los microcontroladores PIC de la empresa americana Microchip se emplean en la actualidad cada vez más,
debido a su bajo coste, facilidad de uso, y la abundancia de información y herramientas de apoyo.

Microprocesador

ٛ Computadores (ordenadores personales).


ٛ Controladores buses industriales.

Microcontrolador:

ٛ Electrodomésticos.
ٛ Tarjetas de control de acceso.
ٛ Juguetes.
ٛ Automación.
ٛ TV, audio y video.
ٛ Máquinas y equipos industriales

DSP –procesador digital de señal–:

ٛ Reconocimiento de voz, procesamiento de señales acústicas.


ٛ Módem.

Usos y aplicaciones de microprocesadores:

Usos y aplicaciones de microcontroladores:

57
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Los microcontroladores en uso más comunes, por fabricante, son:

¾ Motorola. 8-bit: 68HC05, 68HC08, 68HC11. 16 bit: 68HC12, 68HC16. 32-bit: 683xx
¾ Microchip. 12-bit: Instruction PIC. 14-bit: Instruction PIC y HT8 PIC16F84. 16bit Instruction PIC
¾ Atmel. AVR
¾ Hitachi. Hitachi H8
¾ Holtek. HT8
¾ Intel. 8-bit: 8XC42, MCS51, 8xC251. 16-bit: MCS96, MXS296
¾ National Semiconductor. COP8
¾ NEC. 78K
¾ ST. ST 62, ST 7
¾ Texas Instruments. TMS370
¾ Zilog. Z8, Z86E02
¾ Genérico. Algunas arquitecturas de microcontrolador están disponibles por tal cantidad de
vendedores y en tantas variedades, que podrían tener, con total corrección, su propia categoría.
Entre ellos encontramos, principalmente, las variantes de Intel 8051 y Z80.

Los Microcontroladores PIC

A partir de este punto dejaremos los aspectos generales de los microcontroladores para dedicarnos
exclusivamente al estudio, análisis y uso de los microcontroladores de Microchip, denominados comercialmente
bajo el nombre PIC.

Desde la invención del circuito integrado, el desarrollo constante de la electrónica digital ha dado lugar
a dispositivos cada vez más complejos. Entre ellos los microprocesadores y los microcontroladores, los
cuales son básicos en las carreras de ingeniería electrónica.

PORQUE LOS PIC?

Dedicarnos al estudio específico de los PIC no significa que se quiera presentar a esta familia como la
"mejor". Considerando el momento actual, comparando los parámetros fundamentales con los modelos
comerciales de otros fabricantes y las aplicaciones más habituales a las que se destinan los
microcontroladores, podríamos pensar que casi en un 90 % de los casos la elección de una versión
adecuada de PIC es la mejor solución. Sin embargo, otras familias de microcontroladores son más
eficaces en aplicaciones concretas, especialmente si predomina una característica especial.

Pero no hay que dejar pasar la ocasión de afirmar que en la actualidad los PIC tienen "algo" que
fascina a los diseñadores. Pueden ser la velocidad, el precio, la facilidad de uso, la información, las
herramientas de apoyo. Quizás un poco de todo es lo que produce esa imagen de sencillez y utilidad.
Es muy posible que mañana otra familia de microcontroladores le arrebate ese "algo". Es la ley del
mercado y la competencia.

58
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

BREVE RESEÑA HISTORICA ACERCA DE LOS PIC

En 1965, la empresa GI creó una división de microelectrónica, GI Microelectronics División, que


comenzó su andadura fabricando memorias EPROM y EEPROM, que conformaban las familias AY3-
XXXX y AY5-XXXX. A principios de los años 70 diseñó el microprocesador de 16 bits CP1600,
razonablemente bueno pero que no manejaba eficazmente las Entradas y Salidas. Para solventar este
problema, en 1975 diseñó un chip destinado a controlar E/S: el PIC (Peripheral Interface Controller).
Se trataba de un controlador rápido pero limitado y con pocas instrucciones pues iba a trabajar en
combinación con el CP1600.

La arquitectura del PIC, que se comercializó en 1975, era sustancialmente la misma que la de los
actuales modelos PIC16C5X. En aquel momento se fabricaba con tecnología NMOS y el producto sólo
se ofrecía con memoria ROM y con un pequeño pero robusto microcódigo.
La década de los 80 no fue buena para GI, que tuvo que reestructurar sus negocios, concentrando sus
actividades en los semiconductores de potencia. La GI Microelectronics División se convirtió en una
empresa subsidiaria, llamada GI Microelectronics Inc. Finalmente, en 1985, la empresa fue vendida a
un grupo de inversores de capital de riesgo, los cuales, tras analizar la situación, rebautizaron a la
empresa con el nombre de Arizona Microchip Technology y orientaron su negocio a los PIC, las
memorias EPROM paralelo y las EEPROM serie. Se comenzó rediseñando los PIC, que pasaron a
fabricarse con tecnología CMOS, surgiendo la familia de gama baja PIC16CSX, considerada como la
"clásica".

Una de las razones del éxito de los PIC se basa en su utilización. Cuando se aprende a manejar uno
de ellos, conociendo su arquitectura y su repertorio de instrucciones, es muy fácil emplear otro modelo.
Microchip cuenta con su factoría principal en Chandler, Arizona, en donde se fabrican y prueban los
chips con los más avanzados recursos técnicos. En 1993 construyó otra factoría de similares
características en Tempe, Arizona. También cuenta con centros de ensamblaje y ensayos en Taiwan y
Tailandia. Para tener una idea de su alta producción, hay que tener en cuenta que ha superado el
millón de unidades por semana en productos CMOS de la familia PIC16CSX.

CARACTERISTICAS RELEVANTES

1ª. La arquitectura del procesador sigue el modelo Harvard

En esta arquitectura, el CPU se conecta de forma independiente y con buses distintos con la memoria
de instrucciones y con la de datos.

59
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Bus de datos Bus de Instrucciones

MEMORIA DE MEMORIA DE
CPU
DATOS INSTRUCCIONES
8 12

La arquitectura Harvard permite al CPU acceder simultáneamente a las dos memorias. Además,
propicia numerosas ventajas al funcionamiento del sistema como se irán describiendo.

2ª. Se aplica la técnica de segmentación (“pipe-line”) en la ejecución de las instrucciones.


La segmentación permite al procesador realizar al mismo tiempo la ejecución de una instrucción y la
búsqueda del código de la siguiente. De esta forma se puede ejecutar cada instrucción en un ciclo (un
ciclo de instrucción equivale a cuatro ciclos de reloj).

CLK

ciclo

BI3 BI2 BI1

EI3 EI2 EI3

Fin INSTR0
Fin INSTR1
Fin INSTR2

La segmentación permite al procesador ejecutar cada instrucción en un ciclo de instrucción equivalente


a cuatro ciclos de reloj. En cada ciclo se realiza la búsqueda de una instrucción y la ejecución de la
anterior.

Las instrucciones de salto ocupan dos ciclos al no conocer la dirección de la siguiente instrucción hasta
que no se haya completado la de bifurcación.

3ª. El formato de todas las instrucciones tiene la misma longitud

60
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Todas las instrucciones de los microcontroladores de la gama baja tienen una longitud de 12 bits. Las
de la gama media tienen 14 bits y más las de la gama alta. Esta característica es muy ventajosa en la

optimización de la memoria de instrucciones y facilita enormemente la construcción de ensambladores


y compiladores.

4ª. Procesador RISC (Computador de Juego de Instrucciones Reducido)


Los modelos de la gama baja disponen de un repertorio de 33 instrucciones, 35 los de la gama media y
casi 60 los de la alta.

5ª. Todas las instrucciones son ortogonales


Cualquier instrucción puede manejar cualquier elemento de la arquitectura como fuente o como
destino.

6ª. Arquitectura basada en un banco de registros.


Esto significa que todos los objetos del sistema (puertos de E/S, temporizadores, posiciones de
memoria, etc.) están implementados físicamente como registros.

7ª. Diversidad de modelos de microcontroladores con prestaciones y recursos diferentes.


La gran variedad de modelos de microcontroladores PIC permite que el usuario pueda seleccionar el
más conveniente para su proyecto.

8ª. Herramientas de soporte potentes y económicas


La empresa Microchip y otras que utilizan los PIC ponen a disposición de los usuarios numerosas
herramientas para desarrollar hardware y software. Son muy abundantes los programadores, los
simuladores software, los emuladores en tiempo real, ensambladores, Compiladores C, Intérpretes y
Compiladores BASIC, etc.

ANALISIS COMPARATIVO DE PRESTACIONES

La arquitectura Harvard y la técnica de la segmentación son los principales recursos en los que se
apoya el elevado rendimiento que caracteriza estos dispositivos programables, mejorando dos
características esenciales:

1. Velocidad de ejecución.

2. Eficiencia en la compactación del código.

LAS TRES GAMAS DE PIC.

61
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Para. resolver aplicaciones sencillas se precisan pocos recursos; en cambio, las aplicaciones grandes
requieren numerosos y potentes. Siguiendo esta filosofía, Microchip construye diversos modelos de
microcontroladores orientados a cubrir, de forma, las necesidades de cada proyecto. Así, hay
disponibles microcontroladores sencillos y baratos para atender las aplicaciones simples y otros
complejos y más costosos para las de mucha envergadura.
Entre los fabricantes de microcontroladores hay dos tendencias para resolver las demandas de los
usuarios:

1ª. Microcontroladores de arquitectura cerrada


Cada modelo se construye con un determinado CPU, cierta capacidad de memoria de datos, cierto tipo
y capacidad de memoria de instrucciones, un número de E/S y un conjunto de recursos auxiliares muy
concreto. El modelo no admite variaciones ni ampliaciones.
La aplicación a la que se destina debe encontrar en su estructura todo lo que precisa y, en caso
contrario, hay que desecharlo. Microchip ha elegido principalmente este modelo de arquitectura.

2ª. Microcontroladores de arquitectura abierta


Estos microcontroladores se caracterizan porque, además de disponer de una estructura interna
determinada, pueden emplear sus líneas de E/S para sacar al exterior los buses de datos, direcciones
y control, con lo que se posibilita la ampliación de la memoria y las E/S con circuitos .integrados
externos. Microchip dispone de modelos PIC con arquitectura abierta, sin embargo, esta alternativa se
escapa de la idea de un microcontrolador incrustado y se asemeja a la. solución que emplean los
clásicos microprocesadores.

Se entiende que los verdaderos microcontroladores responden a la arquitectura cerrada y


permiten resolver una aplicación con un solo circuito integrado y a precio muy reducido.

La mayoría de los sistemas de control incrustados requieren CPU, memoria de datos, memoria de
instrucciones, líneas de E/S, y diversas funciones auxiliares como temporizadores, comunicación serie
y otras. La capacidad y el tipo de las memorias, el número de líneas de E/S y el de temporizadores, así
como circuitos auxiliares, son parámetros que dependen exclusivamente de la aplicación y varían
mucho de unas situaciones a otras. Quizás se pueda considerar la decisión más importante del
proyecto la elección del modelo de microcontrolador. Para adaptarse de forma óptima a las
necesidades de los usuarios, Microchip oferta tres gamas de microcontroladores de 8 bits
Con las tres gamas de PIC se dispone de gran diversidad de modelos y encapsulados, pudiendo
seleccionar el que mejor se adapte a las necesidades de acuerdo con el tipo y capacidad de las
memorias, el número de líneas de E/S y las funciones auxiliares precisas. Sin embargo, todas las
versiones están construidas alrededor de una arquitectura común, un repertorio mínimo de
instrucciones y un conjunto de opciones muy apreciadas, como el bajo consumo y el amplio margen

62
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

del voltaje de alimentación. En la figura siguiente se muestra la distribución de los modelos de PIC en
las tres gamas.

PIC17CXX
OTP/
EPROM
Gama Alta

PIC16CXXX
OTP/EPROM
Gama Media

PIC16C5X
OTP/EPROM/EEPROM
PIC12CXX
OTP
Gama Baja

63
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En la siguientes Tablas se presentan las prestaciones de cada modelo de PIC.

64
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

65
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Junto con los microcontroladores, Microchip ha creado una serie de herramientas de ayuda al
desarrollo del hardware y software de los proyectos de aplicación, que son válidas para la mayoría de
sus modelos y que se citan a continuación.

1º Ensamblador MPASM.
2° Simulador software MPSlM. No soporta los modelos PICI7CXX.
3º Compilador de lenguaje C, MP-C.
4º Programador universal PRO MATE.
5º Emulador universal PIC MASTER.
6° Herramienta de desarrollo para Lógica difusa FUZZY TECH-MP.
7º Entorno de Desarrollo Integrado MPLAB

66
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

PIC17CXX

PIC16C7XX
PRECIO

PIC16C621/
PIC16C71
622

PIC12CXX PIC16C84

PIC16C5X

PRESTACIONES
La figura anterior muestra un gráfico que aclara la relación "precio/prestaciones de los modelos de PIC.
'

La Gama Baja

La gama baja de los PIC encuadra nueve modelos fundamentales en la actualidad, cuyas principales
características aparecen en las anteriores tablas.

La memoria de programa puede contener 512, 1 k. y 2 k palabras de 12 bits, y ser de tipo ROM, EPROM.
También hay modelos con memoria OTP, que sólo puede ser grabada una vez por el usuario. La memoria
de datos puede tener una capacidad comprendida entre 25 y 73 bytes. Sólo disponen de un temporizador
(TMR0), un repertorio de 33 instrucciones y un número de patitas para soportar las E/S comprendido entre
12 y 20. El voltaje de alimentación admite un valor muy flexible comprendido entre 2 y 6,25 V, lo cual
posibilita el funcionamiento mediante pilas corrientes teniendo en cuenta su bajo consumo (menos de 2 mA
a 5 V y 4 MHz ).

Al igual que todos los miembros de la familia PIC16/17, los componentes de la gama baja se caracterizan
por poseer los siguientes recursos.

67
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Sistema POR (POWER ON RESET)

Todos los PIC tienen la facultad de generar una autoreinicialización o autoreset al conectarles la
alimentación.

Perro guardián, (Watchdog)

Existe un temporizador que produce un reset automáticamente si no es recargado antes que pase un
tiempo prefijado. Así se evita que e! sistema quede "colgado" dado en esa situación el programa no recarga
dicho temporizador y se genera un reset.

Código de protección

Cuando se procede a realizar la grabación del programa, puede protegerse para evitar su lectura. También
disponen, los PIC de posiciones reservadas para registrar números de serie, códigos de identificación,
prueba, etc.

Líneas de E/S de alta corriente.

Las líneas de E/S de los PIC pueden proporcionar o absorber una corriente de salida comprendida entre 20
y 25 mA, capaz de excitar directamente ciertos periféricos.

Modo de reposo (bajo consumo o SLEEP).

Ejecutando una instrucción (SLEEP), el CPU y el oscilador principal se detienen y se reduce notablemente
el consumo.

Para terminar el comentario introductorio sobre los componentes de la gama baja conviene nombrar dos
restricciones importantes.

1ª) La pila o "stack" sólo dispone de dos niveles lo que supone no poder encadenar más de dos subrutinas.

2ª) Los microcontroladores de la gama baja no admiten interrupciones.

La Gama Media
En esta gama sus componentes añaden nuevas prestaciones a las que poseían los de la gama baja,
haciéndolos más adecuados en las aplicaciones complejas. Admiten interrupciones, poseen comparadores
de magnitudes analógicas, convertidores A/D, puertos serie y diversos temporizadores.

Algunos modelos disponen de una memoria de instrucciones del tipo OTP ("One Time Programmable"),
que sólo la puede grabar una vez el usuario y que resulta mucho más económica en la implementación de

68
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

prototipos y pequeñas series.

Hay modelos de esta gama que disponen de una memoria de instrucciones tipo EEPROM, que, al ser
borrables eléctricamente, son mucho más fáciles de reprogramar que las EPROM, que tienen que ser
sometidas a rayos ultravioleta durante un tiempo determinado para realizar dicha operación.

Comercialmente el fabricante ofrece cuatro versiones de microcontroladores en prácticamente todas las


gamas.

Versión EPROM borrable con rayos ultravioleta. La cápsula dispone de una ventana de cristal en su
superficie para permitir el borrado de la memoria de programa al someterla durante unos minutos a rayos
ultravioleta procedentes de lámparas fluorescentes especiales.

Versión OTP. “Programable una sola vez”. Son similares a la versión anterior, pero sin ventana y sin la
posibilidad de borrar lo que se graba.

Versión QTP. Es el propio fabricante el que se encarga de grabar el código en todos los chips que
configuran pedidos medianos y grandes.

Versión SQTP. El fabricante solo graba unas pocas posiciones de código para labores de identificación,
numero de serie, palabra clave, checksum, etc.

El temporizador TMR1 que hay en esta gama tiene un circuito oscilador que puede trabajar
asincrónicamente y que puede incrementarse aunque el microcontrolador se halle en el modo de reposo
("sleep"), posibilitando la implementación de un reloj en tiempo real.

Las líneas de E/S del puerto B presentan una carga "pull-up" activada por software.

La Gama Alta
Los dispositivos PIC17C4X responden a microcontroladores de arquitectura abierta pudiéndose
expansionar en el exterior al poder sacar los buses de datos, direcciones y control. Así se pueden configurar
sistemas similares a los que utilizan los microprocesadores convencionales, siendo capaces de ampliar la
configuración interna del PIC añadiendo nuevos dispositivos de memoria y de E/S externas. Esta facultad
obliga a estos componentes a tener un elevado número de patitas comprendido entre 40 y 44. Admiten
interrupciones, poseen puerto serie, varios temporizadores y mayores capacidades de memoria, que
alcanza los 8 k palabras en la memoria de instrucciones y 454 bytes en la memoria de datos.

PIC16CXX: LA POTENCIA Y FLEXIBILIDAD DE LA GAMA MEDIA

PRESENTACION

La gama baja de microcontroladores que fabrica Microchip esta destinada a soportar aplicaciones con unas

69
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

exigencias técnicas muy limitadas, característica que resulta muy frecuente en aplicaciones masivas. Esa
familia de sencillos dispositivos se englobaba bajo la denominación PIC16C5X. Cuando el microcontrolador

se emplea en la resolución de sistemas más complejos que requieren más recursos, la familia adecuada es
la PIC16CXX, que se sitúa en la zona media. Finalmente, en la zona alta existen un conjunto de
microcontroladores agrupados bajo la denominación PIC17CXX.

Los microcontroladores de la gama media reúnen las prestaciones mas completas a un precio muy
competitivo. Disponen de comparadores analógicos, convertidores Analógicos/Digitales (CAD) de 8 bits,
2

circuito de Captura/Comparación, Interfaz serie sincrónico SP/I de 2, 3 o 4 hilos, Interfaz serie asincrónica
SCI de 8 o 9 bits, PWM para manipular impulsos de 8 o 10 bits con modulación de anchura y PSP, que
consiste en un puerto paralelo esclavo que proporciona la conexión con otros microprocesadores. Además,
estos recursos se distribuyen eficazmente entre los diversos modelos para que el usuario disponga de un
gran abanico de posibilidades para optimizar su elección.

Todos los dispositivos de esta gama disponen de reset automático al conectar la alimentación, reset ante el
fallo de la alimentación, Perro guardián, Código de Protección opcional y líneas de E/S digitales de alta
corriente.

La principal novedad del PIC16F84 es de disponer de memoria FLASH EEPROM para contener el
programa, además de 64 bytes de este tipo de memoria para datos. Su gran ventaja (que lo hace uno de los
dispositivos mas empleados en los laboratorios de diseño) es su fácil reprogramabilidad pues los
dispositivos EEPROM son borrables eléctricamente y no requieren un proceso de borrado con rayos
ultravioleta que retrasa y complica su nuevo uso. Las memorias EEPROM pueden ser regrabables cuantas
veces se quiera directamente desde el grabador, de la misma forma que se graban.

ARQUITECTURA INTERNA Y ORGANIZACIÓN DE LA MEMORIA


Para soportar los nuevos recursos de la gama media Microchip tuvo que ampliar y mejorar la estructura de
la CPU y de la memoria, aunque manteniendo la arquitectura Harvard y el concepto RISC. También tuvo
que añadir instrucciones y modificar alguna de las existentes.

En la siguiente figura se presenta el esquema general al que responde la arquitectura básica de los
procesadores PIC16CXX, similar a los de toda la gama. La memoria de datos esta organizada en dos
bancos con 128 posiciones cada uno como máximo (fig. 4-1). La mayoría de los registros específicos se
ubican en las primeras posiciones de los bancos. En la memoria de datos de la figura los registros de
propósito general ocupan los posici ones comprendidas entre la 20h y la 6Fh del banco 0. Todas las
posiciones con trama no están implementadas en este caso concreto. A través de los registros y
transfiriendo la información por el bus de datos se controlan los periféricos que comunican con el mundo
exterior por las patitas del Puerto A y el Puerto B. Las líneas de E/S de las dos Puertos se corresponden
con 13 patitas, siendo comunes las restantes cinco patitas en todos los modelos de 18 patitas, que se
destinan a la alimentación, el oscilador y el reset. El esquema es común para los dispositivos a los que se
va a describir (PIC16C62X, PIC16C71 y PIC16C84), todos ellos con 18 patitas y con diferencias en los
periféricos que se conectan con las patitas de los Puertos A y B y en las capacidades de las memorias.

70
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Esquema general de la arquitectura básica de los PIC de la g ama media.

El PC. Direccionamiento del programa

El PC consta de 13 bits con los que se puede direccionar una memoria de código con una capacidad de
hasta 8k palabras de 14 bits cada una. La memoria se organiza en páginas de 2k de tamaño.

El byte de menos peso del PC se corresponde con el contenido del registro PCL ubicado en la posición 02h
del banco 0. Los 5 bits de má s peso del PC se corresponden con los 5 bits de menos peso del registro
PCLATH en la posición 08h del banco 0. Los bits de más peso del PC solos se pueden escribir a través del
registro PCLATH.

En las instrucciones de salto relativo, el resultado de la misma afecta solo a los 8 bits de menos peso del
PC. Los 5 bits de mas peso se suministran desde PCLATH<4:0>. Figura 3-2-1

71
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En las instrucciones GOTO y CALL los 11 bits de menos peso del PC se suministran desde el código OP.
Los dos bits de mas peso del PC se cargan con los bits <4:3> del registro PCLATH (Figura 3-2-1). Como la
memoria de programa se organiza en páginas de 2k, la posición la seleccionan los 11 bits de menos peso,
mientras que con los 2 bits de más peso del PC se elige la página.

Un reset pone a 0 todos los bits del PCL y PCLATH, obligando a que la dirección de reinicio sea 0000h.

Direccionamiento de los datos

La memoria de datos en la gama media se organiza en un máximo de cuatro bancos, cada uno de los
cuales puede constar de hasta 128 posiciones de tamaño byte. Como los actuales dispositivos de esta
gama no sobrepasan los 256 bytes, solo se utilizan los bancos 0 y 1.

Para direccionar la memoria de datos que contiene los registros de propósito específico y los de propósito
general, existen dos modos de direccionamiento.

1ª. Direccionamiento directo

Los siete bits de menos peso del código OP de la instrucción proporcionan la dirección de la posición de un
banco. Los bits RP1 y RP0 del Registro de estado <6:5>, seleccionan el banco. Figura 3-2-2.

2ª. Direccionamiento indirecto

En este caso el operando de la instrucción hace referencia al registro INDF, que ocupa la posición 0 del
área de datos. Se accede a la posición que apunta el registro FSR, que se halla situado en la posición 4 del
banco 0. Los 7 bits de menos peso de FSR seleccionan la posición y su bit de más peso junto con el bit IRP
del Registro de estado <7>, seleccionan el banco. Figura 3-2-2.

72
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

LOS REGISTROS DE LA GAMA MEDIA

ORGANIZACIÓN DE LA MEMORIA DE DATOS

La ampliación de recursos en los PIC forzó en los catalogados como de gama media una nueva estructura y
la modificación de algunas instrucciones (partiendo, claro está, de la gama baja). Una de las diferencias
fundamentales es, precisamente, la ampliación de memoria de registros, a los que se unieron algunos
nuevos de sistema, y la accesibilidad a parte de los mismos que antes quedaban ocultos, como OPTION o
TRIS, de los que hablaremos a continuación.

De este modo se optó por dos bancos de registros de 128 posiciones cada uno, la mayoría de los cuales
son de propósito general. En el siguiente esquema, que muestra esta organización, las direcciones con
casillas blancas muestran posiciones de registros específicos, y las grises generales.

73
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Dirección BANCO 0 BANCO 1 Dirección


00 INDF INDF 80
01 TMR0 OPTION 81
02 PCL PCL 82
03 STATUS STATUS 83
04 FSR FSR 84
05 PORT A TRIS A 85
06 PORT B TRIS B 86
07 87
08 88
09 89
0A PCLATH PCLATH 8A
0B INTCON INTCON 8B
0C PIR1 PIE1 8C
0D 8D
0E PCON 8E
0F 8F
10 90
11 91
12 92
13 93
14 94
15 95
16 96
17 97
18 98
19 99

1A 9A
1B 9B
1C 9C
1D 9D
1E 9E
1F CMCON VRCON 9F

Registros Registros
de de
... ...
Propósito Propósito
General General

7F FF

74
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

REGISTROS ESPECÍFICOS

El PC

Direccionamiento del programa: El PC consta de 13 bits, con lo que es posible direccionar hasta 8K
palabras, separadas en bancos de 2K. El byte de menos peso de la dirección se guarda en el registro PCL, sito
en la posición 0x02 del banco 0, mientras los 5 bits de más peso se guardan en los 5 bits de menos peso del
registro PCLATH (dirección 0x08). Puesto que las instrucciones CALL y GOTO sólo cuentan con 11 bits, sus
saltos serán relativos a la página en la que estemos. El cambio real de página se hará cambiando los bits
PCLATH.4 y PCLATH.3.

El Registro W

REGISTRO DE TRABAJO o W. Este Registro, como bien su nombre hace suponer (Work) es el análogo al
registro A (Acumulador) de cualquier micro (AX, EAX, etc.). Es a través de él que se realizan la mayoría de las
aplicaciones. Por ejemplo es el que contiene el segundo operando en el caso de instrucciones con dos
operandos, o también sirve para la transferencia de datos entre registros que no son directamente accesibles.
Como se ve, no esta mapeado en la memoria RAM. Es un registro totalmente independiente. Si observa la figura
de la arquitectura interna se puede ver su estrecha relación con la ALU. Interviene "casi" en todo. Se puede
escribir y leer.

El Registro STATUS

Lo encontramos en la dirección 03 y 83 (o sea, en los dos bancos). Como su nombre lo indica, este registro
contiene un cierto número de bits de estado de la unidad central (CPU). Es el análogo al registro de BANDERAS
o FLAGS de cualquier micro. Cada bit de este registro tiene un significado particular, que es:

STATUS
IRP RP1 RP0 TO PD Z DC C

Se debe tener en cuenta que el bit mayor esta a la izquierda. En este caso IRP es el Bit 7, y C el Bit 0. Hacen un
total de ocho bits. En técnicas digitales siempre se cuenta desde 0, considerando a éste ya como un valor. Es por
eso que adoptamos esta misma metodología, como se hace en todas las áreas de programación, etc. Entonces
cuando nos refiramos al Bit 6, nos referiremos a RP1, o el nombre que corresponda según el registro que se
trate.

75
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Bit 0 o Bit C (Carry). Es el bit de acarreo para las operaciones de suma y substracción. Se pone en 1 si se
genera un acarreo desde el bit de mayor peso. Supongamos que utilizamos un registro de propósito general, y

empezamos a sumarle valores. Por ejemplo de a uno (1) sucesivamente. Como cada registro tiene un tamaño de
8 bits (255 en decimal, o sea de 0 a 255) cuando hayamos sumado 255, la próxima suma generara un acarreo o
desbordamiento. Es decir, el registro X (me refiero al de propósito general que hayamos elegido) antes de
desbordarse contendrá B '11111111' (255). Luego le sumamos uno (1) y entonces el Bit C se pondrá en uno (1),
y el registro general volverá a cero B'00000000'. Algo así como si diese vueltas. Entonces podemos decir que a
este bit lo afectan las instrucciones de suma (ADDWF) y resta (SUBWF) si es que se produce algún
desbordamiento o acarreo. También lo afectan las instrucciones de rotación (RRF y RLF).

Bit 1 o Bit DC (Digit Carry). Es un bit de acarreo de cifra para por ejemplo, la aritmética BCD (Binario Codificado
en Decimal). Sabemos que para representar los números decimales del 0 al 9 necesitamos 4 bits, o sea que el
número nueve sería B'1001'. Pero que pasaría si por ejemplo queremos utilizar la bandera de acarreo para saber
cuándo nos pasamos de 9 y así representar el 10, 11, etc.? No podríamos porque con cuatro bits el
desbordamiento o acarreo se produciría cuando esté en 15. Es por eso que contamos con esta bandera especial
de acarreo de BCD, la cual se pone en uno (1) cuando superamos el 9.

Bit 2 o Bit Z (Zero). Este bit se pone en 1 si el resultado de la operación aritmética o lógica ejecutada es nulo o
cero.

Bit 3 o Bit PD (Power Down ). Este bit se pone en 1 cuando se conecta el circuito a la alimentación, o durante la
ejecución de una instrucción CLRWDT relativa al temporizador watchdog ( ya lo veremos). Se pone en 0
mediante la instrucción SLEEP.

Bit 4 o Bit TO (Time Out). Este bit se pone en 1 durante la conexión de la alimentación o la ejecución de una
instrucción CLRWDT o SLEEP. Hasta ahora igual que el anterior, pero se pone en 0 si el temporizador watchdog
se desborda.

Bit 5 y 6 o Bit RP0 y RP1. Estos bits sirven para seleccionar los BANCOS de memoria RAM. El siguiente
cuadro muestra como funciona, lo cual es perfectamente lógico ya que sabemos que cada BANCO tiene una
longitud de 128 bytes (0x7F).

RP1 RP0 Banco Dirección

00 a 7F
00 01 01
80 a FF

Bit 7 o Bit IRP. Este bit esta previsto para un futuro direccionamiento de banco indirecto, pero el PIC16F84 no lo
utiliza. No se debe emplear como bit de propósito general por cuestiones de compatibilidad con las futuras
versiones de circuitos, por lo que se debe poner a 0.

El Registro INTCON

76
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Este registro sirve para el control de las interrupciones y para indicar la precedencia de algunas de ellas gracias a
los bi ts de estado.

INTCON
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF

Bit 0 o Bit RBIF (RB Interrupt Flag). Si esta en 1, indica un cambio de estado en una de las líneas RB4 a RB7
del puerto B.

Bit 1 o Bit INTF (INterrupt Flag). Si esta en 1, este bit indica una interrupción provocada por la línea RB0/INT del
puerto B.

Bit 2 o Bit T0IF (Timer 0 Interrupt Flag). Si esta en 1, este bit indica el desbordamiento del temporizador 0.

Bit 3 o Bit RBIE (RB Interrupt Enable). Si esta en 1, este bit autoriza las interrupciones provocadas por un
cambio de estado de las líneas RB4 a RB7 del puerto B.

Bit 4 o Bit INTE (INTerrupt Enable). Si esta en 1, este bit autoriza las interrupciones provocadas por un cambio
de estado de la línea RB0/INT del puerto B.

Bit 5 o Bit T0IE (Timer 0 Interrupt Enable). Si esta en 1, este bit autoriza las interrupciones debidas al
desbordamiento del temporizador 0.

Bit 6 o Bit PEIE (PEripheral Interrupt Enable). El bit PEIE habilita a otros registros de interrupciones. Si esta en
1, autoriza todas las interrupciones de origen periférico no enmascaradas, teniendo en cuenta sus bits
individuales de validación. Si esta en 0, todas las interrupciones periféricas se enmascaran, o sea no ocurre
ninguna interrupción, incluso si sus bits de validación individuales están correctamente activados. Algo así como
una llave maestra para todas las interrupciones de periféricos.

Bit 7 o Bit GIE (Global Interrupt Enable). Si esta en 0, el PIC no se interrumpe venga de donde venga la
interrupción.

Debemos hacer algunos comentarios sobre la gestión de los bits de este registro. En primer lugar, cada indicador
(flag, bandera) de interrupción individual (RBIF, INTF, etc.) se debe poner a 0 mediante software en el programa
de tratamiento de la interrupción correspondiente. Solo hay disponible un vector de interrupción situado en la
dirección 0004. A dicho programa de interrupción le corresponde comprobar estos bits para saber cuál es el
origen de la interrupción. Cuando llega una interrupción, el PIC pone automáticamente en 0 el bit GIE, de forma
que no se perturbe el tratamiento de la interrupción en curso por otras interrupciones eventuales. Este bit se pone
automáticamente en 1 al finalizar el programa de interrupción cuando se ejecuta la instrucción RETFIE (ya lo
veremos, a no desesperar). Por último, los bits de indicación de interrupción (flags o banderas xxIF) permanecen
funcionales incluso cuando las interrupciones correspondientes no se autorizan, como ocurre en la mayoría de
los microcontroladores.

77
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

El Registro INDF

Este es un registro especial, en el sentido que en realidad no tiene existencia física, por lo cual no se puede
acceder a él. Si se intenta leerlo siempre se encontrará el valor 00, y si se intenta escribirlo, dará lugar a un NOP,
es decir, una instrucción "que no hace nada", solo consumir un ciclo de instrucción. El mismo sirve únicamente
para especificar la utilización del DIRECCIONAMIENTO INDIRECTO.

El Registro PCL y PCLATH

Este es el registro del cual depende el direccionamiento de la memoria de programa. Es decir, es el que se
encarga en forma automática de ir posicionando al micro sobre cada instrucción a ejecutar. Siempre apunta a la
siguiente instrucción a ejecutar escrita en la eprom. Su nombre real deriva de PC (Program Counter) el contador
de programa. Este automáticamente se incrementa en uno (1) para apuntar a la siguiente instrucción. Su análogo
en los micros a cuales es el registro IP. El registro PCL es el registro como PC, solo que como el
direccionamiento de la memoria eeprom es mayor a 8 bits, entonces en él se guardan solo los bits de más bajo
orden o de menor PESO. De allí la letra L de "Low". Entonces, como el PC debe tener un tamaño de 13 bits, sus
bits de mayor PESO se extraen del registro PCLATH, situado entre 0A y 8A.

El Registro STACK

Estos registros sirven para memorizar la dirección de retorno después de la llamada a una subrutina por medio
de CALL, y también para lo mismo cuando ocurre una interrupción. La misma cuenta con ocho niveles, lo que
quiere decir que no se pueden anidar más de ocho llamadas. La pila o stack tiene una longitud de 13 bits, lo cual
pueden albergar por completo al PC. Recordemos que cuando se haga una llamada (CALL) o se produce una
interrupción, el micro detiene su ejecución para atender la interrupción, o saltar hacia una subrutina; debe
guardar en algún lado su dirección de retorno, para así, retomar lo que fue interrumpido en su momento. Bien,
esto lo hace la pila. El PC se guarda en el Stack hasta que se finalice la subrutina o interrupción. El valor
guardado en la pila se reintegra al PC, y éste sigue su ejecución normal a partir de allí (desde donde había
dejado).

El Registro PCON

Bit 0. Este bit no se utiliza, pero debe estar en 1. No se debe utilizar, con el fin de asegurar la compatibilidad de
nuestro programa con las futuras versiones del PIC.

Bit 1 o Bit POR (Power On Reset). Este bit se pone en 1 si el reset no se debe a una conexión de la
alimentación. Después de una conexión a la alimentación, este bit se pone en 0. Debe ponerse en 1 por
software, para que tenga su significado habitual.

78
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Los registros PIE1 y PIR1 están relacionados con el comparador, así como CMCON y VRCON, no serán
explicados ya que el PIC16F84, en el que se centra este estudio, carece de él. El registro FSR es utilizado en la
gama baja.

El Registro FSR

Registro de Selección de Registro. Este es su nombre. El contenido del FSR se utiliza para el
DIRECCIONAMIENTO INDIRECTO, en conjunción con el registro INDF . El FSR sirve para apuntar una
dirección de memoria (RAM), y lo que se haga en esa posición (Leer o Escribir) se realiza a través del registro
INDF. Supongamos que el FSR contiene 0x20, bien, si ahora escribimos el registro INDF con 0x30, en realidad
lo que estaremos haciendo es escribir la posición 0x20 con 0x30. El FSR (como todos los registros) tiene 8 bits
de longitud, lo cual permite direccionar 256 posiciones de memoria. Recordemos que la RAM tiene dos bancos
de 128 byte cada uno, lo que da un total de 256 posiciones perfectamente direccionables a través del FSR. El
FSR no necesita especificar a que banco apunta, dado que lo hace directamente, por ejemplo, si contiene 0x81
estará sobre el banco 1 (no el 0). En cambio, como veremos en programación, cuando queremos acceder
DIRECTAMENTE a cualquiera de los registros, debemos especificar antes a que banco pertenece.

Los Puertos, Registros PORTx y TRISx

Si no existiesen los puertos, no tendríamos forma de comunicarnos con el mundo exterior, ni de controlar nada.
Los puertos de los PIC's son sencillamente pines (terminales) que salen del encapsulado del PIC. Estos pines
son los que nos van a permitir interaccionar con cualquier cosa del mundo externo. Ellos pueden estar
configurados como ENTRADA y poder leer algo del exterior, y otros pueden estar configurados como SALIDA, y
al mismo tiempo enviar alguna señal en respuesta de algo, o no.

Los puertos son controlados por dos únicos registros, el PORTx y el TRISx. Los puertos estando como SALIDA o
OUT, obviamente entregaran una señal digital, o 0 o 1 (0V o 5V). Estando configurados como ENTRADA o IN,
pueden recibir señales digitales (sin superar 5V) y en algunos PIC's señales ANALOGICAS.

El registro PORTx es el registro de datos del puerto, mientras el TRISx es el registro de SENTIDO de
funcionamiento, bien como entrada o salida. Durante un reset, por evidentes razones de seguridad, todos los
puertos se posicionan como entrada.

El sentido de funcionamiento de CADA LINEA del puerto esta bajo el control del registro TRISx, donde x es el
nombre del puerto en cuestión. Evidentemente, el bit n del registro TRIS corresponde a la línea n del puerto
asociado. Un 0 programa la línea correspondiente como SALIDA, mientras que un 1 la programa como
ENTRADA. O sea, que el registro TRIS configura que tal o cual patita esta como salida y tal otra como entrada.

El registro PORTx, teniendo x el mismo significado que en TRISx, sirve para leer el puerto o para escribir el
mismo. Si tenemos todas las líneas como salidas, lo que escribamos en el registro PORTx es lo que aparecerá a
la salida de esas patillas. Si están como entradas, lo que leamos en el registro PORTx es lo que habrá presente
en cada una de las líneas del puerto, sea interno o externo. Es decir, si las líneas están configuradas como
entrada, lo que se lea en el registro PORTx es lo que hay realmente en las líneas del puerto, Y TAMBIEN LO
QUE HAYA ESCRITO aunque no estén configuradas las líneas como salida. O sea que puedo leer lo que venga
del mundo exterior por esas patas y lo que yo haya escrito internamente en esas patas, así sean configuradas
como entradas o salidas, aunque en el primer caso (entrada) aunque escriba en el puerto, no se hará presente a
la salida de las patillas. En otras palabras, cuando se lee uno de los registros de datos (PORTx) se realiza una
lectura de los 8 bits, independientemente del hecho de que DETERMINADAS líneas estén o no programadas

79
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

como entrada.

INSTRUCCIONES DEL PIC

Instrucciones de Byte que operan con Registros

Estas instrucciones pueden ser de simple o doble operando de origen. El primer operando de origen será
siempre el registro seleccionado en la instrucción, el segundo, en caso de existir, será el registro W. El destino,
es decir donde se guardara el resultado, será el registro seleccionado o el W, según se seleccione con un bit de
la instrucción.

El formato genérico de estas instrucciones es el siguiente:

0 1 2 3 4 5 6 7 8 9 10 11
d f f f f f

Los bits 0 a 4 (5 bits), denominados “f” permiten seleccionar uno de 32 registros de la memoria interna. El bit 5,
denominado “d”, permite especificar el destino del resultado. Si d = 1 el resultado se guardara en el registro
seleccionado. Si d = 0 el resultado se guardara en W. Los bits 6 a 11 identifican la instrucción específica a
realizar.

Las instrucciones siguientes son las tres operaciones lógicas de doble operando:

ANDWF f,d ;operación AND lógica, destino = W , f

IORWF f,d ;operación OR lógica, destino = W , f

XORWF f,d ;operación XOR lógica, destino = W , f

Los nombres mnemónicos de estas instrucciones provienen de: AND W con F, Inclusive OR W
con F y XOR W con F. Las que siguen son las cuatro operaciones aritméticas y lógicas
sencillas de simple operando:

MOVF f,d ;movimiento de datos, destino = f

80
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

COMF f,d ;complemento lógico, destino = NOT f

INCF f,d ;incremento aritmético, destino = f + 1

DECF f,d ;decremento aritmético, destino = f - 1

Los mnemónicos de estas instrucciones provienen de: MOVe File, COMplement File, INCrement File y
DECrement File. En las siete instrucciones anteriores el único bit afectado de la palabra de estado del procesador
es el Z, que se pone en 1 si el resultado de la operación es 00000000, y se pone en 0 si el resultado tiene
cualquier otro valor.

A continuación siguen las dos instrucciones de rotación de bits a través del CARRY:

RLF f,d ;rotación a la izquierda, destino = f ROT

RRF f,d ;rotación a la derecha, destino = f ROT

En estas operaciones (Rotate Left File y Rotate Right File) los bits son desplazados de cada posición a la
siguiente, en sentido derecho o izquierdo. El desplazamiento es cerrado, formando un anillo, con el bit C
(CARRY) de la palabra de estado.

En estas dos instrucciones, el único bit afectado de la palabra de estado del procesador es el bit C, que tomará el
valor que tenia el bit 7 o el bit 0, según sea el sentido del desplazamiento.

Estas instrucciones son muy útiles para la manipulación de bits, y además para realizar operaciones aritméticas,
ya que en numeración binaria, desplazar un número a la izquierda es equivalente a multiplicarlo por 2, y hacia la
derecha, a dividirlo por 2.

La instrucción siguiente realiza el intercambio de posiciones entre los cuatro bits menos significativos y los cuatro
más significativos (nibble bajo y nibble alto).

SWAPF f,d ;intercambia nibbles, destino = SWAP f

Esta instrucción (SWAP File) no afecta ninguno de los bits de la palabra de estado del procesador.

Esta instrucción es muy útil para el manipuleo de números BCD empaquetados, en los que en un solo byte se
guardan dos dígitos BCD (uno en cada nibble).

Las dos operaciones que siguen son la suma y la resta aritméticas:

ADDWF f,d ;suma aritmética, destino = f + W

81
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

SUBWF f,d ;resta aritmética, destino = f - W

Estas operaciones (ADD W a F y SUBstract W de F) afectan a los tres bits de estado C, DC y Z. El bit Z se pone
en 1 si el resultado de la operación es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor.

La suma se realiza en aritmética binaria pura sin signo. Si hay un acarreo del bit 7, es decir que el resultado es
mayor que 255, el bit C (carry) resulta 1, en caso contrario resulta 0. Si hay un acarreo del bit 3, es decir que la
suma de las dos mitades (nibbles) menos significativas (bits 0 a 3) resulta mayor que 15, se pone en 1 el bit DC
(digit carry), en caso contrario se pone en 0.

Ejemplos: 1010 0010 1101 0000

+ 0100 1111 C DC Z + 0110 1111 C DC Z 1111 0001 0 1 0 0011 1111 1 0 0

La resta se realiza sumando, en binario puro sin signo, el registro f más el complemento a dos de W (el
complemento a 1, o complemento lógico, más 1)

Ejemplos: Los bits de estado C y DC toman el valor normal correspondiente a la suma de f con el complemento a
2 de W. De esta manera el significado para la operación de resta resulta invertido, es decir que C (carry) es 1 si
no hubo desborde en la resta, o dicho de otra manera, si el contenido de W es menor que el de f. El bit DC se
comporta de manera similar, es decir que DC es 1 si no hubo desborde en la mitad menos significativa, lo que
equivale a decir que el nibble bajo del contenido de W es menor que el del registro f.

f 0100 0100 0010 1000


W -0010 1000 C DC Z -0100 0100 C DC Z

0001 1100 1 0 0 1110 0100 0 1 0

Equivalente a:
f 0100 0100 0010 1000
cmp.2 W + 1101 1000 C DC Z + 1011 1100 C DC Z

0001 1100 1 0 0 1110 0100 0 1 0

Las instrucciones que siguen son de simple operando, pero son casos especiales ya que el destino es siempre el
registro seleccionado:

CLRF f ; borrado de contenido, f = 0

MOVWF f ; copia contenido W en f, f = W

La instrucción CLRF (CLeaR File) afecta solo al bit Z que resulta siempre 0. La instrucción MOVWF (MOVe W a
F) no afecta ningún bit de la palabra de estado.

82
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Instrucciones de Byte que operan sobre W y Literales

Estas instrucciones se refieren todas al registro W, es decir que uno de los operandos de origen y el operando de
destino son siempre el registro W. En las instrucciones de este grupo que tienen un segundo operando de origen,
este es siempre una constante de programa literalmente incluida en la instrucción, llamada constante literal o
simplemente literal.

El formato genérico de estas instrucciones es el siguiente:

0 1 2 3 4 5 6 7 8 9 10 11
k k k k k k k k

Los bits 0 a 7 especifican la constante literal de 8 bits que se utilizara en la operación.

Las tres instrucciones que siguen son las operaciones lógicas tradicionales, similares a las que ya vimos
anteriormente, pero realizadas entre una constante de programa y el registro

W:

IORLW k ; operación OR lógica, W = W , k

ANDLW k ; operación AND lógica, W = W , k

XORLW k ; operación XOR lógica, W = W , k

En estas tres instrucciones (Inclusive OR Literal W, AND Literal W y XOR Literal W) el único bit afectado de la
palabra de estado del procesador es el Z, que se pone en 1 si el resultado de la operación es 00000000, y se
pone en 0 si el resultado tiene cualquier otro valor.

La instrucción que sigue sirve para cargar una constante de programa en el registro W:

MOVLW k ; carga constante en W, W = K

Esta (MOVe Literal W) instrucción no afecta ninguno de los bits de estado del procesador.

La instrucción que sigue (CLeaR W) no correspondería incluirla en este grupo, y pertenece en realidad al primero
(el grupo de las instrucciones que operan sobre registros) ya que se trata de un caso especial de la instrucción
CLRF, con destino W, y f = 0. Se incluyen aquí porque como se le ha asignado un mnemónico particular referido
específicamente al registro W, desde el punto de vista del programador, es más útil verla dentro del grupo de
instrucciones referidas a W.

CLRW ; borra el contenido de W, W = 0

83
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Al igual que en la instrucción CLRF, el único bit de estado afectado es el Z que resulta 1.

Instrucciones de Bit

El formato genérico de estas instrucciones es el siguiente:

0 1 2 3 4 5 6 7 8 9 10 11
b b b f f f f f

Los bits 0 a 4 (5 bits), denominados “f”, permiten seleccionar uno de 32 registros de la memoria interna. Los bits 5
a 7, denominados “b”, permiten especificar el numero de bit (0 a 7) sobre el que se operara. Estas instrucciones
operan solamente sobre el bit especificado, el resto de los bits del registro no son alterados. Estas instrucciones
no tienen especificación de destino, ya que el mismo es siempre el registro seleccionado.

BCF f,b ;borra el bit b de f ;bit f(b) = 0

BSF f,b ;coloca en uno el bit b de f ;bit f(b) = 1

Estas instrucciones (Bit Clear File y Bit Set File) no afectan ningún bit de la palabra de estado del procesador.

Instrucciones de Control

GOTO k ; salto a la posición k (9 bits) del programa

Esta es la típica instrucción de salto incondicional a cualquier posición de la memoria de programa (que en la
mayoría de los microprocesadores convencionales se llama JUMP) . La constante literal k es la dirección de
destino del salto, es decir la nueva dirección de memoria de programa a partir de la cual comenzarán a leerse las
instrucciones después de ejecutar la instrucción GOTO. Esta instrucción simplemente carga la constante k en el
registro PC (contador de programa). La única complicación de esta instrucción es que la constante k es de solo 9
bits, mientras que el registro PC es de 11 bits. Los dos bits faltantes, bit 9 y 10 del PC, son tomados
respectivamente de los bits de selección de página PA0 y PA1 de la palabra de estado.

La que sigue es la instrucción de llamado a subrutina:

CALL k ; salto a la subrutina en la posición k (8 bits)

Su comportamiento es muy similar al de la instrucción GOTO, salvo que además de saltar guarda en el stack la
dirección de retorno de la subrutina (para la instrucción RETLW). Esto lo hace simplemente guardando en el

84
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

stack una copia del PC incrementado, antes de que el mismo sea cargado con la nueva dirección k. La única
diferencia con la instrucción GOTO respecto de la forma en la que se realiza el salto, es que en la instrucción
CALL la constante k tiene solo 8 bits en vez de 9. En este caso también se utilizan PA0 y PA1 para cargar los bits
9 y 10 del PC, pero además el bit 8 del PC es cargado siempre con 0. Esto hace que los saltos a subrutina solo
puedan realizarse a posiciones que estén en las primeras mitades de las páginas mencionadas.

La instrucción que se indica a continuación es la de retorno de subrutina:

RETLW k ; retorno de subrutina con constante k, W = k

Esta (RETurn con Literal in W) instrucción produce el retorno de subrutina con una constante literal k en el
registro W. La operación que realiza consiste simplemente en sacar del stack un valor y cargarlo en el PC. Ese
valor es el PC incrementado antes de realizar el salto, de la última instrucción CALL ejecutada, por lo tanto es la
dirección de la instrucción siguiente a dicho CALL. Dado que el stack es de 11 bits, el valor cargado en el PC es
una dirección completa, y por lo tanto se puede retornar a cualquier posición de la memoria de programa, sin
importar como estén los bits de selección de página. Esta instrucción además carga siempre una constante literal
en el registro W. Por otro lado, y con una metodología especial de programación, un conjunto de sucesivas
instrucciones RETLW puede ser usado como una tabla de valores constantes incluida en el programa (Ej.: tablas
BCD/7 seg., hexa/ASCII, etc.).

A continuación se presentan las dos únicas instrucciones de “salto” (skip) condicional. Estas instrucciones son los
únicos medios para implementar bifurcaciones condicionales en un programa. Son muy generales y muy
poderosas ya que permiten al programa tomar decisiones en función de cualquier bit de cualquier posición de la
memoria interna de datos, y eso incluye a los registros de periféricos, los puertos de entrada/salida e incluso la
palabra de estado del procesador. Estas dos instrucciones reemplazan y superan a todo el conjunto de
instrucciones de salto condicional que poseen los microprocesadores sencillos convencionales (salto por cero,
por no cero, por carry, etc.).

BTFSC f,b ; salto si bit = 0, bit = f(0) salta

BTFSS f,b ; salto si bit = 1, bit = f(1) salta

BTFSC (Bit Test File and Skip if Clear) salta la próxima instrucción si el bit b del registro f es cero. La instrucción
BTFSS (Bit Test File and Skip if Set) salta si el bit es 1. Estas instrucciones pueden usarse para realizar o no una
acción según sea el estado de un bit, o, en combinación con GOTO, para realizar una bifurcación condicional.

85
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Ejemplo 1 :

------------------
------------------
btfsc flags,run ;sí ha arrancado el reloj
incf tiempo ;incremento contador de tiempo
------------------
------------------

Ejemplo 2:

------------------
------------------
movf tiempo,w ;testeo por tiempo = 60
xorlw 60
btfss STATUS,Z
goto acc_2 ;salto si tiempo <> 60
------------- ;acción 1
-------------
-------------
goto acc_fin
acc_2
------------- ;acción 2
-------------
-------------
acc_fin ;acá se unen los caminos

Las instrucciones que siguen son casos especiales de las de incremento y decremento vistas anteriormente.
Estas instrucciones podrían categorizarse dentro del grupo de instrucciones orientadas a byte sobre registros
(primer grupo), ya que efectivamente operan sobre los mismos, y el formato del código de la instrucción responde
al de ese grupo, pero, a diferencia de las otras, pueden además alterar el flujo lineal del programa y por eso se
las incluyó en este grupo.

DECFSZ f,d ;decrementa y salta sí 0, destino= f - 1, = 0 salta

INCFSZ f,d ;incrementa y salta sí 0, destino= f + 1, = 0 salta

Estas dos instrucciones (DECrement File and Skip if Zero, e INCrement File and Skip if Zero) se comportan de
manera similar a DECF e INCF, salvo que no afectan a ningún bit de la palabra de estado. Una vez realizado el
incremento o decremento, si el resultado es 00000000, el microprocesador saltará la próxima instrucción del
programa. Estas instrucciones se utilizan generalmente en combinación con una instrucción de salto (GOTO),
para el diseño de ciclos o lazos (loops) de instrucciones que deben repetirse una cantidad determinada de veces.

86
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

ejemplo:

clrf 10 ; pongo cero en la posición 10 de la memoria interna


loop ;lo que sigue se ejecutará 256 veces
.....................................
.....................................
.....................................
Incfsz 10,1 ; incremento la posición 10 hasta que llegue a 0
goto loop ; si no llego a cero voy a repetir la secuencia
; cuando llegue a cero salto el goto
........................ ; y sigue la continuación del programa
.....................................
.....................................

Instrucciones Especiales

En este grupo se reunieron las instrucciones que controlan funciones específicas del microprocesador o que
actúan sobre registros especiales no direccionados como memoria interna normal.

La instrucción que sigue es la típica NO OPERATION, existente en casi todos los microprocesadores.

NOP ; no hace nada, consume tiempo

Esta instrucción solo sirve para introducir una demora en el programa, equivalente al tiempo de ejecución de una
instrucción. No afecta ningún bit de la palabra de estado.

La siguiente es una instrucción específica de control de los puertos de entrada/salida.

TRIS f ; carga el tristate control, TRISf = W

Esta instrucción (TRIState) carga el registro de control de los buffers tristate de un puerto de entrada salida (data
dirección register), con el valor contenido en W. El parámetro f debe ser la dirección de memoria interna del
puerto, aunque el valor W no será cargado en el puerto sino en el registro de tristate del mismo Esta instrucción
no afecta ningún bit de la palabra de estado.

La siguiente instrucción sirve para programar el registro OPTION que controla el RTCC y prescaler

OPTION ; carga el registro OPTION, OPTION = W

El registro OPTION no es accesible como memoria interna y solo se lo puede programar con esta instrucción.
Esta instrucción no afecta ningún bit de la palabra de estado.

87
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

La instrucción que sigue borra el contador del watch dog timer. Este registro tampoco esta accesible como
memoria, y esta es la única instrucción que lo modifica.

CLRWDT ; borra el watch dog timer, WDT = 0

Esta instrucción, además, coloca en uno los bits PD (power down) y TO (time -out) de la palabra de estado.

La siguiente es una instrucción especial de control del microcontrolador que lo pone en el modo power down. En
este modo el microprocesador se detiene, el oscilador se apaga, los registros y puertos conservan su estado, y el
consumo se reduce al mínimo. La única forma de salir de este estado es por medio de un reset o por time-out del
watch dog timer.

SLEEP ; coloca el µC en modo sleep, WDT = 0

Esta instrucción, además, borra el bit PD (power down) y setea el bit TO (time -out) de la palabra de estado.

5-6 Resumen de instrucciones (clasificación según el fabricante en tres grupos):

88
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En esta tabla de resumen del conjunto de instrucciones se pueden observar los mnemónicos, la explicación, el
número de ciclos, el código de máquina y los bits afectados del registro STATUS para cada una de las
instrucciones.

Modos de direccionamiento

Direccionamiento de la memoria de datos (RAM)

La memoria interna se direcciona en forma directa por medio de los 5 bits “f” contenidos en las instrucciones que
operan sobre registros. De esta manera se puede direccionar cualquier posición desde la 00 a la 1F, las
direcciones 10 a 1F corresponden a los bancos de registros, por lo tanto, en los microcontroladores que tengan
más de un banco, antes de acceder a alguna variable que se encuentre en esta zona, el programador deberá
asegurarse de haber programado los bits de selección de banco en el registro FSR. Los registros especiales y de
uso general de la posición 00 a la 0f están presentes en todos los PIC16C5X, al igual que el banco 0 de registros.
Los bancos 1, 2 y 3 de registros están presentes solo en el 16C57. El registro FSR, además de servir para
seleccionar el banco activo, sirve como puntero para direccionamiento indirecto. La posición 00 del mapa de
RAM es la llamada dirección indirecta. Sí en cualquier instrucción se opera con la dirección 00, en realidad se
estará operando con la dirección a donde apunte el contenido del FSR. Por ejemplo si el FSR contiene el valor
14, una instrucción que opere sobre la dirección 0, operara en realidad sobre la dirección 14. Se puede decir en
este ejemplo que la posición 14 de memoria fue direccionada en forma indirecta a través del puntero FSR.

Ejemplo:

; Esta porción de programa borra 5 posiciones de memoria a partir de la dirección 12

FSR equ 04 ;(definición al comienzo del programa


.....................................

89
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

.....................................

movlw 5 ;prepara para repetir 5 veces


movwf 08 ;(el registro 08 es el contador del loop)
movlw 12h ;apunta a la dirección 12h
movwf FSR ;
loop:
clrf 0 ;borra una posición de memoria
incf FSR ;apunta a la siguiente
decfsz 08 ;si todavía no borra todas
goto loop ;sigue borrando
.....................................
.....................................

El direccionamiento indirecto es muy útil para el procesamiento de posiciones consecutivas de memoria, como en
el ejemplo, o para el direccionamiento de datos en subrutinas.

Direccionamiento de la memoria de programa (EPROM, OTP)

La instrucción GOTO dispone solo de 9 bits en el código de operación para especificar la dirección de destino del
salto. Al ejecutar una instrucción GOTO el microprocesador toma los dos bits que restan para completar la
dirección de 11 bits, de los bits 5 y 6 de la palabra de estado. Estos últimos son llamados bits de selección de
página (PA0 y PA1). El programador deberá asegurarse de que estos dos bits tengan el valor correcto antes de
toda instrucción GOTO.

Direccionamiento directo con instrucción GOTO

Deberá tenerse en cuenta además que es posible avanzar de una página a otra en forma automática cuando el
PC se incrementa. Esto ocurre si el programa empieza en una página y sigue en la siguiente. Sin embargo, al
incrementarse el PC desde la última posición de una página a la primera de la siguiente, los bits PA0 y PA1 no
se modifican, y por lo tanto sí se ejecuta una instrucción GOTO, CALL o alguna que actúe sobre el PC, esta
producirá un salto a la página anterior, a menos que el programador tenga la precaución de actualizar el valor de
dichos bits. Por este motivo es conveniente dividir el programa en módulos o rutinas que estén confinados a una
página.

En el caso de la instrucción CALL, el direccionamiento se complica un poco más, ya que la misma solo dispone
de 8 bits para especificar la dirección de destino salto. En este caso también se utilizan los mismos bits de
selección de página para completar los bits décimo y decimoprimero de la dir ección, pero falta el noveno bit. En
estas instrucciones este bit se carga siempre con 0, lo que implica que solo se pueden realizar saltos a subrutina
a las mitades inferiores de cada página. En este caso también el programador deberá asegurarse que el estado
de los bits PA0 y PA1 sea el correcto al momento de ejecutar se la instrucción.

90
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Direccionamiento directo con instrucción CALL

Las instrucciones que operan sobre el PC como registro y alteran su contenido provocando un salto, responden a
un mecanismo muy similar al de las instrucciones CALL para la formación de la dirección de destino. En este
caso los bits 0 a 7 son el resultado de la instrucción, el bit 8 es 0 y los bits restantes se toman de PA0 y PA1.

Este mecanismo se llama paginado, y a pesar de que representa una complicación bastante molesta para el
programador, resulta muy útil ya que permite ampliar la capacidad de direccionamiento de memoria de programa
para las instrucciones de salto

TEMPORIZADORES, PUERTOS DE E/S, RESET Y ESTADO DE REPOSO

CONTROL DE TIEMPOS

Una exigencia en las aplicaciones de control es la regulación estricta de los tiempos que duran las diversas
acciones que realiza el sistema. El dispositivo típico destinado a gobernar los tiempos recibe el nombre de
temporizador o "timer" y, básicamente, consiste en un contador ascendente o descendente que determina un
tiempo determinado entre el valor que se le carga y el momento en que se produce su desbordamiento o paso
por 0.

Carga del Contaje

Fin del
Impulsos de Contador Descendente Contaje
Reloj
TEMPORIZADOR

Esquema simplificado de un temporizador. En este caso se trata de un contador descendente, que, una vez
cargado con un valor, se decrementa al ritmo de los impulsos de reloj hasta que llega a 0.

En la gama baja los microcontroladores PIC sólo disponen de dos temporizadores. Uno de ellos actúa como
Principal y sobre él recae el control de tiempos de las operaciones del sistema. El otro recibe el nombre de Perro
guardián o "Watchdog".

91
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

El Perro guardián vigila que el programa no se "cuelgue" y dejen de ejecutarse las instrucciones secuenciales del
mismo tal como lo ha previsto el diseñador. Para realizar esta labor de vigilancia, el Perro guardián da un paseo
por la CPU cada cierto tiempo y comprueba si el programa se ejecuta normalmente; en caso contrario, por
ejemplo si el

control está detenido en un bucle infinito o a la espera de algún acontecimiento que no se produce, el perro ladra
y provoca un reset, reinicializando todo el sistema.

Tanto el Temporizador principal, TMR0, como el Perro guardián, WDT, a veces precisan controlar tiempos largos
y aumentar la duración de los impulsos de reloj que les incrementan

o decrementan. Para cubrir esta necesidad, se dispone de un circuito programable llamado Divisor de frecuencia
que divide la frecuencia utilizada por diversos rangos para poder realizar temporizaciones más largas.

Para regular el comportamiento del Temporizador principal., el Perro guardián y el Divisor de frecuencia se
emplean algunos bits de la Palabra de configuración y del Registro de opciones (OPTION).

El Divisor de frecuencia puede aplicarse a uno de los dos temporizadores, al TMR0 o al WDT. Con el
Temporizador principal actúa en primer lugar, o sea los impulsos pasan primero por el Divisor de frecuencia y,
una vez aumentada la duración de los últimos, se aplican a TMR0. Actúa como Divisor previo o "Prescaler". Con
el Perro guardián, el Divisor de frecuencia actúa después ("Post-scaler").

El Divisor de frecuencia puede actuar al ritmo de una señal externa aplicada sobre la pat ita T0CKI, o bien, con la
señal de reloj interna del microcontrolador CLKOUT, procedente del oscilador propio. Mediante algunos bits del
Registro de opciones y la Palabra de configuración se controla el trabajo del Divisor de frecuencia sobre el TMR0
o el WDT.

EL TEMPORIZADOR PRINCIPAL, TMR0

Se trata de un contador ascendente de 8 bits que puede actuar de dos formas.

1ª Contador

Se le introducen los impulsos desde el exterior por la patita T0CKI. Su misión es "contar" el número de
acontecimientos externos.

2ª Temporizador

Trabaja y cuenta los impulsos de reloj del oscilador interno (CLKOUT), Se usa para determinar un tiempo fijo.
Estos impulsos tienen una duración conocida que es la de un ciclo de instrucción cuya frecuencia es la cuarta
parte del oscilador principal (Fosc/4).

El TMR0 se comporta como un registro de propósito especial ubicado en la posición 1 del área de datos. Puede
ser leído y escrito al estar conectado directamente al bus de datos. Como se trata de un contador ascendente,
conviene cargarle con el valor de los impulsos que se desean contar pero en forma de complemento a 2, Así, si

92
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

se quieren contar cuatro impulsos de reloj se carga al TMR0 con el complemento a 2 de 4, lo que significa
cargarlo con 4. De esta manera, con la llegada de cuatro impulsos se alcanza el valor 0, que determina el tiempo
a controlar.

Para trabajar con TMR0 se pueden utilizar las siguientes fórmulas en el caso que los impulsos de reloj
provengan del oscilador interno con un periodo de Tosc.

temporización = 4 · Tosc · (Valor cargado en TMR0) · (Rango del Divisor) Valor a cargar en
TMR0 = (temporización / 4 · Tosc) · (Rango del Divisor) Para conocer el estado en que va la
cuenta del TMR0 se le puede leer en cualquier momento. Cuando se escribe un nuevo valor
sobre TM. R0 para iniciar una nueva temporización, el incremento del mismo se retrasa
durante los dos ciclos de reloj posteriores.

En la figura 7-2 se ofrece el esquema de funcionamiento del Temporizador principal. Obsérvese que existe un
bloque que retrasa dos ciclos y cuya misión consiste en sincronizar el momento del incremento producido por la
señal T0CKI con el que producen los impulsos del reloj interno. Cuando no se usa el Divisor de frecuencia, la
entrada de la señal de reloj externa es la misma que la salida de dicho Divisor.

Fosc/4 0
T0CKI MPX1 Sincronismo
1
1 con el reloj
F externa MPX2 TMR0
Divisor de Frecuencia interno retraso
0 2 ciclos
8
1/2 1/4 1/256

Bus de Datos
3
Seleccion de Rango

-- -- TOCS TOSE PSA PS2 PS1 PS0

Registro de Opciones

Esquema de funcionamiento del temporizador Principal TMR0.

El registro de opciones (OPTION)

La misión principal de este registro es gobernar el comportamiento del Temporizador principal. Su bit T0CS
(Timer 0 External Clock Edge Select) elige en el multiplexor MPX1 la procedencia de los impulsos de reloj, que
pueden ser los del oscilador externo (Fosc/4) o los que se aplican desde el exterior por la pata T0CKI. El bit.
T0SE (timer 0 Clock Source Select) selecciona el tipo de flanco que es activo para la frecuencia externa. Si
TOSE = 1, el flanco activo es el descendente y si T0SE = 0, es el ascendente.

Como se deduce de la figura 7-2-1, el bit PSA del Registro de opciones tiene la función de asignar el Divisor de
frecuencia al TMR0 o al WDT. Si PSA = 0 la salida del visor se aplica al TMR0, pero si PSA = i el Divisor se
destina al Perro guardián.

93
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Finalmente, los 3 bits de menos peso del Registro de opciones (PSA2, PSA1 y A0) seleccionan el rango por el
que el Divisor de frecuencia va a dividir los impulsos que se le apliquen. En la figura 7-2-1 se ofrece la
distribución y asignación de los bits I Registro de opciones.

EL PERRO GUARDIÁN (WDT)

También se trata de un contador de 8 bits que actúa como temporizador y tiene el objetivo de generar un reset a
todo el sistema cuando se desborda su valor. Su control de tiempos es independiente del oscilador principal y se
basa en una red RC.

La temporización nominal con la que se halla programado el Perro guardián es de 18 ms, pero puede
aumentarse utilizando el Divisor de frecuencia, con el cual, trabajando en el rango mayor, puede alcanzar hasta
2,3 segundos.

Para evitar que se desborde el WDT y genere un reset, hay que recargar o refrescar su cuenta antes de que
llegue el desbordamiento. Este refresco, que en realidad consiste en ponerle a 0 para iniciar la temporización, se
consigue por software con las instrucciones CLRWDT y SLEEP. El diseñador debe analizar el programa de
trabajo y situar alguna de estas dos instrucciones en sitios estratégicos por los que pasa el flujo de control antes
que transcurra el tiempo que controla el Perro guardián. De esta manera, si el programa se “cuelga” (bucle
infinito, espera de acontecimiento que no se produce, etc.), no se refresca a tiempo al Perro guardián y se
produce una reinicialización.

94
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

La instrucción CLRWDT borra simplemente el valor de WDT, reiniciando la cuenta. Sin embargo, la instrucción
SLEEP, además de borrar el WDT, detiene a todo el sistema entrando en un modo de trabajo en el que el
consumo es mínimo (modo de Reposo o de bajo consumo). Si no se desact iva al Perro guardián cuando se
entra en el modo de Reposo, al acabar su conteo provocará un reset y se saldrá de dicho modo. Otra forma de
salir del modo de Reposo es activando la patita MCLR. Para desactivar al Perro guardián, hay que poner un 0 en
el bit 2 (WDTE) de la Palabra de configuración (Configuration Word). Se refleja la posibilidad de que el Divisor de
frecuencia opere con el TMR0 o con el WDT, según el valor que tenga el bit PSA. Los impulsos de conteo pasan
por el Divisor antes de aplicarse al TMR0 (Predivisor). Por el contrario, los impulsos pasan primero por el WDT y
luego por el Divisor (Post-divisor).

EL MODO DE REPOSO O SLEEP

Este modo especial de funcionamiento ocasiona un consumo muy bajo y se entra en él con la ejecución de la
instrucción SLEEP. Con esta instrucción ocurren las siguientes acciones:

a) Si el perro guardián está activado, se refrescará su valor (se borra) pero sigue funcionando normalmente. b) El
oscilador principal del sistema deja de funcionar. c) Los puertos de E/S mantienen el mismo estado que tenían
antes de ejecutar SLEEP. d) Los bits TO y PD del registro de estado toman los valores 1 y 0, respectivamente.

Para bajar al máximo el consumo se recomienda conectar la patita T0CKI a VDD o a tierra y la patita MCLR/Vpp
a nivel lógico alto.

Para salir del estado de Reposo hay dos posibilidades:

1. Se activa la patita MCLR y se genera un reset.


2. El Perro guardián que estaba activo cuando se ejecuto SLEEP se desborda y genera un reset.

Para conocer la causa por la que se ha salido del Estado de Reposo se analizan los bits TO y PD.

ARQUITECTURA DEL PIC16F84

El microcontrolador PIC16F84 dispone de una estructura organizada interiormente conformado por bloques
interconectados en donde se incluye la memoria RAM, los puertos de entrada y salida, la memoria EEPROM, etc.
En la siguiente imagen se muestra la arquitectura interna del PIC16F84.

95
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

CONOCIENDO AL MICROCONTROLADOR PIC16F84.


El microcontrolador PIC16F84 es un circuito integrado fabricado por la empresa Microchip Tecnologies y es
actualmente uno de los más utilizados a nivel mundial, la razón de esto es por que son sencillos, rápidos,
modernos y principalmente baratos, se podrán escribir los programas y borrarlos muchísimas veces, poseen
gran documentación a nivel mundial en la Red de Internet y esta accesible para la mayoría de los usuarios.
Existen microcontroladores que una vez programados con el programa de control , estos tienen que ser
borrados con luz ultra violeta en el caso de requerir borrar el programa. Para el caso del PIC16F84, este podrá
ser programado Eléctricamente con una circuitería que proporciona la empresa Microchip Tecnologies. Este
programador es sumamente sencillo y debe ser conectado al puerto paralelo de la computador a.

CARACTERÍSTICAS BÁSICAS DEL PIC16F84.


El Microcontrolador PIC16F84 es un circuito integrado de 18 pines fabricado con tecnología CMOS, existen
en diferentes versiones de encapsulado como por ejemplo el DIP (Versión convencional) y el SOIC (Montaje

96
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

superficial). La frecuencia de trabajo esta entre 4 Mhz y 20 Mhz. Las versiones que se estipulan en una

frecuencia de trabajo de 4 Mhz podrán trabajar sin ningún problema hasta los 10 Mhz. Observemos la
siguiente imagen que muestra como están organizados los pines del microcontrolador PIC16F84:

IDENTIFICACIÓN DE LOS PINES UTILIZADOS PARA LOS PUERTOS DE


ENTRADA Y SALIDAS.
En la imagen anterior se podrá observar claramente que el microcontrolador tiene dos puertos denominados "A" y
"B". El puerto "A" tiene 5 líneas disponibles (RA0, RA1, RA2, RA3, RA4) y el puerto "B" tiene 8 líneas disponibles
(RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7). Ambos Puertos suman un total de 13 líneas que podrán ser
programadas independientemente como entradas o como salidas. Estas son las líneas que estarán destinadas
para comunicar el microcontrolador con el mundo exterior, como por ejemplo: Un motor Paso a Paso, Diodos
Luminosos "Leds", Módulos LCD, Teclados Matriciales, etc. También observe que el Pin No. 3 perteneciente al
puerto "A" = RA4 también tiene otra nomenclatura denominada "TOCKI" lo cual quiere decir que esta línea podrá
ser programada como entrada, salida y temporizador/contador.

IDENTIFICACIÓN DE LOS PINES DE ALIMENTACIÓN DEL


MICROCONTROLADOR

El microcontrolador trabaja con una tensión de 5 Vlts. DC y los pines para ello son el Pin No. 14 (+) y el Pin No. 5
(-).

EL RELOJ Y EL CICLO DE INSTRUCCIÓN


En la gama baja, la frecuencia máxima de la señal de reloj interna es de 20 MHz lo que determina un periodo de
50 ns. El ciclo de instrucción en el que se ejecutan la mayoría de las instrucciones se compone de cuatro ciclos
de reloj, que a 20 MHz suponen una duración de 200 ns.

97
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En realidad, cada instrucción conlleva dos ciclos de instrucción, el primero destinado a la "fase de búsqueda” y el
otro, a la "fase de ejecución”. Sin embargo, la estructura segmentada del procesador permite realizar
simultáneamente la fase de ejecución de una instrucción y la de búsqueda de la siguiente. Cuando la instrucción

ejecutada corresponde a un salto, no se conoce cuál será la siguiente hasta completarla por lo cual en esta
situación se sustituye la fase de búsqueda por una instrucción NOP (No Operación) mientras se ejecuta un salto.
Esta característica se muestra gráficamente en la figura y en ella se puede apreciar cómo las instrucciones de
salto precisan un ciclo más.

La segmentación permite completar las instrucciones en un solo ciclo excepto las de salto que necesitan dos.

Para el funcionamiento del circuito de reloj interno se precisa colocar en el exterior una fuente de señal con una
frecuencia fija disponiendo los microcontroladores PIC16C5X de dos patitas para soportar dicha señal.

OSC1/CLKIN: Es la patita a la que se conecta la señal de entrada de la fuente externa de frecuencia, que puede
estar implementada por un cristal de cuarzo, por un resonador cerámico o una red RC.

OSC2/CLKOUT: Se trata de la patita de conexión de la salida del cristal externo. En el modo oscilador RC por
esta patita sale la cuarta parte de la frecuencia de oscilación, delimitando los ciclos de instrucción. Para esta
alternativa Microchip recomienda usar una Rext. con un valor comprendido entre 5 kΩ y 100 kΩ y un Cext con
más de 20 pF.

Los PIC pueden funcionar con cuatro tipos de osciladores. En las versiones EPROM, con ventana, y en las OTP,
QTP y ROM sin ella, hay que distinguir el chip específico para el oscilador, que viene marcado en el
encapsulado, Esto significa que los PIC se comercializan con cuatro referencias distintas, que corresponden con
los tipos de reloj. Se debe grabar el utilizado escribiendo el código adecuado en los dos bits FOSCI y FOSC0 de
la. "Palabra de Configuración" que se comenta más adelante. Dichos códigos son los siguientes.

11: RC. Oscilador RC de bajo costo. Este oscilador proporciona una estabilidad de frecuencia mediana.

10: HS. Oscilador de alta velocidad (8-20 MHz).

01: XT. Oscilador estándar (100 KHz-4 MHz). Cuarzo estándar o resonador cerámico.

00: LP. Oscilador de bajo consumo (32-200 kHz). Cristal de cuarzo o resonador para aplicaciones de muy bajo
consumo.

98
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Esquema de conexionado de un oscilador de bajo costo compuesto por una resistencia y un capacitor .

Según el tipo de oscilador usado y la frecuencia de trabajo, se emplean diferentes valores en los condensadores
C1 y C2 que acompañan al cristal de cuarzo. La resistencia RS solo es necesaria en algunas versiones HS.

La frecuencia de la señal de entrada aplicada a la patita OSC1/CLKIN se divide internamente conformando


cuatro estados que delimitan cada ciclo de instrucción y que se denominan Q1-Q4. Durante Q1, el valor del PC
(Program Counter) se incrementa. En el transcurso de Q4 se efectúa la búsqueda de la instrucción en la memoria
y su código se carga en el Registro de Instrucciones. En el siguiente ciclo de instrucción se llevan a cabo la

99
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

decodificación y ejecución de la instrucción.

Diagrama temporal

INICIALIZACIÓN "RESET" DEL MICROCONTROLADOR

El microcontrolador cuando se le suministra el voltaje de alimentación ejecuta automáticamente un RESET y


todos los registros son colocados es sus estados lógicos originales; sin embargo los microcontroladores dispones
de un Pin destinado específicamente para ejecutar un RESET en el caso de una falla o cuando sea necesario
aplicarle un RESET. Cuando se ejecuta un RESET, se aplican dos acciones importantes:

1. El contador de programa se vuelve a colocar en el principio del programa desde la dirección 0


(Principio del Programa).
2. Los registros modificados vuelven a su estado normal.

En la siguiente imagen se puede observar como está conectado el pequeño circuito requerido para el RESET.
Cuando el pulsador "S" es accionado, se aplica un nivel lógico bajo en el Pin No. 4 del microcontrolador y
automáticamente se ejecutan los dos eventos mencionados anteriormente.

100
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

El microcontrolador PIC16F84 también dispone de otras formas de "RESET", entre ellas tenemos el Reset
denominado "POWER ON RESET", el cual debe ser activado mediante un bit de configuración en el momento en
el que se programe el PIC.

Por otro lado, en el siguiente circuito, si el voltaje suministrado al microcontrolador se ubica entre 1.2 Voltios y 1.7
Voltios automáticamente se ejecuta un Reset. Este rango de voltaje asegura que el microcontrolador se
reinicialice antes de cometer errores en cualquier proceso. En el caso de que el voltaje siga por debajo del rango
especificado, el microcontrolador no arranca de nuevo hasta que se estabilicen los voltajes en su rango normal.
En la siguiente imagen mostramos el pequeño circuito que debe ser incluido para asegurar esto.

101
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Para el circuito anterior existen algunas reglas básicas importantes:

1 Se recomienda una resistencia menos de 40 K ( R < 40 K ).


2 Se recomienda a R1 entre 100 ohmios y 1 K que serán los elementos electrónicos que limitaran
las corrientes que intenten entrar por el Pin del microcontrolador.
3 El diodo D1 es utilizado para descargar el condensador rápidamente cuando el voltaje baja de su
nivel normal.

Ahora conocemos la configuración básica obligatoria que debe tener nuestro microcontrol ador para poder
funcionar. En el siguiente circuito esquemático mostramos el resultado de lo anteriormente explicado.

PUERTOS DEL MICROCONTROLADOR PIC16F84.


102
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Los puertos del microcontrolador PIC16F84 son el medio de comunicación con el mundo exterior, en ellos
podremos conectar los periféricos o circuitos necesarios como por ejemplo los Módulos LCD, motores
eléctricos, etc; pero estas conexiones no se podrán realizar arbitrariamente; es decir, existen unas reglas
básicas que deberán cumplirse para que el microcontrolador no sufra daños o se destruya. Todo el truco
esta en conocer los limites de corriente que puede manejar el microcontrolador..

LIMITE DE CORRIENTE PARA EL PUERTO "A" Y EL "B".

El puerto "A" del microcontrolador y el puerto "B" podrán ser programados como entradas y salidas
indiferentemente. Para el caso de que sean programadas como salida es denominado "Modo Fuente" por que
suministran corriente y cuando las líneas sean programadas como entradas son llamadas "Sumidero" por que
reciben corriente. Ahora, la máxima corriente que puede suministrar una línea programada como salida es de 20
miliamperios; pero si usted utiliza toda las líneas del puerto "A" programadas como salida; la máxima corriente no
deberá exceder de 50mA para todo el puerto "A" . Para el caso del puerto "B" en que todas las líneas sean
programadas como salida la máxima corriente no deberá exceder de 100 mA.

Ahora cuando las líneas de los puertos son programadas como entradas (Sumidero), la corriente máxima que

puede manejar una sola línea es de 25 mA. Para el caso del puerto "A" que sea programado con todas sus líneas
como entrada, la máxima corriente que puede manejar es de 80 mA. Por otro lado, para el puerto "B" si todas las
líneas son programadas como entrada, la máxima corriente que puede manejar es de 150 mA.

Podemos entonces resumir: Si se necesitan utilizar periféricos que manejen mayor cantidad de corriente de la
especificada, tan solo se deberá aplicar un circuito acoplador como por ejemplo los buffers, transistores que se
encarguen de controlar la corriente, etc. Por ejemplo:

103
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

104
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

PROGRAMACIÓN (ASM)

SISTEMA DE DESARROLLO

Un sistema de desarrollo esta formado por el conjunto de herramientas, tanto de tipo hardware como software,
que se necesitan para desarrollar un diseño con microcontroladores.

Se puede comenzar con un sistema de desarrollo mínimo con las herramientas imprescindibles e irlo ampliando
hasta configurar un equipo profesional. Una de las más interesantes peculiaridades de los microcontroladores
PIC es la existencia de numerosas empresas, entre las que destaca Microchip, que ofrecen desde sistemas de
desarrollo simples y baratos hasta otros más potentes y caros. El abanico de posibilidades es grande.

A nivel software, las principales herramientas de un sistema de desarrollo son las siguientes: · Programa
Ensamblador · Compilador de alto nivel (C, Fortran, PASCAL) · Programa para la grabación de la memoria de
instrucciones del microcontrolador · Simulador

A nivel hardware, las herramientas mas destacadas son: · Dispositivo “programador-grabador” de la memoria de
instrucciones de los microcontroladores · Simulador híbrido · Depurador con programa monitor · Emulador “in-
circuit”

El sistema mínimo de desarrollo debe disponer como herramientas de software un Ensamblador y un programa
para grabar en la memoria de instrucciones del microcontrol ador el código binario ejecutable. En un sistema de
desarrollo bien concebido, el Ensamblador y el compilador deben coexistir y seleccionar cómodamente el que
interese utilizar en cada momento. Debe ser posible, también incluir dentro del programa a compilar trozos de
código escritos en lenguaje Ensamblador. Esta característica es muy importante al existir partes del programa,
como son las entradas y salidas, que tienen que ser rápidas y se diseñan con lenguaje Ensamblador, mientras
que los cálculos complejos se escriben mas cómodamente con un lenguaje de alto nivel, por lo tanto, conviene
que el compilador permita insertar rutinas en lenguaje ensamblador.

105
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Una vez escrito el programa en lenguaje ensamblador o de alto nivel, se ensambla o se compila para obtener el
archivo binario ejecutable, objeto o hexadecimal que necesite grabarse en la memoria de instrucciones del
microcontrolador. Por esto se necesita hardware grabador-programador y otro software que consiste en un
programa para la PC que controla al grabador y gobierna la grabación del archivo en la memoria.

Antes de la grabación de la memoria de instrucciones del microcontrolador es conveniente asegurarse del


correcto comportamiento del programa confeccionado, para cuya verif icación existe una herramienta software
que consiste en un programa de simulación. Estos programas “simulan con software” la ejecución en el
microcontrolador del programa bajo prueba. Los resultados obtenidos no son reales porque no se utiliza el
microcontrolador físico en la prueba del programa. Con la finalidad de realizar esta verificación y depuración de la
manera mas exacta, se disponen de herramientas hardware mas caras como los simuladores híbridos, los
depuradores con programa monitor y los emuladores “in-circuit”.

CODIGO MAQUINA Y ENSAMBLADOR


El único lenguaje que puede interpretar la CPU del microcontrolador es el binario por lo que la memoria de
instrucciones su código de operación esta implementado en binario.

Dado lo poco inteligible y descifrable que tiene el lenguaje binario para el ser humano, se descarta la posibilidad
de escribir los programas ejecutables directamente. El ensamblador es un lenguaje de bajo nivel porque cada
una de sus instrucciones se corresponde con otra capaz de interpretar la CPU. Es má s humano pues en vez de
ser unos y ceros, emplea conjuntos de letras que facilitan la operación de las instrucciones y es muy cercano a la
maquina por la correspondencia que tiene con las instrucciones.

El programa escrito en un lenguaje diferente al maquina recibe la denominación de “fuente” y, cuando esta
escrito en ensamblador, suele tener la extensión .ASM o .SRC. El calificativo de fuente se debe a que dicho
programa no puede ser ejecutado por el microcontrolador, debe ser traducido a código binario, de lo cual se
encarga un programa traductor, que también se denomina ensamblador.

EMULACIÓN
La clave del éxito en la depuración de sistemas basados en microcontroladores es la posibilidad de utilizar algún
control externo y poder monitorear la actividad del microcontrolador. En el nivel mas bajo y económico del diseño,
el usuario graba el programa en el microcontrolador y cuando conecta este al circuito a controlar, ejecuta el
programa. Con esta forma de trabajar no se puede comprobar la validéz del código hasta que el microcontrolador
se encuentra conectado en tiempo real. Un buen trabajo de depuración requiere sustituir al microcontrolador por
un equipo que permita el seguimiento del programa y la monitorización de las funciones del sistema.

Los sistemas destinados a controlar la ejecución del programa pueden incluir: · Ejecución del programa
instrucción a instrucción · Detención del programa en cualquier dirección · Colocar valores determinados en
registros o posiciones de memoria En cuanto a las posibilidades de más interés en la monitorización figuran: ·
Visualizar el contenido de registros o posiciones de memoria · Comprobar el orden y la duración en la ejecución
de instrucciones. Recibe el nombre de “emulación” la técnica que permite manejar las posibilidades descritas en
control y monitoreo. Existen cuatro tipos de simulación que difieren en aspectos importantes: Simulador
Simulador híbrido Depurador Emulador “in-circuit”

106
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Simulador
Se trata de un programa que corre normalmente sobre un computador personal e implementa con software a un
microcontrolador virtual, que es controlado y monitoreado a través de la PC. Ejecuta el programa bajo prueba
como si se tratase de un microcontrolador.

Una de las ventajas mas importantes de la simulación reside en que la depuración no exige disponibilidad del
sistema a controlar, permite la depuración del software antes de construir el primer prototipo. También permite
que varios miembros del equipo trabajen en paralelo en diferentes partes del programa.

La simulación es muy eficaz en el desarrollo de pequeños programas que no dependen mucho del hardware del
proyecto y no interactúen con el mundo exterior. Por ejemplo, son muy útiles en la comprobación de algoritmos y
subrutinas.

La mayor desventaja de la simulación como herramienta depuradora es su no equivalencia con el tiempo real. Al
no estar conectado al sistema en análisis, no se pueden verificar rutinas que manejan una red local o un
convertidor A/D.

Simuladores híbridos

Tarjeta de Prueba

En un simulador híbrido el programa de simulación se combina con un interfaz hardware que se conecta al
sistema a depurar en lugar del microcontrolador que se intenta emular.

La comunicación entre el sistema a depurar y el computador principal se realiza a través de un puerto serie
o paralelo. El programa en análisis se ejecuta parcial o totalmente desde el simulador del computador. La
interfaz hardware proporciona las líneas de E/S que simulan al microcontrolador y para asegurar al máximo
las mismas características eléctricas, suele estar fabricado con un microcontrolador de la misma familia que
el que se desea emular. Este sistema no permite emular en su totalidad a todos los recursos del
microcontrolador.

Depurador
El depurador es una aproximación a la emulación pero con la diferencia que añade código extra al programa
(monitor). El monitor esta comunicado con el computador principal y controla la ejecución del programa y su
monitoreo.

Permite examinar el contenido de los registros y las posiciones de memoria, colocar puntos de ruptura para
detener el programa en cualquier punto y comenzar la ejecución en cualquier dirección.

107
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Emulador “in-circuit”
El termino “in-circuit” se reserva a los sistemas de emulación que no consumen recursos del periférico a emular.
En su funcionamiento se debe reemplazar el microcontrolador en prueba por la sonda del emulador que se halla
conectada a un cable que sale de la caja del emulador; el emulador esta controlado desde una PC sobre la que
interactúa el usuario.

Un emulador bien diseñado ofrece el mismo comportamiento eléctrico, lógico y temporal que el microcontrolador
que emula, lo que proporciona un excelente y completo servicio de depuración. Permite ejecución paso-paso,
puntos de ruptura, monitoreo y modificación de registros y posiciones de memoria, temporización, etc.… Los
emuladores son caros y no están protegidos ante fallas.

EDICION DE PROGRAMAS
Desde que se concibe la idea y se confecciona el programa hasta que se graba en la memoria del
microcontrolador, suceden una serie de operaciones que se muestran en la figura 9-4.

El primer paso en un diseño basado en microcontrolador consiste en escribir el código fuente del programa en el
lenguaje seleccionado. Posteriormente, si el lenguaje usado ha sido el ensamblador, se convierte a código
ejecutable mediante el uso de un programa ensamblador. Todos los archivos fuente se deben escribir en un
editor de textos ASCII. Los pasos lógicos siguientes serán la depuración y simulación de nuestro programa para
a final de cuentas grabarlo a la memoria de instrucciones del microcontrolador y probarlo.

108
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Organigrama de la secuencia a seguir para el grabado de un microcontrolador.

ESCRITURA DEL CODIGO FUENTE


El código fuente del lenguaje ensamblador esta estructurado en columnas. Cualquier texto que comience en la
primera columna, se considera una etiqueta y es una parte del campo de etiquetas. Las siguientes columnas
contienen el campo de instrucciones, el campo de datos y el campo de comentarios. Los comentarios deben
empezar con (;) punto y coma y pueden ir también en la primera columna.

Campo de Etiquetas

Las etiquetas son nombres de subrutinas o secciones de código fuente. Dando nombres a partes del programa,
se posibilita que las instrucciones puedan saltar o hacer referencia a esas partes sin necesidad de recordar las
direcciones físicas donde están ubicadas.

Muchos ensambladores establecen un límite pequeño al tamaño de las etiquetas así como caracteres que
pueden usarse en ellas, el MPASM permite de hasta 32 caracteres. En el ensamblador MPASM, una etiqueta
puede ir seguida de dos puntos (:), espacios, tabuladores o ENTER; deben comenzar con caracteres
alfanuméricos o guión bajo (_) y pueden contener cualquier combinación de caracteres alfanuméricos.

Campo de Instrucciones (comandos)

La segunda columna corresponde al campo de instrucciones. Puede ser una instrucción del microcontrolador o
una instrucción para el ensamblador, llamada directiva.

109
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Campo de Datos (operandos)

La columna que sigue al campo de instrucciones, es el campo de datos. Como su nombre lo indica, contiene
datos u operandos para las instrucciones. En el caso de los microcontroladores PIC, los datos pueden ser un
registro, un bit de registro, una etiqueta, o un número constante (literal). Algunas instrucciones no llevan datos, y
si una instrucción necesita múltiples datos, deben separarse por comas (,).

Campo de Comentarios

El último campo es el de comentarios siempre y cuando haya un punto y coma (;) como primer carácter. Pueden
colocarse en cualquier lugar del código fuente.

Los comentarios son uno de los trabajos más importantes que el programador debe desarrollar a la hora de
escribir el código. Comentarios correctamente escritos describen la tarea que realizan determinadas
instrucciones o subrutinas. Sin comentarios es muy difícil descifrar, algunos días después, el código fuente que
uno mismo ha creado.

Programa fuente:
El programa fuente esta compuesto por una sucesión de líneas de programa. Cada línea de programa esta
compuesta por 4 campos separados por uno o más espacios o tabulaciones. Estos campos son los mencionados
anteriormente:

[Etiqueta] Comando [Operando(s)] [;Comentario]

CONVENCIONES EN LA ESCRITURA DEL CODIGO FUENTE


Para hacer la tarea del programador mas grata, se usan algunas convenciones. Cada uno puede adoptar las que
mas le agraden y ayuden a ser más productivos. En general, las convenciones son cualquier acción que facilite la
revisión y comprensión de un programa, especialmente el que uno mismo ha escrito cuando tiene que revisarlo
algunos meses después.

Los archivos de código fuente llevaran la extensión *.ASM o *.SRC Los archivos de listado llevaran la extensión
*.LST Los archivos de código objeto llevaran la extensión *.OBJ Archivos ejecutables en formato Intel Hex
tendrán la extensión *.HEX Archivos de referencias cruzadas llevaran la extensión *.XRF Archivos de errores de
ensamblado llevaran la extensión *.ERR Archivos de símbolo y depuración para la posterior simulación llevan la
extensión *.COD Archivos con comandos de inicialización para el simulador llevaran la extensión *.INI Los
mnemónicos escritos en mayúsculas hacen que el código escrito sea más visible Comentarios que expliquen
cada línea o conjunto de líneas de código Un párrafo de comentario explica rutinas o conjunto de instrucciones El
espacio entre caracteres se escribe “_”

Se debe recordar que las convenciones son cualquier cosa que le haga más fácil la lectura y comprensión de su
código, como por ejemplo:

Una cabecera estandarizada.

110
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Colocar subrutinas en el mismo sitio, todas contiguas

Dibujar diagramas de flujo escribir pseudocódigo.

111
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

112
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Anexos

113
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

114
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Anexo I
Sistemas de Numeración.

115
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Sistemas de numeración

Un sistema de numeración queda unívocamente definido a través de su base, la cual indica la cantidad de dígitos
distintos que posee el sistema, que se pueden utilizar para escribir cualquier número dentro de ese sistema.

Ejemplos de sistemas de numeración son:

ٛ Decimal, base 10 (dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9).


ٛ Binario, base 2 (dígitos: 0,1).
ٛ Octal, base 8 (dígitos: 0, 1, 2, 3, 4, 5, 6, 7).
ٛ Hexadecimal, base 16 (dígitos: números 0 a 9 y letras A, B, C, D, E, F).

Los sistemas de numeración más usuales son el binario, el decimal, y el hexadecimal; también, y en menor
medida, el sistema octal.

Para indicar, explícitamente, que un número es expresado en una determinada base, lo representamos con la
base a la que pertenece, como subíndice a la derecha. Por ejemplo:

Base 10: 123410

Base 16: 23AF16

Base 2: 1102

En el transcurso del texto, adopta como convención el uso de un sufijo para referirnos a la base a la que
pertenece un numero:

Binario: B

Decimal: D (valor por default)

Octal: Q

Hexadecimal: H

Una manera de representar un número en una determinada base es mediante la notación polinómica, de modo
que cada dígito, en el sentido de izquierda a derecha, está multiplicado por las sucesivas potencias de la base.
Así, por ejemplo, el numero 1234 en base decimal, se puede escribir como:

116
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero
3 2 1 0
1 x 10 + 2 x 10 + 3 x 10 + 4 x 10

Las computadoras trabajan internamente con el sistema binario, aunque pueden mostrar la información en
cualquier otro sistema. En este texto, utilizamos los sistemas binario, decimal y hexadecimal.

Existe una notación formal para expresar cualquier sistema de numeración. Esta notación consiste en indicar,
entre paréntesis, la base y la cantidad de dígitos. Así, por ejemplo, un sistema (2,8) hace referencia a un sistema
binario, base 2, con hasta 8 dígitos de tamaño.

En general, diremos que un numero pertenece al sistema de numeración (p,q) si está expresado en la base p con
q dígitos.

Por ejemplo:

1100 pertenece al sistema (2,4) AB12 pertenece al sistema (16,4) 093 pertenece al sistema (10,3)

Cuando la cantidad de dígitos significativos de un número que pertenece a un cierto sistema de numeración es
inferior a la cantidad q de dígitos del sistema, entonces se deben completar los lugares restantes con ceros a la
izquierda.

Por ejemplo:

00101 pertenece al sistema (2,5) 0101 pertenece al sistema


(2,4) 000AB pertenece al sistema (16,5)

• Cambio de base:

Cualquier número expresado en una base puede, también, ser representado en cualquier otra base. Para poder
hacer esto se debe proceder a cambiar la base del número.

En general, para expresar un número en otra base se deben realizar los siguientes pasos:

ٛ Dividir el número a convertir por la nueva base; el resto de la división representa el dígito menos
significativo del número en su nueva base.
ٛ Dividir el cociente por la nueva base; el resultado de la división representa el próximo dígito menos
significativo del número en su nueva base.
ٛ Seguir así, sucesivamente, hasta que el resultado de la última división sea menor que la nueva base; en
este punto, el resto de la última división corresponde al dígito más significativo del número expresado en la nueva

117
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

base.

Las operaciones que se indican en los pasos descriptos, se deben hacer en la aritmética de la base vieja.

Por ejemplo, para convertir 3410 a base 2:

- 34 / 2 = 17 —> resto = 0

- 17 / 2 = 8 —> resto = 1

- 8 / 2 = 4 —> resto = 0

- 4 / 2 = 2 —> resto = 0

- 2 / 2 = 1 —> resto = 0

Entonces 3410 = 100012

Los cambios de base más utilizados son: de decimal a binario y viceversa, y de binario a hexadecimal y
viceversa.

Para pasar de binario a decimal, se utiliza la forma polinómica; esto es, expresar al número binario
descompuesto en potencias de 2 y efectuar las operaciones en aritmética decimal.

Por ejemplo, para convertir el número binario 100010 a base 10:

5 4 3 2 1 0
1 x 2 + 0 x 2 + 0 x 2 + 0 x 2 + 1 x 2 + 0 x 2 = 32 + 2 = 3410

Para pasar de binario a hexadecimal, se deben tomar grupos de 4 dígitos binarios justificando, si es necesario,
con ceros a la izquierda; y, luego, convertir cada uno de los grupos a un dígito hexadecimal.

Por ejemplo, para convertir el numero binario 11110100101 a base 16:

11110100101 —> 0111 1010 0101 —> 7A516

Para pasar de hexadecimal a binario, se convierte cada dígito hexadecimal a su representación binaria, usando
siempre cuatro dígitos binarios.

Por ejemplo, la inversa del ejemplo anterior:

7A516 —>

118
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

716 = 01112

A16 = 10102

516 = 01012 —> 0111101001012

•  Complementación:  

Cuando se trabaja con números en bases diferentes a la decimal, surge el inconveniente de cómo representar a
los números negativos.

Esto se resuelve mediante el concepto de complementación, de modo que siempre se representen cantidades
positivas –aún cuando su significado puede ser negativo– .

Para implementar este concepto, se define a un número negativo como aquel que, sumándole su positivo, el
resultado es 0.

En términos prácticos, trabajaremos con la notación complemento en números binarios, tomando siempre al
primer dígito como dígito de signo.

Para complementar un número binario, completamos los siguientes pasos:

• Convertir cada dígito a su inverso (los unos a cero y los ceros a uno).
• Si se utiliza la notación complemento a 2, sumar un 1 al número resultante de la inversión de los dígitos.

Por ejemplo, el complemento de 0101 es 1010 + 1 = 1011.

Para expresar en forma polinómica un número en notación complemento a 2, se debe


tener en cuenta que el dígito más significativo representa el signo.

3 2 1 0
En el ejemplo: 10112 = -1 x 2 + 0 x 2 + 1 x 2 + 1 x 2 = -8 + 2 + 1 = -510 Notar que 1011 (-510) es el

complemento de 0101 (510).

Representación de la información

Ya hemos visto que existen distintos sistemas de numeración que permiten expresar números en diferentes
bases y que la computadora está diseñada para realizar operaciones aritméticas y lógicas con cantidades
binarias.

119
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Para poder efectuar esas operaciones debe poder, en primera instancia, almacenar esas cantidades numéricas,
llamándose dato a toda cantidad almacenada en la computadora.

Los datos se almacenan en la memoria de la computadora, en distintas unidades de almacenamiento. Las


unidades de almacenamiento más comunes son:

ٛ Bit: Abreviatura de la expresión inglesa Binary Digit. Es la mínima unidad de almacenamiento y


permite representar un único dígito binario; es decir, almacena un uno o un cero. Toda la electrónica
digital se basa en el concepto de dígito binario.

ٛ Byte: Es un conjunto de bits que conforma la mínima unidad direccionable; cada byte puede ser
referenciado mediante un número de orden o dirección dentro de la memoria. En general, el tamaño de
un byte es de 8 bits, aunque existen computadoras diseñadas con bytes de otros tamaños. Desde el
punto de vista de sistemas de numeración, un byte pertenece al sistema (2,8).

ٛ Nibble: Ocupa medio byte; en nuestro caso, un nibble ocupa 4 bits. Es útil para la representación de la
información en notación hexadecimal, dado que 4 dígitos binarios equivalen a 1 dígito hexadecimal.
ٛ Palabra. Es un conjunto de bits que puede procesarse en forma paralela. El tamaño de una palabra (o
word) depende de cada máquina aunque, en general, equivale a 2 bytes; en nuestro caso, una palabra
ٛ tiene 16 bits de tamaño. Desde el punto de los sistemas de numeración, una palabra pertenece al siste
ma (2,16).

Además de las unidades de almacenamiento indicadas, existen otras, menos frecuentemente usadas: doble
palabra, cuádruple palabra, etc.

Códigos:

Para normalizar y facilitar la representación de diferentes símbolos a través de la combinación de dígitos binarios
en un byte, se crearon diferentes códigos estándar.

Estos códigos tienen como fundamento la necesidad de poder estandarizar la representación de la información,
para permitir que se puedan intercambiar datos entre distintas computadoras.

Los códigos más difundidos, son el EBCDIC –Extended Binary Coded Decimal Interchange Code– y el ASCII –
American Standard Code Information Interchange–.

ٛ EBCDIC. Este código, especialmente difundido en computadoras grandes – Main Frames–, se basa en la
codificación de 256 símbolos distintos, entre los que se incluyen todas las letras mayúsculas y minúsculas, los
dígitos del 0 al 9, caracteres especiales, etc. Para representar 256 códigos se utilizan 8 bits, de modo que cada
símbolo ocupa un byte.

ٛ ASCII. Este código es el más ampliamente difundido. De un modo similar al EBCDIC, el ASCII permite
representar símbolos. Sin embargo, a diferencia de aquel, sólo admite la codificación de 128 símbolos distintos,
pues cada símbolo ocupa los 7 bits menos significativos (7 bits de la derecha) de un byte, quedando el bit 8 como
bit de control. No obstante esto, actualmente es muy común encontrar computadoras que incluyen un código
ASCII extendido, que se basa en la utilización del bit 8 para poder representar, en total, 256 símbolos distintos
(los 128 símbolos originales del ASCII más símbolos definidos con la utilización del bit 8). Los primeros 32
símbolos del código ASCII son los denominados caracteres de control o caracteres no imprimibles. Los códigos
de control son especialmente usados en comunicaciones.

120
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

• Tipos de datos:

Así como hemos visto las diferentes unidades de almacenamiento (bit, byte, palabra, etc.), es necesario definir
los tipos de datos que pueden ser representados en esas unidades de almacenamiento.

Cualquier computadora puede trabajar con datos alfanuméricos y con datos numéricos.

Los datos alfanuméricos son cadenas de caracteres (o string) ASCII o EBCDIC, donde cada carácter ocupa un
byte. Así, por ejemplo, la representación de Hola en código ASCII será vista en hexadecimal: 48 4F 4C 41.

Los datos numéricos pueden ser:

ٛ binarios,
ٛ decimales desempaquetados,
ٛ decimales empaquetados y
ٛ punto flotante.

Binarios: Son cantidades de uno o más bytes con o sin signo. Para representar binarios con signo, se utiliza la
notación complemento a 2. (En el apéndice “Sistemas de numeración” incluimos algunas especificaciones para
los números enteros representables en el microprocesador 8088-8086).

Decimales desempaquetados: Se representan a razón de un dígito BCD –Binary-Coded Decimal– por byte, que
ocupa el nibble más bajo (4 bits menos significativos). Para el 8088-8086 el nibble más alto es siempre cero.
Para otras arquitecturas, el nibble más alto está ocupado por un dígito de zona, que en general es 3.

Cada byte puede almacenar un valor entre 0 y 9.

Los dígitos BCD tienen la siguiente codificación:

Dígito BCD Dígito BCD


0 0000 1 0001
2 0010 3 0011
4 0100 5 0101
6 0110 7 0111
8 1000 9 1001

El tamaño de un dato decimal desempaquetado está dado por la cantidad de dígitos que tiene. Por ejemplo, el
número 1234 ocupa 4 bytes, y su configuración ser 01 02 03 04.

121
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

El microprocesador 8088-8086 opera sólo con números decimales desempaquetados positivos.

Decimales empaquetados: Cada byte contiene dos dígitos BCD. El dígito más significativo se almacena en el
nibble más alto y el dígito menos significativo se almacena en el nibble más bajo. Cada byte puede almacenar un
valor entre 00 y 99.

El tamaño de un dato decimal empaquetado está dado por la mitad de la cantidad de dígitos que tiene (si un dato
tiene una cantidad impar de dígitos, entonces el nibble más alto del dígito más significativo se pone en cero). Por
ejemplo, el número 12345 ocupa 3 bytes y su configuración: 01 23 45.

El microprocesador 8088-8086 opera sólo con números decimales empaquetados positivos.

Punto flotante: Los números en punto flotante son representados en una cadena de 4 bytes para simple precisión
o de 8 bytes para doble precisión.

Un número en punto flotante tiene 3 campos: signo de la mantisa, exponente y mantisa. (En el apéndice
«Sistemas de numeración» incluimos información acerca de los números en punto flotante, en simple y en doble
precisión.) Código ASCII:

Las computadoras deben manejar otros tipos de información además de los números.

Tanto los textos (caracteres alfanuméricos) como las instrucciones deben codificarse de tal modo que la
computadora interprete esta información. El código más común para la información tipo texto es el American
Standard Code for Information Interchange –ASCII–. El código ASCII es una correlación ampliamente aceptada
entre caracteres alfanuméricos y valores binarios específicos.

En este código, el número $41 corresponde a una letra A mayúscula, el $20 al carácter espacio, etc. El código
ASCII traduce un carácter a un código binario de 7 bits, aunque en la práctica la mayoría de las veces la
información es transportada en caracteres de 8 bits con el bit más significativo en cero.

Este estándar permite hace posible las comunicaciones entre equipos hechos por diversos fabricantes, puesto
que todas las máquinas utilizan el mismo código.

Tabla de caracteres ASCII:

0 1 2 3 4 5 6 7
0 NUL DEL SP 0 @ P p
1 SOH DC1 ! 1 A Q a q
2 STX DC2 “ 2 B R b r
3 ETX DC3 # 3 C S c s
4 EOT DC4 $ 4 D T d t
5 ENQ NAK % 5 E U e u
6 ACK SYN & 6 F V f v
7 BEL ETB 7 G W g w
8 BS CAN ( 8 H X h x
9 HT EM ) 9 I Y i y

122
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

A LF SUB * : J Z j z
B VT ESC + ; K [ k {
C FF FS , < L \ l |
D CR GS - = M ] m }
E SO RS . > N ^ n ~
F SI US / ? O _ o DEL

NUL - Nulo (Null)

SOH - Comienzo de cabecera (Start of Heading)

STX- Comienzo de texto (Start of Text)

ETX - Final de texto (End of Text)

EOT - Fin de transmisión (End of Transmision)

ENQ - Requerimiento (Enquiry)ACK - Reconocimiento (Acknowledge)

BEL - Campanilla (Bell)

BS - Retroceso (Back Space)

HT - Tabulación horizontal (Horizontal Tabulation)

LF - Avance de línea (Line Feed)

VT - Tabulación vertical (Vertical Tabulation)

FF - Avance de página (Form Feed)

CR - Retorno de carro (Carriage Return)

SO - Shift Out

SI - Shift In

DLE - Escape de enlace de datos (Data Link Escape)

DCn - Control del dispositivo n (Device Control)

NAK - Reconocimiento negativo (Negative Acknowledge)

SYN - Espera de sincronismo (Synchronous Idle)

ETB - Fin de bloque de transmisión (End of Transmision Block)

123
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

CAN - Cancelar (Cancel)

EM - Fin del medio (End of Medium)

SUB - Sustituir (Substitute)

ESC - Escapar (Escape)

FS - Separador de archivo (File Separator)

GS - Separador de grupo (Group Separator)

RS - Separador de registro (Record Separator)

US - Separador de unidad (Unit Separator)

SP - Espacio (Space)DEL - Borrar (Delete)

Binario codificado en decimal:

El sistema Binario codificado en decimal –BCD– es una notación híbrida, usada paraexpresar valores decimales
en forma binaria. Un BCD utiliza cuatro bits para representar cada dígito decimal.

De esta manera, cuatro dígitos binarios pueden expresar 16 diferentes cantidades


físicas, habiendo seis combinaciones consideradas no válidas (específicamente, los
valores hexadecimales de la “A” a la “F”). Los valores BCD se representan con el signo
“$”, pues ellos son números hexadecimales que representan cantidades decimales.

Cuando la computadora hace una operación de suma BCD, realiza una suma binaria
y, luego, realiza un ajuste que genera un resultado BCD.

Como ejemplo, consideremos la siguiente suma BCD:


9(10) + 1(10) = 10 (10) donde (10), significa Base 10.

La computadora suma........
0000 1001(2) + 0000 0001(2) = 0000 1010(2)
donde (2), significa Base 2.

Pero 1010(2) es equivalente a “A(16)” que es un código BCD no válido.

124
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Cuando la computadora termina el cálculo, realiza un chequeo para ver si el resultado


es un código BCD válido. Si hubo un “acarreo” (un desborde) de un dígito BCD a otro
o si hubiese algún código no válido, se desencadena una secuencia de etapas para corregir el resultado y llevarlo
al formato BCD apropiado. El número 0000 1010(2) es corregido y se transforma en 0001 0000(2) (BCD 10) en
este ejemplo.

Hexadecimal
Decimal BCD Binary
(reference)
0 $0 0000 $0

1 $1 0001 $1

2 $2 0010 $2

3 $3 0011 $3

4 $4 0100 $4

5 $5 0101 $5

6 $6 0110 $6

7 $7 0111 $7

8 $8 1000 $8

9 $9 1001 $9
1010 $A

1011 $B

1100 $C
Combinaciones BCD
Inválidas
1101 $D

1110 $E

1111 $F
10 $10 0001 0000 $10

99 $99 1001 1001 $99

125
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En la mayoría de los casos es ineficiente utilizar la notación BCD para los cálculos de la computadora. Es mejor
convertir la información de decimal a binario en el momento de su ingreso, realizar todos los cálculos en binario y
convertirlos nuevamente a BCD o decimal sólo si es necesario presentarlos en un exhibidor.

No todos los microcontroladores son capaces de realizar cálculos en BCD, ya que se necesita tener la indicación
del acarreo dígito a dígito que no está presente en todas las computadoras (tener en cuenta que en los MCU de
Motorola tienen este indicador de semi-acarreo). Forzar a una computadora a comportarse como nosotros
necesitamos, resulta menos eficiente que permitirle trabajar en su sistema de numeración natural.

Punto flotante:

El 8088-8086 no puede operar directamente (a nivel hardware) con números en punto flotante (o números
reales); para que lo pueda hacer, es necesario que cada lenguaje de programación brinde una interface de
software apropiada. En este apéndice, se describen los números en punto flotante tal como los opera el lenguaje
BASIC.

Los números en punto flotante pueden ser de simple y doble precisión, según la cantidad de dígitos disponibles
para la mantisa: cuantos más dígitos tenga la mantisa, mayor precisión tendrá el número.

Los números en punto flotante tienen tres campos:

1. exponente.
2. signo.
3. mantisa.

El exponente ocupa los primeros 8 bits (byte más alto) y siempre es una cantidad positiva. Para poder
representar números con exponente negativo, éste se escribe en notación “con exceso” de 128, de modo que el
verdadero exponente de un número es el que resulta de restarle 128 al número representado en el campo de
exponente.

El signo ocupa el bit que esta a continuación del exponente.

La mantisa está a continuación del bit de signo y se encuentra normalizada. Esto significa que, para interpretar la
mantisa, se debe agregar un 1 en el bit más alto (al tener la mantisa normalizada, se considera que el primer
dígito es siempre un 1 binario aunque, no se lo explicite en la representación). El tamaño de la mantisa varía
según la precisión: es de 22 bits para simple precisión y de 51 bits para doble precisión.

Un número de punto flotante en simple precisión ocupa una doble palabra (4 bytes) de memoria y tiene la
siguiente estructura:

126
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Bits 0 a 22. Mantisa normalizada. Para ganar precisión se omite representar el primer dígito decimal, pues al
estar la mantisa normalizada éste siempre existe. Entonces, al calcular el número se debe considerar este dígito
implícito. Bit 23. Signo de la mantisa. Si es 0, la mantisa es positiva; si es 1, la mantisa es negativa. Bits 24 a 31.
Exponente con exceso a 128. El campo del exponente es un entero positivo; para conocer el valor del exponente
se debe restar 128 al valor representado.

El rango para los positivos será entonces:

00000000 <= N => FF7FFFFF (hexadecimal)

00000000000000000000000000000000 <= N => 1111111101111111111111111111 (B)

-128 127
0,5 * 2 <= N => 0,9999999 * 2 (exp. base 2)

-39 38
2,938736 * 10 <= N => 1,701412 * 10 (exp. base 10)

De la misma manera, el rango para los negativos será:


FFFFFFFF <= N => 00800000 (hexadecimal)
11111111111111111111111111111111 <= N => 0000000010000000000000000000 (B)
127 -128
-0,9999999 * 2 <= N => -0,5 * 2 (exp. base 2)
38 -39
-1,701412 * 10 <= N => -2,938736 * 10 (exp. base 10)

De este modo, puede verse que un número positivo difiere del mismo número negativo en el bit de signo.

Un número de punto flotante en doble precisión ocupa 1 cuádruple palabra (8 bytes)


de memoria y tiene la siguiente estructura:

La diferencia con los números de simple precisión es que hay mayor cantidad de dígitos para la mantisa. De este
modo, se logra mayor precisión en la representación de un número en punto flotante.

Por ejemplo, el número decimal 2436,55686593 representado en ambos modos da el siguiente resultado:

Simple precisión: 8C1848E9

Doble precisión: 8C1848E8EC3FD9B5

Se nota que, al representar el número en simple precisión, la mantisa se redondea en el último dígito
hexadecimal.

127
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

128
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Anexo II

Set de Instrucciones PIC

129
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Set de instrucciones de la gama media

ADDLW Suma un literal ADDWF W+F ANDLW W AND literal

Sintaxis: [label] ADDLW k Sintaxis: [label] ADDWF f,d Sintaxis: [label] ANDLW k
Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ k ≤ 255
Operación: : (W) + (k)⇒ (W) Operación: (W) + (f) ⇒ (dest) Operación: : (W) AND (k)⇒ (W)
Flags afectados: C, DC, Z Flags afectados: C, DC, Z Flags afectados: Z
Código OP: 11 111x kkkk kkkk Código OP: 00 0111 dfff ffff Código OP: 11 1001 kkkk kkkk

Descripción: Suma el contenido del Descripción: Suma el contenido del Descripción: Realiza la operación
registro W y k, guardando el registro W y el registro f. Si d es 0, el lógica AND entre el contenido del
resultado en W. resultado se almacena en W, si d es 1 registro W y k, guardando el
se almacena en f. resultado en W.

Ejemplo: ADDLW 0xC2 Ejemplo: ADDWF REG,0 Ejemplo: ADDLW 0xC2

Antes: W = 0x17 Antes: W = 0x17., REG = 0xC2 Antes: W = 0x17


Después: W = 0xD9 Después: W = 0xD9, REG = 0xC2 Después: W = 0xD9

ANDWF W AND F BCF Borra un bit BSF Activa un bit

Sintaxis: [label] ANDWF f,d Sintaxis: [label] BCF f,b Sintaxis: [label] BSF f,b
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ f ≤ 127, 0 ≤ b ≤ 7 Operandos: 0 ≤ f ≤ 127, , 0 ≤ b ≤ 7
Operación: (W) AND (f) ⇒ (dest) Operación: : 0 ⇒ (f<b>) Operación: 1 ⇒ (f<b>)
Flags afectados: Z Flags afectados: Ninguno Flags afectados: Ninguno
Código OP: 00 0101 dfff ffff Código OP: 01 00bb bfff ffff Código OP: 01 01bb bfff ffff

Descripción: Realiza la operación Descripción: Borra el bit b del Descripción: Activa el bit b del
lógica AND entre los registros W y f. registro f registro f
Si d es 0, el resultado se almacena en
W, si d es 1 se almacena en f.
Ejemplo: : ANDWF REG,0 Ejemplo: : BCF REG,7 Ejemplo: : BSF REG,7

Antes: W = 0x17., REG = 0xC2 Antes: REG = 0xC7 Antes: REG = 0x0A
Después: W = 0x17, REG = 0x02 Después: REG = 0x47 Después: REG = 0x8A

BTFSC Test de bit y salto BTFSS Test de bit y salto CALL Salto a subrutina

Sintaxis: [label] BTFSC f,d Sintaxis: [label] BTFSS f,d Sintaxis: [label] CALL k
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ k ≤ 2047
Operación: Salto si (f<b>) = 0 Operación: Salto si (f<b>) = 1 Operación: PC ⇒ Pila; k ⇒ PC
Flags afectados: Ninguno Flags afectados: Ninguno Flags afectados: Ninguno
Código OP: 01 10bb bfff ffff Código OP: 01 11bb bfff ffff Código OP: 10 0kkk kkkk kkkk

Descripción: Si el bit b del registro f Descripción: Si el bit b del registro f Descripción: Salto a una subrutina.
es 0, se salta una instrucción y se es 1, se salta una instrucción y se La parte baja de k se carga en PCL, y
continúa con la ejecución. En caso de continúa con la ejecución. En caso de la alta en PCLATCH. Ocupa 2 ciclos
salto, ocupará dos ciclos de reloj. salto, ocupará dos ciclos de reloj. de reloj.
Ejemplo: BTFSC REG,6 Ejemplo: BTFSS REG,6 Ejemplo:ORIGEN CALL DESTINO
GOTO NO_ES_0 GOTO NO_ES_0
SI_ES_0 Instrucción SI_ES_0 Instrucción Antes: PC = ORIGEN
NO_ES_0 Instrucción NO_ES_0 Instrucción Después: PC = DESTINO

130
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

CLRF Borra un registro CLRW Borra el registro W CLRWDT Borra el WDT

Sintaxis: [label] CLRF f Sintaxis: [label] CLRW Sintaxis: [label] CLRWDT


Operandos: 0 ≤ f ≤ 127 Operandos: Ninguno Operandos: Ninguno
Operación: : 0x00 ⇒ (f), 1 ⇒ Z Operación: : 0x00 ⇒ W, 1 ⇒ Z Operación: 0x00 ⇒ WDT, 1 ⇒ /TO
Flags afectados: Z Flags afectados: Z 1 ⇒ /PD
Código OP: 00 0001 1fff ffff Código OP: 00 0001 0xxx xxxx Flags afectados: /TO, /PD
Código OP: 00 0000 0110 0100
Descripción: El registro f se carga Descripción: El registro de trabajo Descripción: Esta instrucción borra
con 0x00. El flag Z se activa. W se carga con 0x00. El flag Z se tanto el WDT como su preescaler.
activa. Los bits /TO y /PD del registro de
estado se ponen a 1.
Ejemplo: : CLRF REG Ejemplo: : CLRW Ejemplo: : CLRWDT
Después: Contador WDT = 0,
Antes: REG = 0x5A Antes: W = 0x5A Preescales WDT = 0,
Después: REG = 0x00, Z = 1 Después: W = 0x00, Z = 1 /TO = 1, /PD = 1

COMF Complemento de f DECF Decremento de f DECFSZ Decremento y salto

Sintaxis: [label] COMF f,d Sintaxis: [label] DECF f,d Sintaxis: [label] DECFSZ f,d
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: : (/ f), 1 ⇒ (dest) Operación: : (f ) – 1 ⇒ (dest) Operación: (f) -1 ⇒ d; Salto si R=0
Flags afectados: Z Flags afectados: Z Flags afectados: Ninguno
Código OP: 00 1001 dfff ffff Código OP: 00 0011 dfff ffff Código OP: 00 1011 dfff ffff

Descripción: El registro f es Descripción: Decrementa en 1 el Descripción: Decrementa el


complementado. El flag Z se activa si contenido de f. Si d es 0, el resultado contenido del registro f. Si d es 0, el
el resultado es 0. Si d es 0, el se almacena en W, si d es 1 se resultado se almacena en W, si d es 1
resultado se almacena en W, si d es 1 almacena en f. se almacena en f. Si la resta es 0 salta
se almacena en f.. la siguiente instrucción, en cuyo caso
costaría 2 ciclos.
Ejemplo: : COMF REG,0 Ejemplo: : DECF CONT,1
Ejemplo: DECFSC REG,0
GOTO NO_ES_0
Antes: REG = 0x13 Antes: CONT = 0x01, Z = 0
SI_ES_0 Instrucción
Después: REG = 0x13, W = 0XEC Después: CONT = 0x00, Z = 1
NO_ES_0 Salta instrucción anterior

GOTO Salto incondicional INCF Decremento de f INCFSZ Incremento y salto

Sintaxis: [label] GOTO k Sintaxis: [label] INCF f,d Sintaxis: [label] INCFSZ f,d
Operandos: 0 ≤ k ≤ 2047 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: k ⇒ PC <8:0> Operación: : (f ) + 1 ⇒ (dest) Operación: (f) -1 ⇒ d; Salto si R=0
Flags afectados: Ninguno Flags afectados: Z Flags afectados: Ninguno
Código OP: 10 1kkk kkkk kkkk Código OP: 00 1010 dfff ffff Código OP: 00 1111 dfff ffff

Descripción: Se trata de un salto Descripción: Incrementa en 1 el Descripción: Incrementa el


incondicional. La parte baja de k se contenido de f. Si d es 0, el resultado contenido del registro f. Si d es 0, el
carga en PCL, y la alta en se almacena en W, si d es 1 se resultado se almacena en W, si d es 1
PCLATCH. Ocupa 2 ciclos de reloj. almacena en f. se almacena en f. Si la resta es 0 salta
Ejemplo: ORIGEN GOTO DESTINO Ejemplo: : INCF CONT,1 la siguiente instrucción, en cuyo caso
costaría 2 ciclos.
Antes: PC = ORIGEN Antes: CONT = 0xFF, Z = 0 Ejemplo: INCFSC REG,0
Después: PC = DESTINO Después: CONT = 0x00, Z = 1 GOTO NO_ES_0
SI_ES_0 Instrucción
NO ES 0 Salta instrucción anterior

131
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

IORLW W OR literal IORWF W AND F MOVLW Cargar literal en W

Sintaxis: [label] IORLW k Sintaxis: [label] IORWF f,d Sintaxis: [label] MOVLW f
Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ f ≤ 255
Operación: : (W) OR (k)⇒ (W) Operación: (W) OR (f) ⇒ (dest) Operación: (k) ⇒ (W)
Flags afectados: Z Flags afectados: Z Flags afectados: Ninguno
Código OP: 11 1000 kkkk kkkk Código OP: 00 0100 dfff ffff Código OP: 11 00xx kkkk kkkk

Descripción: Se realiza la operación Descripción: Realiza la operación Descripción: El literal k pasa al


lógica OR entre el contenido del lógica OR entre los registros W y f. registro W.
registro W y k, guardando el Si d es 0, el resultado se almacena en
resultado en W. W, si d es 1 se almacena en f.

Ejemplo: : IORLW 0x35 Ejemplo: : IORWF REG,0 Ejemplo: MOVLW 0x5A

Antes: W = 0x9A Antes: W = 0x91, REG = 0x13 Después: REG = 0x4F, W = 0x5A
Después: W = 0xBF Después: W = 0x93, REG = 0x13

MOVF Mover a f MOVWF Mover a f NOP No operar

Sintaxis: [label] MOVF f,d Sintaxis: [label] MOVWF f Sintaxis: [label] NOP
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ f ≤ 127 Operandos: Ninguno
Operación: (f) ⇒ (dest) Operación: W ⇒ (f) Operación: No operar
Flags afectados: Z Flags afectados: Ninguno Flags afectados: Ninguno
Código OP: 00 1000 dfff ffff Código OP: 00 0000 1fff ffff Código OP: 00 0000 0xx0 0000
Descripción: El contenido del
registro f se mueve al destino d. Si d Descripción: El contenido del Descripción: No realiza operación
es 0, el resultado se almacena en W, registro W pasa el registro f. alguna. En realidad consume un ciclo
si d es 1 se almacena en f. Permite de instrucción sin hacer nada.
verificar el registro, puesto que afecta
a Z.
Ejemplo: MOVF REG,0 Ejemplo: MOVWF REG,0 Ejemplo: : CLRWDT

Después: W = REG Antes: REG = 0xFF, W = 0x4F Después: Contador WDT = 0,


Después: REG = 0x4F, W = 0x4F Preescales WDT = 0,
/TO = 1, /PD = 1

RETFIE Retorno de interrup. RETLW Retorno, carga W RETURN Retorno de rutina

Sintaxis: [label] RETFIE Sintaxis: [label] RETLW k Sintaxis: [label] RETURN


Operandos: Ninguno Operandos: 0 ≤ k ≤ 255 Operandos: Ninguno
Operación: : 1 ⇒ GIE; TOS⇒PC Operación: : (k)⇒ (W); TOS⇒PC Operación: : TOS ⇒ PC
Flags afectados: Ninguno Flags afectados: Ninguno Flags afectados: Ninguno
Código OP: 00 0000 0000 1001 Código OP: 11 01xx kkkk kkkk Código OP: 00 0000 0000 1000

Descripción: El PC se carga con el Descripción: El registro W se carga Descripción: El PC se carga con el


contenido de la cima de la pila con la constante k. El PC se carga contenido de la cima de la pila
(TOS): dirección de retorno. con el contenido de la cima de la pila (TOS): dirección de retorno.
Consume 2 ciclos. Las interrupciones (TOS): dirección de retorno. Consume 2 ciclos.
vuelven a ser habilitadas. Consume 2 ciclos.
Ejemplo: : RETFIE Ejemplo: : RETLW 0x37 Ejemplo: : RETURN

Después: PC = dirección de retorno Después: PC = dirección de retorno Después: PC = dirección de retorno


GIE = 1 W = 0x37

132
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

RLF Rota f a la izquierda RRF Rota f a la derecha SLEEP Modo bajo consumo

Sintaxis: [label] RLF f,d Sintaxis: [label] RRF f,d Sintaxis: [label] SLEEP
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: Ninguno
Operación: Rotación a la izquierda Operación: Rotación a la derecha Operación: 0x00⇒WDT, 1 ⇒ / TO
Flags afectados: C Flags afectados: C 0 ⇒ WDT Preescaler, 0 ⇒ / PD
Código OP: 00 1101 dfff ffff Código OP: 00 1100 dfff ffff Flags afectados: / PD, / TO
Código OP: 00 0000 0110 0011
Descripción: El contenido de f se Descripción: El contenido de f se
rota a la izquierda. El bit de menos rota a la derecha. El bit de menos Descripción: El bit de energía se
peso de f pasa al carry (C), y el carry peso de f pasa al carry (C), y el carry pone a 0, y a 1 el de descanso. El
se coloca en el de mayor peso. Si d es se coloca en el de mayor peso. Si d es WDT y su preescaler se borran. El
0, el resultado se almacena en W, si d 0, el resultado se almacena en W, si d micro para el oscilador, llendo al
es 1 se almacena en f. es 1 se almacena en f. modo “durmiente”.

Ejemplo: RRF REG,0 Ejemplo: RRF REG,0 Ejemplo: : SLEEP

Antes: REG = 1110 0110, C = 0 Antes: REG = 1110 0110, C = 1 Preescales WDT = 0,
Después: REG = 1110 0110, Después: REG = 1110 0110, /TO = 1, /PD = 1
W = 1100 1100, C = 1 W = 01110 0011, C = 0

SUBLW Resta Literal - W SUBWF Resta f – W SWAPF Intercambio de f

Sintaxis: [label] SUBLW k Sintaxis: [label] SUBWF f,d Sintaxis: [label] SWAPF f,d
Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: ( k ) - (W) ⇒ (W) Operación: ( f ) – (W )⇒ (dest) Operación: : (f <3: 0>)⇔ (f <7:4>)
Flags afectados: Z, C, DC Flags afectados: C, DC, Z Flags afectados: Ninguno
Código OP: 11 110x kkkk kkkk Código OP: 00 0010 dfff ffff Código OP: 00 1110 dfff ffff
Descripción: Mediante el método del Descripción: Mediante el método del
complemento a dos el contenido de complemento a dos el contenido de Descripción: Los 4 bits de más peso
W es restado al literal. El resultado se W es restado al de f. . Si d es 0, el y los 4 de menos son intercambiados.
almacena en W. resultado se almacena en W, si d es 1 Si d es 0, el resultado se almacena en
se almacena en f. W, si d es 1 se almacena en f.

Ejemplos: SUBLW 0x02 Ejemplos: SUBWF REG,1 Ejemplo: : SWAPF REG,0


Antes: REG = 0x03, W = 0x02, C = ?
Antes:W=1,C=?. Después: W=1, C=1 Después:REG=0x01, W = 0x4F, C=1 Antes: REG = 0xA5
Antes:W=2,C=?. Después: W=0, C=1 Antes: REG = 0x02, W = 0x02, C = ? Después: REG = 0xA5, W = 0x5A
Antes:W=3,C=?.Después:W=FF,C=0 Después:REG=0x00, W =0x02, C= 1
(El resultado es negativo) Antes: REG= 0x01, W= 0x02, C= ?
Después:REG=0xFF, W=0x02, C= 0
(Resultado negativo)

XORLW W OR literal XORWF W AND F

Sintaxis: [label] XORLW k Sintaxis: [label] XORWF f,d La gama media tiene un
Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 total de 35 instrucciones,
Operación: : (W) XOR (k)⇒ (W) Operación: (W) XOR (f) ⇒ (dest)
Flags afectados: Z Flags afectados: Z
cada una de las cuales
Código OP: 11 1010 kkkk kkkk Código OP: 00 0110 dfff ffff ocupan 14 bits.
Descripción: Se realiza la operación Descripción: Realiza la operación
lógica XOR entre el contenido del lógica XOR entre los registros W y f.
registro W y k, guardando el Si d es 0, el resultado se almacena en
resultado en W. W, si d es 1 se almacena en f.

Ejemplo: : XORLW 0xAF Ejemplo: : XORWF REG,0

Antes: W = 0xB5 Antes: W = 0xB5, REG = 0xAF


Después: W = 0x1A Después: W = 0xB5, REG = 0x1A

133
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Instrucciones de la gama baja

La gama baja carece de 4 de las instrucciones de la gama media. Estas son ADDLW, RETFIE, RETURN y SUBLW.
En cambio, y puesto que los registros OPTION y TRIS no son accesibles, se añaden las dos siguientes:

OPTION Carga del reg. option TRIS Carga del registro TRIS

Sintaxis: [label] OPTION Sintaxis: [label] TRIS f


Operandos: Ninguno Operandos: 5 ≤ f ≤ 7
Operación: (W) ⇒ OPTION Operación: (W)⇒ Registro TRIF<f>
Flags afectados: Ninguno Flags afectados: Ninguno
Código OP: 0000 0000 0010 Código OP: 0000 0000 0fff

Descripción: El contenido del registro W Descripción: El contenido del registro W


se carga en el registro OPTION, registro se carga en el registro TRISA, TRISB o
de sólo lectura en el que se configura el TRISC, según el valor de f. Estos
funcionamiento del preescaler y el TMR0. registros de sólo lectura configuran las
patillas de un puerto como de entrada o
salida.

Ejemplo: : OPTION Ejemplo: : TRIS PORTA


Antes: W= 0x06, OPTION = 0x37 Antes: W=0xA5, TRISA=0x56
Después: W= 0x06, OPTION = 0x06 Después: W=0xA5, TRISA=0xA5

Observe que el código OP de las instrucciones de la gama baja sólo ocupan 12 bits, no correspondiéndose, por tanto,
con el de la gama media.

Otras diferencias fundamentales entre ambas gamas son, por ejemplo, que en la baja el vector de reset (la primera línea
que se ejecuta tras un reset) es la última de la memoria correspondiente, mientras que en la media es la 0x00. El vector de
interrupción (situado en la 0x04) no existe en la gama baja.

En la gama baja se necesita emplear los bits PA2-PA0 como parte alta de la dirección de programa en las instrucciones
CALL y GOTO.
Las páginas de la gama baja son más pequeñas, y se deben revisar todas las escrituras de los registros OPTION,
ESTADO y FSR en la conversión del código.
Por tanto, fácilmente comprobamos que el código entre ambas gamas no es 100% compatible.

134
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Abreviatura   Descripción 

Contador de Programa que direcciona la memoria de


instrucciones. Tiene un tamaño de 11 bits en la gama baja, de
PC
los cuales los 8 de menos peso configuran el registro PCL que
ocupa el registro 0x02 del área de datos.

TOS Cima de la pila, con 2 niveles en la gama baja y 8 en la media


WDT Perro guardián (Watchdog)
W Registro W, similar al acumulador
Suele ser un campo de 5 bits (fffff) que contiene la dirección
F del banco de registros, que ocupa el banco 0 del área de datos.
Direcciona uno de esos registros.
Bit del código OP de la instrucción, que selecciona el destino.
D
Si d=0, el destino es W, y si d=1 el destino es f.
Dest Destino (registro W o f)
TO Bit “Time Out” del registro de estado
PD Bit “Power Down” del registro de estado
Suele ser un campo de 3 bits (bbb) que determinan la posición
B
de un bit dentro de un registro de 8 bits
Se trata, normalmente, de un campo de 8 bits (kkkkkkkk) que
K representa un dato inmediato. También puede constar de 9 bits
en las instrucciones de salto que cargan al PC
Valor indeterminado (puede ser un 0 o un 1). Para mantener la
X compatibilidad con las herramientas software de Microchip
conviene hacer x = 0
label Nombre de la etiqueta
[] Opciones
() Contenido
→ Se asigna a
<> Campo de bits de un registro
∈ Pertenece al conjunto
Z Señalizador de cero en W. Pertenece al registro de estado
Señalizador de acarreo en el octavo bit del W. Pertenece al
C
registro de estado
Señaliza el acarreo en el 4 bit del W. Pertenece al registro de
DC
estado
Italicas Términos definidos por el usuario

135
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

136
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Anexo III
Programador de PIC
(Descargado de www.pablin.com.ar)

137
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Programador PIC

Con este circuito se pueden programar micros de 8, 18, 28 y 40 pines así como memorias seriales de la familia
24.

La llave selectora permite determinar que tipo de PIC se va a programar. Colocándola en la posición superior se
pueden programar micros chicos y medianos (de 8 y 18 pines) mientras que colocándola en la posición inferior se
pueden programar micros grandes (de 28 y 40 pines).

Vemos aquí el conexionado de la placa de circuito impreso que contiene los zócalos para los distintos tipos de
PICmicro que podemos programar. Pensamos que sería mejor hacer el sistema en dos placas, una con la

138
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

electrónica en el interior del gabinete y otra con sólo los zócalos para colocar en el exterior del gabinete donde
será mas simple insertar o retirar los micros a programar.

Podemos, además, equipar a nuestro equipo de un zócalo de 8 pines adicional como el visto arriba para poder
leer y programar memorias seriales de la familia 24.

Como fuente de alimentación debemos usar una de 12V (NO REGULADA) de 300mA en adelante de corriente.

El programa a utilizar es el ICProg.

En la pantalla de configuración del programa ICProg establecer como programador el "Propic II programmer" y
tildar la casilla "Invertir MCLR". Luego de esto el LED indicador PIC se encenderá indicando que es posible
insertar o quitar pics de los zócalos.

IMPORTANTE
El LED marcado como "PIC" indica cuando no hay presencia de tensión de programación
(VPP) en el zócalo. Cuando este LED esta apagado la tensión está presente en los zócalos
PIC. Nunca insertar o quitar microcontroladores de los zócalos estando este indicador
apagado.

139
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

140
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Anexo IV
Circuito de Aplicación

Tester de cables de red


(aplicación descargada de www.proyectopic.com.ar)

141
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

TESTER PARA CABLES UTP


Se trata de un tester de cables de red, algo muy buscado pero que generalmente cuesta bastante encontrar, de
hecho este proyecto nació en una charla con un compañero de trabajo que quería hacer algo simple y económico
para probar los benditos cables de red....

Fue así que Javier me acerco un proyecto muy elemental que nos permitía chequear solo si el cable estaba bueno,
a partir de ahí le sugerí que hiciéramos algunos cambios, y surgió la idea de utilizar un PIC, fue así que nos
propusimos mejorar el circuito y en principio solo se trataba de secuenciarlo, de esta manera podríamos chequear
algo mas, no solo saber si el cable tenia todos sus pares conectados, sino que ahora en virtud de la secuencia de
encendido de los LED, podríamos saber si se trata de un cable "derecho" o "cruzado", Esto es en virtud de la
secuencia como se describe a continuación:

Cable derecho:

Al encender el equipo "local" (el que contiene la batería de alimentación), en el equipo remoto (el
de los 4 led's) la secuencia será 1 - 2 - 3 - 4.

Cabe destacar que el equipo realizara toda la secuencia, y al finalizar esperara un par de segundos y
comenzara nuevamente con ella. Es decir que si coloco el local en un extremo del cable, lo enciendo (esto puedo
verificarlo mediante el led que contiene dicha unidad, el que permanecerá encendido durante toda la secuencia de
prueba), podré ir ahora y colocar el remoto en el otro extremo, supongamos que en ese momento enciende el led 3,
esto significara que la prueba esta en proceso. un segundo después, aproximadamente, este se apagara y encenderá
el led 4. Ahí finaliza la prueba y antes de encender nuevamente el led 1, podré apreciar que el tiempo es un poco
mayor. Aproximadamente 2 segundos.

Cable cruzado:

La prueba a realizar, es la misma, solo que la secuencia de encendido cambiara y será 2 - 1 -3 - 4

Este tester mediante el color de encendido de los led también me indicara si los pares están bien conectados o si
están invertidos, en caso de estar correctamente conectados, los led encenderán color verde, mientras que si
estuvieran invertidos, encenderán color rojo, esto es lógicamente debido a que los led son bi-color, si no fuera así,
es decir si solo coloco led de un color, supongamos verdes, perderá la posibilidad de chequear la inversión de los
cables y podrá confundir esta falla con el faltante de algún hilo, ya que al invertir la polarización del led, este no
encenderá, como si uno de sus hilos estuviera cortado o no conectado.

Aquí esta el esquema eléctrico de ambas unidades:

142
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Lista de materiales:

U1 PIC 16F84A
U2 78L05
J1 Conector RJ45 p/Circ. Impreso
J2 Conector para bateria o portatilas
J3 Conector RJ45 p/Circ. Impreso
R1 10 K
R2 1K
R3 a R6 560 Ohm
Xtal1 Cristal de 4Mhz
C1 - C2 22pF
C3 10uFx16v
D1 Led amarillo
D2 a D5 Led Bicolor rojo-verde de dos patillas
zocalo de 18 pines

El pic debe contener el programa en su interior, para descargarlo entra a


http://www.proyectopic.com.ar/circuitos_pic/Tester_UTP/tester.htm y hace clic en el link correspondiente a la
descarga.

Ten en cuenta que el archivo que estas descargando esta comprimido y al descomprimirlo obtendrás el archivo
tester.hex, que es el que debes cargar en el microcontrolador.

143
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Cabe aclarar, que el circuito esta pensado por una cuestión de comodidad para ser alimentado mediante una
batería de 9 volt, pero como lo primero que tengo es el regulador de 5 volt, podré alimentarlo con cualquier
tensión, siempre que esta sea superior a 5 volt. Por ejemplo podría ser un conjunto de 4 pilas, con lo que tendría
6V o bien mediante alguna fuente externa, lo que requeriría un tomacorrientes cerca del lugar donde estamos
probando el cable y esto podría en algunos casos convertirse en un grave inconveniente.

Aconsejo colocar un zócalo (figura en la lista de materiales) para insertar el micro, ya que no seria conveniente
soldarlo al circuito. Finalmente al colocarlo en un gabinete (en realidad 2, uno para la unidad local y otro para el
remoto), aconsejo colocar una llave de encendido que corte el positivo de la batería a fin de poder encender y
apagar el tester. Ten en cuenta que esta llave no esta contemplada en la lista de materiales.

Finalmente quiero agradecer a Javier, que fue quien trajo su primera inquietud y los circuitos básicos de los que
partimos para lograr este proyecto.

144
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Anexo V
Display LCD

145
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

MODULOS LCD

1-. Breve Introducción.

Antes de aparecer los módulos LCD, nuestros diseños electrónicos utilizaban los Displays de siete segmentos para
poder mostrar la información, además de su gran limitación de poder mostrar los caracteres alfa numéricos y
símbolos especiales, también consumían demasiada corriente y ocupaban demasiado espacio físico.
Posteriormente aparecieron otros tipos de displays más complejos que podían mostrar algunos caracteres y
símbolos; pero tenían de igual manera mucho consumo de corriente y espacio físico desperdiciado.

Finalmente aparecieron los módulos LCD o pantallas de cristal líquido la cual tienen la capacidad de mostrar
cualquier carácter alfa numérico. Estos dispositivos ya vienen con su pantalla y toda la lógica de control pre-
programada en la fabrica y lo mejor de todo es que el consumo de corriente es mínimo y no se tendrán que
organizar tablas especiales como se hacia anteriormente con los displays de siete segmentos.

Las aplicaciones de los módulos LCD son infinitas ya que podrán ser aplicados en la informática,
comunicaciones, telefonía, instrumentación, robótica, automóviles, equipos industriales, etc. Todo queda a su
imaginación la gran cantidad de aplicaciones que tiene un modulo LCD.

2-. Diversidad de algunos módulos LCD:

En la actualidad los módulos LCD existen una gran variedad de versiones clasificados en dos grupos. El primer
grupo esta referido a los módulos LCD de caracteres ( solamente se podrán presentar caracteres y símbolos
especiales en las líneas predefinidas en el modulo LCD) y el segundo grupo esta referido a los módulos LCD
matriciales ( Se podrán presentar caracteres, símbolos especiales y gráficos). Los módulos LCD varían su tamaño

146
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

físico dependiendo de la marca; por lo tanto en la actualidad no existe un tamaño estándar para los módulos LCD.

Para el caso de la empresa VARITRONIX especializada en la fabricación de LCD, existen configuraciones


mínimas desde una línea con un mínimo de ocho caracteres y por el contrario, existen configuraciones desde 4
líneas hasta 40 caracteres por cada línea. La siguiente imagen muestra las dimensiones de una configuración
típica de un modulo LCD de dos líneas por 16 caracteres por cada línea incluyendo los detalles de la matriz de
como esta conformado un carácter.

Otro patrón importante es el tamaño de los caracteres donde las dimensiones de la matriz que forma los caracteres
tienen longitudes diferentes. La siguiente imagen muestra la matriz utilizada para poder representar un símbolo o
un carácter alfa numérico en un modulo LCD. Esta matriz define algunos aspectos importantes del carácter o el
símbolo que están mostrando. Los aspectos que define esta matriz son: Los primeros módulos LCD tenían los
caracteres de color negro y el fondo de la pantalla era de color verdoso claro. Posteriormente se crearon otros
colores en donde los caracteres eran de color plata y así sucesivamente fueron variando los colores en el fondo y
en los caracteres incluyendo una luz posterior para los módulos LCD denominada Back Light diseñada
especialmente para mejorar la visualización de la pantalla sobre todo en lugares muy oscuros.

147
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

El Back Light existe en varias versiones de colores, entre los mas conocidos tenemos el color verdoso y el azul
cielo; pero hasta la fecha los Back Light tienen un alto consumo de corriente. Teóricamente según un reportaje
realizado por Edison Duque C. en la revista Colombiana de Electrónica y Computadores N-. 12 del Tercer año
dice: Los pines que le suministran la corriente al Back Light se le deben suministrar 5 Voltios pero a una
frecuencia aproximada de 60 Hz. para evitar que se presenten altas temperaturas en el modulo LCD. La siguiente
imagen representa un modulo LCD del tipo matricial y que tienen encendida la luz posterior ( Back Light ).

Ahora la tecnología esta disponible en color para los módulos LCD desde 4 colores hasta los 256 y las
combinaciones de ellos.

3-. Identificación de los pines de conexión de un modulo LCD no Matricial:

Los pines de conexión de un modulo LCD han sido estandarizados por el cual en la mayoría de ellos son
exactamente iguales siempre y cuando la línea de caracteres no sobrepase los ochenta caracteres por línea. En el
caso de que esto suceda, localice la hoja de características del fabricante. Por otro lado es de suma importancia
localizar exactamente cual es el Pin Numero 1 ya que en algunos módulos se encuentra hacia la izquierda y en
otros módulos se encuentra a la derecha. En caso de no estar seguro de la asignación de los pines, localice la hoja
de características del fabricante.

148
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

3.1-. Interpretación del significado de los Pines del Modulo LCD:

El Pin numero 1 y 2 están destinados para conectarle los 5 Voltios que requiere el modulo para su funcionamiento
y el Pin numero 3 es utilizado para ajustar el contraste de la pantalla; es decir colocar los caracteres mas oscuros o
mas claros para poderse observar mejor. Observe la siguiente imagen de como deberán estar conectados los tres
primeros pines. La resistencia representada como R3 es un potenciómetro variable que puede oscilar entre 10 K y
20 K indiferentemente.

149
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

El Pin numero 4: denominado "RS" trabaja paralelamente al Bus de datos del modulo LCD ( Bus de datos son
los Pines del 7 al 14 ). Este bus es utilizado de dos maneras, ya que usted podrá colocar un dato que representa una
instrucción o podrá colocar un dato que tan solo representa un símbolo o un carácter alfa numérico; pero para que
el modulo LCD pueda entender la diferencia entre un dato o una instrucción se utiliza el Pin Numero 4 para tal
fin. Si el Pin numero 4 = 0 le dirá al modulo LCD que esta presente en el bus de datos una instrucción, por el
contrario, si el Pin numero 4 = 1 le dirá al modulo LCD que esta presente un símbolo o un carácter alfa numérico.

El Pin numero 5: denominado "R/W" trabaja paralelamente al Bus de datos del modulo LCD ( Bus de datos son
los Pines del 7 al 14 ). También es utilizado de dos maneras, ya que usted podrá decirle al modulo LCD que
escriba en pantalla el dato que esta presente en el Bus; por otro lado también podrá leer que dato esta presente en
el Bus. Para entender mejor el funcionamiento del Pin número 5, tenemos un ejemplo práctico que aclara este
último punto.

Supóngase que usted tiene armado un circuito electrónico con un modulo LCD incluyendo un teclado muy
limitado que tan solo tiene 5 teclas ( Mover Cursor arriba, Mover cursor a la derecha, mover cursor abajo, mover
cursor a la izquierda y Enter ). La finalidad de este teclado es poderse desplazar por toda la pantalla y seleccionar
una opción con la tecla de ENTER. Si nuestro circuito electrónico por ejemplo le pregunta al usuario por medio
del modulo LCD lo siguiente: Usted tendría que ubicar el cursor para seleccionar una de las dos opciones
presentadas en pantalla. En el momento que usted presiona la tecla de Enter le dice a nuestro pequeño circuito que
ya la opción esta seleccionada. He aquí la importancia del Pin numero 5 ya que usted podrá leer la selección que
hizo nuestro usuario directamente del bus de datos del modulo LCD.

150
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Si el Pin numero 5 = 0 el modulo LCD escribe en pantalla el dato que esta presente el Bus; pero si el Pin numero 5
= 1 significa que usted necesita leer el dato que esta presente el bus del modulo LCD.

El Pin numero 6: denominado "E" que significa habilitación del modulo LCD tiene una finalidad básica:
conectar y desconectar el modulo. Esta desconexión no estará referida al voltaje que le suministra la corriente al
modulo; la desconexión significa tan solo que se hará caso omiso a todo lo que este presente en el bus de datos de
dicho modulo LCD.

En la mayoría de los circuitos electrónicos modernos que incluyan elementos electrónicos como
Microcontroladores, Memorias y Módulos LCD, utilizan el mismo bus de datos. Esto es para no tener un bus de
datos independientemente por cada elemento electrónico, esto implicaría que los circuitos electrónicos sean
mucho más grandes por la cantidad de conexiones necesaria a cada uno de los elementos.

Ahora como los Microcontroladores, memorias y módulos LCD utilizan el mismo bus de datos, deberá existir en
cada uno de ellos un Pin de habilitación "E" que permita desconectar y conectar cuando sea necesario. Por
ejemplo si usted necesita trabajar con la memoria RAM para obtener o escribir cierta información, será necesario
que deshabilite el modulo LCD para que no presente basura en la pantalla, o se ejecuten instrucciones no
deseadas.

Los Pines desde el numero 7 hasta el numero 14 representan 8 líneas que se utilizan para colocar el dato que
representa una instrucción para el modulo LCD o un carácter alfa numérico. El Bus de datos es de 8 Bits de
longitud y el Bit menos significativo esta representado en el Pin numero 7, el Pin mas significativo esta
representado en el Pin numero 14

Los Pines 15 y 16: estarán destinados para suministrar la corriente al Back Light. Es importante conocer que no
todos los módulos LCD disponen del Back Light aunque tenga los pines de conexión en el circuito impreso.

4-. Tiempos mínimos requeridos para que una instrucción o un dato puedan ser ejecutados.

Los Pines de control ( E, RS y E/W ) están estrechamente relacionados ya que por medio de ellos podemos
especificar si queremos ejecutar una instrucción o leer / escribir un dato en la pantalla o la memoria RAM; sin
embargo existe una condición importante que deberá tomarse en cuenta referida directamente al tiempo
necesario que se necesita para cambiar de un estado a otro en los pines de control. ( E, RS y R/W ). En el caso de
que este tiempo sea mas pequeño que el tiempo mínimo requerido, entonces el modulo LCD no tendrá el tiempo
suficiente para responder a las instrucciones solicitadas por el usuario y por consecuencia se perderán los datos o
instrucciones según sea el caso.

151
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En otras palabras, las personas suelen cometer un error común cuando se esta intentando hacer funcionar un
modulo LCD en el cual no consideran la velocidad de proceso del microprocesador o el microcontrolador
específicamente en los pines de control ( E, RS y R/W ), esto quiere decir que si usted tuviera conectado un
modulo LCD a un microcontrolador que tiene una velocidad de proceso demasiado alta en los pines de control,
cuando se ejecuta una solicitud de cualquier tipo ( escritura / lectura e Instrucción. ), el modulo LCD no tendrá la
capacidad de entender la solicitud hecha por el microcontrolador ya que esta se ejecuto demasiado rápida. Para
ello los programas o los circuitos electrónicos que manejan un modulo LCD deberán respetar los siguientes
diagramas de tiempo:

4.1-. Diagrama de tiempo para una Instrucción:

Para enviarle una instrucción al modulo, primero hay que colocar la instrucción en el bus de datos ( Pines del 7 al
14 ). Una vez que esta presente la instrucción en el bus de datos se procede a ejecutar el diagrama de tiempo
requerido para una instrucción en los pines de control. Este diagrama de tiempo es muy sencillo de entender, tan
solo usted deberá colocar el Pin RS = 0, el Pin R/W = 0 y el Pin E = 0; Una vez colocados los pines con las
tensiones mencionadas, proceda a cambiar el estado del Pin E = 1. El nuevo estado de este Pin "E" deberá
permanecer por lo menos 450 ns antes de volver a cambiar de estado para que la pantalla pueda entender la
instrucción.

4.2-. Diagrama de tiempo para escribir un Dato:

Para escribir un dato en el modulo LCD, primero hay que colocar el dato en el bus ( Pines del 7 al 14 ). Una vez
que esta presente el dato en el bus se procede a ejecutar el diagrama de tiempo requerido para escribir un dato en
los pines de control. Este diagrama de tiempo es muy sencillo de entender, tan solo usted deberá colocar el Pin RS
= 1, el Pin R/W = 0 y el Pin E = 0; Una vez colocados los pines con las tensiones mencionadas, proceda a cambiar
el estado del Pin E = 1. El nuevo estado de este Pin "E" deberá permanecer por lo menos 450 ns antes de volver a
cambiar de estado para que la pantalla pueda entender la instrucción.

152
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

4.3-. Diagrama de tiempo para leer un Dato:

Para leer un dato de la pantalla o la memoria RAM en el modulo LCD, los pines de control deberán estar
colocados como sigue: Pin RS = 1, Pin R/W = 1 y el Pin E = 0; Una vez colocados los pines con las tensiones
mencionadas, proceda a cambiar el estado del Pin E = 1. El nuevo estado de este Pin "E" deberá permanecer por lo
menos 450 ns antes de volver a cambiar de estado para que la pantalla pueda entender la instrucción.

Nota importante:

Nótese que en los tres diagramas de tiempos el Pin denominado como "E" tiene que estar previamente en el estado
lógico "CERO", posteriormente se cambia el estado lógico a "UNO" la cual permanecerá por lo menos unos 450

153
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

nano segundos y finalmente vuelve al estado lógico" CERO ", en el preciso momento que el Pin "E" del modulo
LCD tiene el flanco de bajada, es cuando se ejecuta la instrucción o el dato presente en el bus de control.

5-. Bus de Datos de 4 y 8 Bits de Longitud:

El Bus de datos de un modulo LCD puede ser configurado para trabajar con 4 Bits y con 8 Bits. Para los diseños
electrónicos que están limitados por la cantidad de líneas utilizadas en el Bus de datos, podrán utilizar un bus de
datos con una longitud de 4 Bits; sin embargo si este no fuera su caso, podrá utilizar el bus de datos completo de 8
Bits. Las señales de control ( RS - R/W - E ) y los diagramas de tiempo explicados anteriormente, trabajan igual
sea para un bus de datos de 4 Bits o de 8 Bits. Sin embargo, si usted esta interesado en trabajar el bus de datos con
una longitud de 8 Bits, deberá saber que cuando se enciende el modulo LCD la configuración para 8 Bits entra por
defecto; es decir que no necesitara programarse, pero la configuración del bus de datos con una longitud de 4 Bits
requiere una secuencia cuidadosa de instrucciones previas inmediatamente después de encender el modulo LCD.

La longitud escogida para trabajar el bus de datos deberá hacerse en el principio de la programación del modulo
LCD. En la siguiente imagen se puede observar la inicialización de un modulo LCD para trabajar con un bus de
datos de 8 (izquierda) y 4 Bits (Derecha).

6-. Inicialización. del modulo LCD:

154
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Todo modulo LCD deberá inicializarse, esta inicialización indicara como deberá operar la pantalla. La
inicialización representan las instrucciones que deberán ser ejecutadas por el modulo LCD antes de su
funcionamiento normal. Las instrucciones que están dentro de la inicialización solamente se ejecuta después que
se enciende el modulo LCD y no podrán ser cambiadas posteriormente. Por ejemplo tenemos algunos parámetros
que pueden ser ejecutados en la inicialización antes de comenzar a funcionar nuestro modulo LCD:

Selección de la longitud del bus de datos ( 4 Bits / 8 Bits ).


Activar el numero de líneas que se visualizaran el modulo LCD.
Encender el Modulo LCD.

Las siguientes instrucciones también podrán ser colocadas en la inicialización, con la diferencia que podrán
ser cambiadas en cualquier parte del programa.

Mantener el mensaje fijo y desplazar el cursor.


Desplazar el mensaje y mantener el cursor fijo.
Hacer que el carácter señalado parpadee o no.

7-. Conjunto de Instrucciones básicas de un modulo LCD:

La siguiente tabla representa el conjunto de instrucciones de un modulo LCD, en ella se muestran toda la
información necesaria que se requiere para cada instrucción, pero posteriormente se da una explicación mas
amplia de algunas de ellas.

155
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

La tabla numero dos, esta referida a las nomenclaturas utilizadas en la tabla numero uno

156
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

La tabla numero tres, esta referida a las abreviaturas utilizadas en la tabla numero uno

8-. Posición de los caracteres en la pantalla según el número de líneas del modulo LCD:

En la actualidad existen diversidad de módulos LCD por ejemplo tenemos pantallas con una sola línea con tan
solo ocho caracteres y módulos con 4 líneas con 40 caracteres por cada línea. Estos son algunos ejemplos
básicamente. Ahora en los módulos LCD según la cantidad de líneas cada uno de los caracteres tiene una posición
numérica dentro del DD-RAM ( Display Data RAM ). Comencemos con algunos ejemplos basados para módulos
LCD de una sola línea.

8.1-. Display de Una Línea x 40 Caracteres, dirección DD-RAM

DISPLAY DE UNA LINEA X 40 CARACTERES

8.2-. Display de dos Líneas x 40 Caracteres, dirección DD-RAM

Para un modulo LCD que contenga dos líneas tenemos la siguiente ubicación física de los caracteres en la
pantalla.

157
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

DISPLAY DE DOS LINEAS X 40 CARACTERES

8.3-. Display de Cuatro Líneas x 40 Caracteres, Dirección DD-RAM:

Para un modulo LCD que contenga cuatro líneas sucede algo diferente e interesante con respecto a la ubicación
física que debe tener cada carácter en la pantalla del modulo LCD ya que en realidad el final del la línea numero 1
tiene su continuación en la línea numero 3; pero el final de la línea numero 2, tiene su continuación en la línea
numero 4.

DISPLAY DE 4 LINEAS X 40 CARACTERES

9-. Caracteres que podrán ser presentados en la pantalla del modulo LCD:

La siguiente tabla representan los caracteres que podrán ser mostrados en un modulo LCD. Cada uno de los
caracteres tiene su representación binaria de ocho bits. Por ejemplo si usted necesita el carácter "A" deberá
representarlo con el siguiente código 01000001 por otro lado si quisiera utilizar el carácter "T" deberá
representarlo por el código 01010100. Este código deberá ser colocado en el Bus de Datos del Modulo LCD (
Líneas del 7 al 14 ).

158
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

TABLA DE CARACTERES

10-. Ejemplo de como hacer funcionar el modulo LCD por medio de un método manual:

Ahora podemos realizar un ejemplo practico de como hacer funcionar el modulo LCD de una manera manual paso
a paso incluyendo la inicialización hasta presentar una serie de caracteres en la pantalla. La siguiente imagen
muestra el pequeño circuito que tendrá que montar para realizar la practica.

159
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En la imagen anterior, mostramos el circuito básico que usted necesita montar en un ProtoBoard para realizar el
experimento. En circuito deberá ser alimentado con 5 Voltios DC. En esta sección practica procederemos a
escribir en el modulo LCD la palabra PCB ELECTRONICS SYSTEMS. Observemos los pasos y sus
procedimientos de una forma manual:

Una vez que este montado el circuito esquemático que mostramos en la imagen anterior, proceda a realizar
los siguientes pasos:

PASO 1: Corte toda la energía al circuito del modulo LCD y coloque todos los switches del circuito a tierra; es decir los
switches denominados SW DIP-2 ( Líneas de control ) y SW DIP-8 ( Bus de datos ) colocados o conectados a tierra ( Gnd ).
PASO 2: En el circuito esquemático no tenemos un interruptor, por lo tanto tan solo suministre la energía al circuito del
Modulo LCD con una tensión de 5 Voltios DC. A partir de aquí se deberá tomar en cuenta la resistencia variable denominada R1
que representa un potenciómetro de 10 K. Como puede observarse en el circuito, la parte central del potenciómetro esta conectado al
pin numero 3 del modulo LCD. La parte central del potenciómetro podrá ser ajustado entre 0 voltios y 5 voltios. A medida de que el
voltaje el Pin numero 3 del modulo LCD se acerque a los 5 voltios se observara con mayor detalle las matrices que forman a los
caracteres en el modulo LCD; pero si el voltaje suministrado para el Pin numero 3 del modulo se acerca a 0 Voltios, el modulo
aparentara que no esta encendido por que las matrices que forman a los caracteres tienen muy poca intensidad para poder ser
observados, por lo tanto, para comenzar con nuestro pequeño experimento recomendamos ubicar el potenciómetro en la parte
central y posteriormente se ajustara cuando el modulo este funcionando. Otro punto importante referente al modulo LCD cuando es
encendido, es que se deberá esperar unos 15 mili Segundos que se utilizan para estabilizar todas las tensiones dentro del modulo
LCD.
PASO 3: Ahora debemos especificar al modulo LCD si va a trabajar en el formato de 8 Bits o de 4 Bits. Es importante
saber que los módulos LCD cuando son encendidos, vienen por defecto para trabajar con un bus de datos de 8 bits la cual no será
necesario especificar esta instrucción; pero como estamos realizando un experimento manual con nuestro modulo LCD
ejecutaremos la instrucción indiferentemente con la finalidad de que pueda ser observado los procedimientos necesarios.

Para trabajar con un bus de datos de 8 bits se deberá colocar el siguiente código en el bus de datos y bus de
control.

160
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

En el bus de datos, específicamente en los pines DB3, DB2, DB1, DB0 tienen como valor asignado una letra "X". En la teoría
electrónica la letra "X" representa cualquier valor entre

"0" y "1" indiferentemente. Una vez que este colocado el código en el bus de datos y el bus de control, proceda a presionar (
Una sola Vez ) el pulsador denominado SW1. Este pulsador esta conectado con el pin 6 del modulo LCD específicamente en
el "ENABLE" y la condición mínima que requiere es que el pulsador deberá estar presionado por lo menos 450 nano
segundos.

● PASO 4: La siguiente instrucción será para especificarle al modulo LCD con cuantas líneas desea usted trabajar. para ello deberá
escribir el siguiente código en el bus de datos y el bus de control:

El Pin numero 10 que representa a DB3 tiene la letra "N" la cual tan solo usted deberá saber si va a trabajar con una línea o con
dos líneas. Para N=0 el modulo LCD trabajara con una línea y para N=1 el modulo LCD trabajara con dos líneas. Este ultimo
punto esta dirigido solamente para los módulos LCD que tienen por lo menos 4 líneas físicamente, como hemos explicado
anteriormente, para un modulo LCD de 4 líneas ( Físicamente ), internamente tan solo tiene dos ya que la primera línea del
módulo LCD esta conformada por la línea N-. 1 y N-. 3 físicamente del modulo LCD y la línea N-. 2 esta conformada por la
línea N-. 2 y N-. 4 del modulo LCD. Entonces podemos concluir para este paso 4 que solamente será necesario si usted esta
utilizando un modulo LCD de 4 y de 2 líneas ( Físicamente ). Para nuestro pequeño experimente, coloque a N=1 y F=0.

● PASO 5: La siguiente instrucción será para encender la pantalla y el cursor; para ello deberá escribirse el siguiente código en
el bus de datos y en el bus de control:

Para ejecutar el código colocado en el bus de datos y el bus de control volvemos nuevamente a presionar el pulsador
denominado SW1.

● PASO 6: Finalmente, la última instrucción de la inicialización se refiere que cuando se escriba un carácter en la pantalla, el
cursor se desplace automáticamente a la derecha.

Hasta aquí hemos terminado la inicialización básica de un modulo LCD, ahora podemos proceder a escribir "PCB
ELECTRONICS".

● PASO 7: Ahora podemos escribir nuestros caracteres con la secuencia como se señala en la siguiente tabla:

161
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

NOTAS:

1-. Activar el swiche que hemos denominado como SW1 la cual su función es enviar un "1" lógico mientras el switche se encuentre
presionado, podría causar fallas de rebote; esto quiere decir que podría aparecer varios caracteres en la pantalla si el efecto de
rebote se hace presente.

2-. El tiempo mínimo que necesita el pulsador SW1 será de 450 nano segundos. Este tiempo no tendrá nada de importancia para este
procedimiento manual, pero si tendrá muchísima importancia para cuando el sistema funcione con un microprocesador o un
microcontrolador.

162
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

Bibliografía

163
EET Nº1 de Merlo “Ingeniero Francisco E. Urondo”
TTP: Montaje de Circuitos y Sistemas Electrónicos
Especialidad Electrónica 3º Año Prof.: Christian G. Roggero

El presente documento fue compilado por el Profesor Christian G. Roggero en enero de 2007,
a fin de conformar una bibliografía para el TTP Montaje de Circuitos y Sistemas Electrónicos,
del tercer año de la especialidad de Electrónica de la Escuela de Educación Técnica Nro. 1 de
Merlo “Ing. Francisco E. Urondo”.

• Fichas 2, 3 y anexos del curso de Microcontroladores y Microprocesadores del Inet,


serie/desarrollo de contenidos colección/fluidica y controladores lógicos programables
(2006)
• Introducción a los Microcontroladores – Apunte descargado de internet sin datos de
Autor.
• Microcontroladores PIC – Profesor José Casal
• Apunte de Display LCD – Apunte descargado de internet sin datos de autor
• www.pablin.com.ar
• www.proyectopic.com.ar
• www.microchip.com
• www.asmeltec.de/dl0az/datasheets/LCDs.pdf

164

Das könnte Ihnen auch gefallen