Beruflich Dokumente
Kultur Dokumente
1 de Merlo
“Ingeniero francisco E. Urondo”
Í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.).
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
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.
• Como componente electrónico –se trata de un componente especial, ya que tiene un aspecto
hardware, y otro software o de programación.
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.
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
Siglo XVII: Blaise Pascal, matemático francés, construye la primera máquina mecánica capaz de
sumar y restar.
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
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:
• 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:
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
• 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
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.
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.
•
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 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
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...
- Se comercializa en versiones que van desde los 450 hasta los 600 MHz.
- La velocidad a la que se comunica con el bus (la placa base) es de 100 MHz.
- 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 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.
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.
Principales fabricantes
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
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.
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.
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.
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
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.
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
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
• 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.
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.
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 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:
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:
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
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
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.
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
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:
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
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.
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.
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
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).
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:
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.
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
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.
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
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.
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.
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 microprocesador.
ٛ Memorias.
ٛ Otros dispositivos periféricos.
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:
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
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
ٛ 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,
Los productos que para su regulación incorpora un microcontrolador, disponen de las siguientes
ventajas:
Microprocesador y microcontrolador
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.
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.
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
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.
¾ 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
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.
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.
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
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
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.
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.
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.
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.
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.
La ejecución es, por tanto, una secuencia continua de ciclos de búsqueda y ejecución.
• 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.
Por ejemplo:
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
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.
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
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.
Memoria
Hay dos peculiaridades que diferencian a los microcontroladores de los computadores personales:
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
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.
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.
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.
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.
Recursos especiales
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–
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
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.
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
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.
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
La salida del comparador proporciona un nivel lógico 1 ó 0, según una señal sea mayor o menor que
la otra.
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.
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
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.
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
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
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
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.
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
Microcontrolador:
ٛ Electrodomésticos.
ٛ Tarjetas de control de acceso.
ٛ Juguetes.
ٛ Automación.
ٛ TV, audio y video.
ٛ Máquinas y equipos industriales
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
¾ 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.
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.
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
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
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
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.
CLK
ciclo
Fin INSTR0
Fin INSTR1
Fin INSTR2
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.
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
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.
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:
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
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
Todos los PIC tienen la facultad de generar una autoreinicialización o autoreset al conectarles la
alimentación.
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.
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.
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.
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
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.
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.
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.
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
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.
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.
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.
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
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
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).
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.
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.
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.
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.
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:
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:
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
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:
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).
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).
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
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.
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.
Equivalente a:
f 0100 0100 0010 1000
cmp.2 W + 1101 1000 C DC Z + 1011 1100 C DC Z
Las instrucciones que siguen son de simple operando, pero son casos especiales ya que el destino es siempre el
registro seleccionado:
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
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.
0 1 2 3 4 5 6 7 8 9 10 11
k k k k k k k k
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:
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:
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.
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
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.
Estas instrucciones (Bit Clear File y Bit Set File) no afectan ningún bit de la palabra de estado del procesador.
Instrucciones de Control
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.
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.
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 (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.
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:
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.
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.
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
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.
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.
Esta instrucción, además, borra el bit PD (power down) y setea el bit TO (time -out) de la palabra de estado.
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
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:
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
.....................................
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.
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.
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
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
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.
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.
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
Registro de Opciones
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.
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).
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 conocer la causa por la que se ha salido del Estado de Reposo se analizan los bits TO y PD.
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
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:
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
(-).
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.
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.
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
Diagrama temporal
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
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.
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..
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.
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
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.
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
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:
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:
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
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.
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 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
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:
• 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.
- 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
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.
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.
Para pasar de hexadecimal a binario, se convierte cada dígito hexadecimal a su representación binaria, usando
siempre cuatro dígitos binarios.
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
• 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.
• 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.
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
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.
ٛ 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.
ٛ 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.
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
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.
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.
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
SO - Shift Out
SI - Shift In
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
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.
Cuando la computadora hace una operación de suma BCD, realiza una suma binaria
y, luego, realiza un ajuste que genera un resultado BCD.
La computadora suma........
0000 1001(2) + 0000 0001(2) = 0000 1010(2)
donde (2), significa Base 2.
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
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
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.
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.
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.
-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 este modo, puede verse que un número positivo difiere del mismo número negativo en el bit de signo.
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:
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
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
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.
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
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
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
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
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
Antes: W = 0x9A Antes: W = 0x91, REG = 0x13 Después: REG = 0x4F, W = 0x5A
Después: W = 0xBF Después: W = 0x93, REG = 0x13
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
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”.
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
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.
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.
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
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
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
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.
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
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
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:
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.
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
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
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.
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.
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.
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
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:
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.
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
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.
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).
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:
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.
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.
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
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.
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”.
164