126
MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco Cribillero 2012- I

MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

Embed Size (px)

Citation preview

Page 1: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

MICROCONTROLADORES

UNIVERSIDAD TECNOLÓGICA DEL PERÚFACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA

CIRCUITOS DIGITALES II

DOCENTE: ING. Luis Pacheco Cribillero

2012- I

Page 2: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TEMA 1: INTRODUCCIÓN A LOS

MICROCONTROLADORESLos microcontroladores se encuentran presentes en

muchas tareas, artefactos y procesos que realizamos y/o utilizamos a diario. Un ejemplo de ello son: las antiguas tarjetas telefónicas, un reloj despertador, una alarma de autos y casas, el Mouse de una computadora, las lavadoras modernas, televisores, microondas, teléfonos celulares, sistemas de control de acceso, controladores de temperatura, juguetes, etc. Resumiendo están presentes en las siguientes áreas: industriales, telecomunicaciones, automóviles, entretenimiento, seguridad, entre otras.

            Los microcontroladores son una evolución de los microprocesadores, nacidos en la década de los 70's, presentando en la actualidad completas utilidades y aplicaciones, integrándose en un chip, funciones electrónicas que antes eran posibles por circuitos externos separados.

            Imaginémonos un circuito integrado que controla externamente los siguientes circuitos: memoria RAM, EPROM, convertidor Analógico/Digital, comunicación serial, módulos temporizadores, entre otros. Esto en la actualidad se encuentra contenido en un solo circuito integrado de 18, 28 y 40 pines, lo que potencia las posibilidades de aplicaciones.

        21/04/23 2ING. Luis Pacheco Cribillero

Page 3: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

INTRODUCCIÓN A LOS MICROCONTROLADORES

        Los basamentos teóricos y de operatividad son muy similares a los controladores lógicos programables (PLC's) presentes en innumerables procesos industriales, a las computadoras.

Algunos autores definen al microcontrolador como una microcomputadora. Con un microcontrolador se puede diseñar un PLC, más no el caso contrario.

            Realizar un diseño con un microcontrolador es una tarea gratificante, ya que nos permitirá poner en la práctica nuestras destrezas y habilidades como diseñadores, y ver como realiza las funciones que nosotros les habremos de imponerles.

      Al finalizar todos los temas de este curso, mediante una sistemática enseñanza y metodología, estaremos en capacidad para partir de una idea o enunciado, hasta simularlo y llevarlo a la práctica; le encontraremos "El queso a la tostada"

            ¡¡¡ No es nada difícil, la práctica hace la excelencia !!!

21/04/23 3ING. Luis Pacheco Cribillero

Page 4: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ARQUITECTURA DE LOS MICROCONTROLADORES

Un microcontrolador es un computador dedicado, con limitaciones y menos prestaciones. Posee básicamente, las mismas partes que un computador y un controlador lógico programable. Entre ellas tenemos:– CPU (Unidad Central de Procesamiento)– ALU (Unidad Lógico - Aritmética)– Periféricos

Lógica de Control ALU

Memoria de Datos

Memoria de Programa

Periféricos

21/04/23 4ING. Luis Pacheco Cribillero

Page 5: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ARQUITECTURA DE LOS MICROCONTROLADORESHemos comentado en el tema anterior que los microcontroladores

son una evolución más práctica de los microprocesadores, y esto se fundamenta en dos aspectos importantes: los microcontroladores albergan en su interior varios circuitos que los microprocesadores no tienen. Esto se conoce como arquitectura cerrada (para los primeros) y arquitectura abierta (para los segundos) y la arquitectura tradicional del procesador del microcontrolador (Tipo Harvard) y de los microprocesadores (Tipo Von Neumann).

Microprocesador y su arquitectura abierta

µP

Memorias

Controladores

Controladores

Periféricos Periféricos

Bus de Direcciones

Bus de Datos

Bus de Control

21/04/23 5ING. Luis Pacheco Cribillero

Page 6: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

Microcontrolador y su arquitectura cerrada

µC

Periféricos

Arquitectura tipo Von Neumann

8CPU

Memoria

Instrucciones+

Datos

Bus común de direcciones

Bus de datos e instrucciones

21/04/23 6ING. Luis Pacheco Cribillero

Page 7: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ARQUITECTURA TIPO HARVARD

• Este tipo es la tendencia en las versiones modernas de microcontroladores. Se caracterizan por separar en circuitos diferentes, las memorias de instrucción y de datos, facilitando acceder a ambas simultáneamente. Permite la técnica de segmentación.

Bus de Instrucciones

Memoriade

Instrucciones

10

Bus de Dirección de Instrucciones

CPU Memoria

de Datos

Bus de Dirección de Datos

Bus de Datos

14

9

8

21/04/23 7ING. Luis Pacheco Cribillero

Page 8: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

¿CÓMO ACTUARÍA UN MICROCONTROLADOR EN UN PROCESO A

CONTROLAR? • Como lo haría cualquier sistema o circuito de control, sensando o tomando

información del proceso, realizando operaciones de comparación, o de acceso, o de promedio, o de alarma, etc, y actuando sobre el mismo para corregir, modificar, o mantener valores, según sean las exigencias del diseño. A "grosso modo", lo podemos ilustrar formando parte de un lazo de control cerrado o uno abierto:

Procesoque se desea controlar Microcontrolador

Microcontrolador

Información

Información

21/04/23 8ING. Luis Pacheco Cribillero

Page 9: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

MICROCONTROLADORES PIC DE MICROCHIP Existe una amplia gama de casas fabricantes de

microcontroladores, en el mercado: Motorola, Intel, Texas Instrumens, Hitachi, Parallax, etc, en este curso, se han adoptado los PIC de la gama o familia media de Microchip (PIC 16F8XX) por las siguientes prestaciones:

• ARQUITECTURA HARVARD

• ARQUITECTURA RISC            La arquitectura RISC (Reduced Instructions Set

Computer) o Juego de Instrucciones Reducidas para Computadoras, posee un total de 35 instrucciones en lenguaje de máquina o ensamblador (assembler), con las que se pueden realizar infinidades de programas para el microcontrolador, lo que simplifica su uso. Los microprocesadores utilizan arquitectura CISC (Complex Instructios Set Computers) y están por el orden de 80 instrucciones.

21/04/23 9ING. Luis Pacheco Cribillero

Page 10: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

MICROCONTROLADORES PIC DE MICROCHIP • SEGMENTACIÓN (PIPELINE)            Esta característica se conoce como paralelismo implícito,

segmenta ó separa las funciones del CPU, producto de la arquitectura Harvard, permitiéndole realizar en etapas, instrucciones diferentes en cada una de ellas y operar varias a la vez. Aumenta el rendimiento del CPU, lo que hace que sus operaciones y procesamiento sean más rápidas que la gran mayoría de los otros microcontroladores.

• INFORMACIÓN AMPLIAMENTE DIFUNDIDA Y DE FÁCIL ACCESO            Quizás una de las principales prestaciones. Esta casa fabricante

proporciona libre acceso a las hojas técnicas (Data Sheet) de sus diferentes componentes, así como software para programación, proyectos propuestos, tutoriales, etc mediante su página Web: www.microchip.com

• COMPATIBILIDAD•             Existen productos de software y hardware, que no pertenecen

a Microchip, pero que son totalmente compatibles con sus productos. Podemos "bajar" programas adicionales gratis de Internet y realizar circuitos para programarlos a un bajo coste, exitosamente.

21/04/23 10ING. Luis Pacheco Cribillero

Page 11: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CARACTERÍSTICAS GENERALES DE LOS MICROCONTROLADORES

ARQUITECTURA INTERNA DE UN MICROCONTROLADOR PIC    Se dividen en tres grandes áreas:1) Núcleo

Estas son las características básicas para la operatividad del microcontrolador. Están constituidas por:* Oscilador * Reset * CPU * ALU* Memoria no volátil para programa (ROM)* Memoria de lecto-escritura para datos (RAM)* Memoria programable para datos (EEPROM/FLASH)* Instrucciones

2) PeriféricosEs la parte que los diferencia con los microprocesadores.

Permite la conexión con el "mundo exterior". Destacan:– Entradas/Salidas de utilidad general– Módulo de captura, comparación y PWM (1)– Comunicación serial (1)– Comunicación paralela (1)– Comparadores (1) – Convertidores Analógico/Digital (1)

21/04/23 11ING. Luis Pacheco Cribillero

Page 12: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CARACTERÍSTICAS GENERALES DE LOS MICROCONTROLADORES

3) Características Especiales ó Recursos Auxiliares    Contribuyen a reducir el costo del sistema, incrementan la flexibilidad de diseño y brindan mayor fiabilidad. Entre ellas tenemos:– Bits de configuración– Reset de encendido– Temporizador WATCHDOG– Modo reposo ó de bajo consumo– Oscilador RC interno– Programación serie en el propio circuito– Interrupciones– Temporizadores (Timer's)– (1) Algunas de estas características aplican para los

PIC16F87X21/04/23 12ING. Luis Pacheco Cribillero

Page 13: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

Características ValorMemoria de Programa 1k x 14 bits

Memoria de Datos RAM 68 Bytes

Memoria de Datos EEPROM 64 Bytes

Pila de programa 8 Niveles

Interrupciones 4 tipos diferentes

RISC 35

Frecuencia Máxima 10 MHz

Temporizadores 2 (TMR0(3) y WDT(4))

Líneas de Entradas/Salidas Digitales 13 (5 Puerto A, 8 Puerto B)

Corriente máxima sumidero 80 mA PA/150 mA PB

Corriente máxima fuente 50 mA PA/100 mA PB

Corriente máxima sumidero por línea (Pin) 25 mA

Corriente máxima fuente por línea (Pin) 20 mA

Voltaje de alimentación 2 a 6 VDC

Voltaje de programación 12 a 14 VDC

Encapsulado DIP plástico 18 pines

21/04/23 13ING. Luis Pacheco Cribillero

Page 14: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

DIAGRAMA INTERNO DEL PIC 16F84

21/04/23 14ING. Luis Pacheco Cribillero

Page 15: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

HARDWARE PIC16F84

21/04/23 15ING. Luis Pacheco Cribillero

Page 16: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

DESCRIPCIÓN DE LOS PINES DEL PIC16F84

Pin Descripción/Función

VDD Voltaje de alimentación. Se aplican 5 VDC

VSS Tierra

FOSC1/CLKINEntrada del circuito oscilador externo, que

proporciona la frecuencia de trabajo

FOSC2/CLKOUT Salida auxiliar del circuito oscilador

MCLR/VPP

Se activa con nivel bajo, proporcionando una reinicialización del sistema (reset). Cumple con una función adicional (VPP) que recibe la alimentación del voltaje de programación, al momento de grabar al PIC.

RA4:RA0

5 líneas de Entradas/Salidas digitales del Puerto A.RA4 tiene una función adicional: Entrada de un reloj

externo asíncrono ó síncrono, cuando el microcontrolador trabaja como contador de eventos.

RB7:RB0

8 líneas de Entradas/Salidas digitales del Puerto BRB0 tiene una función adicional: Provoca una

interrupción externa asíncrona, cuando se configura para ésta.

21/04/23 16ING. Luis Pacheco Cribillero

Page 17: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TIPOS DE OSCILADORES• HS: (High Speed Crystall Resonador): Alta velocidad de 20 MHz a 4 MHz.• XT: (Crystall//Resonador): Estándar de 4 MHZ máximo.• LP: (Low Power Crystall): Bajo consumo, 200 KHz a 30 KHz.• RC: (Resistence/Capacitor): Baja precisión, Tiene una tabla asociada a los

valores de R y C. Muy poco uso. 200 Hz a 32 Hz.

21/04/23 17ING. Luis Pacheco Cribillero

Page 18: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

FRECUENCIA DE FUNCIONAMIENTO

ALGUNOS CONCEPTOS• Un ciclo de instrucción tarda en ejecutarse cuatro períodos

de reloj.• Todas las instrucciones del PIC se realizan en un ciclo de

instrucción, exceptuando las de "salto" que tardan dos ciclos.

• Los impulsos de reloj entran por FOSC1/CLKIN y se dividen en cuatro señales internamente, dando lugar a Q1, Q2, Q3 y Q4.

• El ciclo de instrucción se logra al realizarse las siguientes operaciones:– Q1 incrementa el contador de programa (PC)– Q4 busca el código de la instrucción en la memoria del

programa y se carga en el registro de instrucciones– Q2 - Q3 decodifican y ejecutan la instrucción respectiva

•  

21/04/23 18ING. Luis Pacheco Cribillero

Page 19: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

FRECUENCIA DE FUNCIONAMIENTO

21/04/23 19ING. Luis Pacheco Cribillero

Page 20: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CÁLCULOS DE TIEMPOS

Los cálculos se realizan bajo las siguientes recomendaciones:1.  Se elige el oscilador con el cual se va a trabajar.2.  Dada la frecuencia de funcionamiento (Frecuencia de Oscilación

FOSC), por el oscilador elegido, hallamos el período.3.  Un ciclo de instrucción se ejecuta en 4 períodos.            Tciclo de instrucción: 4 * TOSC4.   Multiplicamos la cantidad de instrucciones por lo que tarda en

ejecutarse una de ellas, cuya información nos la brinda el paso anterior. Las instrucciones de salto se ejecutan en dos ciclos, por lo tanto, si tenemos instrucciones de salto, éstas hacen que se multiplique el ciclo de instrucción por dos.

·         Duración del total de instrucciones normales (DTIN): Nro. de instrucciones  *  Tciclo de instrucción

·         Duración del total de instrucciones de salto (DTIS): Nro. de instrucciones  *  Tciclo de instrucción  *  2

5.        Para determinar cuánto dura un programa en ejecutarse, sumamos la duración de las instrucciones normales más la duración de las instrucciones de salto.

            Total de duración del programa: DTIN + DTIS 21/04/23 20ING. Luis Pacheco Cribillero

Page 21: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CÁLCULOS DE TIEMPOS Ejemplo. Sea un cristal XT, cuya frecuencia es F= 4 MHz, Halle el total

de duración de un programa que contiene 250 instrucciones normales y 50 instrucciones de salto.

 1. Hallamos el período:            T= 1/F, éste valor es conocido como el período de oscilación.     T= 1 / 4 MHz = 0.25 μs 2. Hallamos el Ciclo de Instrucción:          Tciclo de instrucción= 4*0.25 μs = 1 μs. 3. Duración del total de instrucciones normales (DTIN):          DTIN: 250 * 1 μs = 250 μs 4. Duración del total de instrucciones de salto (DTIS):          DTIS: 50 * 1 μs * 2 = 100 μs5. Hallamos el total de duración del programa:        Total: DTIN + DTIS = 250 μs + 100 μs         Total: 350 μs   Por lo tanto nuestro programa tarda en ejecutarse, alrededor de 350

μs.Ejercicio. Dado un programa que contiene 850 instrucciones, de las

cuales el 20 %, corresponden a instrucciones de salto. Halle: ¿Cuánto tarda en ejecutarse el programa? Considere: A) Oscilador LP,     B) Oscilador XT

21/04/23 21ING. Luis Pacheco Cribillero

Page 22: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CIRCUITOS DE RESET

21/04/23 22ING. Luis Pacheco Cribillero

Page 23: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CIRCUITOS DE APOYO (INTRODUCEN DATOS AL MICROCONTROLADOR)

Pulsadores e interruptores

21/04/23 23ING. Luis Pacheco Cribillero

Page 24: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

Visualización

Con Display

CIRCUITOS DE APOYO (SACAN DATOS DEL MICROCONTROLADOR)

21/04/23 24ING. Luis Pacheco Cribillero

Page 25: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

Con Relé

Con optoacoplador

CIRCUITOS DE APOYO (SACAN DATOS DEL MICROCONTROLADOR)

21/04/23 25ING. Luis Pacheco Cribillero

Page 26: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

21/04/23 ING. Luis Pacheco Cribillero 26

Page 27: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TEMA 2:

REGISTROS, INSTRUCCIONES Y BANCOS DE MEMORIA

Page 28: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ESTRUCTURA DE DATOS• BIT: Unidad mínima de

información

• NIBBLE: Grupo de 4 bits

• BYTE: Grupo de 8 bits

• Word: Grupo de 2 BYTES

x

x x x x

x x x x x x x x

BYTE ALTO BYTE BAJO

x x x x x x x x

LSB (Bit menos significativo)

(Bit más significativo) MSB

07

Rango de los microcontroladores de 8 Bits

28 = 256 posibles valores para operaciones

21/04/23 28ING. Luis Pacheco Cribillero

Page 29: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

• Suma Binaria Aritmética: (add) 0 + 0 = 0 0 + 1 + = 1 1 + 0 = 1 1 + 1 = 0 y llevo acarreo

(Carry) para la siguiente cifra MSB• Suma Binaria Lógica: (ior)0 + 0 = 0 0 + 1 = 11 + 0 = 1 1 + 1 = 1• Resta Binaria Aritmética: (sub)0 – 0 = 0 1 – 0 = 11 – 1 = 0 0 – 1 = 10 y tomo prestado (Borrow)

de la cifra MSB inmediata• OR Exclusiva: (xor)Bits iguales producen como resultado un cero (A

= B = 0)Bits diferentes producen como resultado un uno (A ≠ B =

1)

ALGUNOS TIPS PARA REPASAR Y RECORDAR

21/04/23 29ING. Luis Pacheco Cribillero

Page 30: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

SISTEMAS DE NUMERACIÓNDecimal Hexadecimal Binario

(Formato 4 bits BCD)

0 0 0 0 0 0

1 1 0 0 0 1

2 2 0 0 1 0

3 3 0 0 1 1

4 4 0 1 0 0

5 5 0 1 0 1

6 6 0 1 1 0

7 7 0 1 1 1

8 8 1 0 0 0

9 9 1 0 0 1

10 A 1 0 1 0

11 B 1 0 1 1

12 C 1 1 0 0

13 D 1 1 0 1

14 E 1 1 1 0

15 F 1 1 1 1

21/04/23 30ING. Luis Pacheco Cribillero

Page 31: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

FORMATO DE SISTEMAS DE NUMERACIÓN ADMITIDOS POR EL MICROCONTROLADOR

Tipo de Sistema Formato

Decimal D’126’.126

Binario B’10011011’

Hexadecimal H’AE’AEH0xAE

Sigla Significado

f (File)

Registro. Puede sercualquiera que elprogramador desee

dentro del rango permitido.

k Constante. Valor fijo.

w (work)Registro de trabajo

principal.

d (destiny)

Destino del Registro. Si d vale 1, el resultado se guardará en el

Registro que el programador

haya escogido.Si d vale 0, el resultado se guardará en el

Registro de trabajo principal "w"

21/04/23 31ING. Luis Pacheco Cribillero

Page 32: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

REGISTROS Y BANCOS

21/04/23 32ING. Luis Pacheco Cribillero

Page 33: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

MEMORIA RAM DE REGISTROS

21/04/23 33ING. Luis Pacheco Cribillero

Page 34: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ACCEDIENDO A LOS BANCOS DE REGISTROS

21/04/23 34ING. Luis Pacheco Cribillero

Page 35: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

DIRECTIVA EQU• La directiva EQU permite asignar a un registro o constante, un

nombre asociado que facilita su entendimiento.• Ejemplo:

DATOX EQU 20HDATOY EQU 21HSTATUSEQU 03HF EQU 01H

INCLUDE .INCEl uso del INCLUDE, nos permite incluir en nuestro

proyecto, una plantilla que nos ahorra el trabajo de declarar todos los registros de Funciones Especiales (SFR) de la memoria RAM de registros.

Es importante destacar, que en esta plantilla, todos los registros están declarados en mayúscula. Por lo que durante la elaboración de un programa, se debe respetar este formato.Ejemplo:

INCLUDE <P16F84.INC> ó INCLUDE P16F84.INC21/04/23 35ING. Luis Pacheco Cribillero

Page 36: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ESTRUCTURA DE UN PROGRAMA

Encabezado

Configuración, Declaración de Registros,

Datos, Constantes.

Cuerpo del Programa

org

end

En general un programa está estructurado en tres grandes partes:

a) Encabezado: Define el tipo de PIC con que se está trabajando, Bloque de declaraciones de variables y constantes,

b) Configuración de registros especiales: Registro OPTION, INTCON, TMR0, puertos A y B, EECON, STATUS.

b) Cuerpo del programa: Aquí están contenidas todas las instrucciones relacionadas a la ejecución de un programa bajo un diseño individual, realizado por el programador.

21/04/23 36ING. Luis Pacheco Cribillero

Page 37: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

1. En todo programa se debe incluir cual es el tipo de PIC que se empleará, incluir librerías y configurarlo:

List P= 16F84A ; Tipo de PIC a utilizarinclude < p=16F84.inc> ; Librería asociada al PIC que

se ; está utilizando

_config_RC_OSC_&_WDT_OFF ; Se seleccionan los bits de configuración

2. Al escribir un programa se realizan y organizan las instrucciones en columnas:

• 1ra Columna: nombrar variables o colocar etiquetas.• 2da Columna: aplicar la instrucción.• 3ra Columna: contiene los datos necesarios para que pueda ejecutarse

dicha instrucción.• 4ta Columna: contiene comentarios, no tomados en cuenta por el

microcontrolador.Ejemplo: Defina a la variable M en la posición de memoria expresada en

15H1raC 2daC 3raC 4taCM equ 15H ; Define a la variable M en la posición 15H3. Se emplean signos para efectuar determinadas consideraciones, por

ejemplo: (;) que se emplea para colocar comentarios. El programa no toma en cuenta todo lo que está en una línea luego de dicho símbolo.

ESTRUCTURA DE UN PROGRAMA

21/04/23 37ING. Luis Pacheco Cribillero

Page 38: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ESTRUCTURA DE UN PROGRAMA

RESULTADO equ 0FH ;Declaro al registro ;RESULTADO;En la posición 0FH de la RAM

org 00Hgoto INICIO

INICIO bsf STATUS,5movlw FFH ; Configuramos los registrosmovwf TRISA ; asociados a los puertos A y Bmovlw 00Hmovwf TRISB

1ra Columna2da Columna3ra Columna 4ta Columna

Etiquetas Instrucciones Operandos Comentarios

21/04/23 38ING. Luis Pacheco Cribillero

Page 39: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ESTRUCTURA DE UN PROGRAMA

4. Un programa siempre empieza con la instrucción “org” y termina con “end”

5. Considere las siguientes recomendaciones:– Directivas, etiquetas, Variables y constantes en mayúsculas.

Ejemplo: EQU, DATOA, SUMA, CONTA, RP0, Z– Instrucciones en minúsculas. Ejemplo: movwf, addwf, goto, bcf,

call, decfsz, etc– Tabule muy bien su programa y mantenga el formato mostrado

anteriormente.– Coloque continuamente comentarios, a lo largo de todo el

programa. Estos le ayudarán a orientarse al momento de revisar un problema de lógica del mismo o para recordar su funcionamiento.

– Utilice la directiva EQU, para asignarle nombres a constantes y/o variables. Esto facilitará su comprensión y lectura.

6. Se recomienda ampliamente el uso de los diagramas de flujo, para la estructuración del respectivo programa. Estos permiten visualizar el funcionamiento a “grosso modo” del mismo.

21/04/23 39ING. Luis Pacheco Cribillero

Page 40: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

¿Cuál se entiende mejor?

List= 16F84org 00Hgoto inicio inicio Bsf 03H,5 movlw 1FH movwf 85H movlw 00H movwf 86H bcf 03H,5 movlw b’11110000’ movwf 06H movf 05H,0ExploPA Btfsc 05H,3 goto ExploPA goto INVPBINVPB comf 06H,1End

List P=16F84 ;Tipo de procesadorSTATUS equ 03H ; Zona de

declaracionesPORTA equ 05HPORTB equ 06HTRISA equ 85HTRISB equ 86HW equ 00HF equ 01H

org 00Hgoto INICIO

INICIO bsf STATUS,5 ;Se pasa a banco1 movlw 1FH movwf TRISA ; Se configura puerto A movlw 00H movwf TRISB ; Se configura puerto B bcf SATUS,5 ; Se regresa al banco 0 movlw b’11110000’ movwf PORTB ; Se escribe valor movf PORTA,WExploPA Btfsc PORTA,3 ; RA3 es cero? goto ExploPA goto INVPBINVPB comf PORTB,1 ; Se activa RB1

End

Sin recomendaciones

Con recomendaciones

21/04/23 40ING. Luis Pacheco Cribillero

Page 41: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

DIAGRAMA DE FLUJO• Se recomienda ampliamente que el diseñador/programador, se apoye

en elementos gráficos para determinar y delimitar el funcionamiento del diseño que está encarando. Los diagramas de flujo permiten visualizar el funcionamiento lógico de cualquier programa.

Las figuras rectangulares representan acciones concretas ó procesos a ser ejecutados por el programa.

•Los Conectores son utilizados cuando el diagrama de flujo es de medianas o grandes dimensiones y su uso evita sobrecargar de flechas al diagrama.

Un rectángulo con los extremos redondeados, denota el inicio y/o el fin de un programa.

El rombo representa una toma de decisión sobre una condición que debe ser evaluada ó analizada. Si la respuesta es afirmativa ó cumple con la condición, se toma una dirección y en caso contrario, se toma una dirección diferente.

Las flechas indican el flujo que debe seguir el programa. Éstas indican claramente el camino ó dirección a seguir

A B

21/04/23 41ING. Luis Pacheco Cribillero

Page 42: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

INSTRUCCIONES ORIENTADAS A REGISTROSMNEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

addwf f,d (W)+(f) a (destino) C, DC, Z

andwf f,d (W) AND (f) a (destino) Z

clrf f 00 a (f) (borrar registro F) Z

clrw 00 a (W) (borrar W) Z

comf f,d Complemento de f [(f) a (destino)] Z

decf f,d (f)-1 a destino (decrementa f) Z

decfsz f,d (f)-1 a destino y si resultado es 0 salta (decrementa F, salta si zero)

Ninguno

incf f,d (f)+1 a destino (incrementa f) Z

incfsz f,d (f)+1 a destino y si resultado es 0 salta Ninguno

iorwf f,d (W) or (f) a destino Z

movf f,d mover f a destino Z

movwf f (W) a (f) mover W a destino F Ninguno

nop No operación Ninguno

rlf f,d Rota f a la izquierda a través del carry a destino C

rrf f,d Rota f a la derecha a través del carry a destino C

subwf f,d (f)–(W) a (destino) C,DC,Z

swapf f,d Intercambia los nibbles de f a destino Ninguno

xorwf f,d (W) XOR (f) a (destino) Z21/04/23 42ING. Luis Pacheco Cribillero

Page 43: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

INSTRUCCIONES ORIENTADAS A BITMNEMÓNICO DESCRIPCIÓN FLAGS

AFECTADOS

bcf f,b Coloca a 0 el bit b del registro f Ninguno

bsf f,b Coloca a 1 el bit b del registro f Ninguno

btfsc f,b Salta si el bit b del reg. f es 0 Ninguno

btfss f,b Salta si el bit b del reg. f es 1 Ninguno

INSTRUCCIONES CON LITERALES Y DE CONTROLaddlw k (W)+ K a (W) C,DC,Z

andlw k (W) AND K a (W) Z

call k Llamada a subrutina Ninguno

clrwdt Limpia temporizador Watch Dog Z

goto k Go To dirección (ir a dirección) Ninguno

iorlw k (W) OR K a (W) Ninguno

movlw k K a (W) Ninguno

retfie Retorno de una interrupción Ninguno

retlw k Retorno con un literal en W Ninguno

return Retorno de una subrutina C,DC,Z

sleep Modo Stand by Z

sublw k K – (W) a W C, DC, Z

xorlw k (W) XOR K a (W) Z21/04/23 43ING. Luis Pacheco Cribillero

Page 44: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

Diferencias y uso de “call” y “goto”• Ambas instrucciones rompen con la secuencia normal del

programa, al alterar el contenido del contador de programa (PC). (Pág. 150. Angulo).

• “goto” carga en el PC, la dirección de la nueva instrucción. “call” antes de cargar el PC con la dirección de la instrucción a saltar, salva la dirección de donde parte, guardándola en la cima de pila (stack), el valor actual del PC. Luego de ejecutar la subrutina, se saca del stack la dirección de donde partió.

• Si no están en la subrutina llamada por “call”, las instrucciones “return” o “retlw k”, se puede presentar un error de lógica en la ejecución del programa, algo similar a no dejar migajas de pan para recordar el camino de retorno. Nota: Recuerde que los PIC’s poseen un valor limitado de pila (stack). En el PIC 16F84, este es de 8. Esto significa que en un programa no puede haber más de 8 subrutinas anidadas. (Subrutinas dentro de subrutinas).

21/04/23 44ING. Luis Pacheco Cribillero

Page 45: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

21/04/23 ING. Luis Pacheco Cribillero 45

Page 46: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TEMA 3. HERRAMIENTAS DE PROGRAMACIÓN

Page 47: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

INSTRUCCIONES DE MANIPULACIÓN DE BITS

• BCF F,B (Poner a Cero al Bit B del registro F)– Ejemplo: bcf Datox,5 – Datox= E4H

• BSF F,B (Poner a Uno al Bit B del registro F)– Ejemplo: bsf Datox,3– Datox= C8H

21/04/23 47ING. Luis Pacheco Cribillero

Page 48: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

INSTRUCCIONES DE EXPLORACIÓN/TESTEO DE BITS

• BTFSS F,B (Pregunta si el bit B del registro F vale uno)• (Bit Test File Skip Set)

– Ejemplo: btfss suma,2goto RutinaAgoto RutinaB

• BTFSC F,B (Pregunta si el bit B del Registro F vale cero)• (Bit Test File Skip Clear)

– Ejemplo: btfsc suma,5goto RutinaAgoto RutinaB

21/04/23 48ING. Luis Pacheco Cribillero

Page 49: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

STATUS7      (L/E) 6      (L/E) 5      (L/E) 4      (L) 3      (L) 2      (L/E) 1      (L/E) 0      (L/E)

IRP RP1 RP0 TO PD Z DC CC. Bit de acarreo en el bit MSBVale 1 cuando en el resultado de una operación aritmética, se ha producido una acarreo (suma)Vale 0 si no se ha producido un acarreo.

Para el caso de una resta, ocurre todo lo contrario a lo expuesto:Vale 1 si no se ha producido un "préstamo"Vale 0 si se ha producido un "préstamo"

 DC. Acarreo en el cuarto bit (Nibble bajo). Misma descripción de C, pero referida al cuarto bit. Z. Cero.

Vale 1 si el resultado de una operación lógico - aritmética es ceroVale 0 si el resultado de una operación lógico- aritmética NO es cero

 IRP. Bit para direccionamiento indirecto de los bancos de datos. RP1 - RP0. Bits para direccionamiento directo de los bancos de datos.

1 - 1   : Banco 31 -0   : Banco 20 - 1  : Banco 10 - 0 : Banco 0

TO. Time OutSe pone a 1 después de la conexión de la alimentación al microcontrolador, o al ejecutarse las instrucciones clrwdt ó sleepSe pone a 0 cuando el perro guardián se ha desbordado.

 PD. Power DownSe pone a 1 después de la conexión de la alimentación al microcontrolador o al ejecutarse la instrucción clrwdtSe pone a 0 mediante la ejecución de la instrucción sleep21/04/23 49ING. Luis Pacheco Cribillero

Page 50: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

RESULTADO DE OPERACIONES LÓGICO/ARITMÉTICAS

• ¿Cómo hacemos para saber si la suma de dos registros ha producido acarreo?R= Se suman los dos registros y se pregunta por el bit c del registro STATUS:movf DatoA,0 ;DatoA→Waddwf DatoB,0 ;DatoA+DatoB→Wbtfss STATUS,0 ; C=1?goto Noacarreogoto Acarreo

• ¿Cómo sabemos si la suma de dos nibbles (4 bits) ha producido acarreo?R= Se suman los dos registros y se pregunta por el bit DC del Registro STATUS: movf DatoA,0 ;DatoA→Waddwf DatoB,0 ;DatoA+DatoB→W btfss STATUS,1 ; DC=1?goto Noacarreogoto Acarreo

21/04/23 50ING. Luis Pacheco Cribillero

Page 51: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

RESULTADO DE OPERACIONES LÓGICO/ARITMÉTICAS

• ¿Cómo sabemos si un registro es igual a otro?• Opción A: Se restan ambos registros y se pregunta si Z es

igual a 1:movf DatoB,0 ;DatoB→Wsubwf DatoA,0 ;DatoA – DatoB →Wbtfss STATUS,2goto NOIGUALgoto IGUAL

• Opción B: Se aplica XOR entre ambos registros y:movf DatoB,0 ;DatoB→Wxorwf DatoA,0 ;DatoA (XOR) DatoB →Wbtfss STATUS,2goto NOIGUALgoto IGUAL

21/04/23 51ING. Luis Pacheco Cribillero

Page 52: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

RESULTADO DE OPERACIONES LÓGICO/ARITMÉTICAS

• ¿Cómo sabemos si un registro es mayor, igual o menor a otro?R= Se restan ambos registros (A – B) y:

movf DatoB,0 ;DatoB→Wsubwf DatoA,0 ;DatoA-DatoB→W

EXPLORA btfss STATUS,2 ; Z=1?goto SIGUEgoto IGUAL ;Si Z=1, A=B

SIGUE btfsc STATUS,0 ;C=0?goto MAYOR ; Si C=1, A>Bgoto MENOR ; Si C=0, A<B

21/04/23 52ING. Luis Pacheco Cribillero

Page 53: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

SELECCIONANDO LOS BANCOS DE REGISTROS

• El PIC 16F84 posee solamente dos (2) bancos de Registros, por lo que para seleccionar el banco deseado, basta con manipular el bit RP0 del registro STATUS.

• Si RP0= 1, se ha seleccionado el banco 1

• Si RPO= 0, se ha seleccionado el banco 0

• Ejemplo: Seleccione el banco de registros 1:– bsf STATUS,5 ; RP0= 1

• Seleccione el banco de registros 0:– bcf STATUS,5 ; RP0=0Así de sencillo es

seleccionar los bancos de registros.

21/04/23 53ING. Luis Pacheco Cribillero

Page 54: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CONFIGURANDO UN PUERTOLa configuración de puertos es muy fácil:

1. Se selecciona el banco 1• Aquí se encuentran los registros que manipulan mediante

software a los circuitos triestados que determinan que un pin o puerto trabaje como entrada o salida.

2. Se configuran mediante los registros asociados a los puertos (TRISA y TRISB), los pines de un puerto como entrada o salida.

• Si coloco un uno (1) en un bit asociado a un puerto (RA0, RA1, RB5, RB7,etc), éste se comportará como una entrada y solamente podremos leer por esta entrada.

• Si coloco un cero (0) en un bit asociado a un puerto, éste se comportará como una salida y solamente podremos escribir por esta entrada.

• Podemos hacer analogía de la siguiente forma:            1 = In     = Entrada = Solo lectura            0 = Out  = Salida   = Solo escritura

21/04/23 54ING. Luis Pacheco Cribillero

Page 55: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CONFIGURANDO UN PUERTOLa configuración de puertos es muy fácil:

3. Se selecciona o se regresa al banco 0, para trabajar con los puertos que han sido previamente configurados.

• Si un puerto (o pin) ha sido configurado como salida, entonces se podrá escribir sobre él, para sacar datos.

• Si un puerto (o pin) ha sido configurado como entrada, entonces se podrá leer los datos que están ingresando por él.

• Nota: Escribir sobre un puerto (o pin) configurado como entrada, no tiene ningún efecto. Si se desea escribir sobre él, es necesario que el mismo sea habilitado como salida.

21/04/23 55ING. Luis Pacheco Cribillero

Page 56: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CONFIGURANDO UN PUERTO COMO ENTRADA/SALIDA (POR BYTE)

Recordemos los tres pasos:• Por Byte:A)     bsf STATUS, 5 ; (1) Selección de banco 1

movlw    FFH ; B’11111111’      movwf    TRISB        ; (2) Todos los bits del puertoB están

; configurados como entradasbcf STATUS,5 ; (3) Se regresa al banco 0

B)     bsf STATUS, 5 ; (1) Selección de banco 1movlw    00H ; B’00000000’

      movwf    TRISA        ; (2) Todos los bits del puertoA están ; configurados como salidas

bcf STATUS,5 ; (3) Se regresa al banco 0

C)      bsf STATUS, 5 ; (1) Selección de banco 1movlw    B’10010001 ; B’ESSESSSE’

      movwf    TRISB        ; (2) Mixto E/S en un mismo puertobcf STATUS,5 ; (3) Se regresa al banco 0

21/04/23 56ING. Luis Pacheco Cribillero

Page 57: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CONFIGURANDO UN PUERTO COMO ENTRADA/SALIDA (BIT A

BIT)Recordemos los tres pasos:• Bit a bit:

bsf STATUS,5 ; (1) Selección de Banco 1        bsf        PuertoA,1        ; (2) ¿Salida o Entrada?        bcf        PuertoA,2       ; (2) ¿Salida o Entrada?        bsf        PuertoA,3       ; (2) ¿Salida o Entrada?        bcf        PuertoB,0       ; (2) ¿Salida o Entrada?

bcf        PuertoB,2        ; (2) ¿Salida o Entrada?        bcf        PuertoB,3       ; (2) ¿Salida o Entrada?        bsf        PuertoB,5       ; (2) ¿Salida o Entrada?        bcf        PuertoB,7       ; (2) ¿Salida o Entrada?

bcf STATUS,5 ; (3) Se regresa al banco 0

Nota: Estamos asumiendo que en este ejemplo hemos etiquetado previamente a 05H como PuertoA y 06H como PuertoB.

21/04/23 57ING. Luis Pacheco Cribillero

Page 58: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ESCRIBIR Y LEER SOBRE UN PUERTO

• Para configurarlos como entradas y/o salidas, debemos de estar en el banco 1. Una vez configurados, para poder leer y/o escribir sobre estos, debemos de cambiarnos al banco 0.

• Ejemplo. Realice un programa que configure al Puerto A como entrada y a los primeros cuatro bits del Puerto B como salida, los restantes bits del puerto B como entrada.

            STATUS        equ            03H   ; A esta parte se le conoce como zona de; etiquetas o declaración de etiquetas.

            PuertoA          equ            05H ; También se puede usar la directiva; INCLUDE

            PuertoB          equ            06H ; Y se obvian estas declaraciones            bsf                STATUS,5        ; Hemos cambiado al banco 1, para

configurar ; los puertos

            movlw            1FH            movwf            PuertoA              ; Hemos configurado al PuertoA como

entrada            movlw            b'11110000'            movwf            PuertoB              ; Nibble bajo como salida y nibble alto

como ; entrada            bcf                STATUS,5          ; Cambiamos al banco 0 para poder leer ó

; escribir en estos, según sea el caso.21/04/23 58ING. Luis Pacheco Cribillero

Page 59: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

REGISTROS ASOCIADOS A LOS PUERTOS

• De configuración:– TRISA (85H, Banco 1)– TRISB (86H, Banco 1)

• De Trabajo (Lectura/Escritura)– PORTA (05H, Banco 0)– PORTB (06H, Banco 0)

• PORTA y PORTB, son registros de Lectura/Escritura, como cualquier otro registro de propósito general, sólo que están directamente vinculados a los puertos del microcontrolador.

• Por lo tanto su Lectura/Escritura NO difiere de la de cualquier otro registro

21/04/23 59ING. Luis Pacheco Cribillero

Page 60: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

LEER Y/O ESCRIBIR EL UN VALOR EN UN PUERTO

• Ejemplo 1. Lea el valor presente en el puerto A y guárdelo en un Registro DatoA.

movf PORTA,0 ; PORTA→Wmovwf DatoA ; W→DatoA

• Ejemplo 2. Escriba sobre el puerto B el siguiente valor: 49Hmovlw 49H ; 49H→Wmovwf PORTB ; W→PORTB

• Ejemplo 3. Active el bit RB0, desactive el bit RB1 y active el bit RA4:

bsf PORTB,0 ; RB0= 1bcf PORTB,1 ; RB1= 0bsf PORTA,4 ; RA4= 1

21/04/23 60ING. Luis Pacheco Cribillero

Page 61: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

• Según el ejemplo 3, planteado anteriormente; ¿Qué Efectos se tiene sobre el siguiente circuito?

LEER Y/O ESCRIBIR UN VALOR EN UN PUERTO

• ¿Qué Efectos se tiene sobre el circuito si se aplican las siguientes instrucciones?movlw B’00000001’movwf PORTB

• ¿Qué Efectos se tiene sobre el siguiente circuito si se aplican estas siguientes instrucciones?bcf PORTA,0bsf PORTA,1bcf PORTA,2

21/04/23 61ING. Luis Pacheco Cribillero

Page 62: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

• Para el siguiente circuito, ¿Qué valor debemos colocar en puerto B para que se visualice un 7 en el display?

LEER Y/O ESCRIBIR UN VALOR EN UN PUERTO

• ¿Cómo hacemos para saber el valor del bit RA0?Basta con explorar su estado lógico mediante alguna de las instrucciones de testeo y/o exploración: btfss f,b ó btfsc f,b:btfss PORTA,0goto RutinAgoto RutinB

21/04/23 62ING. Luis Pacheco Cribillero

Page 63: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TOMA DE DECISIONES

• Una Tarea.La condición puede venir internamente como externamente.

CondiciónX=1?

Proceso ANO

SI

• Internabtfss STATUS,0 ; C=1?goto ProcesoAgoto SIGUE

• Externabtfss PORTA,0 ; RA0=1?goto ProcesoAgoto SIGUE

21/04/23 63ING. Luis Pacheco Cribillero

Page 64: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TOMA DE DECISIONES

• Dos Tareas.La condición puede venir internamente como externamente.

• Internabtfss STATUS,0 ; C=1?goto ProcesoAgoto ProcesoB

• Externabtfss PORTA,0 ; RA0=1?goto ProcesoAgoto ProcesoB

CondiciónX=1?

Proceso ANO

SI

Proceso B

21/04/23 64ING. Luis Pacheco Cribillero

Page 65: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

• Dado el siguiente circuito, Active el LED ubicado en RB0 si RA0, vale 0 y en caso contrario, active el LED ubicado en RB1.

TOMA DE DECISIONES. EJEMPLO

21/04/23 65ING. Luis Pacheco Cribillero

Page 66: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TOMA DE DECISIONES. EJEMPLO

• Externabtfss PORTA,0 ;

RA0=1?goto ProcesoAgoto ProcesoB

ProcesoA bsf PORTB,0goto SIGUE

ProcesoB bcf PORTB,1goto SIGUE

SIGUE ------------------

RA0=1?Activar LED en

RB0

NO

SI

Activar LED enRB1

21/04/23 66ING. Luis Pacheco Cribillero

Page 67: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TOMA DE DECISIONES. CERROJO Ó VALIDACIÓN

• Se queda esperando que la condición ocurra.

• InternaESPERAbtfss INTCON,0

goto ESPERAgoto ProcesoA

• ExternaEXPLORA btfss PORTA,0 ; RA0=1?

goto EXPLORAgoto ProcesoA

CondiciónX=1?

Proceso A

NO

SI

21/04/23 67ING. Luis Pacheco Cribillero

Page 68: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TOMA DE DECISIONES

• Multitareas.Dos condiciones permiten elegir entre uno a cuatro procesos distintos.

CondiciónX=1?

NO

SI

Proceso B

CondiciónY=1?

NO

SI

CondiciónY=1?

Proceso D

Proceso A

Proceso C

SI

NO

21/04/23 68ING. Luis Pacheco Cribillero

Page 69: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

¿Cómo pasar del diagrama de flujo al programa?

• Es sencillo:– Cada símbolo del diagrama de flujo representa una (ó varias)

instrucción (es).– El programador/Diseñador, mediante la práctica y/o

visualización, debe buscar las instrucciones que cumplan con los símbolos y su contenido, e ir colocándolas secuencialmente, según lo indique el diagrama de flujo previamente elaborado.

CARGA movlw 35Hmovwf SUMA

btfss STATUS,2

goto ProcesoA

goto Carga

35H→ SUMA

Z=1?

ProcesoA

NO

SI

21/04/23 69ING. Luis Pacheco Cribillero

Page 70: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

21/04/23 ING. Luis Pacheco Cribillero 70

Page 71: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TEMA 3. RUTINAS INTERMEDIAS

Page 72: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

SUBRUTINA MIENTRAS SE

PRESIONA UNA TECLA

TECLAPRESIONADA?

NO

SI

DELAY 10 ms

PROCESO A

21/04/23 72ING. Luis Pacheco Cribillero

Page 73: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

PRESIONAR TECLA Y ESPERAR A QUE SE

SUELTE PARA EJECUTAR

SUBRUTINA

Tecla Presionada?

Retardo 10 ms

NO

SI

Tecla Soltada?

NO

SI

Retardo 10 ms

Proceso A

21/04/23 73ING. Luis Pacheco Cribillero

Page 74: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ENMASCARAMIENTO

Este proceso es muy utilizado cuando se desea segmentar ó separar un registro en dos nibbles (4 bits) y luego en registros de 8 bits. La instrucción ideal para este es la “and”

21/04/23 74ING. Luis Pacheco Cribillero

Page 75: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ENMASCARAMIENTO

DatoA equ 12HDatoL equ 23HDatoH equ 4EH

movlw 4CH ; Cargamos a w con 4CHmovwf DatoA ; Transferimos 4CH a wmovlw 0FHandwf DatoA,0 ; Neutralizamos el nibble

; más significativo de DatoA y lo ; guardamos en w para no alterar

el ; contenido de DatoA

movwf DatoL ; Lo guardamos en éstemovlw F0Handwf DatoA,0 ; Neutralizamos el nibble menos

; significativo de DatoAmovwf DatoHswapf DatoH ; Intercambiamos nibbles

; en DatoH para ordenarlo.

21/04/23 75ING. Luis Pacheco Cribillero

Page 76: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ENMASCARAMIENTO

• También se puede neutralizar un bit o varios bits, selectivamente, según sea nuestra conveniencia.

21/04/23 76ING. Luis Pacheco Cribillero

Page 77: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CALL K

INICIO

INSTRUCC A

INSTRUCC B

INSTRUCC C

CALL PROX

INSTRUCC D

FIN

PROX

INSTRUCC 1

INSTRUCC 2

RETURN ó RETLW K

PCL

27H

28H

29H

2AH

2BH

PROGRAMA PRINCIPAL

SUBRUTINA

21/04/23 77ING. Luis Pacheco Cribillero

Page 78: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CALL K

• El llamado a una Subrutina K, desvía el flujo normal del programa, hacia donde se encuentra la etiqueta K.

• El valor del contador del programa (PC) es guardado en la pila (STACK), que es una memoria tipo FIFO (First In First Out).

• La familia de la gama media (PIC16FXXX) posee 8 niveles de STACK. Si se sobrepasa de este valor, se pierde la información del contador de programa y el microcontrolador no puede determinar el retorno correcto.

• Esto ocurre si existen 8 subrutinas anidadas (Subrutinas dentro de subrutinas).

• Ciertamente, este problema se puede presentar en programas medianos o grandes, pero debe tenerse en cuenta al momento de la programación y elaboración de un diseño.

21/04/23 78ING. Luis Pacheco Cribillero

Page 79: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CALL K

M (09H)

N (1FH)

O (2AH)

L (05H)

K (03H)

P (2EH)

Q (30H)

R (3CH)

T (40H)

PILA (STACK) (PCL)

21/04/23 79ING. Luis Pacheco Cribillero

Page 80: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TEMPORIZANDO SIN EL USO DEL TMR0

• La temporización sin el uso del temporizador TMR0 se basa en “hacer perder el tiempo” al microcontrolador mientras las ejecuta en lazos o bucles, logrando un retardo (delay) que puede variar según sean las necesidades del programa.

• Con estos retardos inducidos, podemos generar tiempos para funciones específicas, como la de eliminar rebotes de un pulsador o interruptor por software, lo que nos permite simplificar el hardware que esto acarrea en nuestro circuito aplicado al microcontrolador, dejando el uso del temporizador TMR0, para otros usos.21/04/23 80ING. Luis Pacheco Cribillero

Page 81: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

EJEMPLO DE UN RETARDO POR SOFTWARE SIN TMR0

RETARDO movlw d’16’ ; (1 ciclo)movwf REG2 ; Cargamos REG1 con 16 (1 ciclo)

DOS movlw d’14’ ; (1 ciclo)movwf REG1 ; Cargamos REG2 con 14 (1 ciclo)

UNO decfsz REG1,1 ; Dec REG2 (13 veces*1 ciclo + 1*2 ciclos)goto UNO ; Se mantiene dec. REG2 (2 ciclos)

TRES decfsz REG2,1 ; Dec REG1 (16 veces * 1ciclo)goto DOS ; Va a recargar REG2 (2 ciclos)return ; (2 ciclos)

• La subrutina UNO, tarda 3 ciclos que se repite 13 veces hasta que REG2 se hace cero y salta (2 ciclos)= (3*13 ciclos)= 39 ciclos.

• La subrutina DOS consume 2 ciclos + 3 ciclos que consume la subrutina TRES= 5 ciclos, y ambas se repiten al igual que la UNO, por 16 veces = [39 ciclos (de la rutina UNO)+ 5 ciclos (de las rutinas DOS y TRES)*16 ]= 704 ciclos

• Pero, cada vez que se salta de la subrutina UNO a la TRES se consumen 2 ciclos y esto se repite por 16 veces: 2 ciclos *16 = 32 ciclos

• Adicional a esto, al iniciarse la rutina de retardo, han transcurrido 4 ciclos (hasta que empieza la subrutina UNO)

• En total= 704 ciclos + 32 ciclos + 4 ciclos + 2 ciclos (al ejecutarse “return”) = 742 ciclos.

21/04/23 81ING. Luis Pacheco Cribillero

Page 82: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

RUTINA DE CONVERSIÓN BINARIO A BCD (8 BITS)

INICIO

DATOX→W

W→RESP

U=0D=0C=0

RESP= RESP-100

C=0?

incf C,1

incf D,1

MOSTRAR ENDISPLAY

FIN

RESP= RESP+100

RESP= RESP-10

C=0?

RESP= RESP+10

RESP= RESP-1

C=0?

incf U,1

NO

SI

SI SI

NO

NO

21/04/23 82ING. Luis Pacheco Cribillero

Page 83: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

RUTINA DE CONVERSIÓN DE BCD A BINARIO (8 BITS)

INICIO

DAT=0

UNI=XDEC=YCEN=Z

CEN=CEN-1

C=0?

DAT=DAT+100

DAT=DAT+10

RETURN

DEC=DEC-1

C=0?

UNI=UNI-1

C=0?

DAT=DAT+1

NO

SI

NO

NO

SI SI

21/04/23 83ING. Luis Pacheco Cribillero

Page 84: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TABLAS

• Las tablas nos permiten extraer valores para ser utilizados en otras tareas, tales como la visualización de datos, linealización de valores, conversión de códigos, etc.

• Su funcionamiento se basa en la manipulación del contador de programa (PC) mediante la suma de un puntero de tabla (registro) y la parte baja del contador de programa (PCL).

• Para un rango máximo de 256 valores, se manipula directamente el PCL. En caso de valores superiores, se debe manipular adicionalmente el PCLATH, que amplia la capacidad de datos en una tabla.

• La instrucción RETLW K, está muy asociada a las tablas, ya que cuando se llama a una subrutina “tabla”, esta instrucción extrae el valor de la misma previamente seleccionada por el puntero de tabla.

21/04/23 84ING. Luis Pacheco Cribillero

Page 85: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TABLAS• Normalmente, cuando se llama a una subrutina “tabla”,

previamente se carga el valor del puntero.• Dentro de la subrutina “tabla”, el puntero se suma al PCL,

“saltando” al valor correspondiente indicado por el puntero.• Veamos el siguiente programa:

movf CONTADOR,0

call TABLA

movwf PORTB

TABLA addwf PCL,1

retlw ‘Valor0’

retlw ‘Valor1’

retlw ‘Valor2’

retlw ‘ValorN’

Puntero + PCL

21/04/23 85ING. Luis Pacheco Cribillero

Page 86: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

VARIAS OPCIONES

TECLA1ACT?

NO

SIProceso B

TECLA2ACT?

NO

SI

TECLA2ACT?

Proceso D

Proceso A

Proceso C

NO

SI

TECLA3ACT?

SINO

21/04/23 86ING. Luis Pacheco Cribillero

Page 87: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

MULTIPLEXACIÓN DE DISPLAYS

• La multiplexación de displays, consiste en la activación secuencial de varios displays. Se activa un display y se desactiva el resto, mientras el dato que se desea mostrar es colocado inmediatamente por el puerto correspondiente.

• Seguidamente, se desactiva este display, se activa el display siguiente y se desactivan los restantes y se coloca el dato correspondiente. Y así sucesivamente.

• Se recomienda que entre activación y desactivación de displays se utilice un tiempo menor a 5 ms.

• El efecto óptico percibido por el ojo humano es el de una cifra fija.

21/04/23 87ING. Luis Pacheco Cribillero

Page 88: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

MULTIPLEXACIÓN DE DISPLAYS

• Paso a paso: (Asumamos que tenemos tres displays)1) Se activa display de UNIDAD2) Se desactiva el resto de los displays3) Se muestra el dato de UNIDAD

4) Se desactiva los displays de UNIDAD y CENTENA

5) Se activa el display de DECENA6) Se muestra el dato de DECENA

7) Se desactivan los displays de UNIDAD y DECENA8) Se activa el display de CENTENA9) Se muestra el dato de CENTENA

21/04/23 88ING. Luis Pacheco Cribillero

Page 89: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

MULTIPLEXACIÓN DE DISPLAYS

MOSTRAR

DIG1→WW→PORTA

HABI DISP1

RETARDO 1ms

HABI DISP2

DIG2→WW→PORTA

RETARDO 1ms

RETURN

21/04/23 89ING. Luis Pacheco Cribillero

Page 90: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ESTRUCTURA DE CONTADORESINICIO

CONTADOR=0

MOSTRAR

CONTADOR=0

MOSTRAR

MOSTRAR

INCF CONTADOR,1 CONTADOR=9?

1

1

NO

SI

CONTADOR ASCENDENTE SIMPLE

21/04/23 90ING. Luis Pacheco Cribillero

Page 91: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CONTADOR ASCENDENTE COMPLEJO

INICIO

UNI=0

DEC=0

RETARDO

UNI=0

MOSTRAR

INCF DEC,1

RA0=1?

1

1

NO

SI

MOSTRAR

UNI=9?

MOSTRAR

INCF UNI,1

NO

SI

NO

SI

DEC=9?

MOSTRAR DEC=0

21/04/23 91ING. Luis Pacheco Cribillero

Page 92: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

ESTRUCTURA DE CONTADORES

INICIO

CONTADOR=0

MOSTRAR

CONTADOR=9

MOSTRAR

MOSTRAR

DECF CONTADOR,1 CONTADOR=0?

1

1

NO

SI

CONTADOR DESCENDENTE SIMPLE

21/04/23 92ING. Luis Pacheco Cribillero

Page 93: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CONTADOR DESCENDENTE COMPLEJO

INICIO

UNI=0

DEC=0

RETARDO

UNI=9

MOSTRAR

DECF DEC,1

RA0=1?

1

1

NO

SI

MOSTRAR

UNI=0?

MOSTRAR

DECF UNI,1

NO

SI

NO

SI

DEC=0?

MOSTRAR DEC=9

21/04/23 93ING. Luis Pacheco Cribillero

Page 94: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

DE LA IDEA AL PROGRAMA (PARTE I)

1. Delimitar / Diseñar el Hardware2. Diagrama de Flujo para establecer el

funcionamiento lógico3. Realizar programa en lenguaje

ensamblador.• Ejercicios propuestos:

– Leer el valor del puerto A y visualizarlo por el Puerto B

– Taladro / Torno– Manipular Display– Estacionamiento Local Comercial– Doble interruptor

21/04/23 94ING. Luis Pacheco Cribillero

Page 95: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

21/04/23 ING. Luis Pacheco Cribillero 95

Page 96: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TEMA 4. TIMER 0

Page 97: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

REGISTROS ASOCIADOS AL TEMPORIZADOR TMR0

• TMR0: Registro de 8 bits de lectura/escritura• OPTION: Configura al TMR0 para que trabaje como

temporizador ó contador y asigna el valor al prescaler• INTCON: Da información mediante el bit “TOIF”

cuando el TMR0 se ha desbordado.• TRISA (PUERTO A): Permite el ingreso de pulsos

cuando el TMR0 está configurado como contador por RA4

21/04/23 97ING. Luis Pacheco Cribillero

Page 98: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

REGISTRO OPTION (Dirección 81H)

• bit 7, RPBU : Resistencia Pull-up, Puerto B, habilita el bit1: Desactivadas0: Activadas

• bit 6, INTEDG: Flanco activo para el control de interrupciones1: Con flanco Ascendente0: Con flanco Descendente

• bit 5, TOCS: Fuente de Reloj para TMR01: Pulsos introducidos a través de RA4/T0CK1

(Contador)0: Pulsos de reloj interno Fosc/4 (Temporizador)

• bit 4, TOSE: Tipo de flanco en TOCK11: Incremento de TMR0 cada flanco descendente0: Incremento de TMR0 cada flanco ascendente

• bit 3, PSA: Bit de asignación del prescaler divisor de frecuencia1: El divisor de frecuencia se asigna al WDT0: El divisor de frecuencia se asigna al TMR0

• bit 2-0, PS2:PSO: Rango con el que actúa el divisor de frecuencia.21/04/23 98ING. Luis Pacheco Cribillero

Page 99: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

EJEMPLOS DE CONFIGURACIÓN• Configure al PIC16F84 para que el temporizador TMR0, trabaje con

los pulsos provenientes de un reloj externo, y el mismo cambie en el flanco de subida del pulso externo:

• Configure al PIC16F84 para que el TMR0, trabaje con el reloj interno y la frecuencia del mismo sea dividida por 32:

¿Y los demás bits?¿Cómo lo cargo al OPTION?

En el primer caso:

movlw b’xx11xxxx1’

movwf OPTION

En el segundo caso:

movlw b’xx0x0100’

movwf OPTION

21/04/23 99ING. Luis Pacheco Cribillero

Page 100: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TEMPORIZADOR TMR0

• Registro asociado al Timer0. Se encuentra en la posición 01H de la memoria RAM. Es el corazón del módulo Timer0. Puede ser leído o escrito en cualquier momento. El TMR0 se incrementará automáticamente por cada ciclo de instrucción y contará desde 0 (00H) hasta 255 (FFH) (Contador de 8 bits).

• Para que opere como temporizador, el bit TOCS (del registro OPTION) debe ser cero (0), el bit PSA= 0 y deben ser cargados los bits PS2 a PS0, según sea el preescaler a utilizar para lograr nuestra temporización.

• Para que opere como contador, se usa una entrada de reloj externo en el TMR0 y se deben de cumplir ciertos requisitos para que el reloj externo pueda ser sincronizado con el reloj interno (TOSC). Además existe un retardo en el incremento real del TMR0, después de la sincronización. El bit TOCS= 1. Se debe seleccionar el tipo de flanco que producirá el incremento del TMR0 ( TOSE = 1 ó 0).

21/04/23 100ING. Luis Pacheco Cribillero

Page 101: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

¿QUÉ ES EL PRESCALER?• Divide la frecuencia de reloj de entrada del Timer0, entre valores

predefinidos, como se ve en la tabla asociada al registro OPTION, 1:32, 1: 64, 1:256, etc., genera una nueva señal de menor frecuencia a la salida, que será la señal de reloj de entrada al registro TMR0.

• “Ralentiza” señales de entrada demasiado rápidas para nuestros propósitos.• También existe un postescaler, asociado al perro guardián WDT (Watch Dog

Timer) del microcontrolador, pero en este caso recibe el nombre de postcaler ya que se usa a la salida del WDT, no pudiendo estar asignado a la vez al Timer0 o al WDT. El preescaler es transparente para el programador, no se puede leer ni escribir sobre él, pero se puede seleccionar por software, como ya se ha dicho, mediante el registro OPTION.

• Nota: Para evitar un RESET no deseado del sistema, es necesario ejecutar una secuencia de instrucciones específicas cuando se cambia la asignación del prescaler del TMR0 al WDT. Esta secuencia debe ser seguida, aún cuando el WDT esté inactivo.

21/04/23 101ING. Luis Pacheco Cribillero

Page 102: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

¿CÓMO CUENTA EL TMR0?

El TMR0 cuenta exclusivamente de forma ascendente, nunca descendente.

Si el TMR0 se carga con un valor, éste comenzará a contar desde el valor cargado hasta que se desborda (cuando pasa a 00H)

00H

FFH00H

00H

FFH

Valor cargadoEn el TMR0

00H

(28 – N10)

21/04/23 102ING. Luis Pacheco Cribillero

Page 103: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CÁLCULOS CON EL TMR0• Cuando se carga en el registro TMR0 un valor XXH, él

mismo contará: (FFH – XXH) impulsos y el tiempo que tarda en hacerlo viene dado por la expresión: Temporización= 4 * TOSC * Valor Real TMR0 * Rango del

divisor de Frecuencia

Valor Real TMR0 = (28 – N10) = (256 – N10)

N10= Valor a cargar en el TMR0

Ejemplo: Sea un valor a cargar en el TMR0 de 100, un prescaler seleccionado de 1:32 y un oscilador XT. Determine el tiempo en que tardará el TMR0 en desbordarse.

Solución: Sea XT = Frecuencia = 4 MHz, T = 0.25 μs.Temporización= 4*0.25 μs* (256 – 100) * 32 = 4.992 ms.

21/04/23 103ING. Luis Pacheco Cribillero

Page 104: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

OTROS EJEMPLOS

• Se desea saber: ¿Qué valor debemos cargar en el TMR0, si deseamos obtener una temporización de 10,24 ms, utilizando un preescaler de 128 y un cristal XT?Solución:(256 – N10) = = = 80

(256 – N10) = 80, despejando N10 = (256 – 80) = 176, el valor que debemos cargar en el TMR0 es 176, para que éste cuente desde 176 hasta 256.

• Elegir el TMR0, para generar un retraso de 1.5 ms utilizando un oscilador de 10 MHz.Solución: Sea Fosc= 10 MHz, T = 100 ns

(256 – N10) = =

N10 = 256 - (3750/RgoDivisor)

RgodivisorT

iónTemporizac

OSC 4 12825.04

24,10

s

ms

RgodivisorT

iónTemporizac

OSC 4 RgoDivisorns

ms

1004

5.1

21/04/23 104ING. Luis Pacheco Cribillero

Page 105: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

Démosle valores al Rango del divisor, hasta obtener un valor que se acerque lo más posible al retardo propuesto:Si Prescaler= 256, Valor a cargar en el TMR0= 241 (redondeado)Si Prescaler= 128, Valor a cargar en el TMR0= 227 (redondeado)Si Prescaler= 64, Valor a cargar en el TMR0= 197 (redondeado)Si Prescaler= 32, Valor a cargar en el TMR0= 139 (redondeado)Etc…A manera de práctica, realice usted, el cálculo de la Temporización, para cada uno de los valores que se consiguieron en los cálculos anteriores. Escoja uno y justifique. Particularmente parece que el que tiene el rango de divisor de 64, es el mejor.

• Nota: En este ejercicio resuelto, usted puede darse cuenta de que no hay un solo resultado para los ejercicios, pero lo que si debe cumplirse es que sea cualquiera que sean los valores que se tomen para los cálculos, estos deben de estar cercanos a la respuesta que se espera del temporizador que esté diseñando.

CONTINUACIÓN EJEMPLO ANTERIOR

21/04/23 105ING. Luis Pacheco Cribillero

Page 106: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

• Ejemplo. Diga ¿cuánto es la máxima temporización que se puede hallar con el TMR0? Asuma que se está trabajando con un XT.Solución: Tomamos el máximo factor de escala de división todos los estados que puede contar el TMR0: – Temporización= 4*0.25 μs*(256 )*256 = 65.536 ms.– Este es el máximo valor que podemos conseguir del

TMR0.

• ¿Cómo hacemos entonces para conseguir valores superiores a éste, tales como 0,5 s; 1 s; 2 s; entre otros?– Esto se puede arreglar si tenemos un contador de mayor

número de bits. La solución está en extender el Timer0 con un registro (auxiliar) controlado por software.

– Dicho registro (auxiliar) contará el número de interrupciones por desbordamiento que genera el Timer0, de forma de que éste pase por cero, cuando haya pasado el tiempo que estamos calculando.

21/04/23 106ING. Luis Pacheco Cribillero

Page 107: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

USO DE REGISTRO AUXILIAR

Pasos: 1. Escoger un valor para el prescaler.

Un posible criterio es calcular todas las frecuencias de prescaler que podemos obtener con cada divisor posible. Las frecuencias sin decimales son interesantes al poder encontrar múltiplos de ellas a la salida del TMR0 con mayor facilidad. En general, la elección del valor del prescaler es empírica: depende del problema, la experiencia y sobre todo de la práctica.

2. Determinar el valor del Registro Auxiliar, a partir del valor dado por el TMR0. Normalmente viene dado por un múltiplo de la frecuencia, asociada al tiempo calculado. Con un ejemplo entenderemos mejor lo que se desea plantear:

Ejemplo: Determine los valores del TMR0 y del Registro Auxiliar paraconseguir una temporización de 1 segundo. Utilice un oscilador XT.

Solución: XT= Frecuencia = 4 MHz ; Tosc= 250 ns • Paso 1. Como no se nos ha impuesto que prescaler utilizar ni que

temporización, podemos aleatoria mente escogerlas, como en el ejemplo 6. Evaluando cualquiera, cuya temporización del TMR0 se basó en 5 ms, escojamos el prescaler 128 y sustituyamos los valores en la ecuación principal:– Temporización= 4*250 ns*(256 - 217)*128 = 4.992 ms

21/04/23 107ING. Luis Pacheco Cribillero

Page 108: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CONTINUACIÓN DEL EJEMPLO ANTERIOR

• Paso 2. ¿Qué valor debe de tener el registro auxiliar?a) Al tiempo de 4.992 ms, se asocia una frecuencia del TMR0 de =

= 200.3 Hz, redondeando, tomamos este

múltiplo:

200, Así, tendremos entonces que si multiplicamos 200*4.992 ms = 0.998 s, que es un valor bastante cercano a 1 segundo.

b) La misma operación pero interpretada de una forma más sencilla es determinar cuantas veces necesitamos al tiempo calculado para lograr un segundo:

La que usted entienda mejor es válida. Nuestro registro auxiliar debe ser de 200!!! Recuerde de que éste registro auxiliar no debe superar 255.Si supera este valor, se debe adicionar un nuevo registro auxiliar

ms992.4

1

32.200992.4

1

ms

segundo

21/04/23 108ING. Luis Pacheco Cribillero

Page 109: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

DE LOS CÁLCULOS A LA

PROGRAMACIÓN • Realicemos un ejercicio completo: Realice un programa que

permita encender y apagar un led cada 15 ms, mediante el timer0. Utilice un oscilador XT.

21/04/23 109ING. Luis Pacheco Cribillero

Page 110: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

DE LOS CÁLCULOS A LA PROGRAMACIÓN

Paso 2. Debemos de estructurar el programa para que vigile e informe cuando el TMR0 se ha desbordado, y el bit que nos da esta información es el TOIF, del Registro INTCON. Adicional a esto debemos configurar el registro OPTION para que este trabaje con el prescaler que hemos seleccionado para nuestros cálculos, así como de asignarlo al TMR0. Así como la rutinaria configuración de los puertos.

21/04/23 110ING. Luis Pacheco Cribillero

Page 111: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

LIST P=16F84AINCLUDE P16F84A.INCORG 00HGOTO INICIO

INICIO BSF STATUS,5CLRF TRISAMOVLW B’11010110’MOVWF OPTION_REGBCF STATUS,5CLRF INTCON

LEDON BSF PORTA,0CALL RETARDO

LEDOFF BCF PORTA,0CALL RETARDOGOTO LEDON

;***RUTINA DE RETARDO***RETARDO MOVLW D’139’

MOVWF TMR0ESPERA BTFSS INTCON,TOIF

GOTO ESPERABCF INTCON,TOIFRETURNEND

Paso 3. Programa

21/04/23 111ING. Luis Pacheco Cribillero

Page 112: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

Ejercicio. Realice un programa que permita encender y apagar un led cada un segundo. Mediante Timer0 y con un oscilador XT.

Programa Principal

Subrutina

21/04/23 112ING. Luis Pacheco Cribillero

Page 113: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

21/04/23 113ING. Luis Pacheco Cribillero

Page 114: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

¿OTRA FORMA DE HACER LOS CÁLCULOS?

• Pero si aún le enredan todas estas fórmulas, para calcular temporizaciones, probemos con estas tres:

Pruebe ahora realizar los mismos cálculos siguiendo el 1, 2, 3…

21/04/23 114ING. Luis Pacheco Cribillero

Page 115: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

21/04/23 ING. Luis Pacheco Cribillero 115

Page 116: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

TEMA 5. INTERRUPCIONES

Page 117: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

INTERRUPCIONES• “Las interrupciones son desviaciones del flujo de control del programa

originadas asíncronamente, por diversos sucesos que no se hallan bajo la supervisión de las instrucciones. Dichos sucesos pueden ser externos al sistema, como la generación de un flanco o nivel activo en una patilla del microcontrolador, o bien, internos, como el desbordamiento de un contador. Su comportamiento es similar al de la instrucción “call” de llamado a subrutina. Se detiene la ejecución del programa en curso, se salva la dirección actual del contador de programa (PC) en la pila (STACK) y se carga el PC con una dirección, que en el caso de una interrupción es una dirección reservada de la memoria de código, llamada vector de interrupción”. Parejo. Microcontroladores PIC. Pág. 117. 2da Edición.

• En el PIC 16F84, este vector de interrupción está ubicado en la posición 04H, en donde comenzará la rutina de servicio de la interrupción. Ejemplo:org 00H ; Vector de origen del programagoto INICIO ; salto a la rutina de programa principalorg 04H ; Vector de interrupcióngoto INTERR ; salto a la rutina de interrupción.

• La idea de colocar una instrucción de salto incondicional, es la de trasladar el flujo del programa a la zona de memoria de código que contiene a la rutina de interrupción.21/04/23 117ING. Luis Pacheco Cribillero

Page 118: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

DIAGRAMA DE FLUJO DURANTE UNA INTERRUPCIÓNPrograma normal

Instrucción 1

Instrucción 2

Instrucción 3

Instrucción 24

Instrucción 25

Instrucción N

Fin de programa

Rutina de Servicio de Interrupción

Instrucción 1

Instrucción 2

RETFIE

Nota: Una Rutina de Servicio de Interrupción puede ser igual de extensa e incluso más que el mismo programa principal.

21/04/23 118ING. Luis Pacheco Cribillero

Page 119: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

DIAGRAMA DE FLUJO RSI

21/04/23 119ING. Luis Pacheco Cribillero

Page 120: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

CAUSAS DE INTERRUPCIÓN

1. Activación del pin RB0/INT2. Desbordamiento del TMR03. Cambio de estado de una de los 4 pines de más peso

(RB7:RB4) del puerto B4. Finalización de la escritura en la EEPROM de datos

REGISTRO INTCON• Este registro se encuentra ubicado en la posición 0BH del

banco 0 de los registros de funciones especiales (SFR). A continuación se describirán cada uno de sus bits:

21/04/23 120ING. Luis Pacheco Cribillero

Page 121: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

• GIE: (Global Interrupt Enable), Permiso Global de Interrupciones1: Habilita todas las interrupciones, cuyos bits de permiso

individuales también las permitan0: Deshabilita todas las interrupciones

• EEIE: (EEPROM Interrupt Enable), Permiso de Interrupción por fin de escritura en la EEPROM1: Habilita la interrupción cuando termina la escritura de la

EEPROM de datos0: Deshabilita esta interrupción

• TOIE: (TMR0 Overflow Interrupt Enable), Permiso de interrupción por desborde del TMR01: Habilita una interrupción por desborde del TMR00: Deshabilita esta interrupción

• INTE: (Interrupt Enable RB0/INT), Permiso de interrupción por activación del pin RB0/INT1: Habilita la interrupción al activarse RB0/INT0: Deshabilita esta interrupción

INTCON

21/04/23 121ING. Luis Pacheco Cribillero

Page 122: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

INTCON

• RBIE: (RB Port Change Interrupt Enable), Permiso de interrupción por cambio de estado en RB7:RB41: Habilita esta interrupción0: Deshabilita esta interrupción

• TOIF: (TMR0 Overflow Interrupt Flag), Señalizador de desborde del TMR01: Ha ocurrido un desborde del TMR00: No se ha desbordado el TMR0

• INTF: (RB0/INT Interrupt Flag), Señalizador de activación del pin RB0/INT1: Se ha activado RB0/INT0: No se ha activado RB0/INT

• RBIF: (RB Port Change Interrupt Flag), Señalizador de cambio de estado en RB7:RB41: Pasa a 1 cuando cambia el estado de alguna de estas 4 líneas0: No ha cambiado el estado de RB7: RB4

21/04/23 122ING. Luis Pacheco Cribillero

Page 123: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

SALVANDO EL ENTORNO

Salvar el entorno, se refiere a mantener el valor exacto que tienen los registros de trabajo STATUS y W, y cualquier otro de importancia, que no vaya a ser modificado dentro de la subrutina de servicio de interrupción.

Para salvar el entorno cuando ocurre una interrupción se recomienda seguir los siguientes pasos:– Salvar a w y a STATUS.– Almacenar a w en un registro general llamado

W_TEMP – Almacenar a STATUS en un registro general

llamado STATUS_TEMP– Se ejecuta la rutina de interrupción (queda

expresada para efectos del ejemplo siguiente)– Restauramos a STATUS– Restauramos a w

NOTA: Los registros generales W_TEMP, STATUS_TEMP, deben ser declarados al inicio del programa, para no generar errores.

21/04/23 123ING. Luis Pacheco Cribillero

Page 124: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

SALVANDO EL ENTORNO

; **** Rutina para salvar el entorno ****PUSH movwf W_TEMP ; Copiamos w a este registro temporal

swapf STATUS,0 ; Intercambiamos STATUS y lo guardamos en w

movwf STATUS_TEMP ; Salvamos STATUS en STATUS_TEMPRUT_INT

;Aquí estará la rutina de servicio de interrupción;

POP swapf STATUS_TEMP,0 ; Intercambiamos nibbles en el registro

; STATUS_TEMPmovf STATUS ; Movemos w al registro STATUS, retornando

el ; valor original

swapf W_TEMP,1 ; Intercambiamos nibbles y lo mantenemos en

; este registroswapf W_TEMP,0 ; Intercambiamos nibbles y lo trasladamos

a w ; retornando el valor original que tenía antes

de; entrar a la rutina de interrupción

21/04/23 124ING. Luis Pacheco Cribillero

Page 125: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

Ejemplo. Realicemos un programa completo que contenga varias interrupciones. Si la causa ha sido la activación del pin RB0, se debe mostrar un dos en binario en el puerto A, si ha sido un cambio de nivel en RB4:RB7, se debe mostrar el uno en binario en el puerto A y si se ha desbordado el TMR0, se debe mostrar el cuatro en binario en el puerto A.

Programa Principal RSI

21/04/23 125ING. Luis Pacheco Cribillero

Page 126: MICROCONTROLADORES UNIVERSIDAD TECNOLÓGICA DEL PERÚ FACULTAD DE INGENIERÍA ELECTRÓNICA Y MECATRÓNICA CIRCUITOS DIGITALES II DOCENTE: ING. Luis Pacheco

¿CUANDO UTILIZAR UNA INTERRUPCIÓN?

Una interrupción es muy importante cuando deseamos realizar una tarea que no dependa de una exploración constante del programa sobre la misma.

También cuando deseamos que nuestro programa responda de forma inmediata y automática a determinados eventos.Ejemplo del uso de Interrupción:

• En los sistemas de control, cuando se necesita un pulsador de parada de emergencia (PARE).

• En un diseño, cuando se requiere que nuestro circuito cumpla con determinadas tareas, al pulsarse una tecla (LAMP TEST).

• En el manejo de teclados, se recomienda su uso, ya que se puede meter al microcontrolador en un estado de reposo, ahorrando energía y esperando a que se pulse una tecla para iniciar una rutina de servicio (CLAVE).

• Cuando almacenamos información en la EEPROM y deseamos ser advertidos de que ésta se ha terminado (ALMACENAMIENTO).

• Etc...21/04/23 126ING. Luis Pacheco Cribillero