Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
CIRCUITOS DIGITALES II
MICROCONTROLADORES
DOCENTE: ING. Luis Pacheco Cribillero
2012- I
TEMA 1:
13 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.
ING. Luis Pacheco Cribillero 09/06/2020
INTRODUCCIÓN A LOS MICROCONTROLADORES
14
Lógica de
Control
ALU
Memoria Memoria
de Datos de Programa
Periféricos
Bus de Direcciones
Bus de Datos
µP
Bus de Control
Periféricos Periféricos
17
µC
Periféricos
Bus común de
direcciones
Memoria
CPU Instrucciones
8
+
Datos
Bus de datos e
instrucciones
Proceso
Microcontrolador
que se desea controlar
Microcontrolador
Información
ING. Luis Pacheco Cribillero 09/06/2020
MICROCONTROLADORES PIC DE MICROCHIP
20
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.
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.
ING. Luis Pacheco Cribillero 09/06/2020
CARACTERÍSTICAS GENERALES DE LOS
MICROCONTROLADORES
22
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)
ING. Luis Pacheco Cribillero 09/06/2020
23 CARACTERÍSTICAS GENERALES DE LOS
MICROCONTROLADORES
27 Pin Descripción/Función
VDD Voltaje de alimentación. Se aplican 5 VDC
VSS Tierra
Entrada del circuito oscilador externo, que proporciona la
FOSC1/CLKIN
frecuencia de trabajo
FOSC2/CLKOUT Salida auxiliar del circuito oscilador
Se activa con nivel bajo, proporcionando una
reinicialización del sistema (reset). Cumple con una
MCLR/VPP
función adicional (VPP) que recibe la alimentación del
voltaje de programación, al momento de grabar al PIC.
5 líneas de Entradas/Salidas digitales del Puerto A.
RA4 tiene una función adicional: Entrada de un reloj
RA4:RA0
externo asíncrono ó síncrono, cuando el
microcontrolador trabaja como contador de eventos.
8 líneas de Entradas/Salidas digitales del Puerto B
ING. Luis Pacheco Cribillero 09/06/2020
RB7:RB0 RB0 tiene una función adicional: Provoca una interrupción
TIPOS DE OSCILADORES
HS: (High Speed Crystall Resonador): Alta velocidad de 20 MHz a 4 MHz.
28
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.
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
Con Display
36
Con Relé
Con optoacoplador
REGISTROS, INSTRUCCIONES Y
BANCOS DE MEMORIA
ESTRUCTURA DE DATOS
38 BIT: Unidad mínima de
x
información
x x x x x x x x
BYTE: Grupo de 8 bits
15 F 1111
FORMATO DE SISTEMAS DE NUMERACIÓN
ADMITIDOS POR EL MICROCONTROLADOR
41
Tipo de Sistema Formato Sigla Significado
Registro. Puede ser
Decimal D’126’ cualquiera que el
.126 f (File)
programador desee dentro
del rango permitido.
Binario B’10011011’
k Constante. Valor fijo.
44
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
ING. Luis Pacheco Cribillero 09/06/2020
ESTRUCTURA DE UN PROGRAMA
46
Encabezado
En general un programa está
estructurado en tres grandes partes:
Configuración, a) Encabezado: Define el tipo de PIC con
Declaración de que se está trabajando, Bloque de
Registros, declaraciones de variables y
Datos, constantes,
Constantes.
b) Configuración de registros especiales:
Registro OPTION, INTCON, TMR0,
org
puertos A y B, EECON, STATUS.
Cuerpo del b) Cuerpo del programa: Aquí están
Programa contenidas todas las instrucciones
relacionadas a la ejecución de un
end programa bajo un diseño individual,
realizado por el programador.
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
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
ING. Luis Pacheco Cribillero 09/06/2020
LEER Y/O ESCRIBIR UN VALOR EN UN PUERTO
Una Tarea.
La condición puede venir
Condición NO internamente como
Proceso A
X=1? externamente.
SI
• Interna • Externa
btfss STATUS,0 ; C=1? btfss PORTA,0 ; RA0=1?
goto ProcesoA goto ProcesoA
goto SIGUE goto SIGUE
Dos Tareas.
NO La condición puede venir
Condición internamente como
Proceso A
X=1? externamente.
SI
Proceso B
• Interna • Externa
btfss STATUS,0 ; C=1? btfss PORTA,0 ; RA0=1?
goto ProcesoA goto ProcesoA
goto ProcesoB goto ProcesoB
ING. Luis Pacheco Cribillero 09/06/2020
TOMA DE DECISIONES. EJEMPLO
74 Dado el siguiente circuito, Active el LED
ubicado en RB0 si RA0, vale 0 y en caso
contrario, active el LED ubicado en RB1.
NO Activar LED en
RA0=1?
RB0
• Externa
SI btfss PORTA,0 ; RA0=1?
goto ProcesoA
goto ProcesoB
Activar LED en ProcesoA bsf PORTB,0
RB1 goto SIGUE
ProcesoB bcf PORTB,1
goto SIGUE
SIGUE ------
------
------
ING. Luis Pacheco Cribillero 09/06/2020
76 TOMA DE DECISIONES. CERROJO Ó
VALIDACIÓN
Se queda esperando que
la condición ocurra.
Condición NO
X=1?
• Interna
ESPERA btfss INTCON,0
goto ESPERA
SI goto ProcesoA
Proceso A
• Externa
EXPLORA btfss PORTA,0 ; RA0=1?
goto EXPLORA
goto ProcesoA
Condición NO Condición NO
Proceso A
X=1? Y=1?
SI SI
Proceso B
NO
Condición
Proceso C
Y=1? Multitareas.
Dos condiciones permiten
elegir entre uno a cuatro
SI procesos distintos.
Proceso D
ING. Luis Pacheco Cribillero 09/06/2020
¿Cómo pasar del diagrama de flujo al programa?
78 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.
SI btfss STATUS,2
Z=1? goto ProcesoA
goto Carga
NO
ProcesoA
ING. Luis Pacheco Cribillero 09/06/2020
TEMA 3. RUTINAS
INTERMEDIAS
SUBRUTINA
80 MIENTRAS SE
PRESIONA
UNA TECLA TECLA NO
PRESIONADA?
SI
DELAY 10 ms
PROCESO A
Retardo 10 ms
Tecla NO
Soltada?
SI
Retardo 10 ms
Proceso A
INSTRUCC A PROX
27H
INSTRUCC B INSTRUCC 1
28H
INSTRUCC C INSTRUCC 2
29H
CALL PROX RETURN ó RETLW K
2AH
INSTRUCC D
2BH SUBRUTINA
FIN
PROGRAMA PRINCIPAL
T (40H)
U=0
D=0 SI SI
C=0 C=0? C=0? MOSTRAR EN
DISPLAY
RESP= RESP-100
NO NO
FIN
incf D,1 incf U,1
SI
C=0?
NO
incf C,1
ING. Luis Pacheco Cribillero 09/06/2020
RUTINA DE CONVERSIÓN DE
BCD A BINARIO (8 BITS)
91
INICIO
DEC=DEC-1 UNI=UNI-1
UNI=X
DEC=Y
CEN=Z
SI SI
C=0? C=0? RETURN
DAT=0
NO NO
CEN=CEN-1
DAT=DAT+10 DAT=DAT+1
SI
C=0?
NO
DAT=DAT+100
ING. Luis Pacheco Cribillero 09/06/2020
TABLAS
92
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.
94
TECLA1 NO TECLA2 NO
Proceso A
ACT? ACT?
SI SI
Proceso B
TECLA2 SI
Proceso C
ACT?
NO
NO TECLA3 SI
Proceso D
ACT?
MOSTRAR
DIG1→W
W→PORTA
HABI DISP1
RETARDO 1ms
DIG2→W
W→PORTA
HABI DISP2
RETARDO 1ms
RETURN
ING. Luis Pacheco Cribillero 09/06/2020
ESTRUCTURA DE CONTADORES
98 INICIO
CONTADOR=0
MOSTRAR
MOSTRAR 1
NO
INCF CONTADOR,1 CONTADOR
=9?
SI
CONTADOR=0
1 MOSTRAR
MOSTRAR
1
NO
RA0=1?
SI
MOSTRAR
RETARDO
NO MOSTRAR
INCF DEC,1
DEC=9? NO
INCF UNI,1 UNI=9?
SI
CONTADOR=0
MOSTRAR
MOSTRAR 1
NO
DECF CONTADOR,1 CONTADOR
=0?
SI
CONTADOR=9
1 MOSTRAR
101 UNI=0
MOSTRAR
1
NO
RA0=1?
SI
MOSTRAR
RETARDO
NO MOSTRAR
DECF DEC,1
DEC=0? NO
DECF UNI,1 UNI=0?
SI
00H
(28 – N10)
00H
Si el TMR0 se carga con un valor, FFH
éste comenzará a contar desde el
valor cargado hasta que se
desborda (cuando pasa a 00H) Valor cargado
En el TMR0
00H
ING. Luis Pacheco Cribillero 09/06/2020
CÁLCULOS CON EL TMR0
110
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
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.
117
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.
ING. Luis Pacheco Cribillero 09/06/2020
LIST P=16F84A
INCLUDE P16F84A.INC
ORG 00H
118 GOTO INICIO
INICIO BSF STATUS,5
CLRF TRISA
Paso 3. Programa 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
119
Programa Principal
ING. Luis Pacheco Cribillero 09/06/2020
120
DIAGRAMA DE
FLUJO RSI
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:
Programa Principal
ING. Luis Pacheco Cribillero
RSI 09/06/2020
¿CUANDO UTILIZAR UNA
132
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...
ING. Luis Pacheco Cribillero 09/06/2020