SlideShare una empresa de Scribd logo
1 de 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
TEMA 1:
INTRODUCCIÓN A LOS MICROCONTROLADORES
Los 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.
16/01/2020 2ING. Luis Pacheco Cribillero
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 !!!
16/01/2020 3ING. Luis Pacheco Cribillero
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
16/01/2020 4ING. Luis Pacheco Cribillero
ARQUITECTURA DE LOS MICROCONTROLADORES
Hemos 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éricosPeriféricos
Bus de Direcciones
Bus de Datos
Bus de Control
16/01/2020 5ING. Luis Pacheco Cribillero
Microcontrolador y su arquitectura cerrada
µC
Periféricos
Arquitectura tipo Von Neumann
8
CPU
Memoria
Instrucciones
+
Datos
Bus común de
direcciones
Bus de datos e
instrucciones
16/01/2020 6ING. Luis Pacheco Cribillero
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
Memoria
de
Instrucciones
10
Bus de Dirección
de Instrucciones
CPU
Memoria
de
Datos
Bus de Dirección
de Datos
Bus de Datos
14
9
8
16/01/2020 7ING. Luis Pacheco Cribillero
¿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:
Proceso
que se desea controlar
Microcontrolador
Microcontrolador
Información
Información
16/01/2020 8ING. Luis Pacheco Cribillero
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.
16/01/2020 9ING. Luis Pacheco Cribillero
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.
16/01/2020 10ING. Luis Pacheco Cribillero
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éricos
Es 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)
16/01/2020 11ING. Luis Pacheco Cribillero
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
PIC16F87X
16/01/2020 12ING. Luis Pacheco Cribillero
Características Valor
Memoria 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
16/01/2020 13ING. Luis Pacheco Cribillero
DIAGRAMA INTERNO DEL PIC 16F84
16/01/2020 14ING. Luis Pacheco Cribillero
HARDWARE PIC16F84
16/01/2020 15ING. Luis Pacheco Cribillero
DESCRIPCIÓN DE LOS PINES DEL PIC16F84
Pin Descripción/Función
VDD Voltaje de alimentación. Se aplican 5 VDC
VSS Tierra
FOSC1/CLKIN
Entrada 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 B
RB0 tiene una función adicional: Provoca una interrupción
externa asíncrona, cuando se configura para ésta.
16/01/2020 16ING. Luis Pacheco Cribillero
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.
16/01/2020 17ING. Luis Pacheco Cribillero
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
•
16/01/2020 18ING. Luis Pacheco Cribillero
FRECUENCIA DE FUNCIONAMIENTO
16/01/2020 19ING. Luis Pacheco Cribillero
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 * TOSC
4. 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
16/01/2020 20ING. Luis Pacheco Cribillero
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 μs
5. 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
16/01/2020 21ING. Luis Pacheco Cribillero
CIRCUITOS DE RESET
16/01/2020 22ING. Luis Pacheco Cribillero
CIRCUITOS DE APOYO (INTRODUCEN
DATOS AL MICROCONTROLADOR)
Pulsadores e interruptores
16/01/2020 23ING. Luis Pacheco Cribillero
Visualización
Con Display
CIRCUITOS DE APOYO (SACAN
DATOS DEL MICROCONTROLADOR)
16/01/2020 24ING. Luis Pacheco Cribillero
Con Relé
Con optoacoplador
CIRCUITOS DE APOYO (SACAN DATOS DEL MICROCONTROLADOR)
16/01/2020 25ING. Luis Pacheco Cribillero
16/01/2020 ING. Luis Pacheco Cribillero 26
TEMA 2:
REGISTROS, INSTRUCCIONES Y
BANCOS DE MEMORIA
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
16/01/2020 28ING. Luis Pacheco Cribillero
• 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 = 1
1 + 0 = 1 1 + 1 = 1
• Resta Binaria Aritmética: (sub)
0 – 0 = 0 1 – 0 = 1
1 – 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
16/01/2020 29ING. Luis Pacheco Cribillero
SISTEMAS DE NUMERACIÓN
Decimal 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
16/01/2020 30ING. Luis Pacheco Cribillero
FORMATO DE SISTEMAS DE NUMERACIÓN
ADMITIDOS POR EL MICROCONTROLADOR
Tipo de Sistema Formato
Decimal D’126’
.126
Binario B’10011011’
Hexadecimal H’AE’
AEH
0xAE
Sigla Significado
f (File)
Registro. Puede ser
cualquiera que el
programador 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"
16/01/2020 31ING. Luis Pacheco Cribillero
REGISTROS Y BANCOS
16/01/2020 32ING. Luis Pacheco Cribillero
MEMORIA RAM
DE REGISTROS
16/01/2020 33ING. Luis Pacheco Cribillero
ACCEDIENDO A LOS BANCOS DE REGISTROS
16/01/2020 34ING. Luis Pacheco Cribillero
DIRECTIVA EQU
• La directiva EQU permite asignar a un registro o constante, un nombre
asociado que facilita su entendimiento.
• Ejemplo:
DATOX EQU 20H
DATOY EQU 21H
STATUS EQU 03H
F EQU 01H
INCLUDE .INC
El 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.INC
16/01/2020 35ING. Luis Pacheco Cribillero
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.
16/01/2020 36ING. Luis Pacheco Cribillero
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 utilizar
include < 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 15H
1raC 2daC 3raC 4taC
M equ 15H ; Define a la variable M en la posición 15H
3. 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
16/01/2020 37ING. Luis Pacheco Cribillero
ESTRUCTURA DE UN PROGRAMA
RESULTADO equ 0FH ;Declaro al registro
;RESULTADO
;En la posición 0FH de la RAM
org 00H
goto INICIO
INICIO bsf STATUS,5
movlw FFH ; Configuramos los registros
movwf TRISA ; asociados a los puertos A y B
movlw 00H
movwf TRISB
1ra Columna 2da Columna 3ra Columna 4ta Columna
Etiquetas Instrucciones Operandos Comentarios
16/01/2020 38ING. Luis Pacheco Cribillero
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.
16/01/2020 39ING. Luis Pacheco Cribillero
¿Cuál se entiende mejor?
List= 16F84
org 00H
goto inicio
inicio Bsf 03H,5
movlw 1FH
movwf 85H
movlw 00H
movwf 86H
bcf 03H,5
movlw b’11110000’
movwf 06H
movf 05H,0
ExploPA Btfsc 05H,3
goto ExploPA
goto INVPB
INVPB comf 06H,1
End
List P=16F84 ;Tipo de procesador
STATUS equ 03H ; Zona de
declaraciones
PORTA equ 05H
PORTB equ 06H
TRISA equ 85H
TRISB equ 86H
W equ 00H
F equ 01H
org 00H
goto INICIO
INICIObsf 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,W
ExploPABtfsc PORTA,3 ; RA3 es cero?
goto ExploPA
goto INVPB
INVPB comf PORTB,1 ; Se activa RB1
End
Sin recomendaciones
Con recomendaciones
16/01/2020 40ING. Luis Pacheco Cribillero
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
16/01/2020 41ING. Luis Pacheco Cribillero
INSTRUCCIONES ORIENTADAS A REGISTROS
MNEMÓ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) Z
16/01/2020 42ING. Luis Pacheco Cribillero
INSTRUCCIONES ORIENTADAS A BIT
MNEMÓ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 CONTROL
addlw 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) Z16/01/2020 43ING. Luis Pacheco Cribillero
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).
16/01/2020 44ING. Luis Pacheco Cribillero
16/01/2020 ING. Luis Pacheco Cribillero 45
TEMA 3. HERRAMIENTAS
DE PROGRAMACIÓN
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
16/01/2020 47ING. Luis Pacheco Cribillero
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,2
goto RutinaA
goto RutinaB
• BTFSC F,B (Pregunta si el bit B del Registro F vale cero)
• (Bit Test File Skip Clear)
– Ejemplo: btfsc suma,5
goto RutinaA
goto RutinaB
16/01/2020 48ING. Luis Pacheco Cribillero
STATUS
7 (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 C
C. Bit de acarreo en el bit MSB
Vale 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 cero
Vale 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 3
1 -0 : Banco 2
0 - 1 : Banco 1
0 - 0 : Banco 0
TO. Time Out
Se pone a 1 después de la conexión de la alimentación al microcontrolador, o al ejecutarse las
instrucciones clrwdt ó sleep
Se pone a 0 cuando el perro guardián se ha desbordado.
PD. Power Down
Se pone a 1 después de la conexión de la alimentación al microcontrolador o al ejecutarse la
instrucción clrwdt
Se pone a 0 mediante la ejecución de la instrucción sleep
16/01/2020 49ING. Luis Pacheco Cribillero
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→W
addwf DatoB,0 ;DatoA+DatoB→W
btfss STATUS,0 ; C=1?
goto Noacarreo
goto 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→W
addwf DatoB,0 ;DatoA+DatoB→W
btfss STATUS,1 ; DC=1?
goto Noacarreo
goto Acarreo
16/01/2020 50ING. Luis Pacheco Cribillero
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→W
subwf DatoA,0 ;DatoA – DatoB →W
btfss STATUS,2
goto NOIGUAL
goto IGUAL
• Opción B: Se aplica XOR entre ambos registros y:
movf DatoB,0 ;DatoB→W
xorwf DatoA,0 ;DatoA (XOR) DatoB →W
btfss STATUS,2
goto NOIGUAL
goto IGUAL
16/01/2020 51ING. Luis Pacheco Cribillero
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→W
subwf DatoA,0 ;DatoA-DatoB→W
EXPLORA btfss STATUS,2 ; Z=1?
goto SIGUE
goto IGUAL ;Si Z=1, A=B
SIGUE btfsc STATUS,0 ;C=0?
goto MAYOR ; Si C=1, A>B
goto MENOR ; Si C=0, A<B
16/01/2020 52ING. Luis Pacheco Cribillero
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=0
Así de sencillo es seleccionar
los bancos de registros.
16/01/2020 53ING. Luis Pacheco Cribillero
CONFIGURANDO UN PUERTO
La 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
16/01/2020 54ING. Luis Pacheco Cribillero
CONFIGURANDO UN PUERTO
La 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.
16/01/2020 55ING. Luis Pacheco Cribillero
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 entradas
bcf STATUS,5 ; (3) Se regresa al banco 0
B) bsf STATUS, 5 ; (1) Selección de banco 1
movlw 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 1
movlw B’10010001 ; B’ESSESSSE’
movwf TRISB ; (2) Mixto E/S en un mismo puerto
bcf STATUS,5 ; (3) Se regresa al banco 0
16/01/2020 56ING. Luis Pacheco Cribillero
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.
16/01/2020 57ING. Luis Pacheco Cribillero
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.
16/01/2020 58ING. Luis Pacheco Cribillero
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
16/01/2020 59ING. Luis Pacheco Cribillero
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→W
movwf DatoA ; W→DatoA
• Ejemplo 2. Escriba sobre el puerto B el siguiente valor: 49H
movlw 49H ; 49H→W
movwf PORTB ; W→PORTB
• Ejemplo 3. Active el bit RB0, desactive el bit RB1 y active el bit
RA4:
bsf PORTB,0 ; RB0= 1
bcf PORTB,1 ; RB1= 0
bsf PORTA,4 ; RA4= 1
16/01/2020 60ING. Luis Pacheco Cribillero
• 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,0
bsf PORTA,1
bcf PORTA,2
16/01/2020 61ING. Luis Pacheco Cribillero
• 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,0
goto RutinA
goto RutinB
16/01/2020 62ING. Luis Pacheco Cribillero
TOMA DE DECISIONES
• Una Tarea.
La condición puede venir
internamente como
externamente.
Condición
X=1?
Proceso A
NO
SI
• Interna
btfss STATUS,0 ; C=1?
goto ProcesoA
goto SIGUE
• Externa
btfss PORTA,0 ; RA0=1?
goto ProcesoA
goto SIGUE
16/01/2020 63ING. Luis Pacheco Cribillero
TOMA DE DECISIONES
• Dos Tareas.
La condición puede venir
internamente como
externamente.
• Interna
btfss STATUS,0 ; C=1?
goto ProcesoA
goto ProcesoB
• Externa
btfss PORTA,0 ; RA0=1?
goto ProcesoA
goto ProcesoB
Condición
X=1?
Proceso A
NO
SI
Proceso B
16/01/2020 64ING. Luis Pacheco Cribillero
• 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
16/01/2020 65ING. Luis Pacheco Cribillero
TOMA DE DECISIONES. EJEMPLO
• Externa
btfss PORTA,0 ; RA0=1?
goto ProcesoA
goto ProcesoB
ProcesoA bsf PORTB,0
goto SIGUE
ProcesoB bcf PORTB,1
goto SIGUE
SIGUE ------
------
------
RA0=1?
Activar LED en
RB0
NO
SI
Activar LED en
RB1
16/01/2020 66ING. Luis Pacheco Cribillero
TOMA DE DECISIONES. CERROJO Ó
VALIDACIÓN
• Se queda esperando que
la condición ocurra.
• Interna
ESPERA btfss INTCON,0
goto ESPERA
goto ProcesoA
• Externa
EXPLORA btfss PORTA,0 ; RA0=1?
goto EXPLORA
goto ProcesoA
Condición
X=1?
Proceso A
NO
SI
16/01/2020 67ING. Luis Pacheco Cribillero
TOMA DE DECISIONES
• Multitareas.
Dos condiciones permiten
elegir entre uno a cuatro
procesos distintos.
Condición
X=1?
NO
SI
Proceso B
Condición
Y=1?
NO
SI
Condición
Y=1?
Proceso D
Proceso A
Proceso C
SI
NO
16/01/2020 68ING. Luis Pacheco Cribillero
¿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 35H
movwf SUMA
btfss STATUS,2
goto ProcesoA
goto Carga
35H→ SUMA
Z=1?
ProcesoA
NO
SI
16/01/2020 69ING. Luis Pacheco Cribillero
16/01/2020 ING. Luis Pacheco Cribillero 70
TEMA 3. RUTINAS
INTERMEDIAS
SUBRUTINA
MIENTRAS SE
PRESIONA
UNA TECLA
TECLA
PRESIONADA?
NO
SI
DELAY 10 ms
PROCESO A
16/01/2020 72ING. Luis Pacheco Cribillero
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
16/01/2020 73ING. Luis Pacheco Cribillero
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”
16/01/2020 74ING. Luis Pacheco Cribillero
ENMASCARAMIENTO
DatoA equ 12H
DatoL equ 23H
DatoH equ 4EH
movlw 4CH ; Cargamos a w con 4CH
movwf DatoA ; Transferimos 4CH a w
movlw 0FH
andwf 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 éste
movlw F0H
andwf DatoA,0 ; Neutralizamos el nibble menos
; significativo de DatoA
movwf DatoH
swapf DatoH ; Intercambiamos nibbles
; en DatoH para ordenarlo.
16/01/2020 75ING. Luis Pacheco Cribillero
ENMASCARAMIENTO
• También se puede neutralizar un bit o varios bits, selectivamente,
según sea nuestra conveniencia.
16/01/2020 76ING. Luis Pacheco Cribillero
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
16/01/2020 77ING. Luis Pacheco Cribillero
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.
16/01/2020 78ING. Luis Pacheco Cribillero
CALL K
M (09H)
N (1FH)
O (2AH)
L (05H)
K (03H)
P (2EH)
Q (30H)
R (3CH)
T (40H)
PILA (STACK) (PCL)
16/01/2020 79ING. Luis Pacheco Cribillero
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.
16/01/2020 80ING. Luis Pacheco Cribillero
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.
16/01/2020 81ING. Luis Pacheco Cribillero
RUTINA DE CONVERSIÓN
BINARIO A BCD (8 BITS)
INICIO
DATOX→W
W→RESP
U=0
D=0
C=0
RESP= RESP-100
C=0?
incf C,1
incf D,1
MOSTRAR EN
DISPLAY
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
16/01/2020 82ING. Luis Pacheco Cribillero
RUTINA DE CONVERSIÓN DE
BCD A BINARIO (8 BITS)
INICIO
DAT=0
UNI=X
DEC=Y
CEN=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
16/01/2020 83ING. Luis Pacheco Cribillero
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.
16/01/2020 84ING. Luis Pacheco Cribillero
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
16/01/2020 85ING. Luis Pacheco Cribillero
VARIAS OPCIONES
TECLA1
ACT?
NO
SI
Proceso B
TECLA2
ACT?
NO
SI
TECLA2
ACT?
Proceso D
Proceso A
Proceso C
NO
SI
TECLA3
ACT?
SINO
16/01/2020 86ING. Luis Pacheco Cribillero
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.
16/01/2020 87ING. Luis Pacheco Cribillero
MULTIPLEXACIÓN DE DISPLAYS
• Paso a paso: (Asumamos que tenemos tres displays)
1) Se activa display de UNIDAD
2) Se desactiva el resto de los displays
3) Se muestra el dato de UNIDAD
4) Se desactiva los displays de UNIDAD y
CENTENA
5) Se activa el display de DECENA
6) Se muestra el dato de DECENA
7) Se desactivan los displays de UNIDAD y DECENA
8) Se activa el display de CENTENA
9) Se muestra el dato de CENTENA
16/01/2020 88ING. Luis Pacheco Cribillero
MULTIPLEXACIÓN DE DISPLAYS
MOSTRAR
DIG1→W
W→PORTA
HABI DISP1
RETARDO 1ms
HABI DISP2
DIG2→W
W→PORTA
RETARDO 1ms
RETURN
16/01/2020 89ING. Luis Pacheco Cribillero
ESTRUCTURA DE CONTADORES
INICIO
CONTADOR=0
MOSTRAR
CONTADOR=0
MOSTRAR
MOSTRAR
INCF CONTADOR,1 CONTADOR
=9?
1
1
NO
SI
CONTADOR ASCENDENTE SIMPLE
16/01/2020 90ING. Luis Pacheco Cribillero
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
16/01/2020 91ING. Luis Pacheco Cribillero
ESTRUCTURA DE CONTADORES
INICIO
CONTADOR=0
MOSTRAR
CONTADOR=9
MOSTRAR
MOSTRAR
DECF CONTADOR,1 CONTADOR
=0?
1
1
NO
SI
CONTADOR DESCENDENTE SIMPLE
16/01/2020 92ING. Luis Pacheco Cribillero
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
16/01/2020 93ING. Luis Pacheco Cribillero
DE LA IDEA AL PROGRAMA (PARTE I)
1. Delimitar / Diseñar el Hardware
2. Diagrama de Flujo para establecer el
funcionamiento lógico
3. 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
16/01/2020 94ING. Luis Pacheco Cribillero
16/01/2020 ING. Luis Pacheco Cribillero 95
TEMA 4. TIMER 0
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
16/01/2020 97ING. Luis Pacheco Cribillero
REGISTRO OPTION (Dirección 81H)
• bit 7, RPBU : Resistencia Pull-up, Puerto B, habilita el
bit
1: Desactivadas
0: Activadas
• bit 6, INTEDG: Flanco activo para el control de
interrupciones
1: Con flanco Ascendente
0: Con flanco Descendente
• bit 5, TOCS: Fuente de Reloj para TMR0
1: Pulsos introducidos a través de RA4/T0CK1
(Contador)
0: Pulsos de reloj interno Fosc/4 (Temporizador)
• bit 4, TOSE: Tipo de flanco en TOCK1
1: Incremento de TMR0 cada flanco descendente
0: Incremento de TMR0 cada flanco ascendente
• bit 3, PSA: Bit de asignación del prescaler divisor de
frecuencia
1: El divisor de frecuencia se asigna al WDT
0: El divisor de frecuencia se asigna al TMR0
• bit 2-0, PS2:PSO: Rango con el que actúa el divisor de
frecuencia.16/01/2020 98ING. Luis Pacheco Cribillero
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
16/01/2020 99ING. Luis Pacheco Cribillero
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).
16/01/2020 100ING. Luis Pacheco Cribillero
¿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.
16/01/2020 101ING. Luis Pacheco Cribillero
¿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
FFH
00H
00H
FFH
Valor cargado
En el TMR0
00H
(28 – N10)
16/01/2020 102ING. Luis Pacheco Cribillero
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.
16/01/2020 103ING. Luis Pacheco Cribillero
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
16/01/2020 104ING. Luis Pacheco Cribillero
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
16/01/2020 105ING. Luis Pacheco Cribillero
• 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.
16/01/2020 106ING. Luis Pacheco Cribillero
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 para
conseguir 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
16/01/2020 107ING. Luis Pacheco Cribillero
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.200
992.4
1

ms
segundo
16/01/2020 108ING. Luis Pacheco Cribillero
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.
16/01/2020 109ING. Luis Pacheco Cribillero
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.
16/01/2020 110ING. Luis Pacheco Cribillero
LIST P=16F84A
INCLUDE P16F84A.INC
ORG 00H
GOTO INICIO
INICIO BSF STATUS,5
CLRF TRISA
MOVLW B’11010110’
MOVWF OPTION_REG
BCF STATUS,5
CLRF INTCON
LEDON BSF PORTA,0
CALL RETARDO
LEDOFF BCF PORTA,0
CALL RETARDO
GOTO LEDON
;***RUTINA DE RETARDO***
RETARDO MOVLW D’139’
MOVWF TMR0
ESPERA BTFSS INTCON,TOIF
GOTO ESPERA
BCF INTCON,TOIF
RETURN
END
Paso 3. Programa
16/01/2020 111ING. Luis Pacheco Cribillero
Ejercicio. Realice un programa
que permita encender y apagar
un led cada un segundo.
Mediante Timer0 y con un
oscilador XT.
Programa Principal
Subrutina
16/01/2020 112ING. Luis Pacheco Cribillero
16/01/2020 113ING. Luis Pacheco Cribillero
¿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…
16/01/2020 114ING. Luis Pacheco Cribillero
16/01/2020 ING. Luis Pacheco Cribillero 115
TEMA 5. INTERRUPCIONES
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 programa
goto INICIO ; salto a la rutina de programa principal
org 04H ; Vector de interrupción
goto 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.
16/01/2020 117ING. Luis Pacheco Cribillero
DIAGRAMA DE FLUJO DURANTE UNA INTERRUPCIÓN
Programa 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.
16/01/2020 118ING. Luis Pacheco Cribillero
DIAGRAMA DE
FLUJO RSI
16/01/2020 119ING. Luis Pacheco Cribillero
CAUSAS DE INTERRUPCIÓN
1. Activación del pin RB0/INT
2. Desbordamiento del TMR0
3. Cambio de estado de una de los 4 pines de más peso
(RB7:RB4) del puerto B
4. 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:
16/01/2020 120ING. Luis Pacheco Cribillero
• GIE: (Global Interrupt Enable), Permiso Global de Interrupciones
1: Habilita todas las interrupciones, cuyos bits de permiso individuales
también las permitan
0: Deshabilita todas las interrupciones
• EEIE: (EEPROM Interrupt Enable), Permiso de Interrupción por fin
de escritura en la EEPROM
1: Habilita la interrupción cuando termina la escritura de la EEPROM de
datos
0: Deshabilita esta interrupción
• TOIE: (TMR0 Overflow Interrupt Enable), Permiso de interrupción
por desborde del TMR0
1: Habilita una interrupción por desborde del TMR0
0: Deshabilita esta interrupción
• INTE: (Interrupt Enable RB0/INT), Permiso de interrupción por
activación del pin RB0/INT
1: Habilita la interrupción al activarse RB0/INT
0: Deshabilita esta interrupción
INTCON
16/01/2020 121ING. Luis Pacheco Cribillero
INTCON
• RBIE: (RB Port Change Interrupt Enable), Permiso de interrupción
por cambio de estado en RB7:RB4
1: Habilita esta interrupción
0: Deshabilita esta interrupción
• TOIF: (TMR0 Overflow Interrupt Flag), Señalizador de desborde del
TMR0
1: Ha ocurrido un desborde del TMR0
0: No se ha desbordado el TMR0
• INTF: (RB0/INT Interrupt Flag), Señalizador de activación del pin
RB0/INT
1: Se ha activado RB0/INT
0: No se ha activado RB0/INT
• RBIF: (RB Port Change Interrupt Flag), Señalizador de cambio de
estado en RB7:RB4
1: Pasa a 1 cuando cambia el estado de alguna de estas 4 líneas
0: No ha cambiado el estado de RB7: RB4
16/01/2020 122ING. Luis Pacheco Cribillero
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.
16/01/2020 123ING. Luis Pacheco Cribillero
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_TEMP
RUT_INT
;Aquí estará la rutina de servicio de interrupción
;
POP swapf STATUS_TEMP,0 ; Intercambiamos nibbles en el registro
; STATUS_TEMP
movf STATUS ; Movemos w al registro STATUS, retornando el
; valor original
swapf W_TEMP,1 ; Intercambiamos nibbles y lo mantenemos en
; este registro
swapf 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
16/01/2020 124ING. Luis Pacheco Cribillero
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
16/01/2020 125ING. Luis Pacheco Cribillero
¿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...
16/01/2020 126ING. Luis Pacheco Cribillero

Más contenido relacionado

La actualidad más candente

Exposicion proyectos en electronica 2013
Exposicion proyectos en electronica 2013Exposicion proyectos en electronica 2013
Exposicion proyectos en electronica 2013Hector Vela Fontis
 
Tutorial-pic16 f877a- algunas-mejoras
Tutorial-pic16 f877a- algunas-mejorasTutorial-pic16 f877a- algunas-mejoras
Tutorial-pic16 f877a- algunas-mejorasAldo Corp
 
Microcontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMELMicrocontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMELSANTIAGO PABLO ALBERTO
 
Introduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led'sIntroduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led'sRuderocker Billy
 
La Familia De Microcontroladores Pic
La Familia De Microcontroladores PicLa Familia De Microcontroladores Pic
La Familia De Microcontroladores PicAndres
 
Sistema de alarma Netcom 6480
Sistema de alarma Netcom 6480Sistema de alarma Netcom 6480
Sistema de alarma Netcom 6480Jomicast
 
U1 Microcontroladores Diseño de Productos Electrónicos con Microcontroladores
U1 Microcontroladores  Diseño de Productos Electrónicos con MicrocontroladoresU1 Microcontroladores  Diseño de Productos Electrónicos con Microcontroladores
U1 Microcontroladores Diseño de Productos Electrónicos con MicrocontroladoresSENA
 
04 procesadores y microcontroladores
04 procesadores y microcontroladores04 procesadores y microcontroladores
04 procesadores y microcontroladoresMario Ramirez
 
PLC : Aplicaciones de Banda Ancha sobre la Red Eléctrica
PLC : Aplicaciones de Banda Ancha sobre la Red EléctricaPLC : Aplicaciones de Banda Ancha sobre la Red Eléctrica
PLC : Aplicaciones de Banda Ancha sobre la Red EléctricaJosep Pocalles
 
Microcontroladores clase 1
Microcontroladores clase 1Microcontroladores clase 1
Microcontroladores clase 1TALLERMICROS
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladoresabemen
 
Microcontroladores clase 2
Microcontroladores clase 2Microcontroladores clase 2
Microcontroladores clase 2TALLERMICROS
 
Microcontroladores: Microcontroladores AVR
Microcontroladores: Microcontroladores AVRMicrocontroladores: Microcontroladores AVR
Microcontroladores: Microcontroladores AVRSANTIAGO PABLO ALBERTO
 

La actualidad más candente (20)

Familia De Los Microcontroladores Pic
Familia De Los Microcontroladores PicFamilia De Los Microcontroladores Pic
Familia De Los Microcontroladores Pic
 
Turorial avr Bascom
Turorial avr BascomTurorial avr Bascom
Turorial avr Bascom
 
Exposicion proyectos en electronica 2013
Exposicion proyectos en electronica 2013Exposicion proyectos en electronica 2013
Exposicion proyectos en electronica 2013
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
Tutorial-pic16 f877a- algunas-mejoras
Tutorial-pic16 f877a- algunas-mejorasTutorial-pic16 f877a- algunas-mejoras
Tutorial-pic16 f877a- algunas-mejoras
 
Introducción
IntroducciónIntroducción
Introducción
 
Microcontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMELMicrocontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMEL
 
Introduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led'sIntroduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led's
 
La Familia De Microcontroladores Pic
La Familia De Microcontroladores PicLa Familia De Microcontroladores Pic
La Familia De Microcontroladores Pic
 
Domotica con logo
Domotica con logoDomotica con logo
Domotica con logo
 
Sistema de alarma Netcom 6480
Sistema de alarma Netcom 6480Sistema de alarma Netcom 6480
Sistema de alarma Netcom 6480
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores pic
 
U1 Microcontroladores Diseño de Productos Electrónicos con Microcontroladores
U1 Microcontroladores  Diseño de Productos Electrónicos con MicrocontroladoresU1 Microcontroladores  Diseño de Productos Electrónicos con Microcontroladores
U1 Microcontroladores Diseño de Productos Electrónicos con Microcontroladores
 
04 procesadores y microcontroladores
04 procesadores y microcontroladores04 procesadores y microcontroladores
04 procesadores y microcontroladores
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
 
PLC : Aplicaciones de Banda Ancha sobre la Red Eléctrica
PLC : Aplicaciones de Banda Ancha sobre la Red EléctricaPLC : Aplicaciones de Banda Ancha sobre la Red Eléctrica
PLC : Aplicaciones de Banda Ancha sobre la Red Eléctrica
 
Microcontroladores clase 1
Microcontroladores clase 1Microcontroladores clase 1
Microcontroladores clase 1
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
Microcontroladores clase 2
Microcontroladores clase 2Microcontroladores clase 2
Microcontroladores clase 2
 
Microcontroladores: Microcontroladores AVR
Microcontroladores: Microcontroladores AVRMicrocontroladores: Microcontroladores AVR
Microcontroladores: Microcontroladores AVR
 

Similar a Micro1

Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1Luis Zurita
 
U1 microcontroladores
U1 microcontroladoresU1 microcontroladores
U1 microcontroladoresSENA
 
Microcontroladores
MicrocontroladoresMicrocontroladores
MicrocontroladoresJuan Anaya
 
microcontroladores.ppt
microcontroladores.pptmicrocontroladores.ppt
microcontroladores.pptFreddyEspejo3
 
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docxS14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docxALEJANDRALUCEROCHAMB
 
Microcontroladores-Microprocesadores
Microcontroladores-MicroprocesadoresMicrocontroladores-Microprocesadores
Microcontroladores-MicroprocesadoresAlex Via Paz
 
Sesion 1 atmega8
Sesion 1 atmega8Sesion 1 atmega8
Sesion 1 atmega8davidepn2
 
Microcontrolador wiki
Microcontrolador wikiMicrocontrolador wiki
Microcontrolador wikiclides2006
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PICSohar Carr
 
Sesion 1
Sesion 1Sesion 1
Sesion 11130490
 
Microcontrolador pic
Microcontrolador picMicrocontrolador pic
Microcontrolador picleslydavila
 
Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacionUNACH
 
Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacionUNACH
 
Microcomputadoras
MicrocomputadorasMicrocomputadoras
MicrocomputadorasUNACH
 
Electronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACHElectronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACHUNACH
 

Similar a Micro1 (20)

Micro1.ppt
Micro1.pptMicro1.ppt
Micro1.ppt
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1
 
U1 microcontroladores
U1 microcontroladoresU1 microcontroladores
U1 microcontroladores
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
microcontroladores.ppt
microcontroladores.pptmicrocontroladores.ppt
microcontroladores.ppt
 
El microcontrolador PIC16F877
El microcontrolador PIC16F877El microcontrolador PIC16F877
El microcontrolador PIC16F877
 
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docxS14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
 
Microcontroladores-Microprocesadores
Microcontroladores-MicroprocesadoresMicrocontroladores-Microprocesadores
Microcontroladores-Microprocesadores
 
Libro basico pic
Libro basico picLibro basico pic
Libro basico pic
 
Sesion 1 atmega8
Sesion 1 atmega8Sesion 1 atmega8
Sesion 1 atmega8
 
Microcontrolador wiki
Microcontrolador wikiMicrocontrolador wiki
Microcontrolador wiki
 
MICROCONTROLADORES.ppt
MICROCONTROLADORES.pptMICROCONTROLADORES.ppt
MICROCONTROLADORES.ppt
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PIC
 
Sesion 1
Sesion 1Sesion 1
Sesion 1
 
Microcontrolador pic
Microcontrolador picMicrocontrolador pic
Microcontrolador pic
 
Introducción
IntroducciónIntroducción
Introducción
 
Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacion
 
Electronica aplicada primera presentacion
Electronica aplicada primera presentacionElectronica aplicada primera presentacion
Electronica aplicada primera presentacion
 
Microcomputadoras
MicrocomputadorasMicrocomputadoras
Microcomputadoras
 
Electronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACHElectronica Aplicada Microcomputadores- UNACH
Electronica Aplicada Microcomputadores- UNACH
 

Último

Plano de diseño de una Planta de tratamiento de aguas PTAP
Plano de diseño de una Planta de tratamiento de aguas  PTAPPlano de diseño de una Planta de tratamiento de aguas  PTAP
Plano de diseño de una Planta de tratamiento de aguas PTAPjuanrincon129309
 
Que es la arquitectura griega? Hecho por Andrea varela, arquitectura iv.pdf
Que es la arquitectura griega? Hecho por Andrea varela, arquitectura iv.pdfQue es la arquitectura griega? Hecho por Andrea varela, arquitectura iv.pdf
Que es la arquitectura griega? Hecho por Andrea varela, arquitectura iv.pdfandrea Varela
 
Sesión 02 Buenas practicas de manufactura.pptx
Sesión 02 Buenas practicas de manufactura.pptxSesión 02 Buenas practicas de manufactura.pptx
Sesión 02 Buenas practicas de manufactura.pptxMarcosAlvarezSalinas
 
La arquitectura griega y su legado en la historia
La arquitectura griega y su legado en la historiaLa arquitectura griega y su legado en la historia
La arquitectura griega y su legado en la historiaCamilaIsabelaRodrigu
 
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfLAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfBrbara57940
 
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfSlaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfslaimenbarakat
 
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura ModernaLe Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Modernasofpaolpz
 
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHEAPORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHEgonzalezdfidelibus
 
Gabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimientoGabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimientoGabrielaMarcano12
 
Calendario 2024 Santoral con fase lunar.pdf
Calendario 2024 Santoral con fase lunar.pdfCalendario 2024 Santoral con fase lunar.pdf
Calendario 2024 Santoral con fase lunar.pdfAsol7
 
arquitectura griega.pdf fghjdchjypiyez2d
arquitectura griega.pdf fghjdchjypiyez2darquitectura griega.pdf fghjdchjypiyez2d
arquitectura griega.pdf fghjdchjypiyez2dheribertaferrer
 
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der RoheArquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der Roheimariagsg
 
Arquitectura griega, obras antiguas. pdf
Arquitectura griega, obras antiguas. pdfArquitectura griega, obras antiguas. pdf
Arquitectura griega, obras antiguas. pdfduf110205
 
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...sayumi4
 
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)lemg25102006
 
Portafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B HuizingaPortafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B Huizingagbhuizinga2000
 
brasilia-150521136-lva1-app6891 (1).pptx
brasilia-150521136-lva1-app6891 (1).pptxbrasilia-150521136-lva1-app6891 (1).pptx
brasilia-150521136-lva1-app6891 (1).pptxErikRamirez67
 
Maquetas-modelos-prototipos-Mapa mental-.pdf
Maquetas-modelos-prototipos-Mapa mental-.pdfMaquetas-modelos-prototipos-Mapa mental-.pdf
Maquetas-modelos-prototipos-Mapa mental-.pdforianaandrade11
 
La Modernidad y Arquitectura Moderna - Rosibel Velásquez
La Modernidad y Arquitectura Moderna - Rosibel VelásquezLa Modernidad y Arquitectura Moderna - Rosibel Velásquez
La Modernidad y Arquitectura Moderna - Rosibel VelásquezRosibelVictoriaVelas
 
Arquitectura moderna nazareth bermudez PSM
Arquitectura moderna nazareth bermudez PSMArquitectura moderna nazareth bermudez PSM
Arquitectura moderna nazareth bermudez PSMNaza59
 

Último (20)

Plano de diseño de una Planta de tratamiento de aguas PTAP
Plano de diseño de una Planta de tratamiento de aguas  PTAPPlano de diseño de una Planta de tratamiento de aguas  PTAP
Plano de diseño de una Planta de tratamiento de aguas PTAP
 
Que es la arquitectura griega? Hecho por Andrea varela, arquitectura iv.pdf
Que es la arquitectura griega? Hecho por Andrea varela, arquitectura iv.pdfQue es la arquitectura griega? Hecho por Andrea varela, arquitectura iv.pdf
Que es la arquitectura griega? Hecho por Andrea varela, arquitectura iv.pdf
 
Sesión 02 Buenas practicas de manufactura.pptx
Sesión 02 Buenas practicas de manufactura.pptxSesión 02 Buenas practicas de manufactura.pptx
Sesión 02 Buenas practicas de manufactura.pptx
 
La arquitectura griega y su legado en la historia
La arquitectura griega y su legado en la historiaLa arquitectura griega y su legado en la historia
La arquitectura griega y su legado en la historia
 
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfLAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
 
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfSlaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
 
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura ModernaLe Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
 
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHEAPORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
 
Gabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimientoGabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimiento
 
Calendario 2024 Santoral con fase lunar.pdf
Calendario 2024 Santoral con fase lunar.pdfCalendario 2024 Santoral con fase lunar.pdf
Calendario 2024 Santoral con fase lunar.pdf
 
arquitectura griega.pdf fghjdchjypiyez2d
arquitectura griega.pdf fghjdchjypiyez2darquitectura griega.pdf fghjdchjypiyez2d
arquitectura griega.pdf fghjdchjypiyez2d
 
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der RoheArquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
 
Arquitectura griega, obras antiguas. pdf
Arquitectura griega, obras antiguas. pdfArquitectura griega, obras antiguas. pdf
Arquitectura griega, obras antiguas. pdf
 
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...
 
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
 
Portafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B HuizingaPortafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B Huizinga
 
brasilia-150521136-lva1-app6891 (1).pptx
brasilia-150521136-lva1-app6891 (1).pptxbrasilia-150521136-lva1-app6891 (1).pptx
brasilia-150521136-lva1-app6891 (1).pptx
 
Maquetas-modelos-prototipos-Mapa mental-.pdf
Maquetas-modelos-prototipos-Mapa mental-.pdfMaquetas-modelos-prototipos-Mapa mental-.pdf
Maquetas-modelos-prototipos-Mapa mental-.pdf
 
La Modernidad y Arquitectura Moderna - Rosibel Velásquez
La Modernidad y Arquitectura Moderna - Rosibel VelásquezLa Modernidad y Arquitectura Moderna - Rosibel Velásquez
La Modernidad y Arquitectura Moderna - Rosibel Velásquez
 
Arquitectura moderna nazareth bermudez PSM
Arquitectura moderna nazareth bermudez PSMArquitectura moderna nazareth bermudez PSM
Arquitectura moderna nazareth bermudez PSM
 

Micro1

  • 1. 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
  • 2. TEMA 1: INTRODUCCIÓN A LOS MICROCONTROLADORES Los 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. 16/01/2020 2ING. Luis Pacheco Cribillero
  • 3. 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 !!! 16/01/2020 3ING. Luis Pacheco Cribillero
  • 4. 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 16/01/2020 4ING. Luis Pacheco Cribillero
  • 5. ARQUITECTURA DE LOS MICROCONTROLADORES Hemos 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éricosPeriféricos Bus de Direcciones Bus de Datos Bus de Control 16/01/2020 5ING. Luis Pacheco Cribillero
  • 6. Microcontrolador y su arquitectura cerrada µC Periféricos Arquitectura tipo Von Neumann 8 CPU Memoria Instrucciones + Datos Bus común de direcciones Bus de datos e instrucciones 16/01/2020 6ING. Luis Pacheco Cribillero
  • 7. 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 Memoria de Instrucciones 10 Bus de Dirección de Instrucciones CPU Memoria de Datos Bus de Dirección de Datos Bus de Datos 14 9 8 16/01/2020 7ING. Luis Pacheco Cribillero
  • 8. ¿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: Proceso que se desea controlar Microcontrolador Microcontrolador Información Información 16/01/2020 8ING. Luis Pacheco Cribillero
  • 9. 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. 16/01/2020 9ING. Luis Pacheco Cribillero
  • 10. 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. 16/01/2020 10ING. Luis Pacheco Cribillero
  • 11. 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éricos Es 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) 16/01/2020 11ING. Luis Pacheco Cribillero
  • 12. 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 PIC16F87X 16/01/2020 12ING. Luis Pacheco Cribillero
  • 13. Características Valor Memoria 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 16/01/2020 13ING. Luis Pacheco Cribillero
  • 14. DIAGRAMA INTERNO DEL PIC 16F84 16/01/2020 14ING. Luis Pacheco Cribillero
  • 15. HARDWARE PIC16F84 16/01/2020 15ING. Luis Pacheco Cribillero
  • 16. DESCRIPCIÓN DE LOS PINES DEL PIC16F84 Pin Descripción/Función VDD Voltaje de alimentación. Se aplican 5 VDC VSS Tierra FOSC1/CLKIN Entrada 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 B RB0 tiene una función adicional: Provoca una interrupción externa asíncrona, cuando se configura para ésta. 16/01/2020 16ING. Luis Pacheco Cribillero
  • 17. 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. 16/01/2020 17ING. Luis Pacheco Cribillero
  • 18. 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 • 16/01/2020 18ING. Luis Pacheco Cribillero
  • 19. FRECUENCIA DE FUNCIONAMIENTO 16/01/2020 19ING. Luis Pacheco Cribillero
  • 20. 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 * TOSC 4. 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 16/01/2020 20ING. Luis Pacheco Cribillero
  • 21. 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 μs 5. 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 16/01/2020 21ING. Luis Pacheco Cribillero
  • 22. CIRCUITOS DE RESET 16/01/2020 22ING. Luis Pacheco Cribillero
  • 23. CIRCUITOS DE APOYO (INTRODUCEN DATOS AL MICROCONTROLADOR) Pulsadores e interruptores 16/01/2020 23ING. Luis Pacheco Cribillero
  • 24. Visualización Con Display CIRCUITOS DE APOYO (SACAN DATOS DEL MICROCONTROLADOR) 16/01/2020 24ING. Luis Pacheco Cribillero
  • 25. Con Relé Con optoacoplador CIRCUITOS DE APOYO (SACAN DATOS DEL MICROCONTROLADOR) 16/01/2020 25ING. Luis Pacheco Cribillero
  • 26. 16/01/2020 ING. Luis Pacheco Cribillero 26
  • 27. TEMA 2: REGISTROS, INSTRUCCIONES Y BANCOS DE MEMORIA
  • 28. 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 16/01/2020 28ING. Luis Pacheco Cribillero
  • 29. • 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 = 1 1 + 0 = 1 1 + 1 = 1 • Resta Binaria Aritmética: (sub) 0 – 0 = 0 1 – 0 = 1 1 – 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 16/01/2020 29ING. Luis Pacheco Cribillero
  • 30. SISTEMAS DE NUMERACIÓN Decimal 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 16/01/2020 30ING. Luis Pacheco Cribillero
  • 31. FORMATO DE SISTEMAS DE NUMERACIÓN ADMITIDOS POR EL MICROCONTROLADOR Tipo de Sistema Formato Decimal D’126’ .126 Binario B’10011011’ Hexadecimal H’AE’ AEH 0xAE Sigla Significado f (File) Registro. Puede ser cualquiera que el programador 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" 16/01/2020 31ING. Luis Pacheco Cribillero
  • 32. REGISTROS Y BANCOS 16/01/2020 32ING. Luis Pacheco Cribillero
  • 33. MEMORIA RAM DE REGISTROS 16/01/2020 33ING. Luis Pacheco Cribillero
  • 34. ACCEDIENDO A LOS BANCOS DE REGISTROS 16/01/2020 34ING. Luis Pacheco Cribillero
  • 35. DIRECTIVA EQU • La directiva EQU permite asignar a un registro o constante, un nombre asociado que facilita su entendimiento. • Ejemplo: DATOX EQU 20H DATOY EQU 21H STATUS EQU 03H F EQU 01H INCLUDE .INC El 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.INC 16/01/2020 35ING. Luis Pacheco Cribillero
  • 36. 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. 16/01/2020 36ING. Luis Pacheco Cribillero
  • 37. 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 utilizar include < 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 15H 1raC 2daC 3raC 4taC M equ 15H ; Define a la variable M en la posición 15H 3. 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 16/01/2020 37ING. Luis Pacheco Cribillero
  • 38. ESTRUCTURA DE UN PROGRAMA RESULTADO equ 0FH ;Declaro al registro ;RESULTADO ;En la posición 0FH de la RAM org 00H goto INICIO INICIO bsf STATUS,5 movlw FFH ; Configuramos los registros movwf TRISA ; asociados a los puertos A y B movlw 00H movwf TRISB 1ra Columna 2da Columna 3ra Columna 4ta Columna Etiquetas Instrucciones Operandos Comentarios 16/01/2020 38ING. Luis Pacheco Cribillero
  • 39. 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. 16/01/2020 39ING. Luis Pacheco Cribillero
  • 40. ¿Cuál se entiende mejor? List= 16F84 org 00H goto inicio inicio Bsf 03H,5 movlw 1FH movwf 85H movlw 00H movwf 86H bcf 03H,5 movlw b’11110000’ movwf 06H movf 05H,0 ExploPA Btfsc 05H,3 goto ExploPA goto INVPB INVPB comf 06H,1 End List P=16F84 ;Tipo de procesador STATUS equ 03H ; Zona de declaraciones PORTA equ 05H PORTB equ 06H TRISA equ 85H TRISB equ 86H W equ 00H F equ 01H org 00H goto INICIO INICIObsf 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,W ExploPABtfsc PORTA,3 ; RA3 es cero? goto ExploPA goto INVPB INVPB comf PORTB,1 ; Se activa RB1 End Sin recomendaciones Con recomendaciones 16/01/2020 40ING. Luis Pacheco Cribillero
  • 41. 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 16/01/2020 41ING. Luis Pacheco Cribillero
  • 42. INSTRUCCIONES ORIENTADAS A REGISTROS MNEMÓ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) Z 16/01/2020 42ING. Luis Pacheco Cribillero
  • 43. INSTRUCCIONES ORIENTADAS A BIT MNEMÓ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 CONTROL addlw 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) Z16/01/2020 43ING. Luis Pacheco Cribillero
  • 44. 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). 16/01/2020 44ING. Luis Pacheco Cribillero
  • 45. 16/01/2020 ING. Luis Pacheco Cribillero 45
  • 46. TEMA 3. HERRAMIENTAS DE PROGRAMACIÓN
  • 47. 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 16/01/2020 47ING. Luis Pacheco Cribillero
  • 48. 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,2 goto RutinaA goto RutinaB • BTFSC F,B (Pregunta si el bit B del Registro F vale cero) • (Bit Test File Skip Clear) – Ejemplo: btfsc suma,5 goto RutinaA goto RutinaB 16/01/2020 48ING. Luis Pacheco Cribillero
  • 49. STATUS 7 (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 C C. Bit de acarreo en el bit MSB Vale 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 cero Vale 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 3 1 -0 : Banco 2 0 - 1 : Banco 1 0 - 0 : Banco 0 TO. Time Out Se pone a 1 después de la conexión de la alimentación al microcontrolador, o al ejecutarse las instrucciones clrwdt ó sleep Se pone a 0 cuando el perro guardián se ha desbordado. PD. Power Down Se pone a 1 después de la conexión de la alimentación al microcontrolador o al ejecutarse la instrucción clrwdt Se pone a 0 mediante la ejecución de la instrucción sleep 16/01/2020 49ING. Luis Pacheco Cribillero
  • 50. 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→W addwf DatoB,0 ;DatoA+DatoB→W btfss STATUS,0 ; C=1? goto Noacarreo goto 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→W addwf DatoB,0 ;DatoA+DatoB→W btfss STATUS,1 ; DC=1? goto Noacarreo goto Acarreo 16/01/2020 50ING. Luis Pacheco Cribillero
  • 51. 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→W subwf DatoA,0 ;DatoA – DatoB →W btfss STATUS,2 goto NOIGUAL goto IGUAL • Opción B: Se aplica XOR entre ambos registros y: movf DatoB,0 ;DatoB→W xorwf DatoA,0 ;DatoA (XOR) DatoB →W btfss STATUS,2 goto NOIGUAL goto IGUAL 16/01/2020 51ING. Luis Pacheco Cribillero
  • 52. 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→W subwf DatoA,0 ;DatoA-DatoB→W EXPLORA btfss STATUS,2 ; Z=1? goto SIGUE goto IGUAL ;Si Z=1, A=B SIGUE btfsc STATUS,0 ;C=0? goto MAYOR ; Si C=1, A>B goto MENOR ; Si C=0, A<B 16/01/2020 52ING. Luis Pacheco Cribillero
  • 53. 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=0 Así de sencillo es seleccionar los bancos de registros. 16/01/2020 53ING. Luis Pacheco Cribillero
  • 54. CONFIGURANDO UN PUERTO La 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 16/01/2020 54ING. Luis Pacheco Cribillero
  • 55. CONFIGURANDO UN PUERTO La 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. 16/01/2020 55ING. Luis Pacheco Cribillero
  • 56. 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 entradas bcf STATUS,5 ; (3) Se regresa al banco 0 B) bsf STATUS, 5 ; (1) Selección de banco 1 movlw 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 1 movlw B’10010001 ; B’ESSESSSE’ movwf TRISB ; (2) Mixto E/S en un mismo puerto bcf STATUS,5 ; (3) Se regresa al banco 0 16/01/2020 56ING. Luis Pacheco Cribillero
  • 57. 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. 16/01/2020 57ING. Luis Pacheco Cribillero
  • 58. 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. 16/01/2020 58ING. Luis Pacheco Cribillero
  • 59. 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 16/01/2020 59ING. Luis Pacheco Cribillero
  • 60. 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→W movwf DatoA ; W→DatoA • Ejemplo 2. Escriba sobre el puerto B el siguiente valor: 49H movlw 49H ; 49H→W movwf PORTB ; W→PORTB • Ejemplo 3. Active el bit RB0, desactive el bit RB1 y active el bit RA4: bsf PORTB,0 ; RB0= 1 bcf PORTB,1 ; RB1= 0 bsf PORTA,4 ; RA4= 1 16/01/2020 60ING. Luis Pacheco Cribillero
  • 61. • 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,0 bsf PORTA,1 bcf PORTA,2 16/01/2020 61ING. Luis Pacheco Cribillero
  • 62. • 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,0 goto RutinA goto RutinB 16/01/2020 62ING. Luis Pacheco Cribillero
  • 63. TOMA DE DECISIONES • Una Tarea. La condición puede venir internamente como externamente. Condición X=1? Proceso A NO SI • Interna btfss STATUS,0 ; C=1? goto ProcesoA goto SIGUE • Externa btfss PORTA,0 ; RA0=1? goto ProcesoA goto SIGUE 16/01/2020 63ING. Luis Pacheco Cribillero
  • 64. TOMA DE DECISIONES • Dos Tareas. La condición puede venir internamente como externamente. • Interna btfss STATUS,0 ; C=1? goto ProcesoA goto ProcesoB • Externa btfss PORTA,0 ; RA0=1? goto ProcesoA goto ProcesoB Condición X=1? Proceso A NO SI Proceso B 16/01/2020 64ING. Luis Pacheco Cribillero
  • 65. • 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 16/01/2020 65ING. Luis Pacheco Cribillero
  • 66. TOMA DE DECISIONES. EJEMPLO • Externa btfss PORTA,0 ; RA0=1? goto ProcesoA goto ProcesoB ProcesoA bsf PORTB,0 goto SIGUE ProcesoB bcf PORTB,1 goto SIGUE SIGUE ------ ------ ------ RA0=1? Activar LED en RB0 NO SI Activar LED en RB1 16/01/2020 66ING. Luis Pacheco Cribillero
  • 67. TOMA DE DECISIONES. CERROJO Ó VALIDACIÓN • Se queda esperando que la condición ocurra. • Interna ESPERA btfss INTCON,0 goto ESPERA goto ProcesoA • Externa EXPLORA btfss PORTA,0 ; RA0=1? goto EXPLORA goto ProcesoA Condición X=1? Proceso A NO SI 16/01/2020 67ING. Luis Pacheco Cribillero
  • 68. TOMA DE DECISIONES • Multitareas. Dos condiciones permiten elegir entre uno a cuatro procesos distintos. Condición X=1? NO SI Proceso B Condición Y=1? NO SI Condición Y=1? Proceso D Proceso A Proceso C SI NO 16/01/2020 68ING. Luis Pacheco Cribillero
  • 69. ¿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 35H movwf SUMA btfss STATUS,2 goto ProcesoA goto Carga 35H→ SUMA Z=1? ProcesoA NO SI 16/01/2020 69ING. Luis Pacheco Cribillero
  • 70. 16/01/2020 ING. Luis Pacheco Cribillero 70
  • 72. SUBRUTINA MIENTRAS SE PRESIONA UNA TECLA TECLA PRESIONADA? NO SI DELAY 10 ms PROCESO A 16/01/2020 72ING. Luis Pacheco Cribillero
  • 73. 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 16/01/2020 73ING. Luis Pacheco Cribillero
  • 74. 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” 16/01/2020 74ING. Luis Pacheco Cribillero
  • 75. ENMASCARAMIENTO DatoA equ 12H DatoL equ 23H DatoH equ 4EH movlw 4CH ; Cargamos a w con 4CH movwf DatoA ; Transferimos 4CH a w movlw 0FH andwf 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 éste movlw F0H andwf DatoA,0 ; Neutralizamos el nibble menos ; significativo de DatoA movwf DatoH swapf DatoH ; Intercambiamos nibbles ; en DatoH para ordenarlo. 16/01/2020 75ING. Luis Pacheco Cribillero
  • 76. ENMASCARAMIENTO • También se puede neutralizar un bit o varios bits, selectivamente, según sea nuestra conveniencia. 16/01/2020 76ING. Luis Pacheco Cribillero
  • 77. 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 16/01/2020 77ING. Luis Pacheco Cribillero
  • 78. 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. 16/01/2020 78ING. Luis Pacheco Cribillero
  • 79. CALL K M (09H) N (1FH) O (2AH) L (05H) K (03H) P (2EH) Q (30H) R (3CH) T (40H) PILA (STACK) (PCL) 16/01/2020 79ING. Luis Pacheco Cribillero
  • 80. 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. 16/01/2020 80ING. Luis Pacheco Cribillero
  • 81. 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. 16/01/2020 81ING. Luis Pacheco Cribillero
  • 82. RUTINA DE CONVERSIÓN BINARIO A BCD (8 BITS) INICIO DATOX→W W→RESP U=0 D=0 C=0 RESP= RESP-100 C=0? incf C,1 incf D,1 MOSTRAR EN DISPLAY 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 16/01/2020 82ING. Luis Pacheco Cribillero
  • 83. RUTINA DE CONVERSIÓN DE BCD A BINARIO (8 BITS) INICIO DAT=0 UNI=X DEC=Y CEN=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 16/01/2020 83ING. Luis Pacheco Cribillero
  • 84. 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. 16/01/2020 84ING. Luis Pacheco Cribillero
  • 85. 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 16/01/2020 85ING. Luis Pacheco Cribillero
  • 86. VARIAS OPCIONES TECLA1 ACT? NO SI Proceso B TECLA2 ACT? NO SI TECLA2 ACT? Proceso D Proceso A Proceso C NO SI TECLA3 ACT? SINO 16/01/2020 86ING. Luis Pacheco Cribillero
  • 87. 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. 16/01/2020 87ING. Luis Pacheco Cribillero
  • 88. MULTIPLEXACIÓN DE DISPLAYS • Paso a paso: (Asumamos que tenemos tres displays) 1) Se activa display de UNIDAD 2) Se desactiva el resto de los displays 3) Se muestra el dato de UNIDAD 4) Se desactiva los displays de UNIDAD y CENTENA 5) Se activa el display de DECENA 6) Se muestra el dato de DECENA 7) Se desactivan los displays de UNIDAD y DECENA 8) Se activa el display de CENTENA 9) Se muestra el dato de CENTENA 16/01/2020 88ING. Luis Pacheco Cribillero
  • 89. MULTIPLEXACIÓN DE DISPLAYS MOSTRAR DIG1→W W→PORTA HABI DISP1 RETARDO 1ms HABI DISP2 DIG2→W W→PORTA RETARDO 1ms RETURN 16/01/2020 89ING. Luis Pacheco Cribillero
  • 90. ESTRUCTURA DE CONTADORES INICIO CONTADOR=0 MOSTRAR CONTADOR=0 MOSTRAR MOSTRAR INCF CONTADOR,1 CONTADOR =9? 1 1 NO SI CONTADOR ASCENDENTE SIMPLE 16/01/2020 90ING. Luis Pacheco Cribillero
  • 91. 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 16/01/2020 91ING. Luis Pacheco Cribillero
  • 92. ESTRUCTURA DE CONTADORES INICIO CONTADOR=0 MOSTRAR CONTADOR=9 MOSTRAR MOSTRAR DECF CONTADOR,1 CONTADOR =0? 1 1 NO SI CONTADOR DESCENDENTE SIMPLE 16/01/2020 92ING. Luis Pacheco Cribillero
  • 93. 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 16/01/2020 93ING. Luis Pacheco Cribillero
  • 94. DE LA IDEA AL PROGRAMA (PARTE I) 1. Delimitar / Diseñar el Hardware 2. Diagrama de Flujo para establecer el funcionamiento lógico 3. 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 16/01/2020 94ING. Luis Pacheco Cribillero
  • 95. 16/01/2020 ING. Luis Pacheco Cribillero 95
  • 97. 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 16/01/2020 97ING. Luis Pacheco Cribillero
  • 98. REGISTRO OPTION (Dirección 81H) • bit 7, RPBU : Resistencia Pull-up, Puerto B, habilita el bit 1: Desactivadas 0: Activadas • bit 6, INTEDG: Flanco activo para el control de interrupciones 1: Con flanco Ascendente 0: Con flanco Descendente • bit 5, TOCS: Fuente de Reloj para TMR0 1: Pulsos introducidos a través de RA4/T0CK1 (Contador) 0: Pulsos de reloj interno Fosc/4 (Temporizador) • bit 4, TOSE: Tipo de flanco en TOCK1 1: Incremento de TMR0 cada flanco descendente 0: Incremento de TMR0 cada flanco ascendente • bit 3, PSA: Bit de asignación del prescaler divisor de frecuencia 1: El divisor de frecuencia se asigna al WDT 0: El divisor de frecuencia se asigna al TMR0 • bit 2-0, PS2:PSO: Rango con el que actúa el divisor de frecuencia.16/01/2020 98ING. Luis Pacheco Cribillero
  • 99. 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 16/01/2020 99ING. Luis Pacheco Cribillero
  • 100. 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). 16/01/2020 100ING. Luis Pacheco Cribillero
  • 101. ¿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. 16/01/2020 101ING. Luis Pacheco Cribillero
  • 102. ¿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 FFH 00H 00H FFH Valor cargado En el TMR0 00H (28 – N10) 16/01/2020 102ING. Luis Pacheco Cribillero
  • 103. 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. 16/01/2020 103ING. Luis Pacheco Cribillero
  • 104. 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 16/01/2020 104ING. Luis Pacheco Cribillero
  • 105. 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 16/01/2020 105ING. Luis Pacheco Cribillero
  • 106. • 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. 16/01/2020 106ING. Luis Pacheco Cribillero
  • 107. 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 para conseguir 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 16/01/2020 107ING. Luis Pacheco Cribillero
  • 108. 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.200 992.4 1  ms segundo 16/01/2020 108ING. Luis Pacheco Cribillero
  • 109. 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. 16/01/2020 109ING. Luis Pacheco Cribillero
  • 110. 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. 16/01/2020 110ING. Luis Pacheco Cribillero
  • 111. LIST P=16F84A INCLUDE P16F84A.INC ORG 00H GOTO INICIO INICIO BSF STATUS,5 CLRF TRISA MOVLW B’11010110’ MOVWF OPTION_REG BCF STATUS,5 CLRF INTCON LEDON BSF PORTA,0 CALL RETARDO LEDOFF BCF PORTA,0 CALL RETARDO GOTO LEDON ;***RUTINA DE RETARDO*** RETARDO MOVLW D’139’ MOVWF TMR0 ESPERA BTFSS INTCON,TOIF GOTO ESPERA BCF INTCON,TOIF RETURN END Paso 3. Programa 16/01/2020 111ING. Luis Pacheco Cribillero
  • 112. Ejercicio. Realice un programa que permita encender y apagar un led cada un segundo. Mediante Timer0 y con un oscilador XT. Programa Principal Subrutina 16/01/2020 112ING. Luis Pacheco Cribillero
  • 113. 16/01/2020 113ING. Luis Pacheco Cribillero
  • 114. ¿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… 16/01/2020 114ING. Luis Pacheco Cribillero
  • 115. 16/01/2020 ING. Luis Pacheco Cribillero 115
  • 117. 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 programa goto INICIO ; salto a la rutina de programa principal org 04H ; Vector de interrupción goto 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. 16/01/2020 117ING. Luis Pacheco Cribillero
  • 118. DIAGRAMA DE FLUJO DURANTE UNA INTERRUPCIÓN Programa 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. 16/01/2020 118ING. Luis Pacheco Cribillero
  • 119. DIAGRAMA DE FLUJO RSI 16/01/2020 119ING. Luis Pacheco Cribillero
  • 120. CAUSAS DE INTERRUPCIÓN 1. Activación del pin RB0/INT 2. Desbordamiento del TMR0 3. Cambio de estado de una de los 4 pines de más peso (RB7:RB4) del puerto B 4. 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: 16/01/2020 120ING. Luis Pacheco Cribillero
  • 121. • GIE: (Global Interrupt Enable), Permiso Global de Interrupciones 1: Habilita todas las interrupciones, cuyos bits de permiso individuales también las permitan 0: Deshabilita todas las interrupciones • EEIE: (EEPROM Interrupt Enable), Permiso de Interrupción por fin de escritura en la EEPROM 1: Habilita la interrupción cuando termina la escritura de la EEPROM de datos 0: Deshabilita esta interrupción • TOIE: (TMR0 Overflow Interrupt Enable), Permiso de interrupción por desborde del TMR0 1: Habilita una interrupción por desborde del TMR0 0: Deshabilita esta interrupción • INTE: (Interrupt Enable RB0/INT), Permiso de interrupción por activación del pin RB0/INT 1: Habilita la interrupción al activarse RB0/INT 0: Deshabilita esta interrupción INTCON 16/01/2020 121ING. Luis Pacheco Cribillero
  • 122. INTCON • RBIE: (RB Port Change Interrupt Enable), Permiso de interrupción por cambio de estado en RB7:RB4 1: Habilita esta interrupción 0: Deshabilita esta interrupción • TOIF: (TMR0 Overflow Interrupt Flag), Señalizador de desborde del TMR0 1: Ha ocurrido un desborde del TMR0 0: No se ha desbordado el TMR0 • INTF: (RB0/INT Interrupt Flag), Señalizador de activación del pin RB0/INT 1: Se ha activado RB0/INT 0: No se ha activado RB0/INT • RBIF: (RB Port Change Interrupt Flag), Señalizador de cambio de estado en RB7:RB4 1: Pasa a 1 cuando cambia el estado de alguna de estas 4 líneas 0: No ha cambiado el estado de RB7: RB4 16/01/2020 122ING. Luis Pacheco Cribillero
  • 123. 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. 16/01/2020 123ING. Luis Pacheco Cribillero
  • 124. 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_TEMP RUT_INT ;Aquí estará la rutina de servicio de interrupción ; POP swapf STATUS_TEMP,0 ; Intercambiamos nibbles en el registro ; STATUS_TEMP movf STATUS ; Movemos w al registro STATUS, retornando el ; valor original swapf W_TEMP,1 ; Intercambiamos nibbles y lo mantenemos en ; este registro swapf 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 16/01/2020 124ING. Luis Pacheco Cribillero
  • 125. 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 16/01/2020 125ING. Luis Pacheco Cribillero
  • 126. ¿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... 16/01/2020 126ING. Luis Pacheco Cribillero