Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CIRCUITOS DIGITALES II
MICROCONTROLADORES
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.
24/05/21 ING. Luis Pacheco Cribillero 2
INTRODUCCIÓN A LOS MICROCONTROLADORES
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
µ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
24/05/21 ING. Luis Pacheco Cribillero 8
MICROCONTROLADORES PIC DE MICROCHIP
• 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.
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
Con Relé
Con optoacoplador
REGISTROS, INSTRUCCIONES Y
BANCOS DE MEMORIA
ESTRUCTURA DE DATOS
• BIT: Unidad mínima de
información x
x x x x x x x x
• BYTE: Grupo de 8 bits
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
24/05/21 ING. Luis Pacheco Cribillero 35
ESTRUCTURA DE UN PROGRAMA
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.
b) Cuerpo del programa: Aquí están
Cuerpo del contenidas todas las instrucciones
Programa relacionadas a la ejecución de un
programa bajo un diseño individual,
end realizado por el programador.
• Una Tarea.
La condición puede venir
Condición NO internamente como
Proceso A externamente.
X=1?
SI
• Interna • Externa
btfss STATUS,0 ; C=1? btfss PORTA,0 ; RA0=1?
goto ProcesoA goto ProcesoA
goto SIGUE goto SIGUE
• Dos Tareas.
La condición puede venir
Condición NO internamente como
Proceso A externamente.
X=1?
SI
Proceso B
• Interna • Externa
btfss STATUS,0 ; C=1? btfss PORTA,0 ; RA0=1?
goto ProcesoA goto ProcesoA
goto ProcesoB goto ProcesoB
24/05/21 ING. Luis Pacheco Cribillero 64
TOMA DE DECISIONES. EJEMPLO
• 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 ------
------
------
24/05/21 ING. Luis Pacheco Cribillero 66
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
procesos distintos.
SI
Proceso D
SI btfss STATUS,2
Z=1? goto ProcesoA
goto Carga
NO
ProcesoA
SI
DELAY 10 ms
PROCESO A
Tecla NO
Soltada?
SI
Retardo 10 ms
Proceso A
PCL INICIO
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
24/05/21 ING. Luis Pacheco Cribillero 82
RUTINA DE CONVERSIÓN DE
BCD A BINARIO (8 BITS)
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
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
CONTADOR=0
MOSTRAR
MOSTRAR 1
NO
INCF CONTADOR,1 CONTADOR
=9?
SI
CONTADOR=0
1 MOSTRAR
COMPLEJO
DEC=0
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
UNI=0
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
24/05/21 ING. Luis Pacheco Cribillero 102
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
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.
Programa Principal
24/05/21 ING. Luis Pacheco Cribillero 112
24/05/21 ING. Luis Pacheco Cribillero 113
¿OTRA FORMA DE HACER LOS CÁLCULOS?
Instrucción 2 Instrucción 1
Instrucción 3 Instrucción 2
… …
…
…
…
…
RETFIE
Instrucción 24
Instrucción 25
… Nota: Una Rutina de Servicio
de Interrupción puede ser
…
igual de extensa e incluso
Instrucción N más que el mismo programa
principal.
Fin de programa
24/05/21 ING. Luis Pacheco Cribillero 118
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
RSI
24/05/21 ING. Luis Pacheco Cribillero 125
¿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...
24/05/21 ING. Luis Pacheco Cribillero 126