APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de...

38

Transcript of APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de...

Page 1: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores
Page 2: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________1

UNIVESIDAD AUTONOMA METROPOLITANA

Unidad IZTAPALAPA

División CIENCIAS BASICAS E INGENIERÍA

Grado LICENCIATURA EN ING. BIOMEDICA

Título de Trabajo APLICACIÓN DE MICROCONTROLADORES

Nombre del Participante MENDEZ DELGADILLO ARLES MONICA

Nombre del Asesor M. EN C. VICTOR H. TELLEZ ARRIETA

Firma del Asesor

Lugar y Fecha de Realización MEXICO, D.F. MAYO 1999.

Page 3: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________2

CONTENIDO

• Introducción

• Marco Teórico

• Que es un Microcontrolador

• Caracteristicas y arquitectura de los microcontroladores PIC

§ Memoria de programa

§ Memoria de Datos

§ Interfases/Periféricos

§ Características Especiales

§ Esquema de Reloj/Ciclo de Instrucción

• CPU y ALU

§ Unidad de Procesamiento Central

§ Unidad Lógica Aritmética (ALU)

• Puertos de Entrada/Salida “I/O”

• Convertidores A/D

• Ejemplos de programas con aplicaciones de microcontroladores

• Conclusiones

• Bibliografía

Page 4: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________3

APLICACIÓN DE MICROCONTROLADORES

INTRODUCCCION

En el mundo moderno la tecnología nos lleva a buscar mejores soluciones, mas

especializadas, mas altos rendimientos y mejores costos. Como un balance de

efectividad, rendimiento, y bajo costo, se desarrollan pequeños computadores que

pasan a ser parte de nuestra vida cotidiana, los microcontroladores.

Los microcontroladores están dentro de muchos tipos de equipos electrónicos,

representan la gran mayoría de procesadores vendidos: más del 50% son

controladores “sencillos”, y otro 20% son procesadores digitales de señales

(DSPs) mas especializados. Un hogar típico en un país desarrollado es probable

que tenga solamente uno o dos microprocesadores de propósito general pero algo

entre una y varias docenas de microcontroladores. Estos pueden encontrarse en

equipos eléctricos, lavadoras, hornos de microondas, teléfonos, celulares, etc.

La instrumentación y la electromedicina son dos campos idóneos para la

implementación de microcontroladores. Otra importante industria consumidora de

estos circuitos integrados es la automotriz, que los aplica en el control de aspectos

tan populares como la climatización, la seguridad y los frenos ABS, entre otros.

MARCO TEORICO

QUE ES UN MICROCONTROLADOR

Un microcontrolador es un circuito integrado programable que contiene todos los

componentes de una computadora. Un microcontrolador es una computadora en

un chip utilizada para controlar el funcionamiento de una tarea determinada en

dispositivos electrónicos y suele ser incorporado en el propio dispositivo que

Page 5: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________4

gobierna, por cuya característica tiene la denominación de “controlador incrustado”

(embedded controller). Es un tipo de microprocesador que enfatiza la

autosuficiencia y el costo-efectividad, en contraste con los microprocesadores de

propósito general (como los utilizados en una PC). Un microcontrolador típico

contiene todas las memorias e interfaces necesarias para una aplicación simple,

mientras que un microprocesador requiere de chips adicionales para proveer estas

funciones.

CARACTERISTICAS Y ARQUITECTURA DE LOS

MICROCONTROLADORES PIC

Un microcontrolador es un circuito integrado simple que posee todos los

componentes de un computador pero con características fijas que no pueden

alterarse.

Sus principales características son las siguientes:

1. Procesador

2. Memoria no volátil para almacenamiento del programa

3. Memoria de lectura/escritura para almacenamiento de datos

4. Interfases de Entrada/Salida o Periféricos

5. Características Especiales.

Esta integración reduce dramáticamente el número de chips y la cantidad de

cableado y espacio que sería necesario para producir sistemas equivalentes

usando chips separados.

En la arquitectura Harvard se tienen la memoria de programa y la memoria de

datos como memorias separadas las cuales se accesan desde buses separados.

Esto mejora por mucho la arquitectura tradicional Von Newman en la cual el

Page 6: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________5

Memoriade Datos CPU

Memoria deInstrucciones

CPU Memoria deDatos e

Instrucciones

programa y los datos eran capturados desde la misma memoria utilizando el

mismo bus.

Los microcontroladores utilizan la arquitectura Harvard en la cual son

independientes la memoria de instrucciones y la memoria de datos y cada una

dispone de su propio sistema de buses para el acceso. Esta dualidad además de

propiciar el paralelismo, permite la adecuación del tamaño de las palabras y los

buses a los requerimientos específicos de las instrucciones y de los datos.

También la capacidad de cada memoria es diferente. El aislamiento y

diferenciación de los dos tipos de memoria permite que cada uno tenga la longitud

y el tamaño adecuados.

ARQUITECTURA HARVARD vs ARQUITECTURA VON NEWMAN

8 14

BUS DE DATOS BUS DEINSTRUCCIONES

HARVARD

8

BUS DE DATOS/INSTRUCCIONES

VON NEWMAN

El procesador de los microcontroladores responde a la arquitectura RISC

(Reduced Instruction Set Computer), que se caracteriza 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.

Page 7: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________6

El rendimiento del computador es aumentado por el paralelismo implícito que

consiste en la segmentación del procesador (pipe-line), descomponiéndolo en

etapas para poder procesar una instrucción diferente en cada etapa y trabajar con

varias a la vez.

La arquitectura de los microcontroladores PIC está basada en un juego de

instrucciones RISC modificado que provee una ruta de migración desde 6 hasta 8

pines y desde 384 bytes hasta 128Kbytes de memoria de programa.

Los microcontroladores PIC incorporan en su procesador las siguientes tres

características avanzadas:

- Arquitectura Harvard

- Instrucciones tipo RISC

- Procesador segmentado

Al integrar estos elementos se logra alto rendimiento y elevada velocidad, ya que

los PICs son capaces de ejecutar en un ciclo de instrucción todas las

instrucciones, con excepción de las de salto.

En la arquitectura de los microcontroladores PIC se utilizan instrucciones

ortogonales. Estas instrucciones ortogonales hacen posible que se lleve a cabo

cualquier operación en cualquier registro usando cualquier modo de

direccionamiento. Esta naturaleza simétrica y carente de “instrucciones

especiales” hacen de la programación simple eficiente.

Las ventajas que se obtienen de la arquitectura que utilizan los PIC son:

- Instrucciones de 12-, 14- y 16-bit de ancho que son mas compatibles y

mejor confeccionadas para maximizar la eficiencia en el proceso y

elevar el rendimiento.

Page 8: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________7

- Las instrucciones y los datos son transferidos en buses separados,

evitando cuellos de botella en el procesamiento e incrementando

sobretodo el rendimiento del sistema.

- Las etapas de segmentación (pipelining) habilitan que una instrucción

sea ejecutada mientras la siguiente es recogida o capturada.

- Las instrucciones con un ancho de palabra sencillo incrementan la

eficiencia del código de software y reduce memoria de programa

requerida.

Memoria de programa

El diseño del microcontrolador es tal que en su memoria se almacenan todas las

instrucciones del programa de control sin la posibilidad de utilizar memorias

externas de ampliación.

Ya que el programa a ejecutar es siempre el mismo, éste se graba de forma

permanente. Para cubrir los exigentes requerimientos de diseño existen las

siguientes opciones de programación:

ROM CON MASCARA

En este tipo de memoria el programa se graba en el chip durante el proceso de

fabricación mediante el uso de “máscaras”. Esta opción ofrece el mas bajo costo

para productos en alto volumen.

EPROM

La grabación de esta memoria se realiza mediante un “grabador”, que es un

dispositivo físico controlado desde una PC. En la superficie del encapsulado existe

una ventana de cristal por la que se somete al chip de la memoria a rayos

ultravioleta para producir su borrado y emplearlo nuevamente. Su uso es

Page 9: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________8

recomendable en la fase de diseño, pero debe considerarse que su costo unitario

es alto.

OTP (One Time Programmable)

Los microcontroladores OTP son manufacturados en altos volúmenes sin un

software específico para el consumidor y pueden ser programados una sola vez

por el usuario, utilizando el mismo procedimiento que con la memoria EPROM. No

es posible su borrado posterior. Tienen precios muy accesibles y la sencillez de

grabación sugieren este tipo de memoria para prototipos finales y series de

producción cortas así como para consumidores que necesitan rápido acceso en el

mercado y flexibilidad para actualizaciones de software frecuentes.

EEPROM

La grabación es similar a las memorias OTP y EPROM, pero el borrado es mucho

mas sencillo al poderse efectuar de la misma forma que el grabado, esto es,

eléctricamente. De esta manera las memorias EEPROM pueden ser programadas

y grabadas cuantas veces se requiera. A este tipo de memorias corresponde el

PIC16C84 que es de los mas versátiles y convenientes de su tipo.

Este tipo de microcontroladores por sus características es ideal para la enseñanza

y creación de nuevos proyectos aunque tienen limitaciones en su capacidad,

además el tiempo de escritura es relativamente grande y con elevado consumo de

energía.

FLASH (ELECTRICAMENTE RE-PROGRAMABLE)

Los microcontroladores Flash PIC permiten borrar y reprogramar la memoria de

programa en el microcontrolador. Es una memoria no volátil, de bajo consumo,

que se puede escribir y borrar al igual que las EEPROM, pero cuentan con mayor

capacidad. Los microcontroladores Flash pueden ser programados por los

Page 10: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________9

usuarios en el proceso de manufactura o actualizar sistemas en campo. Estas

características permiten una revisión sencilla de código, parametrización de

sistema u opciones específicas de usuario sin desperdicio. La re-programabilidad

reduce también el ciclo de verificación de diseño.

PROGRAMACION SERIAL EN CIRCUITO “ICSP™” (In-circuit serial

programming)

Los microcontroladores Flash y OTP tienen la característica de ICSP. La ICSP

permite que el microcontrolador sea programado después de ser colocado en la

tablilla del circuito, ofreciendo una enorme flexibilidad, tiempo reducido de

desarrollo e incremento en la eficiencia de manufactura. Esta popular tecnología

hace posible costos reducidos de actualizaciones en campo, calibraciones de

sistema durante la manufactura y la adición de códigos únicos de identificación al

sistema. Requiriendo solamente dos pines de Entrada/Salida para la mayoría de

los dispositivos, se ofrece la metodología de programación menos invasiva en la

industria.

AUTOPROGRAMACION

Existen familias de microcontroladores con la capacidad de auto programación. La

auto programación habilita actualizaciones remotas a la memoria de programa tipo

Flash y al dispositivo final a través de una variedad de medios que van desde

Internet y modem hasta RF e infrarrojos. Para fijar la auto programación, el

diseñador programa un sencillo algoritmo cargador de parche en una área de

código protegido de la memoria de programa Flash. A través del medio

seleccionado un comando seguro permite la entrada dentro del microcontrolador a

través de diferentes puertos de comunicación como lo son I2C o SPI serial. El

cargador de parche entonces se habilita para reprogramar la memoria de

programa con los datos recibidos, así la auto programación se lleva a cabo sin la

Page 11: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________10

necesidad de componentes externos y sin limitaciones de velocidad de operación

o voltaje.

Memoria de Datos

Ya que los datos que manejan los programas se modifican constantemente, los

microcontroladores cuentan con memorias de lectura y escritura. Los hay con

memorias del tipo EEPROM que evitan la pérdida de información con el corte de

energía y que la mantienen disponible para cuando se reinicie el programa.

También los hay con memorias tipo SRAM

La memoria de datos está construida por el área de Registros de Funciones

Especiales (SFR) y por el área de Registros de Propósitos Generales (GPR). Los

SFR son usados para control y estado del microcontrolador y funciones

periféricas, mientras que los GPR son el área general para almacenamiento de

datos y operaciones en el uso de parches. La memoria de datos/archivos de

registro pueden ser directamente o indirectamente direccionados. Todos los

registros de funciones especiales, incluyendo el contador de programa, se mapean

en la memoria de datos.

Interfases/Periféricos

Los periféricos son las características que suman una diferenciación de un

microprocesador. Estos facilitan la interfase al mundo exterior (tales como E/S de

propósito general, entradas A/D, y salidas PWM), y a tareas internas, tal como el

mantener diferentes tiempos bases (p.e. temporizadores). Estos periféricos son

los siguientes:

1. Entradas/Salidas “E/S”

2. Puerto Paralelo Esclavo “PSP”

3. Temporizadores “Timer”

Page 12: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________11

4. Captura/Comparación/PWM (Modulación de Ancho de Pulso)

5. Puerto Serial Esclavo “SSP”

6. Puerto Serial Maestro Sincronizado “MSSP”

7. USART direccionable (Módulo Transmisor Receptor Asíncrono SíncronoUniversal)

8. CAN (Controller Area Network)

9. Comparador de Voltaje

10. Comparadores

11. Convertidor A/D compatible

Características Especiales

Las características especiales son las características únicas que ayudan a:

§ Decrementar el costo del sistema

§ Incrementar la confiabilidad del sistema

§ Incremetar la flexibilidad de diseño

Varias características especiales que ayudan a alcanzar estas metas son:

1. Detección de Bajo Voltaje

2. Operación WDT y “Dormido”

3. Bits de configuración del dispositivo

4. Programación Serial “En Circuito” (ICSP)

Page 13: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________12

DIAGRAMA DE BLOQUES DEL PIC16F84A

Esquema de Reloj/Ciclo de Instrucción

La entrada del reloj está internamente dividida para generar los diferentes relojes

(Q1, Q2, Q3, Q4) graduales sin traslaparse. Internamente, el contador de

programa se incrementa cada Q1, y la instrucción es capturada de la memoria de

programa y colocada en el registro de instrucción en Q4 (para este caso en

particular donde suponemos que el PIC cuenta con cuatro relojes). La instrucción

es decodificada y ejecutada durante el siguiente Q1 hasta Q4. El flujo del reloj y de

la ejecución de instrucciones se ilustra como sigue:

Page 14: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________13

CICLO DE RELOJ/INSTRUCCIÓN

Hay tres fuentes de reloj/oscilador desde las cuales el dispositivo puede operar.

Estas son:

1. Reloj de sistema externo (Tosc)

2. Lazo de fase cerrada (PLL)

3. Oscilador temporizador (TT1P)

CPU y ALU

Unidad de Procesamiento Central

La Unidad de Procesamiento Central (CPU) es responsable de usar la información

en la memoria de programa (instrucciones) para controlar la operación del

dispositivo. Muchas de estas instrucciones operan en la memoria de datos. Para

operar en la memoria de datos se requiere de la Unidad Lógica Aritmética (ALU).

Para ejecutar operaciones aritméticas y lógicas la ALU controla el estado de los

bits los cuales se encuentran en el Registro de “Status”. El resultado de algunas

instrucciones forzan el status de los bits a un valor dependiendo del estado del

resultado.

La CPU reconoce sus códigos máquina así como los mnemónicos (instrucciones)

que el macro ensamblador correspondiente reconoce para generar estos códigos.

Page 15: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________14

La familia de instrucciones que manejan los PICs puede tener cinco formatos

generales como se muestra adelante. , y cuyos códigos de instrucciones (opcode)

varían desde 4 bits hasta 8 bits. Este tamaño variable de “opcode” es lo que

permite que sean implementados juegos de instrucciones reducidos.

Formato general para Instrucciones

a. Operaciones de registros de archive orientadas por Byte

d = 0 para el destino que resulte para ser el registro WREG d = 1 para el destino que resulte para ser el registro de archivo (f) a = 0 para forzar al Banco de Acceso a = 1 para BSR para seleccionar el banco f = dirección de registro de archivo de 8 bit

Ejemplo de Instrucción: ADDWF MYREG, W, a

b. Operaciones de movimiento Byte a Byte

f = dirección de registro de 12 bits Ejemplo: MOVFF MYREG1, MYREG2

c. Operaciones de registros de archivo orientados por Bit

b = posición de 3 bits del bit en el registro de archivo (f) a = 0 para forzar al Banco de Acceso a = 1 para BSR para seleccionar banco f = dirección de registro de archivo de 8 bits

Ejemplo: BSF MYREG, bit, a

d. Operaciones literales

k = valor inmediato de 8 bit

Ejemplo: MOVLW 0X7F

15 10 9 8 7 0OPCODE d a f(FILE#)

15 12 11 0OPCODE f( FILE# fuente)

15 12 11 01111 f( FILE# destino)

15 12 11 8 8 7 0OPCODE b (BIT #) a f(FILE#)

15 8 7 0OPCODE k(literal)

Page 16: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________15

e. Operaciones de control

n = valor inmediato 20 bits

Ejemplo: Instrucciones “CALL” y “GOTO”

La CPU puede ser catalogada como el cerebro del equipo. Es responsable de

capturar las instrucciones correctas para su ejecución, decodificar esa instrucción

y entonces ejecutarla.

La CPU en ocasiones trabajo en conjunción con la ALU para completar la

ejecución de la instrucción en operaciones lógicas y aritméticas.

La CPU controla el bus de direcciones de la memoria de programa, el bus de

direcciones de la memoria de datos y el acceso a la pila.

Unidad Lógica Aritmética (ALU)

Los dispositivos PIC contienen una ALU de 8 bits y un registro de trabajo (WREG)

de 8 bits. La ALU es una unidad lógica y aritmética de propósito general. Esta lleva

a cabo funciones aritméticas y Boleanas entre los datos en el registro de trabajo y

cualquier registro de archivo. El registro WREG está directamente direccionado y

en el mapa de memoria SFR.

15 8 7 0 OPCODE n<7:0>(literal)15 12 11 0

1111 n<19:8>(literal)

Page 17: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________16

Registro WREG

Registro STATUSRegistros deFuncionesEspeciales (SFR)y RAM depropósito general(GPR)

OPERACION DE LA ALU Y REGISTRO WREG

Literal de 8 bits Archivo de Registros (de palabra de instrucción)

Valor de registro de 8 bits(de instrucción o dirección directa o indirecta)

8 8

8 8

Bit C Bits N, OV, Z, DC y C

ALU

Bit d o de instrucción 8

La ALU tiene un ancho de 8 bits y es capaz de realizar operaciones de suma,

substracción, multiplicación, intercambio y lógicas. Al menos que se mencione lo

contrario, las operaciones aritméticas son complemento de dos en naturaleza. En

instrucciones de dos operandos, típicamente un operando es el registro WREG. El

otro operando es un registro de archivo o una constante inmediata. En

instrucciones de operandos sencillos, el operando es ya sea el registro WREG o

un registro de archivo.

El multiplicador 8x8 opera en un ciclo sencillo, colocando el resultado de 16 bits en

un par de registros.

Dependiendo de la instrucción ejecutada, la ALU puede afectar los valores de los

bits del Cargador (C), Cargador de Digito (DC), Cero (Z), Sobreflujo (OV), y

Negativo (N) en el registro STATUS.

Page 18: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________17

Puertos de Entrada/Salida “I/O”

Los pines de I/O de propósito general pueden ser considerados como los mas

simples de los periféricos. Ellos le permiten al PIC monitorear y controlar otros

dispositivos. Para dar flexibilidad y funcionalidad a un dispositivo, algunos pines

son multiplexados con función(es) alternativa(s). Estas funciones dependen de

cuales características periféricas están en el dispositivo. En general, cuando un

periférico está funcionando, ese pin no puede ser utilizado como pin de I/O de

propósito general.

Para la mayoría de los puertos, la dirección de lso pines de I/O (entrada o salida)

es controlada por el registro de dirección de dato, llamado registro TRIS. El

TRIS<x> controla la dirección del Puerto<x>. Un “1” en el bit TRIS corresponde a

que el pin está siendo una entrada, mientras que un “0” corresponde a que el pin

parece O (salida).

El registro de Puerto es el enlace “latcht” para el dato para la salida. Cuando el

Puerto es leído el dispositivo lee los niveles presentes en los pines de I/O (no el

enlace). Esto significa que se debe tener cuidado con los comandos de lectura-

modificación-escritura en los puertos y cambiar la dirección de un pin desde una

entrada hasta una salida. El escribir a un puerto implica que los pines del puerto

son leídos, este valor es modificado, y entonces escrito al enlace de dato del

puerto.

EJEMPLO: INICIALIZACION DE PuertoA

Nota: En un Reset de Encendido, estos pines son configurados como entradas y se leen como “0”

;************************************************************BCF STATUS, RP0 ;CLRF PORTA ; Inicializa el PuertoA limpiando la salida; enlaza datosBSF STATUS, RP0 ; Selecciona el Banco1MOVLW 0x0F ; Valor usado parsa inicializar la dirección de datoMOVWF TRISA ; Establece a RA<3:0> como entradas; RA4 como salidas; TRISA<7:5> son siempre leídos como “0”;************************************************************

Page 19: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________18

Convertidores A/D

Algunos microcontroladores PIC cuentan con modulos convetidores A/D. Para

estos casos una entrada analógica carga una muestra y un capacitor. La salida de

la muestra y el capacitor es la entrada del convertidor. El convertidor genera

entonces un resultado digital de este nivel analógico vía una aproximación exitosa.

Esta conversión A/D de la señal de entrada analógica da como resultado un

número digital correspondiente.

Los voltajes analógicos de referencia (suministro positivo y negativo) son

seleccionables vía software ya sea para los voltajes de suministro del dispositivo

(AVDD, AVss) o para el nivel de voltaje de referencia.

El convertidor A/D tiene la característica única de ser capaz de convertir mientras

el dispositivo está en modo dormido. Los convertidores A/D de los

microcontroladores tienen diferentes registros para los diferentes resultados y

registros de control.

Page 20: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________19

EJEMPLOS DE PROGRAMAS CON APLICACIONES DEMICROCONTROLADORES

Ahora bien que hemos mostrado a groso modo el funcionamiento general de los

microcontroladores PIC y algunas de sus aplicaciones, plantearemos algunos

ejemplos de sus aplicaciones más representativas.

1. Entradas/Salidas “E/S”

2. Puerto Paralelo Esclavo “PSP”

3. Temporizadores “Timer”

4. Captura/Comparación/PWM

5. Puerto Serial Esclavo “SSP”

6. USART direccionable

7. Convertidor A/D compatible

Page 21: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________20

;************************************************************

; Ejemplo para el PIC18CXX2;;;************************************************************; Este programa muestra cómo leer un push-button y el control de LEDs; El PuertoB está conectado a un LED de 8 segmentos. RA4 está conectado a un switch (S2).; Este programa incrementa una cuenta del registro de archivo cada vez que S2 es presionado; El valor de la cuenta se despliega en el LED conectado al PuertoB; El LED debe incrementarse de forma binaria cada vez que S2 se presiona.list p=18c452#include<P18C452.INC>;************************************************************; variables

Countequ0x000ce Code;************************************************************; reset vectors

org 00000h ; Vector de resetgotoStart

;************************************************************;el código de programa comienza aquí

org 00020h ; Comienzo del programa EPROMStart; Comienza

clrfLATB ; Limpia el PuertoBclrfTRISB ; Convierte todos los pines del PuertoB en salidas.clrfCount ; Limpia la cuenta

Loop; lazobtfscPORTA,4 ; ¿Se ha presionado S2? (Normalmente el valor alto,

;baja cuando ha sido presionado)gotoLoop ; No, revisa otra vez

IncCountincfCount,F ; Incrementa la cuentamovffCount,LATB; mueve la cuenta a PuertoB

DebouncebtfssPORTA,4 ; ¿Ha sido liberada el botón?gotoDebounce ; No, espera masgotoLoop ; Sí, espera por la siguiente vez que se presione

END ; directiva que indica el final del código.

Page 22: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________21

;************************************************************; Ejemplo para el PIC18CXX2;;;************************************************************; Este programa utiliza el Timer1 y Timer3 para demostrar el uso de prioridad.;; El Timer1 está configurado para interrupciones de alta prioridad; y el Timer3 está configurado para interrupciones de baja prioridad. Escribiendo; a los LEDS del PuertoB, se muestra que una interrupción de alta prioridad; anula una interrupción de baja prioridad.list p=18c452, n=48, t=ON, st=OFF#include "p18c452.inc";------------------DEFINICIONES DE BIT ------------------------------------F EQU 0x0001;------------------VECTORES-------------------------------------------org 0x000000 ; vector de resetbra STARTorg 0x000008 ; vector de interrupción de alta prioridadbra TMR1_ISRorg 0x000018 ; vector de interrupción de baja prioridadbra TMR3_ISR;--------------------PROGRAMA-----------------------------------START

rcall INIT; Establece las interrupciones de prioridad.

bsf RCON,IPEN ; habilita las interrupciones de prioridad.bsf IPR1,TMR1IP ; Establece al Timer1 como fuente de interrupción de alta prioridadbcf IPR2,TMR3IP ; Establece al Timer3 como fuente de interrupción de alta prioridadbcf PIR1,TMR1IF ; limpia la bandera de interrupción del Timer1bcf PIR2,TMR3IF ; limpia la bandera de interrupción del Timer3bsf PIE1,TMR1IE ; habilita las interrupciones del Timer1bsf PIE2,TMR3IE ; habilita las interrupciones del Timer3bsf INTCON,GIEH ; establece el bit que hace posible la interrupción globalbsf INTCON,GIEL

;Se establece el Timer1clrfT1CONclrfTMR1H ; limpia el alto del Timer1clrfTMR1L ; limpia el bajo del Timer1bsf T1CON,TMR1ON ; hecha a andar al (enciende)Timer1

;Se establece elTimer3clrfT3CONmovlw0xF0movwfTMR3H ; escribe 0xf000 en el Timer3clrfTMR3Lbsf T3CON,TMR3ON ; enciende al Timer3

MLOOPgotoMLOOP

;-------------------------------SUBRUTINAS---------------------------------TMR1_ISR ; ISR de alta prioridad

bcf PIR1,TMR1IF ;limpia la badera de interrupción del Timer1.bcf PORTB,0 ;Apaga al PORTB<0> para indicar alta prioridad; la interrupción ha anulado la prioridad baja.bsf PORTB,7 ;Enciende el PORTB<7> para indicar alta prioridad; la interrupción está ocurriendo.

T1POLLbtfssPIR1,TMR1IF ;Se censa a la bandera de interrupción del TMR11

Page 23: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________22

;para esperar por otro sobreflujo del TMR1.bra T1POLLbcf PIR1,TMR1IF ; limpia la bandera de interrupción del Timer1 otra vez.bcf PORTB,7 ; Apaga al PORTB<7> para indicar que el ISR de

; alta prioridad ha terminadoretfie

TMR3_ISR ; ISR de baja prioridadbcf PIR2,TMR3IF ; Limpia la bandera de interrupción del TMR3.movlw0xF0 ; Carga al TMR3 con el valor 0xF000movwfTMR3HclrfTMR3Lbsf PORTB,0 ; Enciende el PORTB<0> para indicar que una interrupción

; de baja prioridad está ocurriendo.T3POLL

btfssPIR2,TMR3IF ; Censa la bandera de interrupción del TMR3 para esperar; por otro sobreflujo del TMR3.

bra T3POLLmovlw0xF0 ; Carga al TMR3 con el valor de 0xF000 otra vez.movwfTMR3HclrfTMR3Lbcf PIR2,TMR3IF ; Limpia la bandera de interrupción del Timer3 otra vez.bcf PORTB,0 ; Apaga el PORTB<0> para indicar que el ISR de

; baja prioridad terminó.retfie

INITclrfPORTB ; establece al PuertoB para salidaclrfDDRBreturn

END ; fin de código

Page 24: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________23

;***********************************************************; EJEMPLO DE CODIGO PARA PIC18CXX2 CON PICDEM-2;;************************************************************; Este programa demuestra la funcionalidad básica del USART;; El PuertoB se conecta a un LED de 8 segmentos.; Cuando el PIC18C452 recibe una palabra de datos desde; el USART, el valor se despliega en el LED y; es retransmitido a la computadora huésped.;; Se establece un programa terminal a 9600 baudios, 1 bit de “stop”, sin paridadlist p=18c452; establece el tipo de procesadorlist n=0; suprime ruptures en la página en el archive de listainclude <P18c452.INC>;************************************************************; Vectores de Reset e Interrupción

org 00000h ; Reset VectorgotoStartorg 00008h ; Interrupt vectorgotoIntVector

;************************************************************; El programa comienza aquí

org 00020h ; Comienzo de programa EPROMStart

clrfLATB ; Limpia los enlaces “latches” de salida del PuertoBclrfTRISB ; Configura al PuertoB como salidasbcf TRISC,6 ; Hace al RC6 una salidamovlw19h ; 9600 baudios @4MHzmovwfSPBRGbsf TXSTA,TXEN ; Habilita la transmisiónbsf TXSTA,BRGH ; Selecciona la frecuencia alta de baudiosbsf RCSTA,SPEN ; Habilita el Puerto Serialbsf RCSTA,CREN ; Habilita la recepción continuabcf PIR1,RCIF ; Limpia la bandera de interrupción RCIFbsf PIE1,RCIE ; Establece la interrupción RCIEbsf INTCON,PEIE ; Habilita interrupciones periféricasbsf INTCON,GIE ; Habilita las interrupciones globales

;************************************************************; Lazo principal Main

gotoMain ; lazo a sí mismo;************************************************************; Rutina de Servicio de InterrupciónIntVector; Salva el contexto (registros WREG y STATUS) si es necesario.

btfssPIR1,RCIF ; ¿el USART causó interrupción?gotoOtherInt ; No, otra interrupciónmovlw06h ; Enmascara los bits no deseadosandwfRCSTA,W ; Revisa si hay erroresbtfssSTATUS,Z ; ¿Estaba el bit de Status de error puesto?gotoRcvError ; Se encontró error, banderamovfRCREG,W ; Obtiene dato de entradamovwfLATB ; Despliegue en LEDsmovwfTXREG ; Caracter Eco regresagotoISREnd ; va al final de ISR, restablece el contexto, regresa

Page 25: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________24

RcvErrorbcf RCSTA,CREN ; Limpia el status del receptorbsf RCSTA,CRENmovlw0FFh ; Enciende todos los LEDsmovwfPORTBgotoISREnd ; va al final de ISR, restablece el contexto, regresa

OtherIntgoto$ ; Encuentra la causa de la interrupción y le da servicio

; antes de regresar de la interrupción.; Si no, la misma interrupción re-ocurrirá tan pronto como; una ejecución regrese al programa interrumpido.

ISREnd; Restablece el contexto si es necesario.retfie

end ; fin de código de programa

Page 26: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________25

;************************************************************; EJEMPLO PARA PIC18CXX2 CON PICDEM-2;; HW: Tarjeta PICDEM-2; FRECUENCIA: 4MHz

;************************************************************; Este programa demuestra la modulación de ancho de pulso (PWM) usando CCP2.;; El periodo de PWM se fija y entonces el ciclo de trabajo varía; al buscar un Nuevo valor en una tabla. Cuando el valor final de; la tabla se lee, la tabla se lee en reversa. La salida de PWM; se establece con RC1. La señal de PWM puede observarse; en el pin RC1. Las partes Y3, C6 & C7 no están instaladas en: la tarjeta del PICDEM 2.;

list p=18c452, n=48, t=ON, st=OFF#include "p18c452.inc"

;************************************************************; definiciones de bitsF EQU 0x0001 ;************************************************************; Locaciones RAM 18C452DIRFLAG EQU 0x0000;************************************************************; Locaciones ROM 18C452TABLADDR EQU 0x0003000;************************************************************; vectors

org 0x000000 ; vector resetbra STARTorg 0x000008 ; vector de interrupción de alta prioridadbra TMR1_ISR

;************************************************************; Inicio de programaSTART; Establece el modulo PWM; Establece el periodo de PWM escribiendo en PR2; Establece el ciclo de trabajo de PWM al escribir al registro CCPR2L; y al CCP2CON<5:4>>bits; Hace al pin CCP2 una salida al limpiar el TRISC<2> bit.

clrfCCP2CON ; el módulo CCP está apagadobsf CCP2CON, CCP2M3; selecciona el modo PWMbsf CCP2CON, CCP2M2;selecciona el modo PWMmovlw0x3F ; Se establece la frecuencia PWM a 78.12kHzmovwfPR2;bcf TRISC, 1 ; hace del canal 1 una salidamovlw0x00movwfCCPR2L

;Establece el valor prescalar de TMR2 y habilita al Timer2 al escribir en T2CON;Configura el módulo CCP2 para la operación PWM

clrfT2CON ; limpia T2CONclrfTMR2 ; limpia Timer2bsf T2CON,TMR2ON ; enciende Timer2

;inicializa la bandera de dirección para tablaclrfDIRFLAG

Page 27: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________26

; Inicializa los registros apuntadores de la tabla; a la primera locación del dato almacenado en la memoria de programa.

movlwUPPER(TABLADDR)movwfTBLPTRUmovlwHIGH(TABLADDR)movwfTBLPTRHmovlwLOW(TABLADDR)movwfTBLPTRL

;establece interrupciónbsf RCON,IPEN ; habilita interrupciones de prioridad.bsf IPR1,TMR1IP ; establece al Timer1 como una fuente de interrupción

; de alta prioridadbcf PIR1,TMR1IF ; limpia la bandera de interrupción de Timer1bsf PIE1,TMR1IE ; habilita la interrupción de Timer1bsf INTCON,GIEH ; establece los bits que habilitan las interrupciones globalesbsf INTCON,GIEL

;Timer1 setupclrfT1CONclrfTMR1H ; limpia el valor alto de Timer1clrfTMR1L ; limpia el valor bajo de Timer1bsf T1CON,TMR1ON ; enciende Timer1

MLOOPgotoMLOOP

;************************************************************; subrutinasTMR1_ISR ; ISR de alta prioridad

bcf PIR1,TMR1IF ; limpia la bandera de interrupción de Timer1.rcall CHECK_ADDRbtfsc DIRFLAG,0bra RD_DOWN

RD_UP; Aquí el código hace una lectura de tabla, post- incrementa, y escribe el; valor al registro de ciclo-trabajo CCPR2L PWM.

tblrd*+movffTABLAT,CCPR2Lbra T1POLL

RD_DOWN; Aquí el código hace una lectura de tabla, post-decrementa, y escribe el; valor al registro de ciclo-trabajo CCPR2L PWM.

tblrd*-movffTABLAT,CCPR2Lbra T1POLL

T1POLLbtfssPIR1,TMR1IF ; Censa si hay bandera de interrupción Timer1 para;esperar por otra

; Sobreflujo de TMR1.bra T1POLLbcf PIR1,TMR1IF ;Limpia la bandera de interrupción de Timer1 otra vez.retfie

CHECK_ADDRmovlw LOW(TABEND) - 1subwf TBLPTRL,Wbnz CHECK_LOWsetf DIRFLAGreturn

CHECK_LOW

Page 28: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________27

movlw LOW(TABLADDR)subwf TBLPTRL,Wbnz DONE_CHECKclrf DIRFLAG

DONE_CHECKreturn

;-------------------------------Datos---------------------------------------org TABLADDR

DB 0x00,0x06,0x0C,0x12,0x18,0x1E,0x23,0x28DB 0x2D,0x31,0x35,0x38,0x3A,0x3D,0x3E,0x3FTABENDEND ; fin de código de programa

Page 29: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________28

;************************************************************************; Ejemplo para el PIC16C64/74; Puerto Paralelo Esclavo;;************************************************************************; Este programa es una demostración de la función del Puerto Paralelo Esclavo; del PIC16C64/74. El programa es manejado con interrupción, cuando al PIC; se le lee o se le escribe, se genera una interrupción. Si la interrupción; fue causada por una lectura, se incrementa un registro y; la nueva cuenta es colocada en una cola de salida. Si la interrupción fue; causada por una escritura, el dato se coloca en los pines del PuertoB;;Compatibilidad con MPASMWIN 1.40;;********************************************************************list p=16c64ERRORLEVEL -302;

include "p16c64.inc"LIST;------------------Definiciones de Registros ----------------------------FLAGREG equ 20h ;Registro de Bit BanderaOUTDATA equ 21h ;Dato de salidaINDATA equ 22h ;Dato de entradaCOUNT equ 23h ;Cuenta las veces que el registro de salida se lee;----------Definición de Bits para registros de bandera -----------

err equ 00h ;Bit bandera de errorOUTRDY equ 01h ;Bandera de dato de salida listoINFULL equ 02h ;Bandera de dato de entrada recibidoorg 0000h ;Vector Resetgoto Start ; lazoorg 0005h ; Vector Resetgoto Service_Int

;--------------------------------Programa ----------------------------------Start ;comienzo de código de programa

clrf OUTDATA ; Limpia los registros de datosclrf INDATAbsf STATUS,RP0 ; Selecciona el registro Bank1movlw b'00010111' ; Establece a RD, WR, y CS como entradasmovwf TRISE ; Habilita el Puerto Esclavo Paralelomovlw 0FFhmovwf TRISB ; Establece al PuertoB como salidamovlw b'10000000' ;movwf PIE1 ; Habilita la interrupción del Puerto Esclavo Paralelobcf STATUS,RP0 ;Selecciona registro Bank0movf OUTDATA,W ; Establece el Dato de salida en el PuertoDmovwf PORTDmovlw b'11000000' ; Establece GIE, PEIE (habilita interrupciones)movwf INTCON

Loop ; lazobtfsc FLAGREG,INFULL ;Revisa si se ha recibido un dato de entradagoto Checkout ;No hay dato listo, revisa la salidabcf FLAGREG,INFULL ;Limpia la bandera de dato de entrada listomovf INDATA,W ;Obtiene dato de entradamovwf PORTB ; Dato de entrada de salida a PuertoB

Checkoutbtfsc FLAGREG,OUTRDY ; Revisa si la salida de dato lista

Page 30: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________29

goto Loop ;No hay salida aún, lazoincf COUNT, F ;Incrementa el dato de salidamovf COUNT,W ; Obtiene dato de salidamovwf OUTDATA ;Pone el dato en la cola de salidabsf FLAGREG,OUTRDY ; Establece bandera para rutina de interrupcióngoto Loop

;*********************************************************************;*Rutina de Servicio de Interrupción;* Inputs: FLAGREG - Registro bandera para/desde rutina principal:;* Bit 1: OUTRDY – Para que el Servicio de Interrupción;* indique que hay dato listo en la cola de salida;* OUTDATA – Dato de salida en la cola;* PIR1 – Registro Bandera de Interrupción;* TRISE – Registro Bandera del Puerto Esclavo Paralelo;* PORTD – Dato de entrada desde Puerto esclavo;*;* Salidas:;* PORTD – Datos de salida a puerto esclavo;* INDATA – Cola de datos de entrada;* FLAGREG – Registro bandera para/desde la rutina principal:;* Bit 0: ERROR – desde el Servicio de Interupción, indica que;* buffer de entrada con sobreflujo;* Bit 2: INFULL – desde Servicio de Interrupción, indica;* dato recibido y en INDATA;*********************************************************************Service_Int

btfss PIR1,PSPIF ;Prueba la interrupción de periféricosgoto Intout ;No hay una interrupción de periférico, salirbcf PIR1,PSPIF ;Limpia la interrupción periféricabsf STATUS,RP0 ;Selecciona Bank1btfss TRISE,IBF ;Revisa si dato de entrada listogoto Notinput ;No entrada, revisa salidabcf STATUS,RP0 ;Entrada lista, selecciona Bank0bsf FLAGREG,INFULL ;Establece bandera para rutina principalmovf PORTD,W ;Obtiene dato de entradamovwf INDATA ;Pone Byte en cola de entrada

Notinput ;no entradabtfsc TRISE,OBF ;Revisa si el dato de salida ha sido leídogoto Intout ;No lectura, salirbcf STATUS,RP0 ;Selecciona Bank0btfss FLAGREG,OUTRDY ;Revisa si hay dato en cola de salidagoto Intout ;Salida sin leer, salirmovf OUTDATA,W ;Obtiene dato desde colamovf PORTD, F ;Pone dato en buffer de salidabcf FLAGREG,OUTRDY ;Limpia bandera para rutina principal

Intoutbsf STATUS,RP0 ;Selecciona Bank1btfsc TRISE,IBOV ;Revisa bandera de sobreflujo del buffer de entradagoto Interror ;Si no esta limpia, errorbcf STATUS,RP0 ;Selecciona Bank0retfie ;Re-habilita GIE y regresa

Interrorbcf STATUS,RP0 ;Selecciona Bank0bsf FLAGREG,err ;Establece bandera de error para rutina principalretfie ;Re-habilita GIE y regresa

end ;Fin de código de programa

Page 31: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________30

;************************************************************; EJEMPLO PARA EL PIC18CXX2 PARA PICDEM-2;;************************************************************; Este programa es una implementación simple de un convertidor A/D para el PIC18C452.;; Se selecciona un canal (AN0).; El hardware para este programa es el de PICDEM-2.; El programa convierte el valor de un potenciómetro en RA0 y lo despliega; como un valor binario en el PuertoB;; El convertidor A/D se configure como sigue:; Vref = +5V internos; A/D Osc. = RC interno; A/D Channel = AN0 (RA0); Fosc=4MHz

LIST P=18C452#include <P18C452.INC>; El archivo contiene direcciones para registros

;y nombres de bit;************************************************************; reset y vectores de interrupción

org 0x00000 ; Dirección del Vector de ResetgotoStartorg 0x00008 ; Dirección del Vector de InterrupcióngotoISR ; ir a la Rutina de Servicio de Interrupción

;************************************************************; el código de programa comienza aquí

org 0x00020Start

clrfPORTB ; limpia todos los bits del PuertoBclrfTRISB ; Establece al PuertoB como salidascallInitializeAD ; configura el módulo A/DcallSetupDelay ; retraso por 15 ciclos de instrucciónbsf ADCON0,GO ; Comienza la primera conversión A/D

MaingotoMain; lazo;************************************************************; Servicio de Interrupción A/D; Obtiene el valor y lo despliega en los LEDs ISR

; Salva el contexto (WREG y STATUS) si se require.btfssPIR1,ADIF ; ¿El convertidor A/D causó interrupción?gotoOtherInt ; No, revisa otras fuentesmovfADRESH,W ; Obtiene el valor del convertidor A/DmovwfLATB ; Despliegue del valor en LEDsbcf PIR1,ADIF ; Resetea la bandera interna del conv A/DcallSetupDelay ; Retraso de 15 ciclosbsf ADCON0,GO ; Comienza la conversion A/DgotoEndISR ; regresa de ISR

OtherInt; Esto puede ser reemplazado por código para revisar y dar servicio a otras fuentes deinterrupción goto$ ; trampa, lazo consigo mismo

EndISR; Restablece el contexto si fué salvadoretfie ; Regresa, habilita a GIE

;************************************************************; InitializeAD – inicializa y establece el hardware del A/D.

Page 32: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________31

; Selecciona de AN0 hasta AN3 como entradas analógicas, al reloj RC clock, y lee AN0.InitializeAD

movlwB'00000100' ; Hace de RA0,RA1,RA4 entradas analógicas.movwfADCON1movlwB'11000001' ; Selecciona el oscilador RC, AN0 está seleccionado,movwfADCON0 ; el A/D queda habilitadobcf PIR1,ADIF ; Limpia la bandera de interrupción A/Dbsf PIE1,ADIE ; Habilita la interrupción del A/Dbsf INTCON,PEIE ; Habilita las Interrupciones Periféricasbsf INTCON,GIE ; Habilita las Interrupciones Globalesreturn

;************************************************************; Esto es usado para darle tiempo del convertidor A/D de muestrear la entrada; (tiempo de adquisición);; Esta rutina require de 11 ciclos para ser completada.; La llamada “call” y el regreso “return” adicionan otros 4 ciclos.;; 15 ciclos con Fosc=4MHz significa que este retraso consume 15us.SetupDelay

movlw.3 ; Carga Temporal con 3 decimalmovwfTEMP

SDdecfszTEMP, F ; Lazo para retrasogotoSDreturn

END ; fin de código de programa

Page 33: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________32

;************************************************************; EJEMPLO PARA PIC18CXX2 CON;; HW: TARJETA PICDEM-2; FR: 4MHz:;************************************************************; Este programa utiliza las características avanzadas del PIC18C452, específicamente; el soporte de hardware completo para el módulo maestro I2C.;; Este programa carga las direcciones 0x00 a 0xFF de la EEPROM con 0x00 hasta 0xFF; (cada locación contiene su propia dirección).:; Cada locación es leída y comparada con lo que se espera.; El dato es desplegado en los LEDs. Si el dato es incorrecto,; el LED TX encenderá brevemente antes de proceder a la siguiente dirección.;;; Nota: 1) Todos los tiempos están basados en una frecuencia de referencia de 4Hz.; la cual es equivalente a un ciclo de instrucción.; 2) Las direcciones y valores literales son leídos en hexadecimal a menos; que se especifique lo contrario.; 3) El modulo MSSP del PIC18C452 ofrece soporte de HW completo para el módulo; maestro I2C.;************************************************************

LIST P=18C452;#include <P18C452.INC>listn=0 ; suprime lo saltos de página del archivolistST=off ; suprime la tabla de símbolos de archivo;

************************************************************; Asignación de Archivo de Registro

EEADDRequ0x000 ; Registro de direcciónEEDATAequ0x001 ; dato para leer/escribirEESLAVE equ 0x002 ; Dirección de dispositivo (1010xxxy)DelayCtr1equ0x003 ; contador de rutina de retrasoDelayCtr2equ0x004 ; contador de rutina de retrasoSlaveAddrequ0xA0 ; dirección literal esclava

;************************************************************; Asignación de vectores

ORG 0x00000gotoStart ; Vector de Reset

;************************************************************; Programa Principal

ORG 0x00020 ; Inicio de ProgramaStart; inicializa PuertoB

clrfLATB ; Limpia el “latch” de salida de PuertoBclrfTRISB ; Establece el PuertoB como salida

; configura SSP para módulo maestro de HW I2Cbsf SSPSTAT,SMP ; control de frecuencia I2C deshabilitadobsf SSPCON1,SSPM3 ; I2C master mode in hardwarebsf SSPCON1,SSPEN ; habilita el módulo SSPmovlw0x09 ; establece la frecuencia del reloj de I2C a 100kHzmovwfSSPADDbsf TRISC,3 ; el pin SCL de I2C es entradabsf PORTC,3 ; (será controlado por SSP)

Page 34: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________33

bsf TRISC,4 ; pin SDA de I2C SDA es entradabsf PORTC,4 ; (sera controlada por SSP)movlwSlaveAddr ; dirección I2C EEPROM

movwfEESLAVEMain

clrfPORTB ; inicializa variablesclrfEEDATAclrfEEADDR

WrEEPROMbsf PORTB,7 ; indica escritura, LED TX se ilumina LEDrcallDelaybcf EESLAVE,0 ; modo de escriturarcallWakeSlave ; obtiene la atención del esclavorcallWrADDR ; manda dirrección de EEPROMrcallWrDATA ; manda dato a esclavorcallStop ; manda bit de alto “stop”incfPORTB,F ; incrementa la cuentaincfEEDATA,F ; incrementa el datoincfEEADDR,F ; Apunta a la próxima direcciónbtfssEEADDR,7 ; al final de la EEPROM?gotoWrEEPROM ; no, escribe ms datos

RdLoopclrfPORTB ; inicializa variablesclrfEEDATAclrfEEADDR

RdEEPROMrcallDelaybcf EESLAVE,0 ; modo de escriturarcallWakeSlave ; obtiene atención de esclavorcallWrADDR ; manda dirección de EEPROMrcallStop ; manda bit de altobsf EESLAVE,0 ; modo de lecturarcallWakeSlave ; obtiene la atención de esclavorcallRdDATA ; recive un byte de datos, deja desocupadomovfEEDATA,W ; obtiene datomovwfPORTB ; mueve el dato recibido al PuertoBxorwfEEADDR,W ; compara dato con direcciónbz GoodData ; rama si DATA=ADDRrcallErrorloop ; DATA está equivocado, indica error

GoodDataincfEEADDR,F ; Apunta a la siguiente direcciónbtfssEEADDR,7 ; ¿final de la EEPROM?gotoRdEEPROM ; no, lee mas datosgotoMain ; hazlo todo otra vez

;************************************************************; LED TX parpadea para indicar error mientras despliega los datos recibidos.Errorloop

rcallDelaybtg PORTB,7 ; LED TX parpadearcallDelaybtg PORTB,7rcallDelaybtg PORTB,7rcallDelaybtg PORTB,7rcallDelaybtg PORTB,7

Page 35: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________34

rcallDelaybtg PORTB,7return

;************************************************************; manda un bit de comienzo, dirección esclava; si ACK no es recibida, manda reiniciar, prueba otra vez; la ejecución puede atorarse en este lazo si el esclavo no está presente; puede ser usado para censar el status del esclavo; (prueba mientras el esclavo responde)WakeSlave

bsf SSPCON2,SEN ; Manda bit de comienzobtfscSSPCON2,SEN ; ¿ya se ha limpiado SEN?goto$-2 ; No, lazo de regreso para prueba.

rWakeSlavebcf PIR1,SSPIF ; limpia bandera de interrupciónnopmovfEESLAVE,WmovwfSSPBUF ; mueve la dirección esclava a SSPBUFbtfssPIR1,SSPIF ; ¿SSP ha completado mandar la dirección ESCLAVO?goto$-2 ; no, lazo de regreso para pruebabtfssSSPCON2,ACKSTAT ;¿Fue ACK recibido desde esclavo?return ; si, regresa al llamado de la rutinabsf SSPCON2,RSEN ; manda el bit de comienzo repetido btfscSSPCON2,RSEN ; ¿Se ha mandado comienzo repetido?goto$-2 ; no, lazo de regreso para pruebabra rWakeSlave ; manda dirección de esclavo otra vez

;************************************************************; Escribe la dirección de memoria EEPROM, suspende si no ACKWrADDR

bcf PIR1,SSPIF ; limpia bandera de interrupciónmovffEEADDR,SSPBUF ; mueve la dirección EEPROM a SSPBUFbtfssPIR1,SSPIF ; ¿SSP ha terminado de mandar la dirección EEPROM?goto$-2 ; no, loop back to testbtfscSSPCON2,ACKSTAT ; ¿el esclavo ha mandado ACK?goto$-2 ; no, trata otra vezreturn

;************************************************************; Manda un byte de datos a esclavo, suspende si no ACKWrDATA

bcf PIR1,SSPIF ; limpia bandera de interrupciónmovffEEDATA,SSPBUF ; mueve dato a SSPBUFbtfssPIR1,SSPIF ; ¿SSP ha terminado de mandar dato a EEPROM?goto$-2 ; no, lazo de regreso a pruebabtfscSSPCON2,ACKSTAT ; ¿Esclavo ha enviado ACK?goto$-2 ; no, prueba otra vezreturn

;************************************************************; recibe un byte del esclavo; no envíe ACK, en lugar de ACK manda un bit de altoRdDATA

bcf PIR1,SSPIF ; limpia bandera de interrupciónbsf SSPCON2,RCEN ; habilita el modo de recepciónbtfssPIR1,SSPIF ; ¿SSP ha recibido un byte de dato?goto$-2 ; no, lazo de regreso a pruebabsf SSPCON2,ACKDT ; no ACK bsf SSPCON2,ACKEN ; manda bit ACKDT

Page 36: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________35

btfscSSPCON2,ACKEN ; ¿ya se ha enviado el bit ACKDT?goto$-2 ; no, lazo de regreso a pruebabsf SSPCON2,PEN ; manda bit de altobtfscSSPCON2,PEN ; ¿se ha mandado ya bit de alto?goto$-2 ; no, lazo de regreso a pruebamovffSSPBUF,EEDATA ; salva datos en RAMbcf SSPCON2,RCEN ; deshabilita el modo de recepciónreturn

;************************************************************; Sends stop bit, waits until sentStop

bsf SSPCON2,PEN ; manda bit de altobtfscSSPCON2,PEN ; ¿se ha enviado bit de alto?goto$-2 ; no, lazo de regreso a pruebareturn

;************************************************************; retaraso de 98.57mSDelaymovlw0x80movwfDelayCtr2 ; presetclrfDelayCtr1 ; limpia contadorDelay1decfszDelayCtr1 ; decrementa contadorbra Delay1 ; regresa al inicio de lazodecfszDelayCtr2 ; decrementa contadorbra Delay1 ; regresa al inicio de lazoreturnEND ;fin de código de programa

Page 37: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________36

CONCLUSIONES

Podemos concluir que el alto desempeño de los microcontroladores PIC puedeser atribuida a las características de arquitectura comúnmente encontradas en losmicroprocesadores RISC. Estas incluyen:

§ Arquitectura Harvard§ Instrucciones de palabras largas§ Instrucciones de palabras cortas§ Instrucciones de palabras sencillas§ Segmentación de instrucciones “pipelining”§ Juego de Instrucciones Reducido§ Arquitectura de Archivo de Registro§ Instrucciones Ortogonales (simétricas)

Los microcontroladores son una elección lógica para diseños que requierenflexibilidad y desempeño. Es importante tomar en cuenta a la hora de seleccionarun PIC sus características de capacidad, desempeño, costo, tamaño,programación (lenguaje que utilizan) ya que se cuenta con una gama vasta paralas diferentes necesidades de diseño.

Su funcionalidad puede aplicarse a solucionar problemas de tecnología de puntaademás de abatir costos de diseño que han sido la mayoría de las veces unobstáculo para la solución de los mismos.

Mientras muchas veces el lenguaje ha sido una limitante, en otras loscompiladores que están ya disponibles tienen ambientes de programación muyamigables al usuario, por lo que nos permite realizar aplicaciones cada vez mascomplejas con menor esfuerzo.

La flexibilidad de diseño en el manejo de microcontroladores nos permite suaplicación en prácticamente cualquier campo en donde la electrónica y laautomatización de procesos se requiera.

Page 38: APLICACIÓN DE MICROCONTROLADORES - …148.206.53.84/tesiuami/UAMI13022.pdf · § Unidad de Procesamiento Central ... • Ejemplos de programas con aplicaciones de microcontroladores

____________________________________________________________________________________________APLICACIÓN DE MICROCONTROLADORES

_________________________________________________________________________________________________________________37

BIBLIOGRAFÍ A

§ “Manual de Referencia de la familia PICmicro 18C MCU”. MicrochipTechnology Incorporated. USA, 1999.

§ Angulo A., José M. “Microcontroladores PIC. Diseño práctico deaplicaciones.” 1ª ed. Mc Graw Hill. España, 1997.

§ “Data Sheet. PIC16F84A”. Microchip Technology Incorporated. USA, 1999.

§ Fink, Scott. “Using the 8-Bit Parallel Slave Port”. Microchip TechnologyIncorporated. USA, 1997.

§ Fink, Scott. “Use of the SSP Module in the I2C Multi-Master Environment”.Microchip Technology Incorporated. USA, 1997.