Unidad 3. Microcontroladores

64
Arquitectura de computadoras II Unidad 3. Microcontroladores Ciencias Exactas Ingeniería y Tecnología | Ingeniería en Telemática Ingeniería en Telemática Programa de la asignatura: Arquitectura de computadoras II Unidad 3. Microcontroladores Clave: 210930830 Universidad Abierta y a Distancia de México

Transcript of Unidad 3. Microcontroladores

Page 1: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Ingeniería en Telemática

Programa de la asignatura:

Arquitectura de computadoras II

Unidad 3. Microcontroladores

Clave:

210930830

Universidad Abierta y a Distancia de México

Page 2: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Índice

Unidad 3. Microcontroladores ............................................................................................ 2

Presentación de la unidad ................................................................................................. 2

Propósitos .......................................................................................................................... 5

Competencia específica ..................................................................................................... 5

3.1. Organización del microcontrolador .............................................................................. 6

3.1.1. Diferencia entre microprocesador y microcontrolador ....................................... 9

3.1.2. Arquitectura interna ......................................................................................... 11

3.1.3. La familia de los PIC ....................................................................................... 16

Actividad 1. Caracterizando a los microcontroladores ...................................................... 22

3.2. Conjunto de instrucciones y lenguajes ...................................................................... 23

3.2.1. Características de las instrucciones máquina ................................................. 29

3.2.2. Tipos de operandos y operaciones ................................................................. 32

3.2.3. Lenguaje Ensamblador ................................................................................... 37

Actividad 2. Instrucciones básicas del lenguaje ensamblador .......................................... 39

3.3. Características y uso de elementos del microcontrolador (puertos, temporizadores,

convertidores) .................................................................................................................. 40

3.3.1. Puertos ........................................................................................................... 41

3.3.2. Temporizadores .............................................................................................. 42

3.3.3. Convertidores ................................................................................................. 43

Actividad 3. Elementos del microcontrolador ................................................................... 44

3.4. Aplicaciones de los microcontroladores .................................................................... 45

3.4.1. Ejemplos usando el PIC16F84 ........................................................................ 46

3.4.2. Proyectos usando el PIC16F84 ....................................................................... 52

Actividad 4. Resolución de un problema de lazo cerrado ................................................. 57

Autoevaluación ................................................................................................................ 57

Evidencia de aprendizaje. Simula un problema de lazo cerrado ...................................... 57

Autorreflexiones ............................................................................................................... 58

Cierre de la unidad .......................................................................................................... 59

Para saber más ............................................................................................................... 60

Fuentes de consulta ........................................................................................................ 62

Page 3: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Unidad 3. Microcontroladores

Presentación de la unidad

Los microcontroladores están conquistando el mundo, los puedes ver presentes, en tu

trabajo, en tu casa, y en tu vida en general. Los puedes encontrar controlando el

funcionamiento de los ratones y teclados de las computadoras, los teléfonos, hornos de

microondas, y en los televisores de tu hogar.

Aplicación real de un microcontrolador. Consultada en:

http://farm1.static.flickr.com/129/355592517_e7796d5ec4.jpg

Aprender a manejar y aplicar microcontroladores solo se consigue desarrollando

prácticamente diseños reales. Sucede lo mismo que si quisieras usar cualquier

instrumento musical, o practicar algún deporte y con muchas otras actividades.

El objetivo principal de esta unidad es facilitar el camino para aprender a usar los

microcontroladores, por tal motivo se proporcionan algunos ejemplos básicos que te

permitirán confeccionar y simular algunos proyectos reales.

Para poder lograr este objetivo se seleccionó un modelo concreto que es el PIC16F84 de

la familia de los microcontroladores Microchip Technology Inc. La razón por la cual se

escogió este microcontrolador es porque es sencillo, moderno, rápido, barato y en él se

pueden escribir los programas y borrarlos montones de veces, existe mucha

documentación, y las herramientas de desarrollo son accesibles para todos los bolsillos.

En el mundo se pueden encontrar millones de aplicaciones realizadas con el PIC16F84,

Page 4: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

como por ejemplo, llevar el control de un taxímetro el cual indica el total a pagar de

acuerdo a una distancia o tiempo, también el sensor de temperatura de algún aire

acondicionado o calefactor, el cual si llega a una temperatura deseada se apaga

automáticamente y si cambia esa temperatura se vuelve a encender, entre otras

aplicaciones.

En esta unidad se pretende estudiar teórica y prácticamente al PIC16F84 por tal motivo se

intenta ofrecer la información necesaria dentro de cada tema.

En el tema 3.1. se describen las características de generales del hardware que envuelven

a los microcontroladores en general para que posteriormente te adentres en la familia de

los PIC y toda la gama de microcontroladores existentes, llegando así a los PIC16F84.

En el tema 3.2. se presenta todo el material necesario y preciso para conocer, manejar y

programar el PIC16F84, así como una pequeña introducción del lenguaje que se utiliza

para la programación de los PIC, dicha información se hace considerando desde un nivel

básico hasta un nivel intermedio de Electrónica, por tal motivo se muestra un camino

sencillo y apropiado.

En el tema 3.3. se describen los recursos fundamentales como puertos, temporizadores,

puertas de E/S (Entrada/Salida o I/O), así como su uso.

En el tema 3.4. se te enseña cómo programar algunas aplicaciones básicas y se muestran

algunas herramientas más comunes para el uso de los microcontroladores y la

implementación de proyectos. También se mostrará como programar las aplicaciones de

forma clara y progresiva.

PIC16F84. Tomada de: http://xurl.es/m83y4

Page 5: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Como complemento a dicha información se proporciona el siguiente mapa denominado

Microcontroladores en el cual se muestra la información organizada brevemente antes

mencionada, de la misma manera, se proporcionan algunos videos al final de esta unidad

que te pueden ser de mucha utilidad así como algunas referencias electrónicas que

puedes consultar para ampliar o disipar dudas o información.

Parte de la información proporcionada es tomada de las documentaciones técnicas de

Microchip (www.microchip.com), de Parallax (www.parallaxinc.com) y de Ingeniería de

Microsistemas Programados, S. L. (www.microcontroladores.com).

Microcontroladores

Page 6: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Propósitos

En esta unidad:

Identificaras la arquitectura de los microcontroladores.

Distinguirás las diferencias entre los PIC

Utilizarás lenguaje de bajo nivel

Diferenciarás cada uno de los elementos básicos del PIC16F84

Simularás problemas reales usando el PIC16F84

Competencia específica

Programar el PIC16F84 para controlar sistemas de lazo cerrado con el uso de algún software de simulación apoyándose en las especificaciones del microcontrolador.

Page 7: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

3.1. Organización del microcontrolador

Como se mencionó en la presentación de esta unidad en este tema se describirán

algunas de las características generales del hardware que componen la organización de

los microcontroladores de manera general para posteriormente adentrarse a la familia de

los PIC y distinguir toda la gama de microcontroladores que están dentro de esta familia.

Para lograr esto surge una pregunta muy importante que se tiene que definir para que se

entienda mucho mejor esta unidad, la pregunta es ¿qué es un microcontrolador?, muchos

de nosotros conocemos una PC por lo menos en apariencia, usualmente tiene un teclado,

monitor, CPU (Unidad de Procesamiento Central), impresora y mouse entre otros

dispositivos. Este tipo de computadoras o PC son diseñadas principalmente para

comunicarse con los humanos y para que el humano haga uso de ellas.

Manejo de bases de datos, análisis financieros o incluso procesadores de textos, se

encuentran todos dentro de la “gran caja”, que contiene un CPU, la memoria, el disco

duro, etc. El verdadero “cómputo”, sin embargo todo esto tiene lugar dentro de la CPU. Si

se había pensado que el único propósito del monitor, teclado, mouse e incluso la

impresora, es “conectar” a la CPU con el mundo exterior.

¿Pero sabías que hay computadoras alrededor de nosotros, corriendo programas y

haciendo cálculos silenciosamente sin interactuar con ningún humano? Estas

computadoras están en nuestros autos, en un transbordador espacial, en un juguete, e

incluso puede haber alguno en un secador de pelo.

A estos dispositivos se les llama microcontroladores. Micro porque son pequeños y

controladores porque controlan máquinas o incluso otros controladores

Page 8: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Microcontrolador PIC13F8720. Consultada en: http://xurl.es/qa121

Un microcontrolador es un circuito integrado programable que contiene todos los

componentes de una computadora, se emplean para controlar el funcionamiento de una

tarea determinada, gracias a su reducido tamaño suele ser incorporado en el propio

dispositivo al que gobierna (Reyes, 2008).

El microcontrolador es una computadora dedicada. Dentro de la memoria solo se

almacena un programa destinado a gobernar una aplicación determinada; sus líneas de

entrada y salida soportan el conexionado de los sensores y actuadores (dispositivos

capaces de transformar energía en la activación de un proceso) del dispositivo a controlar,

y todos los recursos complementarios disponibles tienen una única finalidad atender sus

requerimientos. Una vez que este se programó y configuro, solo sirve para gobernar la

tarea asignada (Reyes, 2008).

Un microcontrolador es un computador completo, aunque de limitadas prestaciones, que

está contenido en el chip de un circuito integrado y se destina a gobernar una sola tarea

(Angulo, 2003).

En la actualidad el número de productos que funcionan en base a uno o varios

microcontroladores aumenta de forma exponencial. Y no sería aventurado pronosticar que

a mediados de este siglo habrá pocos elementos que carezcan de un microcontrolador.

Los electrodomésticos de línea blanca (lavadoras, hornos, lavavajillas, etc.) y de línea

marrón (televisores, videos, aparatos musicales, etc.) incorporan numerosos

microcontroladores, al igual que los sistemas de supervisión, vigilancia y alarma en los

Page 9: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

edificios utilizan estos chips. También son empleados para optimizar el rendimiento de

ascensores, calefacción, aire acondicionado, alarmas de incendio, robo, etc.

Microcontrolador en un elevador.

Consultada en: http://xurl.es/ja9rx

En un estero. Consultada en:

http://xurl.es/sstr6

En una lavadora. Consultada en:

http://xurl.es/xv8qi En un sensor de temperatura. Consultada

en: http://xurl.es/7kusl

Usos de un Microcontrolador

Una importante industria consumidora de microcontroladores es la de automoción, que los

aplica en el control de aspectos tan populares como la climatización, la seguridad y los

frenos ABS.

Page 10: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

3.1.1. Diferencia entre microprocesador y microcontrolador

En las unidades anteriores se habló acerca del microprocesador y multiprocesamiento,

pero ¿cuál es la idea de hablar de ellos y luego del microcontrolador?.

Recuerda que el microprocesador es un circuito integrado que contiene la Unidad de

Procesamiento Central (CPU), también llamada procesador. También se encuentra la

Unidad de Control, que se encarga de interpretar las instrucciones y la Unidad Aritmético

Lógica (ALU). Las patas del microprocesador sirven como salida al exterior de las líneas

de los buses de dirección, datos y control, para así permitir conectar con la Memoria y los

módulos de Entrada/Salida. Se dice que un microprocesador es un sistema abierto porque

su configuración es variable de acuerdo con la aplicación a la que se destine.

Ahora bien, ¿cuál es la diferencia entre ambos? En las siguientes imágenes se muestra

esta diferencia:

Estructura de un sistema abierto basado en un microprocesador. La disponibilidad de los buses en el

exterior permite que se configure a la medida de la aplicación.

El microcontrolador es un sistema cerrado. Todas las

partes del computador están contenidas en su interior y sólo salen al exterior las líneas que

gobiernan periféricos. Microprocesador como sistema abierto y sistema cerrado. Consultado en Angulo, 2003

“Un microprocesador es un sistema abierto con el que puede construirse una

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

necesarios.

Un microcontrolador es un sistema cerrado que contiene una computadora

completa y de prestaciones limitadas que no se pueden modificar” (Angulo, 2003).

Se puede definir un sistema cerrado como aquel que solo utiliza sus propios recursos. Por

ejemplo una olla a presión que no permita el escape de gases. Y un sistema abierto es

aquel que recibe energía desde el exterior y por ende consta de un flujo continuo que le

permite generar trabajo en forma permanente. Por ejemplo el motor de un auto (necesita

Page 11: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

gasolina), la tierra (necesita de la luz y el calor del Sol), una vela quemándose (Alegsa,

2013).

Las aplicaciones en las cuales puedes encontrar el uso de los microcontroladores es en:

*Electrodomésticos

*Aparatos portátiles y de bolsillo (tarjetas, monederos, teléfonos, etc.)

*Máquinas expendedoras y juguetería

*Industria de automoción

*Control industrial y robótica

*Electromedicina

*Sistema de navegación espacial

*Domótica en general

Aplicaciones en industria de automoción. Consultada en: http://xurl.es/d1579

Una de las diferencias que existe y quizás la más importante entre estos dos dispositivos

es la funcionalidad. Y ¿Por qué la funcionalidad? Porque para que un microprocesador

sea funcional requiere conectarse a una memoria y a dispositivos de entrada y salida

(E/S), como se vio en la Unidad 1 de esta materia. Por ejemplo si piensas en tu

computadora personal o de escritorio, requiere de una tarjeta principal que conoces como

tarjeta madre (motherboard), además de un buen microprocesador, así como una

memoria RAM. Recordando que en la motherboard se tiene un súper circuito integrado

llamado chipset que se encarga principalmente de administrar las funciones de entrada y

salida de los diferentes puertos o ranuras de tu equipo como lo son puerto serial, paralelo,

puerto USB, Ethernet, ranuras ISA, PCI, AGP, etc.

Ahora bien, en un microcontrolador se tienen todas estas capacidades (procesamiento,

almacenamiento de datos, instrucciones, dispositivos de E/S, etc.) dentro de un mismo

dispositivo. No requiere de ningún otro componente para funcionar, por tal motivo se le

Page 12: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

conoce también como una microcomputador, debido a que todo está dentro del mismo

chip.

Lo mencionado anteriormente tiene una gran desventaja en un microcontrolador ya que

debido a que cuenta con todas estas capacidades internamente o en el mismo dispositivo,

se tiene que buscar el dispositivo adecuado para cada tarea, ya que sus especificaciones

varían dentro de las familias de los PIC, esto se verá más adelante.

Una diferencia también muy significativa y muy marcada es la arquitectura entre dichos

dispositivos, en un microprocesador se usar la arquitectura tradicional de Von Neumann, y

en un microcontrolador es la de Harvard que se explicará en la siguiente sección.

3.1.2. Arquitectura interna

Para dar inicio a esta sección recuerda que en la unidad 1, se definió la palabra

arquitectura como la estructura o partes, las cuales forman y/o diseñan cada uno de estos

componentes.

Ahora bien, una vez aclarado el uso de dicha palabra pues se hablará principalmente de

cómo se compone internamente un microcontrolador, que como ya se mencionó, está

basado en la arquitectura Harvard.

Esta arquitectura de computadora separa físicamente el almacenamiento de datos e

instrucciones, el termino se origina de las computadoras Harvard Mark 1, que

almacenaban las instrucciones y los datos en diferentes medios (Alegsa, 2013).

En la siguiente tabla se muestra la diferencia entre la Arquitectura Von Neumann que se

usa en los microprocesadores y la Arquitectura Harvard que se ocupan en los

microcontroladores.

Arquitectura Von Neumann

Page 13: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Arquitectura Harvard

Arquitecturas de microprocesadores y microcontroladores. Consultada en: http://xurl.es/6x1w0

Se puede observar rápidamente en las imágenes como se separan las memorias en la

Arquitectura Harvard y la conexión mediante los Buses. En esta arquitectura se tiene la

Unidad Central de Proceso (CPU) conectada a dos memorias (una de instrucción y otra

de datos) por medio de dos buses diferentes, a diferencia de la de Von Neumann solo se

tiene un bus que une la CPU con las memorias.

En la Arquitectura Harvard una de las memorias contiene solamente las instrucciones del

programa y la otra, solo almacena los datos.

Cada bus es completamente independiente lo que permite que la CPU pueda acceder de

forma independiente y simultánea a la memoria de datos y a la de instrucciones. Esta

situación optimiza el uso de la memoria de manera muy general.

Realmente la comunicación se da de la misma forma que en la de Von Neumann la

diferencia es la forma en que se conectan como se muestra en las imágenes, el

funcionamiento es el mismo. Ahora bien se mencionan las partes que conforman un

microcontrolador.

Recuerda que un microcontrolador posee todos los componentes de una computadora,

pero con características fijas que no pueden ser alteradas.

Las partes principales de un microcontrolador según (Angulo, 2003) son:

1.- Procesador

2.- Memoria no volátil para contener el programa

3.- Memoria de lectura y escritura para guardar los datos

4.- Líneas de Entrada y Salida para los controladores de periféricos

5.- Recursos auxiliares

1. El Procesador (Angulo, 2003)

La necesidad de conseguir elevados rendimientos en el procesamiento de las

instrucciones ha desembocado en el empleo generalizado de procesadores de

arquitectura Harvard.

Page 14: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

En esta arquitectura son independientes la memoria de instrucciones y la memoria de

datos y cada una dispone de su propio sistema de buses para el acceso. El procesador de

los modernos microcontroladores responde a la arquitectura RISC (Computadoras de

Juego de Instrucciones Reducido), que se identifica por poseer un repertorio de

instrucciones máquina pequeño y simple, de forma que la mayor parte de las

instrucciones se ejecuta en un ciclo de instrucción.

Relación del Procesador con la memoria en la Arquitectura Harvard. Consultada en (Angulo, 2003)

2. Memoria de programa (Angulo, 2003)

El microcontrolador se diseñó para que en una de sus memorias se almacenen las

instrucciones del programa de control. Esta es la memoria de programa. Como los

programas a ejecutar siempre son los mismos esta información se guarda o graba de

forma permanente. Esto se puede hacer posible gracias a cinco versiones diferentes de

memoria:

Versión 1. ROM con máscara: En este tipo de memoria el programa se graba en el

chip durante el proceso de su fabricación (UNC, 2013).

Versión 2. EPROM: La grabación de esta memoria se realiza mediante un dispositivo

físico gobernado desde una computadora personal, el cual recibe el nombre de

grabador (UNC, 2013).

Versión 3. OTP (Programable una vez): Este modelo de memoria sólo se puede

grabar una vez por parte del usuario, utilizando el mismo procedimiento que con la

memoria EPROM. Posteriormente no se puede borrar (UNC, 2013).

Versión 4. EEPROM: La grabación es similar a las memorias OTP y EPROM, pero el

borrado es mucho más sencillo al poderse efectuar de la misma forma que el grabado.

Puede ser programada y borrada tantas veces como se quiera (UNC, 2013).

Versión 5. FLASH: Es una memoria no volátil, de bajo consumo, que se puede

escribir y borrar en un circuito al igual que las EEPROM, pero suelen disponer de

mayor capacidad que las EEPROM (UNC, 2013).

Page 15: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

3. Memoria de datos (Angulo, 2003)

Los datos que manejan los programas varían continuamente, esto exige que la memoria

que les contiene, deba ser de lectura y escritura, por lo que la memoria RAM estática

(SRAM) es la más adecuada, aunque sea volátil.

También puede darse el caso de que tenga una memoria no volátil de lectura y escritura,

esta memoria logra que si se da un corte en el suministro de la alimentación no ocasiona

la pérdida de la información, que está disponible al reiniciarse el programa.

4. Líneas de E/S (Angulo, 2003)

Todos los microcontroladores cuentan con diferentes patitas, puedes encontrar de 8

pines, 18 pines, etc. Pero al final solo dos patitas o pines están destinados a recibir

alimentación (Corriente eléctrica), otras dos patitas son para el cristal de cuarzo que es el

que regula la frecuencia de trabajo, una patita mas es para provocar el Reset, el resto de

las patitas es para soportar la comunicación con los periféricos externos que serán

controlados.

5. Recursos auxiliares (Angulo, 2003)

Cada modelo de microcontrolador incorpora una diversidad de complementos que

refuerzan la potencia y la flexibilidad del dispositivo. Los recursos más comunes son:

1. Circuito de Reloj. Es el encargado de generar los impulsos que sincronizan el

funcionamiento de todo el sistema para realizar tareas como transferencia de

datos, control de procesos, etc. Dichos circuitos son en esencia osciladores que

proveen una señal generalmente denominada CLOCK (reloj) (Noriega, 2003).

Ejemplo de circuito oscilador. Consultado en (Noriega, 2003)

2. Temporizadores. Orientados a controlar tiempos. Es un dispositivo mediante el

cual se puede regular la conexión o desconexión a un circuito eléctrico durante un

tiempo determinado (Construmática, 2013).

Page 16: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Tipo de temporizador. Consultado en: http://xurl.es/1xjy4

3. Perro Guardián (watchdog). Es el destinado a provocar una reinicialización cuando

el programa queda bloqueado. Permite reiniciar el microcontrolador (Silva, 2007).

4. Conversores AD (Analógico a Digital) y DA (Digital a Analógico). Son para poder

recibir y enviar señales analógicas (Malpica, 2013).

Conversores. Consultado en (Malpica, 2013)

5. Comparadores analógicos. Se usan para verificar el valor de una señal analógica.

De esta forma se da a conocer la arquitectura que se usa en los microcontroladores y los

diferentes componentes que encuentras dentro de cada uno. Este tema no se profundiza

ya que como se mencionó anteriormente lo único que cambia en esta arquitectura es la

forma en que se conecta la CPU (Unidad de Procesamiento Central) y en cuantos buses

se usan. Pero los funcionamientos son los mismos.

También se mostró y explico muy brevemente las partes que forman los

microcontroladores, más adelante estudiarás su funcionamiento con algunos ejemplos

que se implementarían.

Page 17: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

3.1.3. La familia de los PIC

Antes de conocer esta gran familia de microcontroladores, es muy importante que sepas

que no son los únicos tipos de microcontroladores que existen en el mercado, pero sí los

más usados en el área académica debido a su bajo costo y gran rendimiento comparados

con otros. Dentro de la gran variedad de microcontroladores existen los que procesan

datos de 4, 6, 8 y 32 bits, sin embargo, el más representativo y popular son los que

procesan 8 bits, a estos pertenecen los PIC.

En la siguiente tabla se muestran algunas marcas y algunos de los diferentes modelos

que fabrican:

Fabricante Modelos de Microcontroladores (µC)

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

MOTOROLA 6805, 68HC11, 68HC12, 68HC16, 683XX

HITACHI HD64180

PHILIPS Gama completa de clónicos del 8051

SGS-THOMSON (ST) ST-62XX

MICROCHIP PIC

NATIONAL SEMICONDUCTOR COP8

ZILOG Z8, Z80

TEXAS INSTRUMENTS TMS370

TOSHIBA TLCS-870

INFINEON C500

DALLAS DS5000

NEC 78K

Tabla de fabricantes. Consultada en: Iborra, 2002

En este caso se hablará de los PIC (Programable Integrated Circuit o Circuito Integrado

Programable) ya que son los han tenido mayor aceptación en la comunidad de técnicos y

aficionados que trabajan con microcontroladores. Pero, ¿Cuál es la razón de esta gran

aceptación?

Según Angulo, (2003), esta aceptación se debe a que cuenta con algunos detalles que a

los profesionistas o especialistas los vuelve locos, y son los siguientes:

Sencillez de manejo

Page 18: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Buena información

Precio

Buen promedio de parámetros: velocidad, consumo, tamaño, alimentación, código

compacto, etc.

Herramientas de desarrollo fáciles y baratas

Diseño rápido

Disponibilidad inmediata

Compatibilidad del software en todos los modelos de la misma gama

Otras características que deslumbran a los profesionales de la Microelectrónica y

Microinformática son:

Su costo es comparativamente inferior al de los competidores

Poseen una elevada velocidad de funcionamiento

Tienen un juego reducido de instrucciones; 35 en la gama media.

Los programas son compactos

Bajo consumo unido a un amplio rango de voltaje de alimentación

Muchas herramientas de software se pueden descargar libremente desde

Microchip (http://www.microchip.com)

Existe una gran variedad de herramientas de hardware que permiten grabar,

depurar, borrar y comprobar el comportamiento de los PIC

La gran variedad de modelos de PIC permite que los usuarios puedan elegir libremente el

que se adapte mejor a sus necesidades o a los requerimientos de la aplicación.

El fabricante de los PIC dispone de un más de un centenar de versiones diferentes y cada

año aumenta considerablemente su lista.

Si deseas conocer toda la familia completa de los PIC que tiene

microchip puedes consultar la siguiente liga en la cual encontrarás

todas las especificaciones de cada uno de estos mostrando 2770

resultados:

http://www.microchip.com/TechDoc.aspx?type=DataSheet

La empresa Microchip dispone de 4 clasificaciones de PIC de acuerdo al uso de bits estos

son:

8-bit PIC MCU

16-bit PIC MCU

16-bit dsPIC DSC

32-bit PIC MCU

Page 19: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Clasificación según los bits. Consultado en:

http://www.microchip.com/pagehandler/en-us/products/picmicrocontrollers

Como se puede observar en la imagen Microchip dispone de cuatro gamas de

microcontroladores de 8 bits, seis gamas de 16 bits y una de 32 bits, disponibles para

cubrir las necesidades de la mayoría de los clientes potenciales.

De la sección Para saber más se sugiere consultes la siguiente

recomendación:

“8-bit PIC Microcontrollers” en el cual se proporciona información

relevante de manera muy general acerca de los PIC de 8 bits.

“16-bit Embedded Control Solutions” en este artículo se proporciona de

la misma forma información de los PIC de 16 bits.

“PIC32 Microcontroller Famillies” que de igual forma proporciona

información de los PIC de 32 bits.

Las gamas son clasificadas de la siguiente manera:

1. Gama baja o básica

Se trata de una serie de PIC de recursos limitados. Sus versiones están encapsuladas

con 18 y 28 patitas y pueden alimentarse a partir de una tensión de 2.5 volts, esto los

hace ideales en las aplicaciones que funcionan con pilas.

MODELO MEMORIA

PROGRAMA

(x12 bits)

EPROM ROM

MEMORIA

DATOS

(bites)

FRECUENCIA

MAXIMA

LINEAS

e/s

TEMPORIZADORES PATITAS

PIC16C52 384 25 4 MHz 4 TMRO + WDT 18

PIC16C54 512 25 20 MHz 12 TMRO + WDT 18

PIC16C54A 512 25 20 MHz 12 TMRO + WDT 18

Page 20: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

PIC16CR54A 512 25 20 MHz 12 TMRO + WDT 18

PIC16C55 512 24 20 MHz 20 TMRO + WDT 28

PIC16C56 1 K 25 20 MHz 12 TMRO + WDT 18

PIC16C57 2 K 72 20 MHz 20 TMRO + WDT 28

PIC16C57B 2 K 72 20 MHz 20 TMRO + WDT 28

PIC16C5A 2 K 73 20 MHz 12 TMRO + WDT 18

PIC16CR58A 2 K 73 20 MHz 12 TMRO + WDT 18

Principales características de algunos modelos de la gama baja. Consultado en (Angulo, 2003).

2. Gama media

Es la gama más variada y completa de los PIC. Abarca modelos con encapsulado desde

18 patitas hasta 68, cubriendo varias opciones que integran abundantes periféricos.

Dentro de esta gama se encuentra el PIC16F84, que es el modelo con el que trabajarás al

final de la unidad. Esta gama a su vez se puede separar en diferentes subfamilias. El

repertorio de instrucciones es de 35 a 14 bits cada instrucción.

MODELO MEMORIA

PROGRAM

A

MEMORI

A DATOS

REGISTROS

ESPECIFIC

OS

TEMP

ORIZA

DORE

S

INTERRUPCIONE

S

E/S RANGO

VOLTAJ

E

PATITA

S

RA

M

EP

RO

OM

PIC16C84 1Kx14

EEPROM

36 64 11 TMRO

+

WDT

4 13 2-6 18

PIC16F84 1Kx14

FLASH

68 64 11 TMRO

+

WDT

4 13 2-6 18

PIC16F83 512x14

FLASH

36 64 11 TMRO

+

WDT

4 13 2-6 18

PIC16CR8

4

1Kx14

ROM

68 64 11 TMRO

+

WDT

13 2-6 18

PIC16CR8

3

512x14

ROM

36 64 11 TMRO

+

WDT

4 13 2-6 18

Características relevantes de algunos modelos PIC16X8X de la gama media. Consultado en (Angulo,

2003)

3. Gama alta

En esta gama los modelos alcanzan las 58 instrucciones de 16 bits en el repertorio y

dichos modelos disponen de un sistema de gestión de interrupciones vectorizadas muy

potente, incluye también diferentes controladores de periféricos, puertas de comunicación

serie y paralelo, cuenta con una arquitectura abierta que consiste en la posibilidad de

ampliación del microcontrolador con elementos externos.

MODE

LO

MEMOR

IA

PROGR

AMA

MEMO

RIA

DATO

S

REGIST

ROS

ESPECIF

ICOS

TEMPORIZA

DORES

C

AP

P

W

M

C

A

D

10

INTERRUPC

IONES

E/

S

MULTIPLIC

ADOR

HARDWAR

E

PATI

TAS

Page 21: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

RAM bit

PIC17

C42A

2Kx16 232 48 4+WDT 2 2 11 3

3

8x8 40/44

PIC17

C43

4Kx16 454 48 4+WDT 2 2 11 3

3

8x8 40/44

PIC17

C44

8Kx16 454 48 4+WDT 2 2 11 3

3

8x8 40/44

PIC17

C752

8Kx16 454 76 4+WDT 4 3 1

2

18 5

0

8x8 64/68

PIC17

C756

16Kx16 902 76 4+WDT 4 3 1

2

18 5

0

8x8 64/68

Características relevantes de algunos modelos PIC17CXXX de la gama alta. Consultado en (Angulo,

2003)

4. Gama mejorada

Esta gama surge en los inicios del tercer milenio surge con la finalidad de soportar las

aplicaciones avanzadas en las áreas de automoción, comunicaciones, ofimática y control

industrial. Su principal mejora fue la alta velocidad (40 MHz), contando también con un

gran rendimiento (10 MIPS a 10 MHz). Cabe mencionar que MIPS es Millones de

Instrucciones Por Segundo. También cuenta con un juego de 77 instrucciones de 16 bits

cada una, además de estar orientados a la programación en lenguaje C.

Modelo

Memoria

PROGRAM

A (Bytes)

Memoria

(Bytes)

DATOS Temporizadores Interrupciones E/S ADC

Canales

Frec.

Maxi

ma

(MHz) PA

TIT

AS

RAM EPROO

M

PIC18C24

2

16K

EEPROM 512 - 4 16 23 5 40 28

PIC18F24

2

16K

FLASH 768 256 4 16 23 5 40 28

PIC18F25

2 32K

FLASH 153

6 256 4 16 23 5 40 28

PIC18F44

2 16K

FLASH 768 256 4 16 34 8 40 40

PIC18F45

2 32K

FLASH 153

6 256 4 16 34 8 40 40

PIC18F6620

64K FLASH

3840

1024 4 16 52 12 25 64

PIC18F8720

128K FLASH

3840

1024 4 16 68 16 25 80

Características relevantes de algunos modelos de la familia PIC18C(F)XXX de la gama mejorada.

Consultado en (Angulo, 2003)

Si se desea identificar cuántas patitas destina un PIC para líneas de Entrada y Salida

(E/S), es necesario que sepas que este tipo de líneas son identificadas en un PIC con los

nombres RAx, RBx, RCx, RDx, REx, etc., según la versión y modelo del PIC. Para eso es

importante que revises las especificaciones de cada modelo y ver cuantos puertos usa.

Page 22: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

PIC con 12 patitas para E/S

PIC con 20 patitas para E/S

PIC con 50 patitas para E/S

PIC con 66 patitas para E/S

Patitas de Entrada y Salida (E/S). Consultado en: http://www.microchip.com/

Recuerda que en esta unidad se va a trabajar con el modelo PIC16F84, por tal motivo se

presenta el esquema de la función de cada patita o pin del PIC.

Esquema del PIC16F84. Consultado en:

http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf

Page 23: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

En la sección Para saber más, se anexa una liga con toda la información y

especificaciones del PIC16F84.

El PIC16F84 pertenece a la gama media, y su novedad más importante es la inclusión de

memoria EEPROM para contener el programa. Recuerda que la memoria EEPROM

puede grabarse y borrarse eléctricamente, sin someterla a rayos ultravioleta como sucede

con el borrado de las EPROM, esto posibilita la grabación, depuración y borrado tantas

veces como se desee, la memoria EEPROM admite hasta 1,000,000 de ciclos de

escritura/borrado y almacena la información durante más de 40 años.

El hecho de poder emplear el mismo dispositivo cuando se realizan numerosos diseños o

cuando se están probando muchos programas en la fase o etapa de aprendizaje resulta

muy práctico y bastante económico. Muchas de las aplicaciones típicas en los que se

hace uso de estos microcontroladores son el control de puertas de garaje,

instrumentación, inmovilizadores de vehículos, tarjetas codificadas, pequeños sensores,

etc.

De esta forma se da una breve explicación y clasificación de la gran gama de

microcontroladores que pertenecen a la familia de los PIC.

Actividad 1. Caracterizando a los microcontroladores

¡Bienvenido(a) a la primera actividad de la Unidad 3 de la asignatura Arquitectura de Computadoras II! De manera previa realiza una investigación sobre los PIC. Con la realización de esta actividad, ha llegado el momento de caracterizar el uso de un PIC mediante un organizador gráfico, con base a algunas particularidades que deberás realizar tomando en cuenta el caso o situación que te indicará tu Facilitador(a). Sigue estas recomendaciones:

1. Genera un documento con algún software de presentaciones de tu elección.

2. Elige y crea un organizador gráfico que detalle el PIC que convendría usar de acuerdo a las características propias del mismo de acuerdo al caso dado por tu Facilitador(a).

3. Es imprescindible que dentro de esas particularidades incluyas: funciones,

características, arquitectura, etc.

4. En el mismo documento, en un breve texto, escribe a manera de síntesis la

Page 24: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

información que justifique tu elección, incluye las fuentes que lo sustenten.

5. Guarda tu actividad con la nomenclatura KARQ2_ACT1_U3_XXYZ.

6. Sube tu archivo para su revisión y posterior retroalimentación.

*Consulta los criterios de evaluación para cada actividad.

3.2. Conjunto de instrucciones y lenguajes

Una vez que ya se dio a conocer parte fundamental de la gran familia de los PIC y su

arquitectura general, se procede a identificar las diferentes instrucciones que se usan para

crear un programa y después ser grabado en el PIC. Pero también es importante conocer

las instrucciones que son la base de funcionamiento del PIC.

Para el PIC16F84 como se puede observar en el DataSheet el cual es un documento que

resume el funcionamiento y características de un componente, en este caso del PIC antes

mencionado, podrás observar que tiene un total de 35 instrucciones y por supuesto cada

una tiene un funcionamiento y uso diferente, estas se clasifican o dividen en tres tipos:

Instrucciones orientadas a los registros o bytes (byte-oriented operations)

Instrucciones orientadas a los bits (bit-oriented operations)

Operaciones con literales y de control (literal and control operations)

Esta división se encuentra dada por el tipo de datos con los que trabajan, a continuación

se mostrará una tabla en la cual se menciona cada una de estas instrucciones o

mnemónicos de manera breve, es así que para entender mejor cada instrucción se brinda

el significado de algunos parámetros:

Parámetro Significado

F Registro al que afecta la instrucción

W Acumulador (working register)

B Número de bit (hay instrucciones que afectan a un solo bit)

K Constante (un número)

D

Selección de destino del resultado de la instrucción, puede ser “0” o “1”, si

es “0” el resultado se guarda en el acumulador (W) y si es “1” se guarda

en el registro f al que afecta la instrucción

Parametros usados en las instrucciones. Consultado en:

http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf

Instrucciones orientadas a registros

No. Mnemónico o

Instrucción

Descripción

Simbólica

Descripción

Page 25: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

1 ADDWF F, D W + F -> D Suma W y el registro f, el resultado lo

guarda según d (si d=0 se guarda en W

y si d=1 se guarda en f)

2 ANDWF F, D W AND F -> D Realiza la operación AND lógica entre

W y f, el resultado lo guarda según d

3 CLRF F 00 h -> F Borra el registro f (pone todos sus bits

a cero)

4 CLRW - 00 h -> W Borra el acumulador

5 COMF F, D Complemento de F-> D Calcula el complementario del registro f

(los bits que están a "0" los pone a "1"

y viceversa. Resultado según d

6 DECF F, D F – 1 -> D Decrementa f en uno (le resta uno).

Resultado según d

7 DECFSZ F, D F – 1 -> D (si es 0

salta)

Decrementa f y se salta la siguiente

instrucción si el resultado es cero.

Resultado según d

8 INCF F, D F + 1 -> D Incrementa f en uno (le suma uno).

Resultado según d

9 INCFSZ F, D F + 1 -> D (si es 0

salta)

Incrementa f y se salta la siguiente

instrucción si el resultado es cero

(cuando se desborda un registro vuelve

al valor 00h). Resultado según d

10 IORWF F, D W OR F -> D Realiza la operación lógica OR entre W

y f. Resultado según d

11 MOVF F, D F -> D Mueve el contenido del registro f a W si

d=0 (si d=1 lo vuelve a poner en el

mismo registro)

12 MOVWF F W -> F Mueve el valor de W a f. Por ejemplo,

si quieres copiar el valor del registro

"REG1" al registro "REG2" escribirás:

*MOVF REG1,0 ;mueve el valor de

REG1 a W

*MOVWF REG2 ;mueve el valor de W

a REG2

13 NOP - No operación No hace nada, solo pierde el tiempo

durante un ciclo

14 RLF F, D Rota F izq. a través de

CARRY -> D

Rota el registro f hacia la izquierda a

través del bit CARRY (todos los bits se

mueven un lugar hacia la izquierda, el

bit 7 de f pasa al CARRY y el bit

CARRY pasa al bit 0 de f). Resultado

según d

Page 26: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

15 RRF F, D Rota F dcha. a través

de CARRY -> D

Lo mismo que RLF pero hacia la

derecha

16 SUBWF F, D F – W -> D Resta f y W (f - W). Resultado según d

17 SWAPF F, D Intercambia nibbles de

F -> D

Intercambia los 4 primeros bit de f por

los otros cuatro. Resultado según d

18 XORWF F, D X XOR F -> D Realiza la operación lógica XOR (OR

exclusiva) entre W y f. Resultado

según d

Consultada en: http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf. p. 56

Instrucciones orientadas a bit

No. Mnemónico o

Instrucción

Descripción

19 BCF F, B Pone a 0 el bit B del registro F

20 BSF F, B Pone a 1 el bit B del registro F

21 BTFSC F, B Se salta la siguiente instrucción si el bit B del registro F es 0

22 BTFSS F, B Se salta la siguiente instrucción si el bit B del registro F es 1

Consultada en: http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf. p. 56.

Instrucciones con literales y de control

No. Mnemónico o

Instrucción

Descripción

Simbólica

Descripción

23 ADDLW K W + K -> W Le suma el valor k al acumulador (W)

24 ANDLW K W AND K -> W Operación lógica AND entre W y el valor k

(resultado en W)

25 CALL K Llamada a subrutina k Llamada a subrutina cuyo inicio está en la

dirección k

26 CLRWDT - Borra temporizador

del WDT

Borra el registro Watchdog

27 GOTO K Ir a dirección K Salta a la dirección k de programa

28 IORLW K W OR K -> W Operación lógica OR entre W y el valor k

(resultado en W)

29 MOVLW K K -> W Carga el acumulador con el valor k. Por

ejemplo, si quieres cargar el valor 2Ah en

el registro "REG1" escribirás:

*MOVLW 2AH ;carga el acumulador con el

valor 2Ah

*MOVWF REG1 ;mueve el valor de W a

"REG1"

30 RETFIE - Retorno de una

interrupción

Instrucción para volver de la interrupción

Page 27: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

31 RETLW K Retorno con K en W carga el valor k en W y vuelve de la

interrupción

32 RETURN - Retorno de una

subrutina

Vuelve de una subrutina.

33 SLEEP - Modo Standby El pic pasa a modo de Standby

34 SUBLW K K – W -> W Le resta el valor W al acumulador K

35 XORLW K W XOR K -> W Operación lógica XOR entre W y el valor k

(resultado en W)

Consultada en: http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf. p. 56

Ahora bien, estas son instrucciones propias del PIC que usa de manera interna, la parte

más interesante se presenta a continuación, es en la cual debes de programar o crear tus

programas para que posteriormente sean grabados dentro del PIC.

En la siguiente imagen se expresa gráficamente el proceso para generar grabar un PIC.

Proceso de grabación. Consultado en:

http://www.unioviedo.es/ate/alberto/TEMA3-Ensamblador.pdf

El proceso de grabación de un programa dentro del PIC se realiza de la siguiente manera:

Usar un software para crear el archivo fuente

Generar el programa con la ayuda de lenguaje ensamblador, C, o cualquier otro

lenguaje

Una vez que se termina el programa de acuerdo a las necesidades, es importante

generar la compilación, la cual sirve para detectar errores

Usar algún software que me permita generar un archivo con extensión “hex”

(archivo con código máquina)

Posteriormente se crea el archivo con extensión “hex”, ya que este archivo será el

que se grabe dentro del PIC

Una vez con el archivo generado se utilizará un grabador especial para poder

pasar el archivo hex de nuestra PC a nuestro dispositivo (Microcontrolador)

Se realiza la grabación de la PC al PIC

Page 28: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Posteriormente en nuestro PIC queda la información almacenada y listo para ser

usado

En la siguiente imagen puedes ver un grabador para PIC, estos son dispositivos que

permiten realizar la inserción de nuestro archivo con extensión hex dentro del PIC.

Grabador de PIC. Consultado en:

http://www.minirobot.com.mx/tienda/index.php?id_product=434&controller=product&id_lang=3

Pero, ¿por qué generar o usar un archivo con extensión “hex”?. Porque los

microcontroladores el único lenguaje que entienden es el código máquina que como se

sabe está formado por ceros y unos del sistema binario, por tal motivo se genera una

archivo que por lo regular suele tener la extensión: “*.hex” el cual lleva código máquina.

En la sección Para saber más se sugiere consultes el siguiente video:

“Programador de PIC USB anticorto programando PIC16F84” en el cual

se muestra brevemente algunas ventajas del grabador.

De la sección Para saber más se sugiere consultes los siguientes videos: “Pasos para grabar un PIC16F84” y “Grabación del PIC16F84 de manera Física” que explica los pasos de manera breve, mencionados anteriormente para grabar un PIC e implementar el programa.

Una vez que se muestran las instrucciones con las que cuenta el PIC y el proceso de

cómo se graba la información de la PC a un microcontrolador, se procede a explicar

brevemente el uso de algunos lenguajes de programación entre ellos el más usado

Page 29: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

lenguaje C, pero a partir de la creación y desarrollo de los lenguajes de programación la

mayoría de los ingenieros han aprendido a programar los PIC con lenguaje ensamblador,

que es mucho más complejo que lenguaje C, hay otras aplicaciones que solo permiten el

uso de condicionales para poder generar los archivos con extensión “hex”.

De la sección Para saber más se sugiere consultes el video:

“Grabación del PIC16F84 de manera Simulada –Parte 1” que explica el

proceso de manera breve de cómo grabar un PIC usando un simulador.

De la sección Para saber más se sugiere consultes el video:

“Tutorial de ISIS Proteus” que explica brevemente como usar el simulador.

Esto se ha dado debido a que es mucho más fácil utilizar otros lenguajes de programación

que no sean ensamblador debido a que no muchos usuarios son expertos en

programación. Un ejemplo claro del uso de los lenguajes se ve en el siguiente ejemplo

que para poder realizar una suma de dos números se llevaría a cabo de la siguiente

manera:

Lenguaje

Ensamblador

.model small

.stack

.data

valor db ?

.code

.startup

mov ah, 01h ;Leer carácter desde el teclado

int 21h ;Lee primer carácter

sub al, 30h ;Resto 30H (48Dec) para obtener el numero

mov valor, al ;Lo guardo en variable valor

mov ah, 01h ;Leer carácter desde el teclado

int 21h ;Leo el segundo carácter

sub al, 30h ;Resto 30H (48Dec) para obtener segundo valor

add al, valor ;Realizo la suma de los dos valores

mov dl, al ;Pongo en dl el número a imprimir

add dl, 30h ;Agrego 30 (48Dec) para obtener el carácter

mov ah, 02h ;Función para imprimir un carácter en pantalla

int 21h

Page 30: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

.exit

End

Lenguaje C

#include <iostream.h> #include <conio.h> void main (){ int a=0; //Se asigna un 0 a la variable int b=0; //Se asigna un 0 a la variable int c=0; //Se asigna un 0 a la variable cout<<"Dame el valor de a: "; //Se manda un mensaje cin>>a; //Se guarda el valor del teclado en a cout<<"Dame el valor de b: "; //Se manda un mensaje cin>>b; //Se guarda el valor del teclado en b c = a + b; //Se realiza la suma de a con b cout<<"La suma de a y b es: "; //Se imprime un mensaje cout<<c; //Se imprime el resultado getch(); }

Código para hacer una suma

De esta forma se da a conocer el uso de dos lenguajes para poder programar nuestro

PIC, con el uso de éstos se generara el programa que posteriormente será grabado en el

microcontrolador. Estos lenguajes son:

Lenguaje Ensamblador (Assembler). Lenguaje de programación de bajo nivel-

Lenguaje C. Lenguaje de programación de medio nivel.

En los siguientes temas se explicará el uso de ambos lenguajes, el lenguaje ensamblador

solo se hará de manera breve ya que se pretende profundizar en el Lenguaje C dado que

su complejidad es menor.

3.2.1. Características de las instrucciones máquina

El funcionamiento del procesador está determinado por las instrucciones que éste ejecuta.

Dichas instrucciones se denominan instrucciones máquina. Al conjunto de estas

instrucciones distintas que puede ejecutar el procesador se denomina repertorio de

instrucciones del procesador. Cada instrucción debe contener la información que necesita

el procesador para su ejecución (Stallings, 2007).

La siguiente figura muestra los pasos involucrados en la ejecución de instrucciones,

dichos elementos son:

Page 31: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Código de operación: Especifica la operación a realizar (suma, E/S, etc.). La

operación se indica mediante un código binario denominado código de operación

o, abreviadamente “codop”.

Referencia a operandos fuente u origen: La operación puede implicar a uno o

más operandos origen, es decir operandos que son entradas para instrucción.

Referencia al operando de destino o resultado: La operación puede producir un

resultado.

Referencia a la siguiente instrucción: Dice al procesador de dónde captar la

siguiente instrucción tras completarse la ejecución de la instrucción actual.

Diagrama de estados de un ciclo de instrucción. Consultado en (Stallings, 2007).

Dentro de la computadora, cada instrucción se representa por una secuencia de bits. La

instrucción está dividida en campos correspondientes a los elementos constitutivos de la

misma.

En la siguiente figura se muestra un ejemplo sencillo de formato de instrucción. En la

mayoría de los repertorios de instrucciones se emplea más de un formato. Durante su

ejecución, la instrucción se escribe en un registro de instrucción (IR) del procesador. El

procesador debe ser capaz de extraer los datos de los distintos campos de la instrucción

para realizar la operación requerida.

Page 32: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Un formato de instrucciones sencillo. Consultado en (Stallings, 2007).

Es muy complicado y difícil, tanto para los programadores como para las personas que no

están familiarizadas con estos temas, manejar las representaciones binarias de las

instrucciones máquina. Por ello, es una práctica común utilizar representaciones

simbólicas de las instrucciones máquina (Stallings, 2007).

Los codops se representan mediante abreviaturas, denominadas nemotécnicos, que

indican la operación en cuestión. Algunos ejemplos son:

ADD Sumar

SUB Restar

MPY Multiplicar

DIV Dividir

LOAD Cargar datos de memoria

STOR Almacenar datos en memoria (memorizar)

Los operandos también suelen representarse simbólicamente. Por ejemplo la instrucción:

ADD, R, Y

Puede significar sumar el valor contenido en la posición de datos Y al contenido del

registro R. En este ejemplo, “Y” hace referencia a la dirección de una posición de

memoria, y “R” a un registro particular.

Las características que se pretende que tenga un conjunto de instrucciones son cuatro

principalmente:

1. Completo. Esto se refiere a que se puede realizar en tiempo finito cualquier tarea

ejecutable con una computadora o dispositivo.

2. Eficiente. Se refiere a que debe permitir alta velocidad de cálculo sin exigir una

elevada complejidad en su Unidad de Control y Unidad Aritmético Lógica, además

de no consumir excesivos recursos (memoria), es decir, debe cumplir su tarea en

un tiempo razonable minimizando el uso de los recursos.

3. Autocontenidas. Esto es, que contengan en sí mismas toda la información

necesaria para ejecutarse.

4. Independientes. Que no dependen de la ejecución de alguna otra instrucción.

Es raro encontrar programadores en lenguaje máquina. La mayoría de los programas

actuales escriben sus programas en un lenguaje de alto nivel o, en ausencia del mismo,

en lenguaje ensamblador.

Si se considera una instrucción de alto nivel tal y como se expresaría en un lenguaje

como C, BASIC o FORTRAN. Por ejemplo:

X = X + Y

Page 33: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Esta sentencia ordena a la computadora sumar los valores almacenados en X, y en Y, y

poner el resultado en X. ¿Cómo se podría realizar lo mismo con instrucciones máquina?

Supón que las variables X e Y corresponden a las posiciones 513 y 514. Considerando un

repertorio simple de instrucciones máquina, la operación podría llevarse a cabo con tres

instrucciones:

1. Cargar un registro con el contenido de la posición de memoria 513

2. Sumar al registro el contenido de la posición de memoria 514

3. Memorizar el contenido del registro en la posición de memoria 513

Como se puede observar, una sola instrucción de lenguaje C, puede necesitar de tres

instrucciones máquina. Como se mostró en una tabla anteriormente con lenguaje

ensamblador y lenguaje C.

Los tipos de instrucciones se pueden clasificar de la siguiente manera:

De procesamiento de datos: instrucciones aritméticas y lógicas

De almacenamiento de datos: instrucciones de memoria

De transferencia de datos: instrucciones de E/S

De control: instrucciones de comprobación y de bifurcación

Las instrucciones aritméticas proporcionan capacidad computacional para procesar

datos numéricos. Las instrucciones lógicas (booleanas) operan con los bits de una

palabra en lugar de considerarlos como números. Proporcionando por tanto, capacidad

para el procesamiento de cualquier otro tipo de datos que el usuario quiera emplear. Este

tipo de operaciones se realizan principalmente con datos en registros del procesador. Por

tal motivo debe haber instrucciones de memoria para transferir los datos entre la

memoria y los registros. Las instrucciones de E/S se necesitan para transferir programas

y datos de memoria y devolver resultados de los cálculos al usuario. Las instrucciones

de comprobación o test se emplean para comprobar el valor de una palabra de datos o

el estado de un cálculo. Las de bifurcación se usan entonces para bifurcar a diferentes

conjuntos de instrucciones dependiendo de la decisión tomada (Stallings, 2007).

Por cuestión de simplicidad se omitirá el profundizar en las instrucciones de máquina,

estas se pueden ver reflejadas en el tema “Lenguaje Ensamblador”, instrucciones muy

sencillas y básicas de dicho lenguaje.

3.2.2. Tipos de operandos y operaciones

En el tema anterior se mencionaron las principales características que debe de tener una

instrucción, en este tema se verán los diferentes tipos de operandos y las operaciones

básicas que se realizan o usan en un programa.

Page 34: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Recuerda que es un operando y un operador, en el siguiente ejemplo:

3 + 6 = 9

El operador es: “+“ y los operandos son: “3“ y “6“. Por tal motivo se mencionan los tipos de

operandos que se pueden usar en programación.

En Stallings (2007), se puede ver que las instrucciones máquina operan con datos. Las

categorías generales más importantes de datos son:

Direcciones

Números

Caracteres

Datos lógicos

Los tipos de datos más comunes son los números, los caracteres y los datos lógicos; y

cada uno de ellos se analizará brevemente.

Números:

Una distinción importante entre los números utilizados en las matemáticas ordinarias y los

almacenados en una computadora es que éstos últimos están limitados. Esto es cierto en

dos sentidos, en primer lugar hay un límite para la magnitud de los números

representables en una máquina y, en segundo lugar, en el caso de números en coma

flotante, su precisión está limitada. Por tanto, el programador debe ser consciente de las

consecuencias del redondeo, el desbordamiento o el desbordamiento a cero.

En las computadoras son usuales tres tipos de datos numéricos:

Enteros o en coma fija

En coma flotante

En decimal

Caracteres:

Una forma bastante común de datos es el texto o secuencia de caracteres. Aunque la

información textual sea más conveniente para las personas, no puede ser almacenada o

transmitida fácilmente en forma de caracteres por los sistemas de comunicación y de

procesamiento de datos. Tales sistemas están diseñados para datos binarios. Por lo

tanto, se han ideado diversos códigos que permiten representar caracteres mediante

secuencias de bits. Hoy en día, el código de caracteres más utilizado es el alfabeto de

referencia internacional (IRA), conocido en los Estados Unidos como ASCII (American

Standard Code for Information Interchange): código estándar americano para intercambio

de información. Cada carácter es representado en este código por un patrón distinto de 7

bits; pueden representarse por tanto 128 caracteres diferentes.

Page 35: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Código ASCII. Consultado en:

http://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/ASCII_Code_Chart-Quick_ref_card.png/361px-ASCII_Code_Chart-Quick_ref_card.png

Datos Lógicos:

Normalmente, cada palabra o cualquier otra unidad direccionable (byte, media palabra,

etc.) es tratada como una unidad de datos individual. Sin embargo, a veces es útil

considerar una unidad de n bits como n elementos o datos de un bit, donde cada

elemento tiene un valor 1 o 0. Cuando los datos son vistos de esta manera, se consideran

datos lógicos.

El número de códigos de operación (codops) diferentes, varía ampliamente de una

máquina a otra. Sin embargo, en todas las máquinas puedes encontrar los mismos tipos

de operaciones. Una clasificación típica y útil es la siguiente:

Transferencia de datos

Aritméticas

Lógicas

De conversión

De E/S

De control del sistema

De control de flujo

La siguiente tabla basada en Hayes (1998), se enlistan tipos de instrucciones comunes de

cada clase:

Tipo Nombre de la operación Descripción

Transferencias Move (transferir) Transfiere una palabra o un bloque

Page 36: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

de datos desde un origen a un destino

Store (memorizar) Transfiere una palabra desde el

procesador a memoria

Load (cargar o captar) Transfiere una palabra desde

memoria al procesador

Exchange (intercambiar) Intercambia los contenidos del origen

al destino

Clear (reiniciar o poner a 0) Transfiere una palabra de ceros al

destino

Set (poner a 1) Transfiere una palabra de unos al

destino

Push (introducir en la pila,

“apilar”)

Transfiere una palabra desde un

origen a la cabecera de la pila

Pop (extraer de la pila,

“desapilar”)

Transfiere una palabra desde la

cabecera de la pila a un destino

Aritméticas

Add (sumar) Calcula la suma de dos operandos

Substract (restar) Calcula la diferencia de dos

operandos

Multiply ( multiplicar) Calcula el producto de dos

operandos

Divide (dividir) Calcula el cociente de dos operandos

Absolute (valor absoluto) Sustituye el operando por su valor

absoluto

Negate (opuesto) Cambia el signo del operando

Increment (incrementar) Suma 1 al operando

Decrement (decrementar) Resta 1 del operando

Lógicas

AND (producto lógico, Y ) Realiza la operación lógica Y (AND)

OR (Suma lógica, O) Realiza la operación lógica O (OR)

NOT (Complemento) Realiza el complemento (NOT) bit a

bit del dato

Exclusive-OR (OR-Exclusiva) Realiza la operación lógica O-

Exclusiva (XOR)

Test (comprobar)

Comprueba la condición

especificada, fija los indicadores

(flags) en función del resultado

Compare (comparar)

Realiza la comparación lógica o

aritmética de dos o más operandos;

fija los indicadores (flags) en función

del resultado

Set control variables (fijar

variables de control)

Instrucciones que fijan controles para

protección, gestión de interrupciones,

control de temporizador, etc.

Page 37: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Shift (desplazamiento)

Desplaza el operando a la izquierda

(derecha), introduciendo valores

constantes por el otro extremo.

Rotate (rotar) Desplaza el operando a la izquierda

(derecha) de forma cíclica

Control de

flujo

Jump (bifurcación o salto) Ruptura incondicional de flujo; carga

el PC con la dirección especificada.

Jump condicional (salto

condicional)

Comprueba la condición

especificada; dependiendo de la

condición, o carga el PC con la

dirección indicada, o no hace nada

Jump to subrutina (Llamada a

subrutina)

Guarda la información de control del

programa en una posición conocida y

salta a la dirección indicada

Return (retorno)

Sustituye el contenido del PC y de

otros registros por los de la posición

conocida

Execute (ejecutar)

Capta el operando de la dirección

indicada y lo ejecuta como una

instrucción, no modifica el PC

Skip (salto implícito) Incrementa el PC de manera que se

salte la instrucción siguiente

Skip conditional (salto implícito

condicional)

Comprueba la condición indicada,

realiza el salto implícito o no hace

nada, dependiendo de la condición

Halt (parar) Define la ejecución del programa

Wait (esperar)

Detiene la ejecución del programa;

comprueba de forma repetitiva la

condición especificada; reanuda la

ejecución cuando se satisface la

condición

No operation (no operación) No se ejecuta operación alguna, pero

la ejecución del programa continua

Entrada/Salida

Input (entrada)

Transfiere datos desde un ´puerto o

dispositivo de E/S al destino

(memoria principal o registro del

procesador)

Output (salida)

Transfiere datos desde el origen

especificado a un puerto o dispositivo

de E/S

Start I/O (iniciar E/S) Transfiere instrucciones al

procesador de E/S para iniciar

Page 38: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

operaciones de E/S

Test I/O (comprobar E/S)

Transfiere información de estado

desde el sistema de E/S al destino

especificado

Conversión

Translate (traducir)

Traducción de los valores de una

sección de memoria, basado en una

tabla de correspondencia

Convert (convertir)

Convierte el contenido de una

palabra de un formato a otro (por

ejemplo., de decimal empaquetado a

binario)

Operaciones usuales de repertorios de instrucciones. Consultado en (Hayes, 1998)

Estas son las principales instrucciones que se llevan a cabo o se pueden usar dentro del

lenguaje máquina, en el siguiente tema se mostrarán brevemente ejemplos en los cuales

se hará uso de las operaciones y de algunas instrucciones.

3.2.3. Lenguaje Ensamblador

Un procesador puede interpretar y ejecutar instrucciones máquina. Estas instrucciones

son simplemente números binarios almacenados en la computadora. Si un programado

quisiera programa directamente en lenguaje máquina, necesitaría introducir los programas

como datos binarios. Por ejemplo la siguiente sentencia en lenguaje C:

N = I +J + K

Supón que quieres programar esta sentencia en el lenguaje máquina y dar a I, J, y K los

valores iniciales 2, 3 y 4 respectivamente. La forma de hacer esto se muestra en la

siguiente figura:

Dirección Contenido

101 0010 0010 101 2201

102 0001 0010 102 1202

103 0001 0010 103 1203

104 0011 0010 104 3204

201 0000 0000 201 0002

202 0000 0000 202 0003

203 0000 0000 203 0004

204 0000 0000 204 0000 Programa en binario. Consultado en: Stallings, 2007

El programa empieza en la posición 101 (hexadecimal). Se reserva memoria para las

cuatro variables a partir de la posición 201. El programa consta de cuatro instrucciones:

1. Cargar el contenido de la posición 201 en el acumulador (AC)

Page 39: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

2. Sumar a AC el contenido de la posición 202

3. Sumas a AC el contenido de la posición 203

4. Memorizar el contenido de AC en la posición 204

Esto es evidentemente un proceso tedioso y muy susceptible a errores.

Una mejora a esta situación puede ser redactar el programa en hexadecimal en lugar de

binario. Quedando de la siguiente manera:

Dirección Contenido

101 2201

102 1202

103 1203

104 3204

201 0002

202 0003

203 0004

204 0000

Programa en hexadecimal. Consultado en: Stallings, 2007.

Para que la mejora se a más significativa, puedes hacer uso de nombres simbólicos o

nemotécnicos de las instrucciones. El resultado es el programa simbólico mostrado en la

siguiente figura:

Dirección Instrucción

101 LDA 201

102 ADD 202

103 ADD 203

104 STA 204

201 DAT 2

202 DAT 3

203 DAT 4

204 DAT 0 Programa simbólico. Consultado en: Stallings, 2007.

El uso de programas simbólicos hace la vida mucho más fácil pero es aún engorroso. Un

procedimiento mejor, utilizado con frecuencia, es emplear direcciones simbólicas. Esto se

ilustra en la siguiente figura:

Etiqueta Operación Operando

FORMUL LDA 1

ADD 1

ADD K

STA N

Page 40: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

I DATA 2

J DATA 3

K DATA 4

N DATA 0 Programa en ensamblador. Consultado en: Stallings, 2007.

Con este último refinamiento, se ha inventado un lenguaje ensamblador. Los programas

escritos en lenguaje ensamblador se traducen a lenguaje maquina mediante un

ensamblador. Este programa debe no solo realizar la traducción simbólica mencionada

antes, sino también asignar direcciones de memoria a las direcciones simbólicas.

El desarrollo de los lenguajes ensambladores fue un logro importante en la evolución de la tecnología de las computadoras. Fue un primer paso hacia los lenguajes de alto nivel utilizados hoy en día, pero estos aún requerían muchas instrucciones para llevar a cabo las tareas más sencillas. Para acelerar el proceso de programación, se desarrollaron los lenguajes de alto nivel, en los que las instrucciones individuales llevan a cabo tareas importantes. A los programas traductores que convierten programas escritos en lenguajes de alto nivel a lenguaje máquina, se les llama compiladores. Los lenguajes de alto nivel permiten a los programadores escribir instrucciones que se parecen mucho al inglés común, y contienen la notación matemática común (Deitel, 2004).

Un programa de nómina escrito en un lenguaje de alto nivel podría contener una

instrucción como la siguiente:

sueldoBruto = sueldo Base + sueldoExtra

Esto hace a los lenguajes de alto nivel mucho más recomendables, desde el punto de

vista del programador, que el lenguaje máquina y ensamblador.

Debido a que el lenguaje ensamblador es un poco difícil de usar si no cuentas con los

conocimientos básicos de dicho lenguaje se mostrarán ejemplos elaborados en lenguaje

C, ya que los ejemplos que se verán en adelante serán con el uso de este lenguaje para

poder programar un PIC.

Actividad 2. Instrucciones básicas del lenguaje ensamblador

El propósito de esta actividad es que menciones la forma en que se realizan operaciones

básicas en lenguaje ensamblador y lenguaje C, distinguiendo las diferencias de cada

una de las operaciones que serán indicadas por tu Facilitador(a):

1. Ingresa al foro de la actividad y participa sobre la pregunta o situación de

apertura.

Page 41: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

2. Sustenta tus puntos de vista y retroalimenta a mínimo 2 de tus

compañeros(as).

3. Anota lo que consideres importante de cada tipo y considera la conclusión final

de tu Facilitador(a).

*La actividad será evaluada de acuerdo a su respectiva rúbrica, así que es importante que la consultes.

3.3. Características y uso de elementos del microcontrolador (puertos,

temporizadores, convertidores)

Este tema es muy pequeño pero de mucha importancia para entender el manejo de un

PIC, así como los elementos que se mencionan en el DataSheet del PIC16F84 y que

quizás no se entiendan.

El PIC cuenta con algunos elementos que son de suma importancia que distingas de

manera general y logres diferenciar ya que te serán de mucha utilidad para poder elaborar

tus proyectos y actividades, estos elementos se vieron de manera general anteriormente,

pero en este momento se verán de manera individual.

Los PIC disponen de un procesador rápido y potente. En él se incluye la memoria de

programa, la de datos, la ALU, la Unidad de Control y algunos registros especiales. Si

dentro de un microcontrolador únicamente existiese un procesador, sólo se podrían

ejecutar instrucciones lógico-aritméticas y de transferencia. Pero un Microcontrolador es

más que un procesador, es una “computadora integral” en la que, además del procesador,

hay puertas de E/S para conectarse con periféricos, canales de comunicación,

temporizadores para controlar tiempos, sistemas de interrupciones capaz de detectar

anomalías o sucesos especiales, sistemas de seguridad, modo de funcionamiento con

bajo consumo, entre otras cosas, que a fin de cuentas son recursos que configuran la

potencia integral de una computadora

“Los PIC contienen todos los recursos posibles, aunque su fabricante no les incluye en todos los modelos, sino que los alterna para poderse ajustar óptimamente a las necesidades de cada diseño” (Angulo, 2003).

En este apartado se describirán algunos de los recursos más importantes de los PIC

tomando en cuenta que al que se hará mayor referencia es al PIC16F84.

Page 42: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

3.3.1. Puertos

Los PIC 16X8X sólo disponen de dos puertas de E/S. La puerta A posee 5 líneas, desde

RA0 hasta RA4, y una de ellas soporta dos funciones multiplexadas. Se trata de la

RA4/TOCKI, que puede actuar como línea de E/S o como una patita por la que se reciben

los impulsos que debe contar TMR0. La puerta B tiene 8 líneas, desde RB0 hasta RB7, y

también tiene una con funciones multiplexadas, la RB0/INNT, que además de línea típica

de E/S, sirve como patita por la que se reciben los impulsos externos que provocan una

interrupción, esta información se encuentra dentro del DataSheet del PIC16F84.

Cada línea de E/S se puede configurar tanto como entrada o como salida, todo depende

de cómo se declare si a 1 o a 0, respectivamente, el bit asociado del registro de

configuración de cada puerta (TRISA y TRISB).

Se llaman PUERTA-A y PUERTA-B los registros que guardan la información que entra o

sale por la puerta y ocupan las direcciones 5 y 6 del banco 0 de la memoria de datos. Los

registros de configuración TRISA y TRISB ocupan las mismas direcciones, pero en el

banco 1, como se puede observar en la siguiente figura:

Registros de configuración. Consultado en: Angulo, 2003

De la sección Para saber más se sugiere consultes el capítulo 3 del libro: “Compilador C CCS y simulador PROTEUS para Microcontroladores PIC” que explica la configuración de los puertos A y B del PIC como entrada o salida.

Page 43: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

3.3.2. Temporizadores

Para abordar este tema es necesario que recuerdes que se definió a un Temporizador

como: “El dispositivo mediante el cual puedes regular la conexión o desconexión de un

circuito eléctrico durante un tiempo determinado” (Construmática, 2013).

Una de las labores más habituales en los programas de control de dispositivos suele ser

determinar intervalos concretos de tiempo, y recibe el nombre de temporizador (timer) el

elemento encargado de realizar esta función.

En Angulo (2003), nos indica que los PIC16X8X poseen un temporizador/contador de 8

bits, llamado TMRO, que actúa de dos maneras diferentes:

1. Como contador de sucesos, que están representados por los impulsos que se

aplican a la patita RA4/TOCKI.

2. Como temporizador, cuando se carga en el registro que implementa al recurso un

valor inicial se incrementa con cada ciclo de instrucción hasta que se desborda, o

sea, pasa de FF a 00 H, y avisa poniendo a 1 un bit señalizador y/o provocando

una interrupción.

Esquema de un temporizador/contador. Consultado en: Angulo, 2003

Los PIC16X8X y los de la gama baja disponen de dos temporizadores, el TMRO y el

Perro Guardián (watchdog). El primero actúa como principal y sobre él recae el control de

tiempos y el contaje de impulsos. El otro vigila que el programa no se “cuelgue”, y para

ello cada cierto tiempo comprueba si el programa se está ejecutando normalmente. En

caso contrario, si el control está detenido en un bucle infinito a la espera de algún

acontecimiento que no se produce, el Perro Guardián “ladra”, lo que se traduce en un

Reset que reinicializa todo el sistema (Angulo, 2003).

En la siguiente figura se proporciona un esquema simplificado de la arquitectura del

circuito de control de tiempo usado en los PIC16X8X.

Page 44: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Esquema simplificado de la sección dedicada al control de tiempos en la arquitectura de los PIC16X8X.

Consultado en (Angulo, 2003)

3.3.3. Convertidores

El PIC16F84 como se mencionó al inicio de esta unidad cuenta con convertidor Analógico-Digital

(ADC o A/D), el cual no es más que un pequeño circuito electrónico que convierte señales

continuas a números digitales discretos (ADC). La operación contraria es realizada por un

conversor digital-analógico (DAC).

Generalmente, un conversor analógico-digital es un dispositivo electrónico que convierte una

entrada analógica de voltaje a un número digital. La salida digital puede usar diferentes esquemas

de codificación, como binario, o complemento de dos binario. De cualquier manera, algunos

dispositivos no eléctricos o parcialmente eléctricos pueden ser considerados como conversores

analógico-digital (Alegsa, 2013).

Recuerda que una señal analógica es una onda sinusoidal como la de la siguiente imagen:

Page 45: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Señal Analógica. Consultada en: http://xurl.es/2ryv5

La señal digital es una onda cuadrada o escalonada como en la siguiente imagen:

Señal Digital. Consultada en: http://kerchak.com/wp-

content/uploads/2013/03/Señal-digital.jpg

Lo que realmente hace un convertidor por ejemplo si le entra una señal analógica elevada este la

convierte en un 1 o si es muy baja y pasa cierto rango entonces estaría arrojando un 0.

Actividad 3. Elementos del microcontrolador

El propósito de esta actividad es elaborar un diagrama de Venn que te permita separar

los elementos que conforman a un microcontrolador (PIC16F84) de los otros PIC, y que

al mismo tiempo distingas la relación que tienen estos componentes, así como incluir

sus características. Con base en lo anterior, realiza lo siguiente:

1. Crea un documento de texto define el título de tu trabajo.

2. En tus propias palabras, elabora una pequeña introducción de lo que vas a tratar

en tu diagrama, mínimo media cuartilla.

3. Desarrolla el diagrama de Venn con sus respectivos conjuntos.

4. Indica los elementos usados.

Page 46: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

5. Precisa la relación entre cada elemento.

6. Escribe la información que explique la relación del diagrama, así como la

clasificación de los conjuntos.

7. Sustenta tu trabajo con por lo menos 3 fuentes bibliográficas o electrónicas

reconocidas. También es importante reconocer y respetar los derechos de autor,

dándoles sus correspondientes créditos.

8. Escribe una conclusión de mínimo media cuartilla, aterrizando todas las ideas

plasmadas durante el desarrollo de tu actividad.

9. Guarda tu trabajo en un archivo llamado KARQ2_ACT3_U3_XXYZ.

10. Sube tu archivo para su revisión y posterior retroalimentación

*Consulta la rúbrica para la evaluación de la actividad.

3.4. Aplicaciones de los microcontroladores

Una forma excelente de conseguir una comprensión de los temas vistos de manera

básica, es visualizando y realizando algunos ejemplos que te serán proporcionados en los

temas faltantes, con la finalidad de que puedas resolver sin ningún problema tu evidencia

de aprendizaje.

En la actualidad encuentras diferentes aplicaciones o dispositivos de los cuales disponen

de un microcontrolador, pero, qué tipo de aplicaciones puedes encontrar en las cuales se

hace uso de los microcontroladores.

Por ejemplo:

Page 47: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Letrero luminoso. Consultado en: http://xurl.es/p1ur3 Calculadora. Consultado en:

http://edumic.uv.es/imagenes/edumic_web.jpg

Mediante los siguientes ejemplos se pretende resumir de forma clara y concisa los pasos

que se deben llevar a cabo para realizar las ejemplos propuestos.

3.4.1. Ejemplos usando el PIC16F84

En esta sección se explicarán y mostrarán algunos ejemplos iniciando con la elaboración

del código, a continuación se generará el archivo “hex” y por último se simulará el circuito.

Para elaborar el código fuente y generar el archivo “hex” utilizarás la aplicación PIC C

Compiler (PCW)© de Custom Computer Services Incorporated (CCS)© y para simular el

circuito se usará PROTEUS VSM© de Labcenter Electronics©. Estas herramientas han

sido seleccionadas por su compatibilidad y los ejemplos que aparecen corresponden al

uso del editor con las instrucciones del compilador y al software de simulación

mencionados. Además cabe destacar que dichas herramientas fueron seleccionadas por

su fácil manejo, al mismo tiempo que no existen muchos simuladores de electrónica que

permitan trabajar con el PIC; también existe mucha información en la red que se puede

consultar para el eficiente uso del mismo. El compilador se seleccionó debido a que

permite desarrollar programas en C enfocado a PIC con la ventaja de estar orientado a un

microcontrolador concreto, puesto que dispone de una amplia librería para el uso de

funciones predefinidas, comandos, entre muchas otras cosas y que el mismo software

genera el archivo con extensión “hex”.

Consulta el video titulado “Tutorial de ISIS proteus” el vínculo lo podrás encontrar en la sección Para saber más.

Existen otras herramientas que se pueden utilizar para la generación del código fuente

como PIC Basic© de Microsoft©, pero desafortunadamente no permite la generación del

archivo con extensión “hex”, se requiere una aplicación extra.

Y en el caso del simulador sus alternativas son LabVIEW© de National Instruments© es

una aplicación muy completa pero tiene un costo, y la información que se encuentra en la

red es mínima. De igual forma también se sugiere el uso de Arduino que es una

plataforma de hardware y software open source, diseñados para facilitar el uso de la

electrónica en diferentes proyectos, pero con la desventaja que se tiene que comprar la

tarjeta. En la sección Para saber más podrás encontrar información adicional.

Page 48: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

LabView ©. Consultado en:

http://www.ni.com/trylabview/esa/ PIC Basic ©

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

http://www.subirimagenes.net/pictures/5d77d4179277b9ad443e2e8d622f93be.jpg

Por cuestiones de simplicidad y mayor entendimiento se recomendarán videos para

explicar cada uno de los ejemplos.

Ejemplo 1:

Encender un led usando el puerto RB0 que prenda por dos segundos y que se apague

por medio segundo y que lo siga haciendo ilimitadamente.

El código es el siguiente:

#include <16f84A.h> //Uso de la librería del modelo del PIC

#fuses XT,NOWDT //Ordenes programador

#use delay (clock=4000000) //Frecuencia de Reloj 4MHz

#use standard_io(B) //Declaración del puerto a usar

void main (void){ //Función principal

while(TRUE){ //Condición infinita

output_high(PIN_B0); //Enciende el led por el puerto RB0

delay_ms (2000); //Retraso de 2 segundos

output_low(PIN_B0); //Apaga el led por el puerto RB0

delay_ms(500); //Retraso de medio segundo

Page 49: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

} //Fin de la condición

} //Fin de la función principal

Diagrama del Ejemplo 1

Posteriormente se generará el archivo “hex” y se elaborara el diagrama con ayuda de

PROTEUS.

El video para este ejemplo lo puedes consultar en la liga: http://www.youtube.com/watch?v=rdL-nCeW-Ho&feature=youtu.be Este mismo video lo encontrarás en la sección Para saber más, con el

nombre: “Grabación del PIC16F84 - Encender un Led...!”

Ejemplo 2:

Encender un led usando un botón conectado a RA0 y el led conectado a RB0 solo

encenderá cuando se presione el botón. El led permanecerá encendido por 1 segundo y

luego se apagará.

El código es el siguiente:

#include <16f84A.h> //Uso de la librería

#fuses XT,NOWDT //ordenes programador

#use delay (clock=4000000) //Frecuencia de Reloj 4MHz

Page 50: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

#use standard_io(A) //Declaración del puerto a usar

#use standard_io(B) //Declaración del puerto a usar

void main (void){ //Función principal

while(TRUE){ //Condición infinita

//Se evalua el valor que tiene el puerto A0

if(input(PIN_A0) == 1){

output_high(PIN_B0); //Enciende el led por el puerto RB0

delay_ms (1000); //Retraso de 1 segundo

}

else{

output_low(PIN_B0); //Apaga el led por el puerto RB0

}

} //Fin de la condición

} //Fin de la función principal

Diagrama del Ejemplo 2

El proceso de elaboración de este circuito se puede apreciar en el video que lleva por

nombre: “Grabación del PIC16F84 - Encender un led al presionar un botón...!”

En la siguiente liga: http://www.youtube.com/watch?v=zwa1wYYZ--c&feature=youtu.be, con el video llamado: “Grabación del PIC16F84 - Encender un led al presionar un botón...!” encontrarás una explicación detallada del ejemplo anterior de cómo encender un led al presionar un botón usando el puerto RA0.

Page 51: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Ejemplo 3:

Mandar voltaje a un dispositivo de tal forma que se vayan encendiendo ordenadamente

los puertos de RB del 0 al 7. Esto lo puedes resolver con ayuda de los ejemplos ya antes

vistos.

Se debe de mandar una señal alta al puerto y los demás apagados, por ejemplo RB0

encendido y los demás apagados, posteriores RB1 encendido y los demás apagados, así

sucesivamente.

El código fuente es el siguiente:

#include <16f84A.h> //Uso de la librería

#fuses XT,NOWDT //ordenes programador

#use delay (clock=4000000) //Frecuencia de Reloj 4MHz

#use standard_io(A) //Declaración del puerto a usar

#use standard_io(B) //Declaración del puerto a usar

void main (void){ //Función principal

while(TRUE){ //Condición infinita

output_high(PIN_B0);

output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);

output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B6);

output_low(PIN_B7);

delay_ms (200);

output_high(PIN_B1);

output_low(PIN_B0) && output_low(PIN_B2) && output_low(PIN_B3);

output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B6);

output_low(PIN_B7);

delay_ms (200);

output_high(PIN_B2);

output_low(PIN_B1) && output_low(PIN_B0) && output_low(PIN_B3);

output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B6);

output_low(PIN_B7);

delay_ms (200);

output_high(PIN_B3);

output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B0);

output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B6);

output_low(PIN_B7);

delay_ms (200);

output_high(PIN_B4);

output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);

output_low(PIN_B0) && output_low(PIN_B5) && output_low(PIN_B6);

output_low(PIN_B7);

delay_ms (200);

Page 52: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

output_high(PIN_B5);

output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);

output_low(PIN_B4) && output_low(PIN_B0) && output_low(PIN_B6);

output_low(PIN_B7);

delay_ms (200);

output_high(PIN_B6);

output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);

output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B0);

output_low(PIN_B7);

delay_ms (200);

output_high(PIN_B7);

output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);

output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B6);

output_low(PIN_B0);

delay_ms (200);

}

} //Fin de la función principal

El diagrama en PROTEUS quedaría de la siguiente manera con ayuda de una barra de

leds.

Diagrama del Ejemplo 3

El proceso de elaboración de este circuito se encuentra en el video nombrado: “Grabación del PIC16F84 - Luces de Discoteca...!”, que podrás encontrar dentro de la siguiente liga: http://www.youtube.com/watch?v=ZmFlugYsPPI&feature=youtu.be Explica cómo se usan todas las líneas de salida del puerto RB. Además lo podrás encontrar referenciado en la sección Para saber más

Page 53: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Estos son algunos de los ejemplos que puedes realizar con ayuda del PIC16F84, con

ayuda de éstos se propone que realices las siguientes propuestas de manera que puedas

practicar con ejercicios muy sencillos.

Propuestas:

1. Encender un led conectado a RB4 durante 1.5 segundos y luego apagarlo por 0.5

segundos, el proceso debe repetirse sólo 4 veces, luego el led debe permanecer

apagado.

2. Encender dos leds conectados en RB0 y RB1 alternadamente, es decir mientras

un led está encendido el otro permanecerá apagado y viceversa, los tiempos de

transición serán de 0.5 segundos, el proceso debe continuar indefinidamente.

3. Generar 6 parpadeos en un led con intervalos de tiempo de 300 milisegundos,

luego generar 2 parpadeos de 1 segundo con un segundo led, luego hacer que los

dos leds parpadean al mismo tiempo 3 veces con intervalos de 0.5 segundos,

repetir el proceso indefinidamente.

3.4.2. Proyectos usando el PIC16F84

¿Qué proyectos se pueden implementar con el PIC16F84?, puedes realizar demasiados,

hasta donde alcance tu imaginación, por ejemplo el siguiente proyecto es la elaboración

de un semáforo:

Proyecto 1:

Elaborar un semáforo sencillo para una esquina, donde solo se usan colores rojo, amarillo

y verde.

Primero que nada debes analizar el problema, para esto se requiere mucha lógica y

pensar en cómo solucionarlo.

¿Cómo funciona un semáforo?, para este ejemplo se usarán los siguientes nombres para

simplificar y entender mejor:

Semáforo 1: Rojo1, Amarillo1 y Verde1

Semáforo 2: Rojo2, Amarillo2 y Verde2

Cuando el Verde1 este encendido el Rojo2 estará apagado, posteriormente el Amarillo1

se encenderá y el Rojo2 seguirá encendido, pero el Verde1 se apagará, cuando el Rojo1

encienda, el Rojo2 apagará y encenderá el Verde2, posteriormente el Amarillo2

encenderá, el Rojo 1 estará prendido y el Verde2 se apagará. Para este ejemplo toma en

cuenta que el cambio de verde a amarillo durará 9 segundos y el cambio de amarillo a

rojo solo 3.

Page 54: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

El código es el siguiente:

#include <16f84A.h> //Uso de la librería

#fuses XT,NOWDT //ordenes programador

#use delay (clock=4000000) //Frecuencia de Reloj 4MHz

#use standard_io(B) //Declaración del puerto a usar

void main (void){ //Función principal

while(TRUE){ //Condición infinita

output_high(PIN_B2) && output_high(PIN_B3); //B2-Verde1 B3-Rojo2

output_low(PIN_B0) && output_low(PIN_B1) && output_low(PIN_B4) && output_low(PIN_B5);

delay_ms(9000);

output_high(PIN_B1) && output_high(PIN_B3); //B1-Ama1 B3-Rojo2

output_low(PIN_B0) && output_low(PIN_B2) && output_low(PIN_B4) && output_low(PIN_B5);

delay_ms(3000);

output_high(PIN_B0) && output_high(PIN_B5); //B0-Rojo1 B5-Verde2

output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3) && output_low(PIN_B4);

delay_ms(9000);

output_high(PIN_B0) && output_high(PIN_B4); //B0-Rojo1 B4-Ama2

output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3) && output_low(PIN_B5);

delay_ms(3000);

}

} //Fin de la función principal //encendido del Verde 1

El proyecto simulado en una tablilla de experimentación (protoboard) se vería de la

siguiente manera:

Fotografía del semáforo armado en un protoboard. Consultado en: Reyes, 2008

Page 55: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

El proyecto simulado en PROTEUS sería de la siguiente forma:

Semáforo en PROTEUS©

El proceso de elaboración y explicación de este proyecto se puede encontrar y apreciar en la siguiente liga: http://www.youtube.com/watch?v=sK9pwiIcOr8&feature=youtu.be, de igual forma en la sección Para saber más, se encuentra su descripción y vinculo nuevamente con el nombre: “Grabación del PIC16F84 – Semáforo Sencillo...!”.

Proyecto 2:

Elaborar un contador decimal de 0 a 99 con un display de 7 segmentos.

Un display es un componente que encenderá los leds que tiene integrados conforme

reciba voltaje en alguna de sus patitas, es muy usado para representar numero debido a

la forma que tiene, por ejemplo si observas en la siguiente imagen para poder representar

el número 1 se debe recibir voltaje en sus patitas b y c, si se desea representar el número

0, todas las patitas deberán de estar encendidas excepto la g.

Page 56: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Display de 7 Segmentos. Consultado en:

http://1.bp.blogspot.com/-cRlBJlDidk8/Td0OVffszBI/AAAAAAAAAL0/v4kr5WMhAgI/s320/display.gif

Pues bien, ahora lo único que tienes que hacer es implementar un ciclo for ya que con un

display solo puedo representar los 10 dígitos del sistema decimal que son: “0, 1, 2, 3, 4, 5,

6, 7, 8, 9”, por tal motivo lo que se pretende es que conforme avance mi contador se

representen cada uno de estos números, pero no solo eso sino que lo haga hasta el

número 99.

Por tal motivo se utilizarán dos displays uno para las unidades y otro para las decenas,

recordando que las decenas incrementaran cada que se incrementen 10 veces las

unidades.

Para poder encender el display se crea un arreglo el cual contiene los valores de las

patitas en valor hexadecimal a las que se tiene que mandar voltaje quedando como se

muestra en la siguiente tabla, los 1´s representan encendido y los 0´s apagado.

Número Decimal

Código Binario Código Hexadecimal G F E D C B A

0 0 1 1 1 1 1 1 3F 1 0 0 0 0 1 1 0 06 2 1 0 1 1 0 1 1 5B 3 1 0 0 1 1 1 1 4F 4 1 1 0 0 1 1 0 66 5 1 1 0 1 1 0 1 6D 6 1 1 1 1 1 0 1 7D 7 0 0 0 0 1 1 1 07 8 1 1 1 1 1 1 1 7F 9 1 1 0 1 1 1 1 6F

Posición del

Puerto B

RB6 RB5 RB4 RB3 RB2 RB1 RB0

Tabla comparativa de binario y hexadecimal

Las posiciones hexadecimales serán usadas como se mencionó dentro del arreglo para

que al momento que se indique al puerto B cual será la salida se mande valores de 1 o 0

según corresponda en los puertos de salida de RB.

El código fuente de este ejemplo es el siguiente:

#include <16F84.h>

#USE DELAY( CLOCK=4000000)

#FUSES XT,NOWDT

#USE fast_IO (B)

#USE fast_IO (A)

Page 57: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

byte CONST DISPLAY[10] =

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void main(void){

byte ud=0,dec=0;

SET_TRIS_B(0x00);

SET_TRIS_A(0x00);

OUTPUT_B(0);

for( ;; ){

for (dec=0;dec<10;dec++){ //Cuenta digito decenas

for (ud=0;ud<10;ud++){

OUTPUT_A(0x02); //cat_D=apagado,cat_U=encendido

OUTPUT_B(DISPLAY[ud]); //Digito unidades

delay_ms(50); //Para evitar parpadeos

if (dec==0) output_a(0x03); //Si decenas=0, cat_D=apagado

else output_a(0x01); //Si decenas>0, cat_D=encendido

OUTPUT_B(DISPLAY[dec]); //Digito decenas

delay_ms(50); //Para evitar parpadeos

}

}

}

}

El diagrama en PROTEUS queda de la siguiente forma:

Contador en PROTEUS©

Page 58: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

El video que lleva por nombre “Grabación del PIC16F84 - Contador Decimal de 0 a 99...!” ubicado en la siguiente liga: http://www.youtube.com/watch?v=7rb2JnrAtHw&feature=youtu.be Se explica dicho proyecto, de igual forma lo puedes encontrar en la sección Para saber más.

Con los ejemplos antes mencionados, puedes resolver gran cantidad de ejercicios y

proyectos, todo depende de tu creatividad e imaginación, así como de lo que desees

resolver o implementar.

Actividad 4. Resolución de un problema de lazo cerrado

El propósito de esta actividad es que identifiques que componentes usarías para resolver el problema dado por tu Facilitador(a) así como explicar la forma en la que lo resolverías, obviamente tendrías que elaborarlo o simularlo para comprobar que funciona correctamente.

1. Ingresa al foro de la actividad y participa sobre la pregunta o situación de apertura.

2. Sustenta tus puntos de vista y retroalimenta a mínimo 2 de tus compañeros(as).

3. Anota lo que consideres importante de cada tipo y considera la conclusión final de tu Facilitador(a).

Autoevaluación

Para reforzar los conocimientos relacionados con los temas que se abordaron en esta

unidad del curso, es necesario que resuelvas la autoevaluación.

Ingresa al Aula para realizar tu actividad. Si tienes alguna duda consúltala con tu

Facilitador(a) para disiparla lo antes posible.

Evidencia de aprendizaje. Simula un problema de lazo cerrado

Esta actividad sirve de simulación y consiste en representar el comportamiento de los

elementos que componen un circuito de lazo cerrado, elabora una propuesta de solución

Page 59: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

de acuerdo (a) a los datos presentados por tu Facilitador(a).

1. Identifica el problema

2. Plantea una solución

3. Simula el problema

4. Demuestra que es viable la implementación como solución.

5. Crea un archivo y elabora un reporte, adjunto los elementos necesarios (gráficos, diagramas, secuencia fotográfica, capturas de pantalla según sea el caso y las indicaciones complementarias de tu Facilitador(a)).

6. Guarda tu simulación con la extensión “DSN” y tu código fuente con la extensión “C”.

7. Envía tu trabajo conjuntando los elementos que lo componen, en una carpeta

comprimida .ZIP con la nomenclatura KARQ2_U3_EA_XXYX, esta contendrá tu código fuente y tu simulación.

*La evidencia será evaluada de acuerdo a su respectiva rúbrica, así que es importante

que la consultes.

Autorreflexiones

Como parte de cada unidad, es importante que ingreses al foro Preguntas de

autorreflexión y leas los cuestionamientos que formuló tu Facilitador(a), ya que a partir de

ellos debes elaborar tu Autorreflexión y enviarla mediante la herramienta Autorreflexiones.

No olvides que también se toman en cuenta para la calificación final.

Page 60: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Cierre de la unidad

Diagrama de un PIC16F84. Consultado en: http://xurl.es/gf9ux

Con este diagrama se concluye y da por terminada la tercera y última unidad de esta

asignatura. La finalidad de este diagrama es que puedas detectar todo lo visto desde la

primera unidad, ya que has podido observar elementos básicos de un microprocesador

como la ALU, la unidad de Control, los diferentes tipos de Buses, así como el

funcionamiento de algunos elementos que son de suma importancia que conocieras.

Se explicó la diferencia entre microcontrolador y microprocesador, aclarando muchas

dudas y definiendo así que un microcontrolador puede contener uno o más

microprocesadores internos, o en su caso los mismos elementos que conforman un

microprocesador como son la ALU, la Unidad de Control, los Buses, entre otros.

También se explicó de manera general la arquitectura de los microcontroladores

enfocándose a la familia de los PIC que es propia de la empresa Microchip, mostrando

que en su mayoría están elaborados de la misma manera y con la misma arquitectura.

Además dándose a conocer que la familia de los PIC es enorme y están elaborados para

diferentes necesidades y problemas, además de que tienen un costo realmente bajo en el

mercado, por tal motivo su gran crecimiento y aceptación.

Page 61: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Posteriormente se dan a conocer las diferentes instrucciones con las que cuenta el PIC

así como algunas instrucciones del Lenguaje Ensamblador que sirven para poder

programar un PIC, así como mostrando una comparación entre el lenguaje ensamblador y

el lenguaje C, demostrando que es mucho más fácil de manejar incluso para realizar

operaciones aritméticas como sumas, restas, entre otras. De igual forma se explicó la

importancia de algunos elementos del PIC como los temporizadores y el papel

fundamental que desempeña así como los puertos con los que cuenta el PIC16F84.

Se muestran algunos ejemplos apoyados de videos para su mayor comprensión y

entendimiento, con este material proporcionado serás capaz de crear aplicaciones

básicas y sencillas que puedes implementar en algún proyecto que se te presente en tu

vida profesional.

En la sección Para saber más, se agregan algunos videos y artículos publicados que te

ayudarán a reforzar algunos temas vistos, así como el uso del simulador PROTEUS, entre

otros datos que pueden resultar de tu interés.

Para saber más

Estos artículos proporcionan información respecto a las especificaciones

generales de las diferentes gamas de PIC como aspectos de rendimiento,

escalabilidad, soporte global, puntos clave, algunas herramientas de desarrollo

que son compatibles con cada modelo diferente, el tipo de control de señal, entre

otras cosas.

http://ww1.microchip.com/downloads/en/DeviceDoc/30009630j.pdf

http://ww1.microchip.com/downloads/en/DeviceDoc/01032l.pdf

http://ww1.microchip.com/downloads/en/DeviceDoc/39904m.pdf

En este artículo encontrarás toda la información relacionada con el PIC16F84,

como lo son sus características de voltaje, arquitectura, puertos de entrada y/o

salida, tipos de instrucciones.

http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf

En este video que lleva por nombre: “Programador de PIC USB anticorto

programando PIC16F84…” se muestra como se usa un grabador, así como sus

ventajas de uso.

http://www.youtube.com/watch?v=9YLn2q38JSg&feature=player_embedded

En los siguientes videos que llevan por nombre “Pasos para grabar un PIC16F84”

y “Grabación del PIC16F84 de manera física” se muestra información de manera

muy resumida y de manera general de cómo se graba un microcontrolador de

manera física y las herramientas que se usan para su grabación.

http://www.youtube.com/watch?v=CYVZdq_pVqc&feature=youtu.be

http://www.youtube.com/watch?v=ARQiw8xgKek&feature=youtu.be

Page 62: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

En el video que se titula “Grabación del PIC16F84 de manera Simulada – Parte 1”,

en el cual se menciona el proceso de creación de un proyecto de manera simulada

con el uso de PROTEUS y PCW, esta información te será de gran utilidad para

entender rápidamente los pasos de grabación de un PIC de manera modelada.

http://www.youtube.com/watch?v=bY-KDoCe8Jg&feature=youtu.be

En el video que se titula “Tutorial de ISIS proteus” se explica de una manera breve

y clara la forma en la cual se hace uso del simulador proteus con un pequeño

ejemplo para que se entienda la forma de trabajar en dicho simulador.

http://www.youtube.com/watch?v=jsb75ms0zRU

En el capítulo 3 del libro “Compilador C CCS y simulador PROTEUS para

Microcontroladores PIC” se explica a detalle la forma en que se configuran los

puertos A y B del PIC16F84 y como se usan en caso de que se pretendan usar

como entrada o salida. Su ISBN y editorial lo encuentras en las fuentes

complementarias.

En el siguiente video que lleva por nombre: “Grabación del PIC16F84 - Encender

un Led...!” Se explica el ejemplo 1 de esta unidad, en él se muestra cómo usar el

simulador PROTEUS y la elaboración del Código fuente para nuestro PIC, además

de que es más visible el proceso de creación de un ejercicio.

http://www.youtube.com/watch?v=rdL-nCeW-Ho&feature=youtu.be

En el video que tiene por nombre “Grabación del PIC16F84 - Encender un Led al

presionar un botón...!” se explica y se muestra como se utiliza el puerto A para

poder recibir un valor y este se vea reflejado en el puerto B.

http://www.youtube.com/watch?v=zwa1wYYZ--c&feature=youtu.be

El video titulado “Grabación del PIC16F84 - Luces de Discoteca...!” muestra breve

y detalladamente el funcionamiento del código fuente así como la forma de simular

el problema en el simulador PROTEUS.

http://www.youtube.com/watch?v=ZmFlugYsPPI&feature=youtu.be

En el siguiente video que lleva por nombre “Grabación del PIC16F84 - Semáforo

sencillo...!” se explica y se muestra la lógica a utilizar y se explica el código fuente

para resolver el problema de la implementación de un semáforo sencillo así como

su simulación dentro PROTEUS.

http://www.youtube.com/watch?v=sK9pwiIcOr8&feature=youtu.be

En el video que se titula: “Grabación del PIC16F84 - Contador Decimal de 0 a

99...!” se explica de una manera concreta pero muy entendible el uso de la lógica

para dar solución a este proyecto, de igual forma se muestra el código fuente y el

uso de cada instrucción y finalmente el proyecto simulado en PROTEUS.

http://www.youtube.com/watch?v=7rb2JnrAtHw&feature=youtu.be

Con la intensión de promover otros puntos de vista y áreas de oportunidad se

presentan estos vínculos relacionados con un hardware de fuente abierta y las

posibilidades de aplicación, las dos son pláticas introductorias:

http://medialab-prado.es/article/documental_arduino

Page 63: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Plática de uno de sus desarrolladores, Massimo banzi:

http://www.ted.com/talks/lang/es/massimo_banzi_how_arduino_is_open_sourcing_

imagination.html

Fuentes de consulta

Fuentes básicas

Angulo, U, J. Ma. (2003). Microcontroladores PIC, Diseño práctico de aplicaciones.

Primera parte. Tercera edición. México: Mc Graw Hill.

ISBN: 8448137884

Reyes, C. A. (2008). Microcontroladores PIC, programación en BASIC. Volumen 1.

Tercera Edición. Ecuador: RISPERGRAF. ISBN: 9789978450048

Stallings, W. (2007). Organización y arquitectura de computadores. Séptima

edición. México: Prentice Hall.

ISBN: 9788420529936

Fuentes complementarias

Hayes, J. (1998). Architecture and Organization. New York:. McGraw-Hill

ISBN-13: 9780072861983

Deitel, H. (2004). Cómo programar en C/C++ y Java. Cuarta Edición. México:

Pearson Prentice Hall.

ISBN: 9702605318

García, B, E, (2009). Compilador C CCS y Simulador Proteus para

Microcontroladores PIC. Segunda edición. Barcelona: Marcombo.

ISBN: 9788426718648

Fuentes electrónicas

Alegsa. (2013). Diccionario de Informática. Santa Fe. 25-07-2013. Consultado:

http://www.alegsa.com.ar/Diccionario/C/5172.php

Alegsa. (2013). Diccionario de Informática. Santa Fe. 25-07-2013. Consultado:

http://www.alegsa.com.ar/Dic/arquitectura%20harvard.php

Alegsa. (2013). Diccionario de Informática. Santa Fe. 25-07-2013. Consultado:

http://www.alegsa.com.ar/Dic/conversor%20analogico-digital.php

Construmática. (2013). Construmática, Arquitectura, Ingeniería y Construcción.

España. 25-07-2013. Consultado:

http://www.construmatica.com/construpedia/Temporizador

Page 64: Unidad 3. Microcontroladores

Arquitectura de computadoras II

Unidad 3. Microcontroladores

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

Iborra. A. (2002). Introducción a los microprocesadores y microcontroladores.

Universidad de Sonora. México. Consultado:

http://paginas.fisica.uson.mx/horacio.munguia/aula_virtual/Recursos/Introduccion%

20PIC16f84.pdf

Malpica. N. (2013). Electrónica Digital. Universidad Rey Juan Carlos. Madrid.

España. Consultado:

http://www.cartagena99.com/recursos/electronica/apuntes/Electronica_conversion

_AD_DA.pdf

Medialab-Prado (2011). Presentación de Arduino: The Documentary (2010). 16-07-

2013. Consultado en: http://medialab-prado.es/article/documental_arduino

Noriega, Sergio. (2003). Circuitos Generadores de Reloj. Facultad de Ingeniería.

Universidad Nacional de la Plata. Argentina. Consultado:

http://www.ing.unlp.edu.ar/islyd/apgeneradoresdeclock2003.pdf

Rosero, J. A. (2012). Tutorial de ISIS proteus. 16-07-2013- Consultado en:

http://www.youtube.com/watch?v=jsb75ms0zRU

Silva. G. R. (2007). Diferencia entre microprocesador y microcontrolador.

Universidad Autónoma de Nayarit. Nayarit. Consultado:

http://www.fv.uan.edu.mx/file.php/77/tema1/Primera_sesion.pdf

Ted Conversations (2012). Massimo Banzi: Arduino da código abierto a la

imaginación. 15/07/2013. Consultada en:

http://www.ted.com/talks/lang/es/massimo_banzi_how_arduino_is_open_sourcing_

imagination.html

UNC. (2013). Universidad Nacional de Colombia. Colombia. 25-07-2013.

Consultado:

http://www.virtual.unal.edu.co/cursos/ingenieria/2000477/lecciones/100301.htm