Anda di halaman 1dari 64

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Ciencias Exactas Ingeniería y Tecnología | Ingeniería en Telemática


Arquitectura de computadoras II
Unidad 3. Microcontroladores

Í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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 1


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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,

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 2


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 3


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 4


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 5


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 6


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 7


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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. En un estero. Consultada en:


Consultada en: http://xurl.es/ja9rx 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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 8


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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 El microcontrolador es un


microprocesador. La disponibilidad de los buses en el sistema cerrado. Todas las
exterior permite que se configure a la medida de la partes del computador están
aplicació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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 9


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 10


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 11


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 12


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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).

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 13


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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).

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 14


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 15


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 16


Arquitectura de computadoras II
Unidad 3. Microcontroladores

 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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 17


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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 MEMORIA FRECUENCIA LINEAS TEMPORIZADORES PATITAS


PROGRAMA DATOS MAXIMA e/s
(x12 bits) (bites)
EPROM ROM
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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 18


Arquitectura de computadoras II
Unidad 3. Microcontroladores

PIC16CR54A 512 25 20 MHz 12 TMRO + WDT 18


PIC16C55 512 24 20 MHz 20 TMRO + WDT 28
PIC16C56 1K 25 20 MHz 12 TMRO + WDT 18
PIC16C57 2K 72 20 MHz 20 TMRO + WDT 28
PIC16C57B 2K 72 20 MHz 20 TMRO + WDT 28
PIC16C5A 2K 73 20 MHz 12 TMRO + WDT 18
PIC16CR58A 2K 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 MEMORI REGISTROS TEMP INTERRUPCIONE E/S RANGO PATITA


PROGRAM A DATOS ESPECIFIC ORIZA S VOLTAJ S
A RA EP OS DORE E
M RO S
OM
PIC16C84 1Kx14 36 64 11 TMRO 4 13 2-6 18
EEPROM +
WDT
PIC16F84 1Kx14 68 64 11 TMRO 4 13 2-6 18
FLASH +
WDT
PIC16F83 512x14 36 64 11 TMRO 4 13 2-6 18
FLASH +
WDT
PIC16CR8 1Kx14 68 64 11 TMRO 13 2-6 18
4 ROM +
WDT
PIC16CR8 512x14 36 64 11 TMRO 4 13 2-6 18
3 ROM +
WDT
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 MEMOR MEMO REGIST TEMPORIZA C P C INTERRUPC E/ MULTIPLIC PATI


LO IA RIA ROS DORES AP W A IONES S ADOR TAS
PROGR DATO ESPECIF M D HARDWAR
AMA S ICOS 10 E

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 19


Arquitectura de computadoras II
Unidad 3. Microcontroladores

RAM bit
PIC17 2Kx16 232 48 4+WDT 2 2 11 3 8x8 40/44
C42A 3
PIC17 4Kx16 454 48 4+WDT 2 2 11 3 8x8 40/44
C43 3
PIC17 8Kx16 454 48 4+WDT 2 2 11 3 8x8 40/44
C44 3
PIC17 8Kx16 454 76 4+WDT 4 3 1 18 5 8x8 64/68
C752 0
2
PIC17 16Kx16 902 76 4+WDT 4 3 1 18 5 8x8 64/68
C756 0
2
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.

Memoria
Frec.

PATITAS
Memoria (Bytes)
ADC Maxi
Modelo PROGRAM DATOS Temporizadores Interrupciones E/S
Canales ma
A (Bytes) EPROO (MHz)
RAM
M
PIC18C24 16K
512 - 4 16 23 5 40 28
2 EEPROM
PIC18F24 16K
2 FLASH
768 256 4 16 23 5 40 28
PIC18F25 32K 153
2 FLASH 6
256 4 16 23 5 40 28
PIC18F44 16K
2 FLASH
768 256 4 16 34 8 40 40
PIC18F45 32K 153
2 FLASH 6
256 4 16 34 8 40 40
PIC18F66 64K 384
20 FLASH 0
1024 4 16 52 12 25 64
PIC18F87 128K 384
20 FLASH 0
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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 20


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 21


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 22


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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)
Selección de destino del resultado de la instrucción, puede ser “0” o “1”, si
D 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 Descripción Descripción
Instrucción Simbólica

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 23


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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 Decrementa f y se salta la siguiente
salta) 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 Incrementa f y se salta la siguiente
salta) 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 Rota el registro f hacia la izquierda a
CARRY -> D 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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 24


Arquitectura de computadoras II
Unidad 3. Microcontroladores

15 RRF F, D Rota F dcha. a través Lo mismo que RLF pero hacia la


de CARRY -> D 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 Intercambia los 4 primeros bit de f por
F -> D 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 Descripción
Instrucció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 Descripción Descripción
Instrucción Simbólica
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 Borra el registro Watchdog
del WDT
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 Instrucción para volver de la interrupción
interrupción

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 25


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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 Vuelve de una subrutina.
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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 26


Arquitectura de computadoras II
Unidad 3. Microcontroladores

 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=4
34&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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 27


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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:

.model small
.stack
.data
valor db ?
.code
.startup
mov ah, 01h ;Leer carácter desde el teclado
int 21h ;Lee primer carácter

Lenguaje sub al, 30h ;Resto 30H (48Dec) para obtener el numero
Ensamblador 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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 28


Arquitectura de computadoras II
Unidad 3. Microcontroladores

.exit
End

#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

Lenguaje C 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:

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 29


Arquitectura de computadoras II
Unidad 3. Microcontroladores

 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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 30


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 31


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 32


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 33


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 34


Arquitectura de computadoras II
Unidad 3. Microcontroladores

de datos desde un origen a un destino


Transfiere una palabra desde el
Store (memorizar)
procesador a memoria
Transfiere una palabra desde
Load (cargar o captar)
memoria al procesador
Intercambia los contenidos del origen
Exchange (intercambiar)
al destino
Transfiere una palabra de ceros al
Clear (reiniciar o poner a 0)
destino
Transfiere una palabra de unos al
Set (poner a 1)
destino
Push (introducir en la pila, Transfiere una palabra desde un
“apilar”) origen a la cabecera de la pila
Pop (extraer de la pila, Transfiere una palabra desde la
“desapilar”) cabecera de la pila a un destino
Add (sumar) Calcula la suma de dos operandos
Calcula la diferencia de dos
Substract (restar)
operandos
Calcula el producto de dos
Multiply ( multiplicar)
operandos
Aritméticas Divide (dividir) Calcula el cociente de dos operandos
Sustituye el operando por su valor
Absolute (valor absoluto)
absoluto
Negate (opuesto) Cambia el signo del operando
Increment (incrementar) Suma 1 al operando
Decrement (decrementar) Resta 1 del operando
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)
Realiza el complemento (NOT) bit a
NOT (Complemento)
bit del dato
Realiza la operación lógica O-
Exclusive-OR (OR-Exclusiva)
Exclusiva (XOR)
Comprueba la condición
Test (comprobar) especificada, fija los indicadores
Lógicas
(flags) en función del resultado
Realiza la comparación lógica o
aritmética de dos o más operandos;
Compare (comparar)
fija los indicadores (flags) en función
del resultado
Instrucciones que fijan controles para
Set control variables (fijar
protección, gestión de interrupciones,
variables de control)
control de temporizador, etc.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 35


Arquitectura de computadoras II
Unidad 3. Microcontroladores

Desplaza el operando a la izquierda


Shift (desplazamiento) (derecha), introduciendo valores
constantes por el otro extremo.
Desplaza el operando a la izquierda
Rotate (rotar)
(derecha) de forma cíclica
Ruptura incondicional de flujo; carga
Jump (bifurcación o salto)
el PC con la dirección especificada.
Comprueba la condición
Jump condicional (salto especificada; dependiendo de la
condicional) condición, o carga el PC con la
dirección indicada, o no hace nada
Guarda la información de control del
Jump to subrutina (Llamada a
programa en una posición conocida y
subrutina)
salta a la dirección indicada
Sustituye el contenido del PC y de
Return (retorno) otros registros por los de la posición
conocida
Capta el operando de la dirección
Control de Execute (ejecutar) indicada y lo ejecuta como una
flujo instrucción, no modifica el PC
Incrementa el PC de manera que se
Skip (salto implícito)
salte la instrucción siguiente
Comprueba la condición indicada,
Skip conditional (salto implícito
realiza el salto implícito o no hace
condicional)
nada, dependiendo de la condición
Halt (parar) Define la ejecución del programa
Detiene la ejecución del programa;
comprueba de forma repetitiva la
Wait (esperar) condición especificada; reanuda la
ejecución cuando se satisface la
condición
No se ejecuta operación alguna, pero
No operation (no operación)
la ejecución del programa continua
Transfiere datos desde un ´puerto o
dispositivo de E/S al destino
Input (entrada)
(memoria principal o registro del
procesador)
Entrada/Salida Transfiere datos desde el origen
Output (salida) especificado a un puerto o dispositivo
de E/S
Transfiere instrucciones al
Start I/O (iniciar E/S)
procesador de E/S para iniciar

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 36


Arquitectura de computadoras II
Unidad 3. Microcontroladores

operaciones de E/S
Transfiere información de estado
Test I/O (comprobar E/S) desde el sistema de E/S al destino
especificado
Traducción de los valores de una
Translate (traducir) sección de memoria, basado en una
tabla de correspondencia
Conversión Convierte el contenido de una
palabra de un formato a otro (por
Convert (convertir)
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)

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 37


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 38


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 39


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 40


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 41


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 42


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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:

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 43


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 44


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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:

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 45


Arquitectura de computadoras II
Unidad 3. Microcontroladores

Calculadora. Consultado en:


Letrero luminoso. Consultado en: http://xurl.es/p1ur3
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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 46


Arquitectura de computadoras II
Unidad 3. Microcontroladores

LabView ©. Consultado en: PIC Basic ©


http://www.ni.com/trylabview/esa/

PIC C Compiler (PCW)© PROTEUS ©. Consultado en:


http://www.subirimagenes.net/pictures/5d77d417927
7b9ad443e2e8d622f93be.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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 47


Arquitectura de computadoras II
Unidad 3. Microcontroladores

} //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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 48


Arquitectura de computadoras II
Unidad 3. Microcontroladores

#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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 49


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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);

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 50


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 51


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 52


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 53


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 54


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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 Código Binario Código


Decimal G F E D C B A Hexadecimal
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 RB6 RB5 RB4 RB3 RB2 RB1 RB0
del
Puerto B
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)

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 55


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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©

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 56


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 57


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 58


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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.

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 59


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 60


Arquitectura de computadoras II
Unidad 3. Microcontroladores

 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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 61


Arquitectura de computadoras II
Unidad 3. Microcontroladores

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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 62


Arquitectura de computadoras II
Unidad 3. Microcontroladores

 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

Ciencias Exactas, Ingeniería y Tecnología | Ingeniería en Telemática 63

Anda mungkin juga menyukai