Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas Ingeniería y Tecnología | Ingeniería en Telemática
Ingeniería en Telemática
Programa de la asignatura:
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Clave:
210930830
Universidad Abierta y a Distancia de México
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 1
Índice
Unidad 3. Microcontroladores ............................................................................................ 2
Presentación de la unidad ................................................................................................. 2
Propósitos .......................................................................................................................... 5
Competencia específica ..................................................................................................... 5
3.1. Organización del microcontrolador .............................................................................. 6
3.1.1. Diferencia entre microprocesador y microcontrolador ....................................... 9
3.1.2. Arquitectura interna ......................................................................................... 11
3.1.3. La familia de los PIC ....................................................................................... 16
Actividad 1. Caracterizando a los microcontroladores ...................................................... 22
3.2. Conjunto de instrucciones y lenguajes ...................................................................... 23
3.2.1. Características de las instrucciones máquina ................................................. 29
3.2.2. Tipos de operandos y operaciones ................................................................. 32
3.2.3. Lenguaje Ensamblador ................................................................................... 37
Actividad 2. Instrucciones básicas del lenguaje ensamblador .......................................... 39
3.3. Características y uso de elementos del microcontrolador (puertos, temporizadores,
convertidores) .................................................................................................................. 40
3.3.1. Puertos ........................................................................................................... 41
3.3.2. Temporizadores .............................................................................................. 42
3.3.3. Convertidores ................................................................................................. 43
Actividad 3. Elementos del microcontrolador ................................................................... 44
3.4. Aplicaciones de los microcontroladores .................................................................... 45
3.4.1. Ejemplos usando el PIC16F84 ........................................................................ 46
3.4.2. Proyectos usando el PIC16F84 ....................................................................... 52
Actividad 4. Resolución de un problema de lazo cerrado ................................................. 57
Autoevaluación ................................................................................................................ 57
Evidencia de aprendizaje. Simula un problema de lazo cerrado ...................................... 57
Autorreflexiones ............................................................................................................... 58
Cierre de la unidad .......................................................................................................... 59
Para saber más ............................................................................................................... 60
Fuentes de consulta ........................................................................................................ 62
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 2
Unidad 3. Microcontroladores
Presentación de la unidad
Los microcontroladores están conquistando el mundo, los puedes ver presentes, en tu
trabajo, en tu casa, y en tu vida en general. Los puedes encontrar controlando el
funcionamiento de los ratones y teclados de las computadoras, los teléfonos, hornos de
microondas, y en los televisores de tu hogar.
Aplicación real de un microcontrolador. Consultada en:
http://farm1.static.flickr.com/129/355592517_e7796d5ec4.jpg
Aprender a manejar y aplicar microcontroladores solo se consigue desarrollando
prácticamente diseños reales. Sucede lo mismo que si quisieras usar cualquier
instrumento musical, o practicar algún deporte y con muchas otras actividades.
El objetivo principal de esta unidad es facilitar el camino para aprender a usar los
microcontroladores, por tal motivo se proporcionan algunos ejemplos básicos que te
permitirán confeccionar y simular algunos proyectos reales.
Para poder lograr este objetivo se seleccionó un modelo concreto que es el PIC16F84 de
la familia de los microcontroladores Microchip Technology Inc. La razón por la cual se
escogió este microcontrolador es porque es sencillo, moderno, rápido, barato y en él se
pueden escribir los programas y borrarlos montones de veces, existe mucha
documentación, y las herramientas de desarrollo son accesibles para todos los bolsillos.
En el mundo se pueden encontrar millones de aplicaciones realizadas con el PIC16F84,
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 3
como por ejemplo, llevar el control de un taxímetro el cual indica el total a pagar de
acuerdo a una distancia o tiempo, también el sensor de temperatura de algún aire
acondicionado o calefactor, el cual si llega a una temperatura deseada se apaga
automáticamente y si cambia esa temperatura se vuelve a encender, entre otras
aplicaciones.
En esta unidad se pretende estudiar teórica y prácticamente al PIC16F84 por tal motivo se
intenta ofrecer la información necesaria dentro de cada tema.
En el tema 3.1. se describen las características de generales del hardware que envuelven
a los microcontroladores en general para que posteriormente te adentres en la familia de
los PIC y toda la gama de microcontroladores existentes, llegando así a los PIC16F84.
En el tema 3.2. se presenta todo el material necesario y preciso para conocer, manejar y
programar el PIC16F84, así como una pequeña introducción del lenguaje que se utiliza
para la programación de los PIC, dicha información se hace considerando desde un nivel
básico hasta un nivel intermedio de Electrónica, por tal motivo se muestra un camino
sencillo y apropiado.
En el tema 3.3. se describen los recursos fundamentales como puertos, temporizadores,
puertas de E/S (Entrada/Salida o I/O), así como su uso.
En el tema 3.4. se te enseña cómo programar algunas aplicaciones básicas y se muestran
algunas herramientas más comunes para el uso de los microcontroladores y la
implementación de proyectos. También se mostrará como programar las aplicaciones de
forma clara y progresiva.
PIC16F84. Tomada de: http://xurl.es/m83y4
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 4
Como complemento a dicha información se proporciona el siguiente mapa denominado
Microcontroladores en el cual se muestra la información organizada brevemente antes
mencionada, de la misma manera, se proporcionan algunos videos al final de esta unidad
que te pueden ser de mucha utilidad así como algunas referencias electrónicas que
puedes consultar para ampliar o disipar dudas o información.
Parte de la información proporcionada es tomada de las documentaciones técnicas de
Microchip (www.microchip.com), de Parallax (www.parallaxinc.com) y de Ingeniería de
Microsistemas Programados, S. L. (www.microcontroladores.com).
Microcontroladores
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 5
Propósitos
En esta unidad:
Identificaras la arquitectura de los microcontroladores.
Distinguirás las diferencias entre los PIC
Utilizarás lenguaje de bajo nivel
Diferenciarás cada uno de los elementos básicos del PIC16F84
Simularás problemas reales usando el PIC16F84
Competencia específica
Programar el PIC16F84 para controlar sistemas de lazo cerrado con el uso de algún software de simulación apoyándose en las especificaciones del microcontrolador.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 6
3.1. Organización del microcontrolador
Como se mencionó en la presentación de esta unidad en este tema se describirán
algunas de las características generales del hardware que componen la organización de
los microcontroladores de manera general para posteriormente adentrarse a la familia de
los PIC y distinguir toda la gama de microcontroladores que están dentro de esta familia.
Para lograr esto surge una pregunta muy importante que se tiene que definir para que se
entienda mucho mejor esta unidad, la pregunta es ¿qué es un microcontrolador?, muchos
de nosotros conocemos una PC por lo menos en apariencia, usualmente tiene un teclado,
monitor, CPU (Unidad de Procesamiento Central), impresora y mouse entre otros
dispositivos. Este tipo de computadoras o PC son diseñadas principalmente para
comunicarse con los humanos y para que el humano haga uso de ellas.
Manejo de bases de datos, análisis financieros o incluso procesadores de textos, se
encuentran todos dentro de la “gran caja”, que contiene un CPU, la memoria, el disco
duro, etc. El verdadero “cómputo”, sin embargo todo esto tiene lugar dentro de la CPU. Si
se había pensado que el único propósito del monitor, teclado, mouse e incluso la
impresora, es “conectar” a la CPU con el mundo exterior.
¿Pero sabías que hay computadoras alrededor de nosotros, corriendo programas y
haciendo cálculos silenciosamente sin interactuar con ningún humano? Estas
computadoras están en nuestros autos, en un transbordador espacial, en un juguete, e
incluso puede haber alguno en un secador de pelo.
A estos dispositivos se les llama microcontroladores. Micro porque son pequeños y
controladores porque controlan máquinas o incluso otros controladores
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 7
Microcontrolador PIC13F8720. Consultada en: http://xurl.es/qa121
Un microcontrolador es un circuito integrado programable que contiene todos los
componentes de una computadora, se emplean para controlar el funcionamiento de una
tarea determinada, gracias a su reducido tamaño suele ser incorporado en el propio
dispositivo al que gobierna (Reyes, 2008).
El microcontrolador es una computadora dedicada. Dentro de la memoria solo se
almacena un programa destinado a gobernar una aplicación determinada; sus líneas de
entrada y salida soportan el conexionado de los sensores y actuadores (dispositivos
capaces de transformar energía en la activación de un proceso) del dispositivo a controlar,
y todos los recursos complementarios disponibles tienen una única finalidad atender sus
requerimientos. Una vez que este se programó y configuro, solo sirve para gobernar la
tarea asignada (Reyes, 2008).
Un microcontrolador es un computador completo, aunque de limitadas prestaciones, que
está contenido en el chip de un circuito integrado y se destina a gobernar una sola tarea
(Angulo, 2003).
En la actualidad el número de productos que funcionan en base a uno o varios
microcontroladores aumenta de forma exponencial. Y no sería aventurado pronosticar que
a mediados de este siglo habrá pocos elementos que carezcan de un microcontrolador.
Los electrodomésticos de línea blanca (lavadoras, hornos, lavavajillas, etc.) y de línea
marrón (televisores, videos, aparatos musicales, etc.) incorporan numerosos
microcontroladores, al igual que los sistemas de supervisión, vigilancia y alarma en los
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 8
edificios utilizan estos chips. También son empleados para optimizar el rendimiento de
ascensores, calefacción, aire acondicionado, alarmas de incendio, robo, etc.
Microcontrolador en un elevador.
Consultada en: http://xurl.es/ja9rx
En un estero. Consultada en:
http://xurl.es/sstr6
En una lavadora. Consultada en:
http://xurl.es/xv8qi En un sensor de temperatura. Consultada
en: http://xurl.es/7kusl
Usos de un Microcontrolador
Una importante industria consumidora de microcontroladores es la de automoción, que los
aplica en el control de aspectos tan populares como la climatización, la seguridad y los
frenos ABS.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 9
3.1.1. Diferencia entre microprocesador y microcontrolador
En las unidades anteriores se habló acerca del microprocesador y multiprocesamiento,
pero ¿cuál es la idea de hablar de ellos y luego del microcontrolador?.
Recuerda que el microprocesador es un circuito integrado que contiene la Unidad de
Procesamiento Central (CPU), también llamada procesador. También se encuentra la
Unidad de Control, que se encarga de interpretar las instrucciones y la Unidad Aritmético
Lógica (ALU). Las patas del microprocesador sirven como salida al exterior de las líneas
de los buses de dirección, datos y control, para así permitir conectar con la Memoria y los
módulos de Entrada/Salida. Se dice que un microprocesador es un sistema abierto porque
su configuración es variable de acuerdo con la aplicación a la que se destine.
Ahora bien, ¿cuál es la diferencia entre ambos? En las siguientes imágenes se muestra
esta diferencia:
Estructura de un sistema abierto basado en un microprocesador. La disponibilidad de los buses en el
exterior permite que se configure a la medida de la aplicación.
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 periféricos. Microprocesador como sistema abierto y sistema cerrado. Consultado en Angulo, 2003
“Un microprocesador es un sistema abierto con el que puede construirse una
computadora con las características que se desee, acoplándole los módulos
necesarios.
Un microcontrolador es un sistema cerrado que contiene una computadora
completa y de prestaciones limitadas que no se pueden modificar” (Angulo, 2003).
Se puede definir un sistema cerrado como aquel que solo utiliza sus propios recursos. Por
ejemplo una olla a presión que no permita el escape de gases. Y un sistema abierto es
aquel que recibe energía desde el exterior y por ende consta de un flujo continuo que le
permite generar trabajo en forma permanente. Por ejemplo el motor de un auto (necesita
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 10
gasolina), la tierra (necesita de la luz y el calor del Sol), una vela quemándose (Alegsa,
2013).
Las aplicaciones en las cuales puedes encontrar el uso de los microcontroladores es en:
*Electrodomésticos
*Aparatos portátiles y de bolsillo (tarjetas, monederos, teléfonos, etc.)
*Máquinas expendedoras y juguetería
*Industria de automoción
*Control industrial y robótica
*Electromedicina
*Sistema de navegación espacial
*Domótica en general
Aplicaciones en industria de automoción. Consultada en: http://xurl.es/d1579
Una de las diferencias que existe y quizás la más importante entre estos dos dispositivos
es la funcionalidad. Y ¿Por qué la funcionalidad? Porque para que un microprocesador
sea funcional requiere conectarse a una memoria y a dispositivos de entrada y salida
(E/S), como se vio en la Unidad 1 de esta materia. Por ejemplo si piensas en tu
computadora personal o de escritorio, requiere de una tarjeta principal que conoces como
tarjeta madre (motherboard), además de un buen microprocesador, así como una
memoria RAM. Recordando que en la motherboard se tiene un súper circuito integrado
llamado chipset que se encarga principalmente de administrar las funciones de entrada y
salida de los diferentes puertos o ranuras de tu equipo como lo son puerto serial, paralelo,
puerto USB, Ethernet, ranuras ISA, PCI, AGP, etc.
Ahora bien, en un microcontrolador se tienen todas estas capacidades (procesamiento,
almacenamiento de datos, instrucciones, dispositivos de E/S, etc.) dentro de un mismo
dispositivo. No requiere de ningún otro componente para funcionar, por tal motivo se le
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 11
conoce también como una microcomputador, debido a que todo está dentro del mismo
chip.
Lo mencionado anteriormente tiene una gran desventaja en un microcontrolador ya que
debido a que cuenta con todas estas capacidades internamente o en el mismo dispositivo,
se tiene que buscar el dispositivo adecuado para cada tarea, ya que sus especificaciones
varían dentro de las familias de los PIC, esto se verá más adelante.
Una diferencia también muy significativa y muy marcada es la arquitectura entre dichos
dispositivos, en un microprocesador se usar la arquitectura tradicional de Von Neumann, y
en un microcontrolador es la de Harvard que se explicará en la siguiente sección.
3.1.2. Arquitectura interna
Para dar inicio a esta sección recuerda que en la unidad 1, se definió la palabra
arquitectura como la estructura o partes, las cuales forman y/o diseñan cada uno de estos
componentes.
Ahora bien, una vez aclarado el uso de dicha palabra pues se hablará principalmente de
cómo se compone internamente un microcontrolador, que como ya se mencionó, está
basado en la arquitectura Harvard.
Esta arquitectura de computadora separa físicamente el almacenamiento de datos e
instrucciones, el termino se origina de las computadoras Harvard Mark 1, que
almacenaban las instrucciones y los datos en diferentes medios (Alegsa, 2013).
En la siguiente tabla se muestra la diferencia entre la Arquitectura Von Neumann que se
usa en los microprocesadores y la Arquitectura Harvard que se ocupan en los
microcontroladores.
Arquitectura Von Neumann
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 12
Arquitectura Harvard
Arquitecturas de microprocesadores y microcontroladores. Consultada en: http://xurl.es/6x1w0
Se puede observar rápidamente en las imágenes como se separan las memorias en la
Arquitectura Harvard y la conexión mediante los Buses. En esta arquitectura se tiene la
Unidad Central de Proceso (CPU) conectada a dos memorias (una de instrucción y otra
de datos) por medio de dos buses diferentes, a diferencia de la de Von Neumann solo se
tiene un bus que une la CPU con las memorias.
En la Arquitectura Harvard una de las memorias contiene solamente las instrucciones del
programa y la otra, solo almacena los datos.
Cada bus es completamente independiente lo que permite que la CPU pueda acceder de
forma independiente y simultánea a la memoria de datos y a la de instrucciones. Esta
situación optimiza el uso de la memoria de manera muy general.
Realmente la comunicación se da de la misma forma que en la de Von Neumann la
diferencia es la forma en que se conectan como se muestra en las imágenes, el
funcionamiento es el mismo. Ahora bien se mencionan las partes que conforman un
microcontrolador.
Recuerda que un microcontrolador posee todos los componentes de una computadora,
pero con características fijas que no pueden ser alteradas.
Las partes principales de un microcontrolador según (Angulo, 2003) son:
1.- Procesador
2.- Memoria no volátil para contener el programa
3.- Memoria de lectura y escritura para guardar los datos
4.- Líneas de Entrada y Salida para los controladores de periféricos
5.- Recursos auxiliares
1. El Procesador (Angulo, 2003)
La necesidad de conseguir elevados rendimientos en el procesamiento de las
instrucciones ha desembocado en el empleo generalizado de procesadores de
arquitectura Harvard.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 13
En esta arquitectura son independientes la memoria de instrucciones y la memoria de
datos y cada una dispone de su propio sistema de buses para el acceso. El procesador de
los modernos microcontroladores responde a la arquitectura RISC (Computadoras de
Juego de Instrucciones Reducido), que se identifica por poseer un repertorio de
instrucciones máquina pequeño y simple, de forma que la mayor parte de las
instrucciones se ejecuta en un ciclo de instrucción.
Relación del Procesador con la memoria en la Arquitectura Harvard. Consultada en (Angulo, 2003)
2. Memoria de programa (Angulo, 2003)
El microcontrolador se diseñó para que en una de sus memorias se almacenen las
instrucciones del programa de control. Esta es la memoria de programa. Como los
programas a ejecutar siempre son los mismos esta información se guarda o graba de
forma permanente. Esto se puede hacer posible gracias a cinco versiones diferentes de
memoria:
Versión 1. ROM con máscara: En este tipo de memoria el programa se graba en el
chip durante el proceso de su fabricación (UNC, 2013).
Versión 2. EPROM: La grabación de esta memoria se realiza mediante un dispositivo
físico gobernado desde una computadora personal, el cual recibe el nombre de
grabador (UNC, 2013).
Versión 3. OTP (Programable una vez): Este modelo de memoria sólo se puede
grabar una vez por parte del usuario, utilizando el mismo procedimiento que con la
memoria EPROM. Posteriormente no se puede borrar (UNC, 2013).
Versión 4. EEPROM: La grabación es similar a las memorias OTP y EPROM, pero el
borrado es mucho más sencillo al poderse efectuar de la misma forma que el grabado.
Puede ser programada y borrada tantas veces como se quiera (UNC, 2013).
Versión 5. FLASH: Es una memoria no volátil, de bajo consumo, que se puede
escribir y borrar en un circuito al igual que las EEPROM, pero suelen disponer de
mayor capacidad que las EEPROM (UNC, 2013).
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 14
3. Memoria de datos (Angulo, 2003)
Los datos que manejan los programas varían continuamente, esto exige que la memoria
que les contiene, deba ser de lectura y escritura, por lo que la memoria RAM estática
(SRAM) es la más adecuada, aunque sea volátil.
También puede darse el caso de que tenga una memoria no volátil de lectura y escritura,
esta memoria logra que si se da un corte en el suministro de la alimentación no ocasiona
la pérdida de la información, que está disponible al reiniciarse el programa.
4. Líneas de E/S (Angulo, 2003)
Todos los microcontroladores cuentan con diferentes patitas, puedes encontrar de 8
pines, 18 pines, etc. Pero al final solo dos patitas o pines están destinados a recibir
alimentación (Corriente eléctrica), otras dos patitas son para el cristal de cuarzo que es el
que regula la frecuencia de trabajo, una patita mas es para provocar el Reset, el resto de
las patitas es para soportar la comunicación con los periféricos externos que serán
controlados.
5. Recursos auxiliares (Angulo, 2003)
Cada modelo de microcontrolador incorpora una diversidad de complementos que
refuerzan la potencia y la flexibilidad del dispositivo. Los recursos más comunes son:
1. Circuito de Reloj. Es el encargado de generar los impulsos que sincronizan el
funcionamiento de todo el sistema para realizar tareas como transferencia de
datos, control de procesos, etc. Dichos circuitos son en esencia osciladores que
proveen una señal generalmente denominada CLOCK (reloj) (Noriega, 2003).
Ejemplo de circuito oscilador. Consultado en (Noriega, 2003)
2. Temporizadores. Orientados a controlar tiempos. Es un dispositivo mediante el
cual se puede regular la conexión o desconexión a un circuito eléctrico durante un
tiempo determinado (Construmática, 2013).
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 15
Tipo de temporizador. Consultado en: http://xurl.es/1xjy4
3. Perro Guardián (watchdog). Es el destinado a provocar una reinicialización cuando
el programa queda bloqueado. Permite reiniciar el microcontrolador (Silva, 2007).
4. Conversores AD (Analógico a Digital) y DA (Digital a Analógico). Son para poder
recibir y enviar señales analógicas (Malpica, 2013).
Conversores. Consultado en (Malpica, 2013)
5. Comparadores analógicos. Se usan para verificar el valor de una señal analógica.
De esta forma se da a conocer la arquitectura que se usa en los microcontroladores y los
diferentes componentes que encuentras dentro de cada uno. Este tema no se profundiza
ya que como se mencionó anteriormente lo único que cambia en esta arquitectura es la
forma en que se conecta la CPU (Unidad de Procesamiento Central) y en cuantos buses
se usan. Pero los funcionamientos son los mismos.
También se mostró y explico muy brevemente las partes que forman los
microcontroladores, más adelante estudiarás su funcionamiento con algunos ejemplos
que se implementarían.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 16
3.1.3. La familia de los PIC
Antes de conocer esta gran familia de microcontroladores, es muy importante que sepas
que no son los únicos tipos de microcontroladores que existen en el mercado, pero sí los
más usados en el área académica debido a su bajo costo y gran rendimiento comparados
con otros. Dentro de la gran variedad de microcontroladores existen los que procesan
datos de 4, 6, 8 y 32 bits, sin embargo, el más representativo y popular son los que
procesan 8 bits, a estos pertenecen los PIC.
En la siguiente tabla se muestran algunas marcas y algunos de los diferentes modelos
que fabrican:
Fabricante Modelos de Microcontroladores (µC)
INTEL 8048, 8051,80C196, 80186, 80188, 80386EX
MOTOROLA 6805, 68HC11, 68HC12, 68HC16, 683XX
HITACHI HD64180
PHILIPS Gama completa de clónicos del 8051
SGS-THOMSON (ST) ST-62XX
MICROCHIP PIC
NATIONAL SEMICONDUCTOR COP8
ZILOG Z8, Z80
TEXAS INSTRUMENTS TMS370
TOSHIBA TLCS-870
INFINEON C500
DALLAS DS5000
NEC 78K
Tabla de fabricantes. Consultada en: Iborra, 2002
En este caso se hablará de los PIC (Programable Integrated Circuit o Circuito Integrado
Programable) ya que son los han tenido mayor aceptación en la comunidad de técnicos y
aficionados que trabajan con microcontroladores. Pero, ¿Cuál es la razón de esta gran
aceptación?
Según Angulo, (2003), esta aceptación se debe a que cuenta con algunos detalles que a
los profesionistas o especialistas los vuelve locos, y son los siguientes:
Sencillez de manejo
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 17
Buena información
Precio
Buen promedio de parámetros: velocidad, consumo, tamaño, alimentación, código
compacto, etc.
Herramientas de desarrollo fáciles y baratas
Diseño rápido
Disponibilidad inmediata
Compatibilidad del software en todos los modelos de la misma gama
Otras características que deslumbran a los profesionales de la Microelectrónica y
Microinformática son:
Su costo es comparativamente inferior al de los competidores
Poseen una elevada velocidad de funcionamiento
Tienen un juego reducido de instrucciones; 35 en la gama media.
Los programas son compactos
Bajo consumo unido a un amplio rango de voltaje de alimentación
Muchas herramientas de software se pueden descargar libremente desde
Microchip (http://www.microchip.com)
Existe una gran variedad de herramientas de hardware que permiten grabar,
depurar, borrar y comprobar el comportamiento de los PIC
La gran variedad de modelos de PIC permite que los usuarios puedan elegir libremente el
que se adapte mejor a sus necesidades o a los requerimientos de la aplicación.
El fabricante de los PIC dispone de un más de un centenar de versiones diferentes y cada
año aumenta considerablemente su lista.
Si deseas conocer toda la familia completa de los PIC que tiene
microchip puedes consultar la siguiente liga en la cual encontrarás
todas las especificaciones de cada uno de estos mostrando 2770
resultados:
http://www.microchip.com/TechDoc.aspx?type=DataSheet
La empresa Microchip dispone de 4 clasificaciones de PIC de acuerdo al uso de bits estos
son:
8-bit PIC MCU
16-bit PIC MCU
16-bit dsPIC DSC
32-bit PIC MCU
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 18
Clasificación según los bits. Consultado en:
http://www.microchip.com/pagehandler/en-us/products/picmicrocontrollers
Como se puede observar en la imagen Microchip dispone de cuatro gamas de
microcontroladores de 8 bits, seis gamas de 16 bits y una de 32 bits, disponibles para
cubrir las necesidades de la mayoría de los clientes potenciales.
De la sección Para saber más se sugiere consultes la siguiente
recomendación:
“8-bit PIC Microcontrollers” en el cual se proporciona información
relevante de manera muy general acerca de los PIC de 8 bits.
“16-bit Embedded Control Solutions” en este artículo se proporciona de
la misma forma información de los PIC de 16 bits.
“PIC32 Microcontroller Famillies” que de igual forma proporciona
información de los PIC de 32 bits.
Las gamas son clasificadas de la siguiente manera:
1. Gama baja o básica
Se trata de una serie de PIC de recursos limitados. Sus versiones están encapsuladas
con 18 y 28 patitas y pueden alimentarse a partir de una tensión de 2.5 volts, esto los
hace ideales en las aplicaciones que funcionan con pilas.
MODELO MEMORIA
PROGRAMA
(x12 bits)
EPROM ROM
MEMORIA
DATOS
(bites)
FRECUENCIA
MAXIMA
LINEAS
e/s
TEMPORIZADORES PATITAS
PIC16C52 384 25 4 MHz 4 TMRO + WDT 18
PIC16C54 512 25 20 MHz 12 TMRO + WDT 18
PIC16C54A 512 25 20 MHz 12 TMRO + WDT 18
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 19
PIC16CR54A 512 25 20 MHz 12 TMRO + WDT 18
PIC16C55 512 24 20 MHz 20 TMRO + WDT 28
PIC16C56 1 K 25 20 MHz 12 TMRO + WDT 18
PIC16C57 2 K 72 20 MHz 20 TMRO + WDT 28
PIC16C57B 2 K 72 20 MHz 20 TMRO + WDT 28
PIC16C5A 2 K 73 20 MHz 12 TMRO + WDT 18
PIC16CR58A 2 K 73 20 MHz 12 TMRO + WDT 18
Principales características de algunos modelos de la gama baja. Consultado en (Angulo, 2003).
2. Gama media
Es la gama más variada y completa de los PIC. Abarca modelos con encapsulado desde
18 patitas hasta 68, cubriendo varias opciones que integran abundantes periféricos.
Dentro de esta gama se encuentra el PIC16F84, que es el modelo con el que trabajarás al
final de la unidad. Esta gama a su vez se puede separar en diferentes subfamilias. El
repertorio de instrucciones es de 35 a 14 bits cada instrucción.
MODELO MEMORIA
PROGRAM
A
MEMORI
A DATOS
REGISTROS
ESPECIFIC
OS
TEMP
ORIZA
DORE
S
INTERRUPCIONE
S
E/S RANGO
VOLTAJ
E
PATITA
S
RA
M
EP
RO
OM
PIC16C84 1Kx14
EEPROM
36 64 11 TMRO
+
WDT
4 13 2-6 18
PIC16F84 1Kx14
FLASH
68 64 11 TMRO
+
WDT
4 13 2-6 18
PIC16F83 512x14
FLASH
36 64 11 TMRO
+
WDT
4 13 2-6 18
PIC16CR8
4
1Kx14
ROM
68 64 11 TMRO
+
WDT
13 2-6 18
PIC16CR8
3
512x14
ROM
36 64 11 TMRO
+
WDT
4 13 2-6 18
Características relevantes de algunos modelos PIC16X8X de la gama media. Consultado en (Angulo,
2003)
3. Gama alta
En esta gama los modelos alcanzan las 58 instrucciones de 16 bits en el repertorio y
dichos modelos disponen de un sistema de gestión de interrupciones vectorizadas muy
potente, incluye también diferentes controladores de periféricos, puertas de comunicación
serie y paralelo, cuenta con una arquitectura abierta que consiste en la posibilidad de
ampliación del microcontrolador con elementos externos.
MODE
LO
MEMOR
IA
PROGR
AMA
MEMO
RIA
DATO
S
REGIST
ROS
ESPECIF
ICOS
TEMPORIZA
DORES
C
AP
P
W
M
C
A
D
10
INTERRUPC
IONES
E/
S
MULTIPLIC
ADOR
HARDWAR
E
PATI
TAS
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 20
RAM bit
PIC17
C42A
2Kx16 232 48 4+WDT 2 2 11 3
3
8x8 40/44
PIC17
C43
4Kx16 454 48 4+WDT 2 2 11 3
3
8x8 40/44
PIC17
C44
8Kx16 454 48 4+WDT 2 2 11 3
3
8x8 40/44
PIC17
C752
8Kx16 454 76 4+WDT 4 3 1
2
18 5
0
8x8 64/68
PIC17
C756
16Kx16 902 76 4+WDT 4 3 1
2
18 5
0
8x8 64/68
Características relevantes de algunos modelos PIC17CXXX de la gama alta. Consultado en (Angulo,
2003)
4. Gama mejorada
Esta gama surge en los inicios del tercer milenio surge con la finalidad de soportar las
aplicaciones avanzadas en las áreas de automoción, comunicaciones, ofimática y control
industrial. Su principal mejora fue la alta velocidad (40 MHz), contando también con un
gran rendimiento (10 MIPS a 10 MHz). Cabe mencionar que MIPS es Millones de
Instrucciones Por Segundo. También cuenta con un juego de 77 instrucciones de 16 bits
cada una, además de estar orientados a la programación en lenguaje C.
Modelo
Memoria
PROGRAM
A (Bytes)
Memoria
(Bytes)
DATOS Temporizadores Interrupciones E/S ADC
Canales
Frec.
Maxi
ma
(MHz) PA
TIT
AS
RAM EPROO
M
PIC18C24
2
16K
EEPROM 512 - 4 16 23 5 40 28
PIC18F24
2
16K
FLASH 768 256 4 16 23 5 40 28
PIC18F25
2 32K
FLASH 153
6 256 4 16 23 5 40 28
PIC18F44
2 16K
FLASH 768 256 4 16 34 8 40 40
PIC18F45
2 32K
FLASH 153
6 256 4 16 34 8 40 40
PIC18F6620
64K FLASH
3840
1024 4 16 52 12 25 64
PIC18F8720
128K FLASH
3840
1024 4 16 68 16 25 80
Características relevantes de algunos modelos de la familia PIC18C(F)XXX de la gama mejorada.
Consultado en (Angulo, 2003)
Si se desea identificar cuántas patitas destina un PIC para líneas de Entrada y Salida
(E/S), es necesario que sepas que este tipo de líneas son identificadas en un PIC con los
nombres RAx, RBx, RCx, RDx, REx, etc., según la versión y modelo del PIC. Para eso es
importante que revises las especificaciones de cada modelo y ver cuantos puertos usa.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 21
PIC con 12 patitas para E/S
PIC con 20 patitas para E/S
PIC con 50 patitas para E/S
PIC con 66 patitas para E/S
Patitas de Entrada y Salida (E/S). Consultado en: http://www.microchip.com/
Recuerda que en esta unidad se va a trabajar con el modelo PIC16F84, por tal motivo se
presenta el esquema de la función de cada patita o pin del PIC.
Esquema del PIC16F84. Consultado en:
http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 22
En la sección Para saber más, se anexa una liga con toda la información y
especificaciones del PIC16F84.
El PIC16F84 pertenece a la gama media, y su novedad más importante es la inclusión de
memoria EEPROM para contener el programa. Recuerda que la memoria EEPROM
puede grabarse y borrarse eléctricamente, sin someterla a rayos ultravioleta como sucede
con el borrado de las EPROM, esto posibilita la grabación, depuración y borrado tantas
veces como se desee, la memoria EEPROM admite hasta 1,000,000 de ciclos de
escritura/borrado y almacena la información durante más de 40 años.
El hecho de poder emplear el mismo dispositivo cuando se realizan numerosos diseños o
cuando se están probando muchos programas en la fase o etapa de aprendizaje resulta
muy práctico y bastante económico. Muchas de las aplicaciones típicas en los que se
hace uso de estos microcontroladores son el control de puertas de garaje,
instrumentación, inmovilizadores de vehículos, tarjetas codificadas, pequeños sensores,
etc.
De esta forma se da una breve explicación y clasificación de la gran gama de
microcontroladores que pertenecen a la familia de los PIC.
Actividad 1. Caracterizando a los microcontroladores
¡Bienvenido(a) a la primera actividad de la Unidad 3 de la asignatura Arquitectura de Computadoras II! De manera previa realiza una investigación sobre los PIC. Con la realización de esta actividad, ha llegado el momento de caracterizar el uso de un PIC mediante un organizador gráfico, con base a algunas particularidades que deberás realizar tomando en cuenta el caso o situación que te indicará tu Facilitador(a). Sigue estas recomendaciones:
1. Genera un documento con algún software de presentaciones de tu elección.
2. Elige y crea un organizador gráfico que detalle el PIC que convendría usar de acuerdo a las características propias del mismo de acuerdo al caso dado por tu Facilitador(a).
3. Es imprescindible que dentro de esas particularidades incluyas: funciones,
características, arquitectura, etc.
4. En el mismo documento, en un breve texto, escribe a manera de síntesis la
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 23
información que justifique tu elección, incluye las fuentes que lo sustenten.
5. Guarda tu actividad con la nomenclatura KARQ2_ACT1_U3_XXYZ.
6. Sube tu archivo para su revisión y posterior retroalimentación.
*Consulta los criterios de evaluación para cada actividad.
3.2. Conjunto de instrucciones y lenguajes
Una vez que ya se dio a conocer parte fundamental de la gran familia de los PIC y su
arquitectura general, se procede a identificar las diferentes instrucciones que se usan para
crear un programa y después ser grabado en el PIC. Pero también es importante conocer
las instrucciones que son la base de funcionamiento del PIC.
Para el PIC16F84 como se puede observar en el DataSheet el cual es un documento que
resume el funcionamiento y características de un componente, en este caso del PIC antes
mencionado, podrás observar que tiene un total de 35 instrucciones y por supuesto cada
una tiene un funcionamiento y uso diferente, estas se clasifican o dividen en tres tipos:
Instrucciones orientadas a los registros o bytes (byte-oriented operations)
Instrucciones orientadas a los bits (bit-oriented operations)
Operaciones con literales y de control (literal and control operations)
Esta división se encuentra dada por el tipo de datos con los que trabajan, a continuación
se mostrará una tabla en la cual se menciona cada una de estas instrucciones o
mnemónicos de manera breve, es así que para entender mejor cada instrucción se brinda
el significado de algunos parámetros:
Parámetro Significado
F Registro al que afecta la instrucción
W Acumulador (working register)
B Número de bit (hay instrucciones que afectan a un solo bit)
K Constante (un número)
D
Selección de destino del resultado de la instrucción, puede ser “0” o “1”, si
es “0” el resultado se guarda en el acumulador (W) y si es “1” se guarda
en el registro f al que afecta la instrucción
Parametros usados en las instrucciones. Consultado en:
http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf
Instrucciones orientadas a registros
No. Mnemónico o
Instrucción
Descripción
Simbólica
Descripción
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 24
1 ADDWF F, D W + F -> D Suma W y el registro f, el resultado lo
guarda según d (si d=0 se guarda en W
y si d=1 se guarda en f)
2 ANDWF F, D W AND F -> D Realiza la operación AND lógica entre
W y f, el resultado lo guarda según d
3 CLRF F 00 h -> F Borra el registro f (pone todos sus bits
a cero)
4 CLRW - 00 h -> W Borra el acumulador
5 COMF F, D Complemento de F-> D Calcula el complementario del registro f
(los bits que están a "0" los pone a "1"
y viceversa. Resultado según d
6 DECF F, D F – 1 -> D Decrementa f en uno (le resta uno).
Resultado según d
7 DECFSZ F, D F – 1 -> D (si es 0
salta)
Decrementa f y se salta la siguiente
instrucción si el resultado es cero.
Resultado según d
8 INCF F, D F + 1 -> D Incrementa f en uno (le suma uno).
Resultado según d
9 INCFSZ F, D F + 1 -> D (si es 0
salta)
Incrementa f y se salta la siguiente
instrucción si el resultado es cero
(cuando se desborda un registro vuelve
al valor 00h). Resultado según d
10 IORWF F, D W OR F -> D Realiza la operación lógica OR entre W
y f. Resultado según d
11 MOVF F, D F -> D Mueve el contenido del registro f a W si
d=0 (si d=1 lo vuelve a poner en el
mismo registro)
12 MOVWF F W -> F Mueve el valor de W a f. Por ejemplo,
si quieres copiar el valor del registro
"REG1" al registro "REG2" escribirás:
*MOVF REG1,0 ;mueve el valor de
REG1 a W
*MOVWF REG2 ;mueve el valor de W
a REG2
13 NOP - No operación No hace nada, solo pierde el tiempo
durante un ciclo
14 RLF F, D Rota F izq. a través de
CARRY -> D
Rota el registro f hacia la izquierda a
través del bit CARRY (todos los bits se
mueven un lugar hacia la izquierda, el
bit 7 de f pasa al CARRY y el bit
CARRY pasa al bit 0 de f). Resultado
según d
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 25
15 RRF F, D Rota F dcha. a través
de CARRY -> D
Lo mismo que RLF pero hacia la
derecha
16 SUBWF F, D F – W -> D Resta f y W (f - W). Resultado según d
17 SWAPF F, D Intercambia nibbles de
F -> D
Intercambia los 4 primeros bit de f por
los otros cuatro. Resultado según d
18 XORWF F, D X XOR F -> D Realiza la operación lógica XOR (OR
exclusiva) entre W y f. Resultado
según d
Consultada en: http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf. p. 56
Instrucciones orientadas a bit
No. Mnemónico o
Instrucción
Descripción
19 BCF F, B Pone a 0 el bit B del registro F
20 BSF F, B Pone a 1 el bit B del registro F
21 BTFSC F, B Se salta la siguiente instrucción si el bit B del registro F es 0
22 BTFSS F, B Se salta la siguiente instrucción si el bit B del registro F es 1
Consultada en: http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf. p. 56.
Instrucciones con literales y de control
No. Mnemónico o
Instrucción
Descripción
Simbólica
Descripción
23 ADDLW K W + K -> W Le suma el valor k al acumulador (W)
24 ANDLW K W AND K -> W Operación lógica AND entre W y el valor k
(resultado en W)
25 CALL K Llamada a subrutina k Llamada a subrutina cuyo inicio está en la
dirección k
26 CLRWDT - Borra temporizador
del WDT
Borra el registro Watchdog
27 GOTO K Ir a dirección K Salta a la dirección k de programa
28 IORLW K W OR K -> W Operación lógica OR entre W y el valor k
(resultado en W)
29 MOVLW K K -> W Carga el acumulador con el valor k. Por
ejemplo, si quieres cargar el valor 2Ah en
el registro "REG1" escribirás:
*MOVLW 2AH ;carga el acumulador con el
valor 2Ah
*MOVWF REG1 ;mueve el valor de W a
"REG1"
30 RETFIE - Retorno de una
interrupción
Instrucción para volver de la interrupción
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 26
31 RETLW K Retorno con K en W carga el valor k en W y vuelve de la
interrupción
32 RETURN - Retorno de una
subrutina
Vuelve de una subrutina.
33 SLEEP - Modo Standby El pic pasa a modo de Standby
34 SUBLW K K – W -> W Le resta el valor W al acumulador K
35 XORLW K W XOR K -> W Operación lógica XOR entre W y el valor k
(resultado en W)
Consultada en: http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf. p. 56
Ahora bien, estas son instrucciones propias del PIC que usa de manera interna, la parte
más interesante se presenta a continuación, es en la cual debes de programar o crear tus
programas para que posteriormente sean grabados dentro del PIC.
En la siguiente imagen se expresa gráficamente el proceso para generar grabar un PIC.
Proceso de grabación. Consultado en:
http://www.unioviedo.es/ate/alberto/TEMA3-Ensamblador.pdf
El proceso de grabación de un programa dentro del PIC se realiza de la siguiente manera:
Usar un software para crear el archivo fuente
Generar el programa con la ayuda de lenguaje ensamblador, C, o cualquier otro
lenguaje
Una vez que se termina el programa de acuerdo a las necesidades, es importante
generar la compilación, la cual sirve para detectar errores
Usar algún software que me permita generar un archivo con extensión “hex”
(archivo con código máquina)
Posteriormente se crea el archivo con extensión “hex”, ya que este archivo será el
que se grabe dentro del PIC
Una vez con el archivo generado se utilizará un grabador especial para poder
pasar el archivo hex de nuestra PC a nuestro dispositivo (Microcontrolador)
Se realiza la grabación de la PC al PIC
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 27
Posteriormente en nuestro PIC queda la información almacenada y listo para ser
usado
En la siguiente imagen puedes ver un grabador para PIC, estos son dispositivos que
permiten realizar la inserción de nuestro archivo con extensión hex dentro del PIC.
Grabador de PIC. Consultado en:
http://www.minirobot.com.mx/tienda/index.php?id_product=434&controller=product&id_lang=3
Pero, ¿por qué generar o usar un archivo con extensión “hex”?. Porque los
microcontroladores el único lenguaje que entienden es el código máquina que como se
sabe está formado por ceros y unos del sistema binario, por tal motivo se genera una
archivo que por lo regular suele tener la extensión: “*.hex” el cual lleva código máquina.
En la sección Para saber más se sugiere consultes el siguiente video:
“Programador de PIC USB anticorto programando PIC16F84” en el cual
se muestra brevemente algunas ventajas del grabador.
De la sección Para saber más se sugiere consultes los siguientes videos: “Pasos para grabar un PIC16F84” y “Grabación del PIC16F84 de manera Física” que explica los pasos de manera breve, mencionados anteriormente para grabar un PIC e implementar el programa.
Una vez que se muestran las instrucciones con las que cuenta el PIC y el proceso de
cómo se graba la información de la PC a un microcontrolador, se procede a explicar
brevemente el uso de algunos lenguajes de programación entre ellos el más usado
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 28
lenguaje C, pero a partir de la creación y desarrollo de los lenguajes de programación la
mayoría de los ingenieros han aprendido a programar los PIC con lenguaje ensamblador,
que es mucho más complejo que lenguaje C, hay otras aplicaciones que solo permiten el
uso de condicionales para poder generar los archivos con extensión “hex”.
De la sección Para saber más se sugiere consultes el video:
“Grabación del PIC16F84 de manera Simulada –Parte 1” que explica el
proceso de manera breve de cómo grabar un PIC usando un simulador.
De la sección Para saber más se sugiere consultes el video:
“Tutorial de ISIS Proteus” que explica brevemente como usar el simulador.
Esto se ha dado debido a que es mucho más fácil utilizar otros lenguajes de programación
que no sean ensamblador debido a que no muchos usuarios son expertos en
programación. Un ejemplo claro del uso de los lenguajes se ve en el siguiente ejemplo
que para poder realizar una suma de dos números se llevaría a cabo de la siguiente
manera:
Lenguaje
Ensamblador
.model small
.stack
.data
valor db ?
.code
.startup
mov ah, 01h ;Leer carácter desde el teclado
int 21h ;Lee primer carácter
sub al, 30h ;Resto 30H (48Dec) para obtener el numero
mov valor, al ;Lo guardo en variable valor
mov ah, 01h ;Leer carácter desde el teclado
int 21h ;Leo el segundo carácter
sub al, 30h ;Resto 30H (48Dec) para obtener segundo valor
add al, valor ;Realizo la suma de los dos valores
mov dl, al ;Pongo en dl el número a imprimir
add dl, 30h ;Agrego 30 (48Dec) para obtener el carácter
mov ah, 02h ;Función para imprimir un carácter en pantalla
int 21h
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 29
.exit
End
Lenguaje C
#include <iostream.h> #include <conio.h> void main (){ int a=0; //Se asigna un 0 a la variable int b=0; //Se asigna un 0 a la variable int c=0; //Se asigna un 0 a la variable cout<<"Dame el valor de a: "; //Se manda un mensaje cin>>a; //Se guarda el valor del teclado en a cout<<"Dame el valor de b: "; //Se manda un mensaje cin>>b; //Se guarda el valor del teclado en b c = a + b; //Se realiza la suma de a con b cout<<"La suma de a y b es: "; //Se imprime un mensaje cout<<c; //Se imprime el resultado getch(); }
Código para hacer una suma
De esta forma se da a conocer el uso de dos lenguajes para poder programar nuestro
PIC, con el uso de éstos se generara el programa que posteriormente será grabado en el
microcontrolador. Estos lenguajes son:
Lenguaje Ensamblador (Assembler). Lenguaje de programación de bajo nivel-
Lenguaje C. Lenguaje de programación de medio nivel.
En los siguientes temas se explicará el uso de ambos lenguajes, el lenguaje ensamblador
solo se hará de manera breve ya que se pretende profundizar en el Lenguaje C dado que
su complejidad es menor.
3.2.1. Características de las instrucciones máquina
El funcionamiento del procesador está determinado por las instrucciones que éste ejecuta.
Dichas instrucciones se denominan instrucciones máquina. Al conjunto de estas
instrucciones distintas que puede ejecutar el procesador se denomina repertorio de
instrucciones del procesador. Cada instrucción debe contener la información que necesita
el procesador para su ejecución (Stallings, 2007).
La siguiente figura muestra los pasos involucrados en la ejecución de instrucciones,
dichos elementos son:
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 30
Código de operación: Especifica la operación a realizar (suma, E/S, etc.). La
operación se indica mediante un código binario denominado código de operación
o, abreviadamente “codop”.
Referencia a operandos fuente u origen: La operación puede implicar a uno o
más operandos origen, es decir operandos que son entradas para instrucción.
Referencia al operando de destino o resultado: La operación puede producir un
resultado.
Referencia a la siguiente instrucción: Dice al procesador de dónde captar la
siguiente instrucción tras completarse la ejecución de la instrucción actual.
Diagrama de estados de un ciclo de instrucción. Consultado en (Stallings, 2007).
Dentro de la computadora, cada instrucción se representa por una secuencia de bits. La
instrucción está dividida en campos correspondientes a los elementos constitutivos de la
misma.
En la siguiente figura se muestra un ejemplo sencillo de formato de instrucción. En la
mayoría de los repertorios de instrucciones se emplea más de un formato. Durante su
ejecución, la instrucción se escribe en un registro de instrucción (IR) del procesador. El
procesador debe ser capaz de extraer los datos de los distintos campos de la instrucción
para realizar la operación requerida.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 31
Un formato de instrucciones sencillo. Consultado en (Stallings, 2007).
Es muy complicado y difícil, tanto para los programadores como para las personas que no
están familiarizadas con estos temas, manejar las representaciones binarias de las
instrucciones máquina. Por ello, es una práctica común utilizar representaciones
simbólicas de las instrucciones máquina (Stallings, 2007).
Los codops se representan mediante abreviaturas, denominadas nemotécnicos, que
indican la operación en cuestión. Algunos ejemplos son:
ADD Sumar
SUB Restar
MPY Multiplicar
DIV Dividir
LOAD Cargar datos de memoria
STOR Almacenar datos en memoria (memorizar)
Los operandos también suelen representarse simbólicamente. Por ejemplo la instrucción:
ADD, R, Y
Puede significar sumar el valor contenido en la posición de datos Y al contenido del
registro R. En este ejemplo, “Y” hace referencia a la dirección de una posición de
memoria, y “R” a un registro particular.
Las características que se pretende que tenga un conjunto de instrucciones son cuatro
principalmente:
1. Completo. Esto se refiere a que se puede realizar en tiempo finito cualquier tarea
ejecutable con una computadora o dispositivo.
2. Eficiente. Se refiere a que debe permitir alta velocidad de cálculo sin exigir una
elevada complejidad en su Unidad de Control y Unidad Aritmético Lógica, además
de no consumir excesivos recursos (memoria), es decir, debe cumplir su tarea en
un tiempo razonable minimizando el uso de los recursos.
3. Autocontenidas. Esto es, que contengan en sí mismas toda la información
necesaria para ejecutarse.
4. Independientes. Que no dependen de la ejecución de alguna otra instrucción.
Es raro encontrar programadores en lenguaje máquina. La mayoría de los programas
actuales escriben sus programas en un lenguaje de alto nivel o, en ausencia del mismo,
en lenguaje ensamblador.
Si se considera una instrucción de alto nivel tal y como se expresaría en un lenguaje
como C, BASIC o FORTRAN. Por ejemplo:
X = X + Y
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 32
Esta sentencia ordena a la computadora sumar los valores almacenados en X, y en Y, y
poner el resultado en X. ¿Cómo se podría realizar lo mismo con instrucciones máquina?
Supón que las variables X e Y corresponden a las posiciones 513 y 514. Considerando un
repertorio simple de instrucciones máquina, la operación podría llevarse a cabo con tres
instrucciones:
1. Cargar un registro con el contenido de la posición de memoria 513
2. Sumar al registro el contenido de la posición de memoria 514
3. Memorizar el contenido del registro en la posición de memoria 513
Como se puede observar, una sola instrucción de lenguaje C, puede necesitar de tres
instrucciones máquina. Como se mostró en una tabla anteriormente con lenguaje
ensamblador y lenguaje C.
Los tipos de instrucciones se pueden clasificar de la siguiente manera:
De procesamiento de datos: instrucciones aritméticas y lógicas
De almacenamiento de datos: instrucciones de memoria
De transferencia de datos: instrucciones de E/S
De control: instrucciones de comprobación y de bifurcación
Las instrucciones aritméticas proporcionan capacidad computacional para procesar
datos numéricos. Las instrucciones lógicas (booleanas) operan con los bits de una
palabra en lugar de considerarlos como números. Proporcionando por tanto, capacidad
para el procesamiento de cualquier otro tipo de datos que el usuario quiera emplear. Este
tipo de operaciones se realizan principalmente con datos en registros del procesador. Por
tal motivo debe haber instrucciones de memoria para transferir los datos entre la
memoria y los registros. Las instrucciones de E/S se necesitan para transferir programas
y datos de memoria y devolver resultados de los cálculos al usuario. Las instrucciones
de comprobación o test se emplean para comprobar el valor de una palabra de datos o
el estado de un cálculo. Las de bifurcación se usan entonces para bifurcar a diferentes
conjuntos de instrucciones dependiendo de la decisión tomada (Stallings, 2007).
Por cuestión de simplicidad se omitirá el profundizar en las instrucciones de máquina,
estas se pueden ver reflejadas en el tema “Lenguaje Ensamblador”, instrucciones muy
sencillas y básicas de dicho lenguaje.
3.2.2. Tipos de operandos y operaciones
En el tema anterior se mencionaron las principales características que debe de tener una
instrucción, en este tema se verán los diferentes tipos de operandos y las operaciones
básicas que se realizan o usan en un programa.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 33
Recuerda que es un operando y un operador, en el siguiente ejemplo:
3 + 6 = 9
El operador es: “+“ y los operandos son: “3“ y “6“. Por tal motivo se mencionan los tipos de
operandos que se pueden usar en programación.
En Stallings (2007), se puede ver que las instrucciones máquina operan con datos. Las
categorías generales más importantes de datos son:
Direcciones
Números
Caracteres
Datos lógicos
Los tipos de datos más comunes son los números, los caracteres y los datos lógicos; y
cada uno de ellos se analizará brevemente.
Números:
Una distinción importante entre los números utilizados en las matemáticas ordinarias y los
almacenados en una computadora es que éstos últimos están limitados. Esto es cierto en
dos sentidos, en primer lugar hay un límite para la magnitud de los números
representables en una máquina y, en segundo lugar, en el caso de números en coma
flotante, su precisión está limitada. Por tanto, el programador debe ser consciente de las
consecuencias del redondeo, el desbordamiento o el desbordamiento a cero.
En las computadoras son usuales tres tipos de datos numéricos:
Enteros o en coma fija
En coma flotante
En decimal
Caracteres:
Una forma bastante común de datos es el texto o secuencia de caracteres. Aunque la
información textual sea más conveniente para las personas, no puede ser almacenada o
transmitida fácilmente en forma de caracteres por los sistemas de comunicación y de
procesamiento de datos. Tales sistemas están diseñados para datos binarios. Por lo
tanto, se han ideado diversos códigos que permiten representar caracteres mediante
secuencias de bits. Hoy en día, el código de caracteres más utilizado es el alfabeto de
referencia internacional (IRA), conocido en los Estados Unidos como ASCII (American
Standard Code for Information Interchange): código estándar americano para intercambio
de información. Cada carácter es representado en este código por un patrón distinto de 7
bits; pueden representarse por tanto 128 caracteres diferentes.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 34
Código ASCII. Consultado en:
http://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/ASCII_Code_Chart-Quick_ref_card.png/361px-ASCII_Code_Chart-Quick_ref_card.png
Datos Lógicos:
Normalmente, cada palabra o cualquier otra unidad direccionable (byte, media palabra,
etc.) es tratada como una unidad de datos individual. Sin embargo, a veces es útil
considerar una unidad de n bits como n elementos o datos de un bit, donde cada
elemento tiene un valor 1 o 0. Cuando los datos son vistos de esta manera, se consideran
datos lógicos.
El número de códigos de operación (codops) diferentes, varía ampliamente de una
máquina a otra. Sin embargo, en todas las máquinas puedes encontrar los mismos tipos
de operaciones. Una clasificación típica y útil es la siguiente:
Transferencia de datos
Aritméticas
Lógicas
De conversión
De E/S
De control del sistema
De control de flujo
La siguiente tabla basada en Hayes (1998), se enlistan tipos de instrucciones comunes de
cada clase:
Tipo Nombre de la operación Descripción
Transferencias Move (transferir) Transfiere una palabra o un bloque
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 35
de datos desde un origen a un destino
Store (memorizar) Transfiere una palabra desde el
procesador a memoria
Load (cargar o captar) Transfiere una palabra desde
memoria al procesador
Exchange (intercambiar) Intercambia los contenidos del origen
al destino
Clear (reiniciar o poner a 0) Transfiere una palabra de ceros al
destino
Set (poner a 1) Transfiere una palabra de unos al
destino
Push (introducir en la pila,
“apilar”)
Transfiere una palabra desde un
origen a la cabecera de la pila
Pop (extraer de la pila,
“desapilar”)
Transfiere una palabra desde la
cabecera de la pila a un destino
Aritméticas
Add (sumar) Calcula la suma de dos operandos
Substract (restar) Calcula la diferencia de dos
operandos
Multiply ( multiplicar) Calcula el producto de dos
operandos
Divide (dividir) Calcula el cociente de dos operandos
Absolute (valor absoluto) Sustituye el operando por su valor
absoluto
Negate (opuesto) Cambia el signo del operando
Increment (incrementar) Suma 1 al operando
Decrement (decrementar) Resta 1 del operando
Lógicas
AND (producto lógico, Y ) Realiza la operación lógica Y (AND)
OR (Suma lógica, O) Realiza la operación lógica O (OR)
NOT (Complemento) Realiza el complemento (NOT) bit a
bit del dato
Exclusive-OR (OR-Exclusiva) Realiza la operación lógica O-
Exclusiva (XOR)
Test (comprobar)
Comprueba la condición
especificada, fija los indicadores
(flags) en función del resultado
Compare (comparar)
Realiza la comparación lógica o
aritmética de dos o más operandos;
fija los indicadores (flags) en función
del resultado
Set control variables (fijar
variables de control)
Instrucciones que fijan controles para
protección, gestión de interrupciones,
control de temporizador, etc.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 36
Shift (desplazamiento)
Desplaza el operando a la izquierda
(derecha), introduciendo valores
constantes por el otro extremo.
Rotate (rotar) Desplaza el operando a la izquierda
(derecha) de forma cíclica
Control de
flujo
Jump (bifurcación o salto) Ruptura incondicional de flujo; carga
el PC con la dirección especificada.
Jump condicional (salto
condicional)
Comprueba la condición
especificada; dependiendo de la
condición, o carga el PC con la
dirección indicada, o no hace nada
Jump to subrutina (Llamada a
subrutina)
Guarda la información de control del
programa en una posición conocida y
salta a la dirección indicada
Return (retorno)
Sustituye el contenido del PC y de
otros registros por los de la posición
conocida
Execute (ejecutar)
Capta el operando de la dirección
indicada y lo ejecuta como una
instrucción, no modifica el PC
Skip (salto implícito) Incrementa el PC de manera que se
salte la instrucción siguiente
Skip conditional (salto implícito
condicional)
Comprueba la condición indicada,
realiza el salto implícito o no hace
nada, dependiendo de la condición
Halt (parar) Define la ejecución del programa
Wait (esperar)
Detiene la ejecución del programa;
comprueba de forma repetitiva la
condición especificada; reanuda la
ejecución cuando se satisface la
condición
No operation (no operación) No se ejecuta operación alguna, pero
la ejecución del programa continua
Entrada/Salida
Input (entrada)
Transfiere datos desde un ´puerto o
dispositivo de E/S al destino
(memoria principal o registro del
procesador)
Output (salida)
Transfiere datos desde el origen
especificado a un puerto o dispositivo
de E/S
Start I/O (iniciar E/S) Transfiere instrucciones al
procesador de E/S para iniciar
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 37
operaciones de E/S
Test I/O (comprobar E/S)
Transfiere información de estado
desde el sistema de E/S al destino
especificado
Conversión
Translate (traducir)
Traducción de los valores de una
sección de memoria, basado en una
tabla de correspondencia
Convert (convertir)
Convierte el contenido de una
palabra de un formato a otro (por
ejemplo., de decimal empaquetado a
binario)
Operaciones usuales de repertorios de instrucciones. Consultado en (Hayes, 1998)
Estas son las principales instrucciones que se llevan a cabo o se pueden usar dentro del
lenguaje máquina, en el siguiente tema se mostrarán brevemente ejemplos en los cuales
se hará uso de las operaciones y de algunas instrucciones.
3.2.3. Lenguaje Ensamblador
Un procesador puede interpretar y ejecutar instrucciones máquina. Estas instrucciones
son simplemente números binarios almacenados en la computadora. Si un programado
quisiera programa directamente en lenguaje máquina, necesitaría introducir los programas
como datos binarios. Por ejemplo la siguiente sentencia en lenguaje C:
N = I +J + K
Supón que quieres programar esta sentencia en el lenguaje máquina y dar a I, J, y K los
valores iniciales 2, 3 y 4 respectivamente. La forma de hacer esto se muestra en la
siguiente figura:
Dirección Contenido
101 0010 0010 101 2201
102 0001 0010 102 1202
103 0001 0010 103 1203
104 0011 0010 104 3204
201 0000 0000 201 0002
202 0000 0000 202 0003
203 0000 0000 203 0004
204 0000 0000 204 0000 Programa en binario. Consultado en: Stallings, 2007
El programa empieza en la posición 101 (hexadecimal). Se reserva memoria para las
cuatro variables a partir de la posición 201. El programa consta de cuatro instrucciones:
1. Cargar el contenido de la posición 201 en el acumulador (AC)
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 38
2. Sumar a AC el contenido de la posición 202
3. Sumas a AC el contenido de la posición 203
4. Memorizar el contenido de AC en la posición 204
Esto es evidentemente un proceso tedioso y muy susceptible a errores.
Una mejora a esta situación puede ser redactar el programa en hexadecimal en lugar de
binario. Quedando de la siguiente manera:
Dirección Contenido
101 2201
102 1202
103 1203
104 3204
201 0002
202 0003
203 0004
204 0000
Programa en hexadecimal. Consultado en: Stallings, 2007.
Para que la mejora se a más significativa, puedes hacer uso de nombres simbólicos o
nemotécnicos de las instrucciones. El resultado es el programa simbólico mostrado en la
siguiente figura:
Dirección Instrucción
101 LDA 201
102 ADD 202
103 ADD 203
104 STA 204
201 DAT 2
202 DAT 3
203 DAT 4
204 DAT 0 Programa simbólico. Consultado en: Stallings, 2007.
El uso de programas simbólicos hace la vida mucho más fácil pero es aún engorroso. Un
procedimiento mejor, utilizado con frecuencia, es emplear direcciones simbólicas. Esto se
ilustra en la siguiente figura:
Etiqueta Operación Operando
FORMUL LDA 1
ADD 1
ADD K
STA N
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 39
I DATA 2
J DATA 3
K DATA 4
N DATA 0 Programa en ensamblador. Consultado en: Stallings, 2007.
Con este último refinamiento, se ha inventado un lenguaje ensamblador. Los programas
escritos en lenguaje ensamblador se traducen a lenguaje maquina mediante un
ensamblador. Este programa debe no solo realizar la traducción simbólica mencionada
antes, sino también asignar direcciones de memoria a las direcciones simbólicas.
El desarrollo de los lenguajes ensambladores fue un logro importante en la evolución de la tecnología de las computadoras. Fue un primer paso hacia los lenguajes de alto nivel utilizados hoy en día, pero estos aún requerían muchas instrucciones para llevar a cabo las tareas más sencillas. Para acelerar el proceso de programación, se desarrollaron los lenguajes de alto nivel, en los que las instrucciones individuales llevan a cabo tareas importantes. A los programas traductores que convierten programas escritos en lenguajes de alto nivel a lenguaje máquina, se les llama compiladores. Los lenguajes de alto nivel permiten a los programadores escribir instrucciones que se parecen mucho al inglés común, y contienen la notación matemática común (Deitel, 2004).
Un programa de nómina escrito en un lenguaje de alto nivel podría contener una
instrucción como la siguiente:
sueldoBruto = sueldo Base + sueldoExtra
Esto hace a los lenguajes de alto nivel mucho más recomendables, desde el punto de
vista del programador, que el lenguaje máquina y ensamblador.
Debido a que el lenguaje ensamblador es un poco difícil de usar si no cuentas con los
conocimientos básicos de dicho lenguaje se mostrarán ejemplos elaborados en lenguaje
C, ya que los ejemplos que se verán en adelante serán con el uso de este lenguaje para
poder programar un PIC.
Actividad 2. Instrucciones básicas del lenguaje ensamblador
El propósito de esta actividad es que menciones la forma en que se realizan operaciones
básicas en lenguaje ensamblador y lenguaje C, distinguiendo las diferencias de cada
una de las operaciones que serán indicadas por tu Facilitador(a):
1. Ingresa al foro de la actividad y participa sobre la pregunta o situación de
apertura.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 40
2. Sustenta tus puntos de vista y retroalimenta a mínimo 2 de tus
compañeros(as).
3. Anota lo que consideres importante de cada tipo y considera la conclusión final
de tu Facilitador(a).
*La actividad será evaluada de acuerdo a su respectiva rúbrica, así que es importante que la consultes.
3.3. Características y uso de elementos del microcontrolador (puertos,
temporizadores, convertidores)
Este tema es muy pequeño pero de mucha importancia para entender el manejo de un
PIC, así como los elementos que se mencionan en el DataSheet del PIC16F84 y que
quizás no se entiendan.
El PIC cuenta con algunos elementos que son de suma importancia que distingas de
manera general y logres diferenciar ya que te serán de mucha utilidad para poder elaborar
tus proyectos y actividades, estos elementos se vieron de manera general anteriormente,
pero en este momento se verán de manera individual.
Los PIC disponen de un procesador rápido y potente. En él se incluye la memoria de
programa, la de datos, la ALU, la Unidad de Control y algunos registros especiales. Si
dentro de un microcontrolador únicamente existiese un procesador, sólo se podrían
ejecutar instrucciones lógico-aritméticas y de transferencia. Pero un Microcontrolador es
más que un procesador, es una “computadora integral” en la que, además del procesador,
hay puertas de E/S para conectarse con periféricos, canales de comunicación,
temporizadores para controlar tiempos, sistemas de interrupciones capaz de detectar
anomalías o sucesos especiales, sistemas de seguridad, modo de funcionamiento con
bajo consumo, entre otras cosas, que a fin de cuentas son recursos que configuran la
potencia integral de una computadora
“Los PIC contienen todos los recursos posibles, aunque su fabricante no les incluye en todos los modelos, sino que los alterna para poderse ajustar óptimamente a las necesidades de cada diseño” (Angulo, 2003).
En este apartado se describirán algunos de los recursos más importantes de los PIC
tomando en cuenta que al que se hará mayor referencia es al PIC16F84.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 41
3.3.1. Puertos
Los PIC 16X8X sólo disponen de dos puertas de E/S. La puerta A posee 5 líneas, desde
RA0 hasta RA4, y una de ellas soporta dos funciones multiplexadas. Se trata de la
RA4/TOCKI, que puede actuar como línea de E/S o como una patita por la que se reciben
los impulsos que debe contar TMR0. La puerta B tiene 8 líneas, desde RB0 hasta RB7, y
también tiene una con funciones multiplexadas, la RB0/INNT, que además de línea típica
de E/S, sirve como patita por la que se reciben los impulsos externos que provocan una
interrupción, esta información se encuentra dentro del DataSheet del PIC16F84.
Cada línea de E/S se puede configurar tanto como entrada o como salida, todo depende
de cómo se declare si a 1 o a 0, respectivamente, el bit asociado del registro de
configuración de cada puerta (TRISA y TRISB).
Se llaman PUERTA-A y PUERTA-B los registros que guardan la información que entra o
sale por la puerta y ocupan las direcciones 5 y 6 del banco 0 de la memoria de datos. Los
registros de configuración TRISA y TRISB ocupan las mismas direcciones, pero en el
banco 1, como se puede observar en la siguiente figura:
Registros de configuración. Consultado en: Angulo, 2003
De la sección Para saber más se sugiere consultes el capítulo 3 del libro: “Compilador C CCS y simulador PROTEUS para Microcontroladores PIC” que explica la configuración de los puertos A y B del PIC como entrada o salida.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 42
3.3.2. Temporizadores
Para abordar este tema es necesario que recuerdes que se definió a un Temporizador
como: “El dispositivo mediante el cual puedes regular la conexión o desconexión de un
circuito eléctrico durante un tiempo determinado” (Construmática, 2013).
Una de las labores más habituales en los programas de control de dispositivos suele ser
determinar intervalos concretos de tiempo, y recibe el nombre de temporizador (timer) el
elemento encargado de realizar esta función.
En Angulo (2003), nos indica que los PIC16X8X poseen un temporizador/contador de 8
bits, llamado TMRO, que actúa de dos maneras diferentes:
1. Como contador de sucesos, que están representados por los impulsos que se
aplican a la patita RA4/TOCKI.
2. Como temporizador, cuando se carga en el registro que implementa al recurso un
valor inicial se incrementa con cada ciclo de instrucción hasta que se desborda, o
sea, pasa de FF a 00 H, y avisa poniendo a 1 un bit señalizador y/o provocando
una interrupción.
Esquema de un temporizador/contador. Consultado en: Angulo, 2003
Los PIC16X8X y los de la gama baja disponen de dos temporizadores, el TMRO y el
Perro Guardián (watchdog). El primero actúa como principal y sobre él recae el control de
tiempos y el contaje de impulsos. El otro vigila que el programa no se “cuelgue”, y para
ello cada cierto tiempo comprueba si el programa se está ejecutando normalmente. En
caso contrario, si el control está detenido en un bucle infinito a la espera de algún
acontecimiento que no se produce, el Perro Guardián “ladra”, lo que se traduce en un
Reset que reinicializa todo el sistema (Angulo, 2003).
En la siguiente figura se proporciona un esquema simplificado de la arquitectura del
circuito de control de tiempo usado en los PIC16X8X.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 43
Esquema simplificado de la sección dedicada al control de tiempos en la arquitectura de los PIC16X8X.
Consultado en (Angulo, 2003)
3.3.3. Convertidores
El PIC16F84 como se mencionó al inicio de esta unidad cuenta con convertidor Analógico-Digital
(ADC o A/D), el cual no es más que un pequeño circuito electrónico que convierte señales
continuas a números digitales discretos (ADC). La operación contraria es realizada por un
conversor digital-analógico (DAC).
Generalmente, un conversor analógico-digital es un dispositivo electrónico que convierte una
entrada analógica de voltaje a un número digital. La salida digital puede usar diferentes esquemas
de codificación, como binario, o complemento de dos binario. De cualquier manera, algunos
dispositivos no eléctricos o parcialmente eléctricos pueden ser considerados como conversores
analógico-digital (Alegsa, 2013).
Recuerda que una señal analógica es una onda sinusoidal como la de la siguiente imagen:
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 44
Señal Analógica. Consultada en: http://xurl.es/2ryv5
La señal digital es una onda cuadrada o escalonada como en la siguiente imagen:
Señal Digital. Consultada en: http://kerchak.com/wp-
content/uploads/2013/03/Señal-digital.jpg
Lo que realmente hace un convertidor por ejemplo si le entra una señal analógica elevada este la
convierte en un 1 o si es muy baja y pasa cierto rango entonces estaría arrojando un 0.
Actividad 3. Elementos del microcontrolador
El propósito de esta actividad es elaborar un diagrama de Venn que te permita separar
los elementos que conforman a un microcontrolador (PIC16F84) de los otros PIC, y que
al mismo tiempo distingas la relación que tienen estos componentes, así como incluir
sus características. Con base en lo anterior, realiza lo siguiente:
1. Crea un documento de texto define el título de tu trabajo.
2. En tus propias palabras, elabora una pequeña introducción de lo que vas a tratar
en tu diagrama, mínimo media cuartilla.
3. Desarrolla el diagrama de Venn con sus respectivos conjuntos.
4. Indica los elementos usados.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 45
5. Precisa la relación entre cada elemento.
6. Escribe la información que explique la relación del diagrama, así como la
clasificación de los conjuntos.
7. Sustenta tu trabajo con por lo menos 3 fuentes bibliográficas o electrónicas
reconocidas. También es importante reconocer y respetar los derechos de autor,
dándoles sus correspondientes créditos.
8. Escribe una conclusión de mínimo media cuartilla, aterrizando todas las ideas
plasmadas durante el desarrollo de tu actividad.
9. Guarda tu trabajo en un archivo llamado KARQ2_ACT3_U3_XXYZ.
10. Sube tu archivo para su revisión y posterior retroalimentación
*Consulta la rúbrica para la evaluación de la actividad.
3.4. Aplicaciones de los microcontroladores
Una forma excelente de conseguir una comprensión de los temas vistos de manera
básica, es visualizando y realizando algunos ejemplos que te serán proporcionados en los
temas faltantes, con la finalidad de que puedas resolver sin ningún problema tu evidencia
de aprendizaje.
En la actualidad encuentras diferentes aplicaciones o dispositivos de los cuales disponen
de un microcontrolador, pero, qué tipo de aplicaciones puedes encontrar en las cuales se
hace uso de los microcontroladores.
Por ejemplo:
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 46
Letrero luminoso. Consultado en: http://xurl.es/p1ur3 Calculadora. Consultado en:
http://edumic.uv.es/imagenes/edumic_web.jpg
Mediante los siguientes ejemplos se pretende resumir de forma clara y concisa los pasos
que se deben llevar a cabo para realizar las ejemplos propuestos.
3.4.1. Ejemplos usando el PIC16F84
En esta sección se explicarán y mostrarán algunos ejemplos iniciando con la elaboración
del código, a continuación se generará el archivo “hex” y por último se simulará el circuito.
Para elaborar el código fuente y generar el archivo “hex” utilizarás la aplicación PIC C
Compiler (PCW)© de Custom Computer Services Incorporated (CCS)© y para simular el
circuito se usará PROTEUS VSM© de Labcenter Electronics©. Estas herramientas han
sido seleccionadas por su compatibilidad y los ejemplos que aparecen corresponden al
uso del editor con las instrucciones del compilador y al software de simulación
mencionados. Además cabe destacar que dichas herramientas fueron seleccionadas por
su fácil manejo, al mismo tiempo que no existen muchos simuladores de electrónica que
permitan trabajar con el PIC; también existe mucha información en la red que se puede
consultar para el eficiente uso del mismo. El compilador se seleccionó debido a que
permite desarrollar programas en C enfocado a PIC con la ventaja de estar orientado a un
microcontrolador concreto, puesto que dispone de una amplia librería para el uso de
funciones predefinidas, comandos, entre muchas otras cosas y que el mismo software
genera el archivo con extensión “hex”.
Consulta el video titulado “Tutorial de ISIS proteus” el vínculo lo podrás encontrar en la sección Para saber más.
Existen otras herramientas que se pueden utilizar para la generación del código fuente
como PIC Basic© de Microsoft©, pero desafortunadamente no permite la generación del
archivo con extensión “hex”, se requiere una aplicación extra.
Y en el caso del simulador sus alternativas son LabVIEW© de National Instruments© es
una aplicación muy completa pero tiene un costo, y la información que se encuentra en la
red es mínima. De igual forma también se sugiere el uso de Arduino que es una
plataforma de hardware y software open source, diseñados para facilitar el uso de la
electrónica en diferentes proyectos, pero con la desventaja que se tiene que comprar la
tarjeta. En la sección Para saber más podrás encontrar información adicional.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 47
LabView ©. Consultado en:
http://www.ni.com/trylabview/esa/ PIC Basic ©
PIC C Compiler (PCW)© PROTEUS ©. Consultado en:
http://www.subirimagenes.net/pictures/5d77d4179277b9ad443e2e8d622f93be.jpg
Por cuestiones de simplicidad y mayor entendimiento se recomendarán videos para
explicar cada uno de los ejemplos.
Ejemplo 1:
Encender un led usando el puerto RB0 que prenda por dos segundos y que se apague
por medio segundo y que lo siga haciendo ilimitadamente.
El código es el siguiente:
#include <16f84A.h> //Uso de la librería del modelo del PIC
#fuses XT,NOWDT //Ordenes programador
#use delay (clock=4000000) //Frecuencia de Reloj 4MHz
#use standard_io(B) //Declaración del puerto a usar
void main (void){ //Función principal
while(TRUE){ //Condición infinita
output_high(PIN_B0); //Enciende el led por el puerto RB0
delay_ms (2000); //Retraso de 2 segundos
output_low(PIN_B0); //Apaga el led por el puerto RB0
delay_ms(500); //Retraso de medio segundo
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 48
} //Fin de la condición
} //Fin de la función principal
Diagrama del Ejemplo 1
Posteriormente se generará el archivo “hex” y se elaborara el diagrama con ayuda de
PROTEUS.
El video para este ejemplo lo puedes consultar en la liga: http://www.youtube.com/watch?v=rdL-nCeW-Ho&feature=youtu.be Este mismo video lo encontrarás en la sección Para saber más, con el
nombre: “Grabación del PIC16F84 - Encender un Led...!”
Ejemplo 2:
Encender un led usando un botón conectado a RA0 y el led conectado a RB0 solo
encenderá cuando se presione el botón. El led permanecerá encendido por 1 segundo y
luego se apagará.
El código es el siguiente:
#include <16f84A.h> //Uso de la librería
#fuses XT,NOWDT //ordenes programador
#use delay (clock=4000000) //Frecuencia de Reloj 4MHz
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 49
#use standard_io(A) //Declaración del puerto a usar
#use standard_io(B) //Declaración del puerto a usar
void main (void){ //Función principal
while(TRUE){ //Condición infinita
//Se evalua el valor que tiene el puerto A0
if(input(PIN_A0) == 1){
output_high(PIN_B0); //Enciende el led por el puerto RB0
delay_ms (1000); //Retraso de 1 segundo
}
else{
output_low(PIN_B0); //Apaga el led por el puerto RB0
}
} //Fin de la condición
} //Fin de la función principal
Diagrama del Ejemplo 2
El proceso de elaboración de este circuito se puede apreciar en el video que lleva por
nombre: “Grabación del PIC16F84 - Encender un led al presionar un botón...!”
En la siguiente liga: http://www.youtube.com/watch?v=zwa1wYYZ--c&feature=youtu.be, con el video llamado: “Grabación del PIC16F84 - Encender un led al presionar un botón...!” encontrarás una explicación detallada del ejemplo anterior de cómo encender un led al presionar un botón usando el puerto RA0.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 50
Ejemplo 3:
Mandar voltaje a un dispositivo de tal forma que se vayan encendiendo ordenadamente
los puertos de RB del 0 al 7. Esto lo puedes resolver con ayuda de los ejemplos ya antes
vistos.
Se debe de mandar una señal alta al puerto y los demás apagados, por ejemplo RB0
encendido y los demás apagados, posteriores RB1 encendido y los demás apagados, así
sucesivamente.
El código fuente es el siguiente:
#include <16f84A.h> //Uso de la librería
#fuses XT,NOWDT //ordenes programador
#use delay (clock=4000000) //Frecuencia de Reloj 4MHz
#use standard_io(A) //Declaración del puerto a usar
#use standard_io(B) //Declaración del puerto a usar
void main (void){ //Función principal
while(TRUE){ //Condición infinita
output_high(PIN_B0);
output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);
output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B6);
output_low(PIN_B7);
delay_ms (200);
output_high(PIN_B1);
output_low(PIN_B0) && output_low(PIN_B2) && output_low(PIN_B3);
output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B6);
output_low(PIN_B7);
delay_ms (200);
output_high(PIN_B2);
output_low(PIN_B1) && output_low(PIN_B0) && output_low(PIN_B3);
output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B6);
output_low(PIN_B7);
delay_ms (200);
output_high(PIN_B3);
output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B0);
output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B6);
output_low(PIN_B7);
delay_ms (200);
output_high(PIN_B4);
output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);
output_low(PIN_B0) && output_low(PIN_B5) && output_low(PIN_B6);
output_low(PIN_B7);
delay_ms (200);
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 51
output_high(PIN_B5);
output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);
output_low(PIN_B4) && output_low(PIN_B0) && output_low(PIN_B6);
output_low(PIN_B7);
delay_ms (200);
output_high(PIN_B6);
output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);
output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B0);
output_low(PIN_B7);
delay_ms (200);
output_high(PIN_B7);
output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);
output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B6);
output_low(PIN_B0);
delay_ms (200);
}
} //Fin de la función principal
El diagrama en PROTEUS quedaría de la siguiente manera con ayuda de una barra de
leds.
Diagrama del Ejemplo 3
El proceso de elaboración de este circuito se encuentra en el video nombrado: “Grabación del PIC16F84 - Luces de Discoteca...!”, que podrás encontrar dentro de la siguiente liga: http://www.youtube.com/watch?v=ZmFlugYsPPI&feature=youtu.be Explica cómo se usan todas las líneas de salida del puerto RB. Además lo podrás encontrar referenciado en la sección Para saber más
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 52
Estos son algunos de los ejemplos que puedes realizar con ayuda del PIC16F84, con
ayuda de éstos se propone que realices las siguientes propuestas de manera que puedas
practicar con ejercicios muy sencillos.
Propuestas:
1. Encender un led conectado a RB4 durante 1.5 segundos y luego apagarlo por 0.5
segundos, el proceso debe repetirse sólo 4 veces, luego el led debe permanecer
apagado.
2. Encender dos leds conectados en RB0 y RB1 alternadamente, es decir mientras
un led está encendido el otro permanecerá apagado y viceversa, los tiempos de
transición serán de 0.5 segundos, el proceso debe continuar indefinidamente.
3. Generar 6 parpadeos en un led con intervalos de tiempo de 300 milisegundos,
luego generar 2 parpadeos de 1 segundo con un segundo led, luego hacer que los
dos leds parpadean al mismo tiempo 3 veces con intervalos de 0.5 segundos,
repetir el proceso indefinidamente.
3.4.2. Proyectos usando el PIC16F84
¿Qué proyectos se pueden implementar con el PIC16F84?, puedes realizar demasiados,
hasta donde alcance tu imaginación, por ejemplo el siguiente proyecto es la elaboración
de un semáforo:
Proyecto 1:
Elaborar un semáforo sencillo para una esquina, donde solo se usan colores rojo, amarillo
y verde.
Primero que nada debes analizar el problema, para esto se requiere mucha lógica y
pensar en cómo solucionarlo.
¿Cómo funciona un semáforo?, para este ejemplo se usarán los siguientes nombres para
simplificar y entender mejor:
Semáforo 1: Rojo1, Amarillo1 y Verde1
Semáforo 2: Rojo2, Amarillo2 y Verde2
Cuando el Verde1 este encendido el Rojo2 estará apagado, posteriormente el Amarillo1
se encenderá y el Rojo2 seguirá encendido, pero el Verde1 se apagará, cuando el Rojo1
encienda, el Rojo2 apagará y encenderá el Verde2, posteriormente el Amarillo2
encenderá, el Rojo 1 estará prendido y el Verde2 se apagará. Para este ejemplo toma en
cuenta que el cambio de verde a amarillo durará 9 segundos y el cambio de amarillo a
rojo solo 3.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 53
El código es el siguiente:
#include <16f84A.h> //Uso de la librería
#fuses XT,NOWDT //ordenes programador
#use delay (clock=4000000) //Frecuencia de Reloj 4MHz
#use standard_io(B) //Declaración del puerto a usar
void main (void){ //Función principal
while(TRUE){ //Condición infinita
output_high(PIN_B2) && output_high(PIN_B3); //B2-Verde1 B3-Rojo2
output_low(PIN_B0) && output_low(PIN_B1) && output_low(PIN_B4) && output_low(PIN_B5);
delay_ms(9000);
output_high(PIN_B1) && output_high(PIN_B3); //B1-Ama1 B3-Rojo2
output_low(PIN_B0) && output_low(PIN_B2) && output_low(PIN_B4) && output_low(PIN_B5);
delay_ms(3000);
output_high(PIN_B0) && output_high(PIN_B5); //B0-Rojo1 B5-Verde2
output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3) && output_low(PIN_B4);
delay_ms(9000);
output_high(PIN_B0) && output_high(PIN_B4); //B0-Rojo1 B4-Ama2
output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3) && output_low(PIN_B5);
delay_ms(3000);
}
} //Fin de la función principal //encendido del Verde 1
El proyecto simulado en una tablilla de experimentación (protoboard) se vería de la
siguiente manera:
Fotografía del semáforo armado en un protoboard. Consultado en: Reyes, 2008
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 54
El proyecto simulado en PROTEUS sería de la siguiente forma:
Semáforo en PROTEUS©
El proceso de elaboración y explicación de este proyecto se puede encontrar y apreciar en la siguiente liga: http://www.youtube.com/watch?v=sK9pwiIcOr8&feature=youtu.be, de igual forma en la sección Para saber más, se encuentra su descripción y vinculo nuevamente con el nombre: “Grabación del PIC16F84 – Semáforo Sencillo...!”.
Proyecto 2:
Elaborar un contador decimal de 0 a 99 con un display de 7 segmentos.
Un display es un componente que encenderá los leds que tiene integrados conforme
reciba voltaje en alguna de sus patitas, es muy usado para representar numero debido a
la forma que tiene, por ejemplo si observas en la siguiente imagen para poder representar
el número 1 se debe recibir voltaje en sus patitas b y c, si se desea representar el número
0, todas las patitas deberán de estar encendidas excepto la g.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 55
Display de 7 Segmentos. Consultado en:
http://1.bp.blogspot.com/-cRlBJlDidk8/Td0OVffszBI/AAAAAAAAAL0/v4kr5WMhAgI/s320/display.gif
Pues bien, ahora lo único que tienes que hacer es implementar un ciclo for ya que con un
display solo puedo representar los 10 dígitos del sistema decimal que son: “0, 1, 2, 3, 4, 5,
6, 7, 8, 9”, por tal motivo lo que se pretende es que conforme avance mi contador se
representen cada uno de estos números, pero no solo eso sino que lo haga hasta el
número 99.
Por tal motivo se utilizarán dos displays uno para las unidades y otro para las decenas,
recordando que las decenas incrementaran cada que se incrementen 10 veces las
unidades.
Para poder encender el display se crea un arreglo el cual contiene los valores de las
patitas en valor hexadecimal a las que se tiene que mandar voltaje quedando como se
muestra en la siguiente tabla, los 1´s representan encendido y los 0´s apagado.
Número Decimal
Código Binario Código Hexadecimal G F E D C B A
0 0 1 1 1 1 1 1 3F 1 0 0 0 0 1 1 0 06 2 1 0 1 1 0 1 1 5B 3 1 0 0 1 1 1 1 4F 4 1 1 0 0 1 1 0 66 5 1 1 0 1 1 0 1 6D 6 1 1 1 1 1 0 1 7D 7 0 0 0 0 1 1 1 07 8 1 1 1 1 1 1 1 7F 9 1 1 0 1 1 1 1 6F
Posición del
Puerto B
RB6 RB5 RB4 RB3 RB2 RB1 RB0
Tabla comparativa de binario y hexadecimal
Las posiciones hexadecimales serán usadas como se mencionó dentro del arreglo para
que al momento que se indique al puerto B cual será la salida se mande valores de 1 o 0
según corresponda en los puertos de salida de RB.
El código fuente de este ejemplo es el siguiente:
#include <16F84.h>
#USE DELAY( CLOCK=4000000)
#FUSES XT,NOWDT
#USE fast_IO (B)
#USE fast_IO (A)
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 56
byte CONST DISPLAY[10] =
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main(void){
byte ud=0,dec=0;
SET_TRIS_B(0x00);
SET_TRIS_A(0x00);
OUTPUT_B(0);
for( ;; ){
for (dec=0;dec<10;dec++){ //Cuenta digito decenas
for (ud=0;ud<10;ud++){
OUTPUT_A(0x02); //cat_D=apagado,cat_U=encendido
OUTPUT_B(DISPLAY[ud]); //Digito unidades
delay_ms(50); //Para evitar parpadeos
if (dec==0) output_a(0x03); //Si decenas=0, cat_D=apagado
else output_a(0x01); //Si decenas>0, cat_D=encendido
OUTPUT_B(DISPLAY[dec]); //Digito decenas
delay_ms(50); //Para evitar parpadeos
}
}
}
}
El diagrama en PROTEUS queda de la siguiente forma:
Contador en PROTEUS©
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 57
El video que lleva por nombre “Grabación del PIC16F84 - Contador Decimal de 0 a 99...!” ubicado en la siguiente liga: http://www.youtube.com/watch?v=7rb2JnrAtHw&feature=youtu.be Se explica dicho proyecto, de igual forma lo puedes encontrar en la sección Para saber más.
Con los ejemplos antes mencionados, puedes resolver gran cantidad de ejercicios y
proyectos, todo depende de tu creatividad e imaginación, así como de lo que desees
resolver o implementar.
Actividad 4. Resolución de un problema de lazo cerrado
El propósito de esta actividad es que identifiques que componentes usarías para resolver el problema dado por tu Facilitador(a) así como explicar la forma en la que lo resolverías, obviamente tendrías que elaborarlo o simularlo para comprobar que funciona correctamente.
1. Ingresa al foro de la actividad y participa sobre la pregunta o situación de apertura.
2. Sustenta tus puntos de vista y retroalimenta a mínimo 2 de tus compañeros(as).
3. Anota lo que consideres importante de cada tipo y considera la conclusión final de tu Facilitador(a).
Autoevaluación
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta
unidad del curso, es necesario que resuelvas la autoevaluación.
Ingresa al Aula para realizar tu actividad. Si tienes alguna duda consúltala con tu
Facilitador(a) para disiparla lo antes posible.
Evidencia de aprendizaje. Simula un problema de lazo cerrado
Esta actividad sirve de simulación y consiste en representar el comportamiento de los
elementos que componen un circuito de lazo cerrado, elabora una propuesta de solución
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 58
de acuerdo (a) a los datos presentados por tu Facilitador(a).
1. Identifica el problema
2. Plantea una solución
3. Simula el problema
4. Demuestra que es viable la implementación como solución.
5. Crea un archivo y elabora un reporte, adjunto los elementos necesarios (gráficos, diagramas, secuencia fotográfica, capturas de pantalla según sea el caso y las indicaciones complementarias de tu Facilitador(a)).
6. Guarda tu simulación con la extensión “DSN” y tu código fuente con la extensión “C”.
7. Envía tu trabajo conjuntando los elementos que lo componen, en una carpeta
comprimida .ZIP con la nomenclatura KARQ2_U3_EA_XXYX, esta contendrá tu código fuente y tu simulación.
*La evidencia será evaluada de acuerdo a su respectiva rúbrica, así que es importante
que la consultes.
Autorreflexiones
Como parte de cada unidad, es importante que ingreses al foro Preguntas de
autorreflexión y leas los cuestionamientos que formuló tu Facilitador(a), ya que a partir de
ellos debes elaborar tu Autorreflexión y enviarla mediante la herramienta Autorreflexiones.
No olvides que también se toman en cuenta para la calificación final.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 59
Cierre de la unidad
Diagrama de un PIC16F84. Consultado en: http://xurl.es/gf9ux
Con este diagrama se concluye y da por terminada la tercera y última unidad de esta
asignatura. La finalidad de este diagrama es que puedas detectar todo lo visto desde la
primera unidad, ya que has podido observar elementos básicos de un microprocesador
como la ALU, la unidad de Control, los diferentes tipos de Buses, así como el
funcionamiento de algunos elementos que son de suma importancia que conocieras.
Se explicó la diferencia entre microcontrolador y microprocesador, aclarando muchas
dudas y definiendo así que un microcontrolador puede contener uno o más
microprocesadores internos, o en su caso los mismos elementos que conforman un
microprocesador como son la ALU, la Unidad de Control, los Buses, entre otros.
También se explicó de manera general la arquitectura de los microcontroladores
enfocándose a la familia de los PIC que es propia de la empresa Microchip, mostrando
que en su mayoría están elaborados de la misma manera y con la misma arquitectura.
Además dándose a conocer que la familia de los PIC es enorme y están elaborados para
diferentes necesidades y problemas, además de que tienen un costo realmente bajo en el
mercado, por tal motivo su gran crecimiento y aceptación.
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 60
Posteriormente se dan a conocer las diferentes instrucciones con las que cuenta el PIC
así como algunas instrucciones del Lenguaje Ensamblador que sirven para poder
programar un PIC, así como mostrando una comparación entre el lenguaje ensamblador y
el lenguaje C, demostrando que es mucho más fácil de manejar incluso para realizar
operaciones aritméticas como sumas, restas, entre otras. De igual forma se explicó la
importancia de algunos elementos del PIC como los temporizadores y el papel
fundamental que desempeña así como los puertos con los que cuenta el PIC16F84.
Se muestran algunos ejemplos apoyados de videos para su mayor comprensión y
entendimiento, con este material proporcionado serás capaz de crear aplicaciones
básicas y sencillas que puedes implementar en algún proyecto que se te presente en tu
vida profesional.
En la sección Para saber más, se agregan algunos videos y artículos publicados que te
ayudarán a reforzar algunos temas vistos, así como el uso del simulador PROTEUS, entre
otros datos que pueden resultar de tu interés.
Para saber más
Estos artículos proporcionan información respecto a las especificaciones
generales de las diferentes gamas de PIC como aspectos de rendimiento,
escalabilidad, soporte global, puntos clave, algunas herramientas de desarrollo
que son compatibles con cada modelo diferente, el tipo de control de señal, entre
otras cosas.
http://ww1.microchip.com/downloads/en/DeviceDoc/30009630j.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/01032l.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/39904m.pdf
En este artículo encontrarás toda la información relacionada con el PIC16F84,
como lo son sus características de voltaje, arquitectura, puertos de entrada y/o
salida, tipos de instrucciones.
http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf
En este video que lleva por nombre: “Programador de PIC USB anticorto
programando PIC16F84…” se muestra como se usa un grabador, así como sus
ventajas de uso.
http://www.youtube.com/watch?v=9YLn2q38JSg&feature=player_embedded
En los siguientes videos que llevan por nombre “Pasos para grabar un PIC16F84”
y “Grabación del PIC16F84 de manera física” se muestra información de manera
muy resumida y de manera general de cómo se graba un microcontrolador de
manera física y las herramientas que se usan para su grabación.
http://www.youtube.com/watch?v=CYVZdq_pVqc&feature=youtu.be
http://www.youtube.com/watch?v=ARQiw8xgKek&feature=youtu.be
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 61
En el video que se titula “Grabación del PIC16F84 de manera Simulada – Parte 1”,
en el cual se menciona el proceso de creación de un proyecto de manera simulada
con el uso de PROTEUS y PCW, esta información te será de gran utilidad para
entender rápidamente los pasos de grabación de un PIC de manera modelada.
http://www.youtube.com/watch?v=bY-KDoCe8Jg&feature=youtu.be
En el video que se titula “Tutorial de ISIS proteus” se explica de una manera breve
y clara la forma en la cual se hace uso del simulador proteus con un pequeño
ejemplo para que se entienda la forma de trabajar en dicho simulador.
http://www.youtube.com/watch?v=jsb75ms0zRU
En el capítulo 3 del libro “Compilador C CCS y simulador PROTEUS para
Microcontroladores PIC” se explica a detalle la forma en que se configuran los
puertos A y B del PIC16F84 y como se usan en caso de que se pretendan usar
como entrada o salida. Su ISBN y editorial lo encuentras en las fuentes
complementarias.
En el siguiente video que lleva por nombre: “Grabación del PIC16F84 - Encender
un Led...!” Se explica el ejemplo 1 de esta unidad, en él se muestra cómo usar el
simulador PROTEUS y la elaboración del Código fuente para nuestro PIC, además
de que es más visible el proceso de creación de un ejercicio.
http://www.youtube.com/watch?v=rdL-nCeW-Ho&feature=youtu.be
En el video que tiene por nombre “Grabación del PIC16F84 - Encender un Led al
presionar un botón...!” se explica y se muestra como se utiliza el puerto A para
poder recibir un valor y este se vea reflejado en el puerto B.
http://www.youtube.com/watch?v=zwa1wYYZ--c&feature=youtu.be
El video titulado “Grabación del PIC16F84 - Luces de Discoteca...!” muestra breve
y detalladamente el funcionamiento del código fuente así como la forma de simular
el problema en el simulador PROTEUS.
http://www.youtube.com/watch?v=ZmFlugYsPPI&feature=youtu.be
En el siguiente video que lleva por nombre “Grabación del PIC16F84 - Semáforo
sencillo...!” se explica y se muestra la lógica a utilizar y se explica el código fuente
para resolver el problema de la implementación de un semáforo sencillo así como
su simulación dentro PROTEUS.
http://www.youtube.com/watch?v=sK9pwiIcOr8&feature=youtu.be
En el video que se titula: “Grabación del PIC16F84 - Contador Decimal de 0 a
99...!” se explica de una manera concreta pero muy entendible el uso de la lógica
para dar solución a este proyecto, de igual forma se muestra el código fuente y el
uso de cada instrucción y finalmente el proyecto simulado en PROTEUS.
http://www.youtube.com/watch?v=7rb2JnrAtHw&feature=youtu.be
Con la intensión de promover otros puntos de vista y áreas de oportunidad se
presentan estos vínculos relacionados con un hardware de fuente abierta y las
posibilidades de aplicación, las dos son pláticas introductorias:
http://medialab-prado.es/article/documental_arduino
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 62
Plática de uno de sus desarrolladores, Massimo banzi:
http://www.ted.com/talks/lang/es/massimo_banzi_how_arduino_is_open_sourcing_
imagination.html
Fuentes de consulta
Fuentes básicas
Angulo, U, J. Ma. (2003). Microcontroladores PIC, Diseño práctico de aplicaciones.
Primera parte. Tercera edición. México: Mc Graw Hill.
ISBN: 8448137884
Reyes, C. A. (2008). Microcontroladores PIC, programación en BASIC. Volumen 1.
Tercera Edición. Ecuador: RISPERGRAF. ISBN: 9789978450048
Stallings, W. (2007). Organización y arquitectura de computadores. Séptima
edición. México: Prentice Hall.
ISBN: 9788420529936
Fuentes complementarias
Hayes, J. (1998). Architecture and Organization. New York:. McGraw-Hill
ISBN-13: 9780072861983
Deitel, H. (2004). Cómo programar en C/C++ y Java. Cuarta Edición. México:
Pearson Prentice Hall.
ISBN: 9702605318
García, B, E, (2009). Compilador C CCS y Simulador Proteus para
Microcontroladores PIC. Segunda edición. Barcelona: Marcombo.
ISBN: 9788426718648
Fuentes electrónicas
Alegsa. (2013). Diccionario de Informática. Santa Fe. 25-07-2013. Consultado:
http://www.alegsa.com.ar/Diccionario/C/5172.php
Alegsa. (2013). Diccionario de Informática. Santa Fe. 25-07-2013. Consultado:
http://www.alegsa.com.ar/Dic/arquitectura%20harvard.php
Alegsa. (2013). Diccionario de Informática. Santa Fe. 25-07-2013. Consultado:
http://www.alegsa.com.ar/Dic/conversor%20analogico-digital.php
Construmática. (2013). Construmática, Arquitectura, Ingeniería y Construcción.
España. 25-07-2013. Consultado:
http://www.construmatica.com/construpedia/Temporizador
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 63
Iborra. A. (2002). Introducción a los microprocesadores y microcontroladores.
Universidad de Sonora. México. Consultado:
http://paginas.fisica.uson.mx/horacio.munguia/aula_virtual/Recursos/Introduccion%
20PIC16f84.pdf
Malpica. N. (2013). Electrónica Digital. Universidad Rey Juan Carlos. Madrid.
España. Consultado:
http://www.cartagena99.com/recursos/electronica/apuntes/Electronica_conversion
_AD_DA.pdf
Medialab-Prado (2011). Presentación de Arduino: The Documentary (2010). 16-07-
2013. Consultado en: http://medialab-prado.es/article/documental_arduino
Noriega, Sergio. (2003). Circuitos Generadores de Reloj. Facultad de Ingeniería.
Universidad Nacional de la Plata. Argentina. Consultado:
http://www.ing.unlp.edu.ar/islyd/apgeneradoresdeclock2003.pdf
Rosero, J. A. (2012). Tutorial de ISIS proteus. 16-07-2013- Consultado en:
http://www.youtube.com/watch?v=jsb75ms0zRU
Silva. G. R. (2007). Diferencia entre microprocesador y microcontrolador.
Universidad Autónoma de Nayarit. Nayarit. Consultado:
http://www.fv.uan.edu.mx/file.php/77/tema1/Primera_sesion.pdf
Ted Conversations (2012). Massimo Banzi: Arduino da código abierto a la
imaginación. 15/07/2013. Consultada en:
http://www.ted.com/talks/lang/es/massimo_banzi_how_arduino_is_open_sourcing_
imagination.html
UNC. (2013). Universidad Nacional de Colombia. Colombia. 25-07-2013.
Consultado:
http://www.virtual.unal.edu.co/cursos/ingenieria/2000477/lecciones/100301.htm
Top Related