SlideShare una empresa de Scribd logo
1 de 75
1
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Introducción
2
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Microcontroladores
 Son circuitos integrados que incorporan todos los
bloques funcionales de un Sistema Microprocesador
en un único encapsulado.
 Necesitan una tensión continua (5V, 3.3V, 2.5V,
1.5V...) y un oscilador para funcionar.
 Interpretan (decodifican) combinaciones de bits
(instrucciones) y generan señales digitales internas
y/o externas.
 Ejecutan de manera continua una secuencia de
instrucciones (programa) que permite controlar un
sistema o subsistema electrónico.
3
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Sistema mínimo microprocesador
El sistema mínimo está basado en la estructura de von Newman.
Sus bloques básicos son los siguientes:
El sistema mínimo está basado en la estructura de von Newman.
Sus bloques básicos son los siguientes:
•CPU, Central Process Unit o
Unidad Central de Proceso.
Formada por dos bloques:
Unidad de Control y Unidad de
Proceso.
•Memoria, donde residen las
instrucciones del programa y
sus datos.
•Módulos E/S, elementos
encargados de recibir y entregar
información al exterior.
CPU MEMORIA UDS. E / S
Reloj
Bus de Direcciones
Bus de Datos
Bus de Control
Los tres módulos están conectados entre sí por medio de los Buses de
Comunicación. Cada bus está formado por un conjunto de conductores por
los cuales se transmite la información digital.
4
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Microprocesadores y microcontroladores
Sistema Microprocesador (varios C.I. en una PCB)
Microcontrolador (único C.I.)
5
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Tarjeta de Sistema
Microprocesador para
control
C.I. Microcontrolador
Microprocesadores y microcontroladores
6
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Sistemas empotrados
• Sistemas que incorporan microcontroladores (o microprocesadores)
para una tarea específica pero que no son “programables”
directamente por el usuario
• Los microcontroladores de 8 bits dominan en la mayoría de las
aplicaciones
• El microcontrolador es el núcleo del sistema electrónico versátil de
bajo coste y reducido tamaño que es capaz de detectar las señales de
entrada y generar las salidas de un equipo, sistema o instrumento
• Por su reducido tamaño y coste permiten la fácil implantación de
sistemas de“inteligencia” distribuida a lo largo de sistemas más
complejos
• Los microcontroladores son los semiconductores más abundantes
de todos en la actualidad.
7
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Sistemas empotrados
Evolución Microprocesadores:
Computadores
75 Millones Microprocesadores/año
Evolución Microcontroladores:
Sistemas Empotrados
2500 MillonesMicrocontroladores/año
8
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Microcontroladores PIC
•Arquitectura Harvard: buses internos separados para memoria de
datos (8 bits) y de programa (12, 14 ó 16 bits depende de la familia)
•Microprocesador RISC: juego de instrucciones reducido
•Estructura pipe-line: durante la ejecución de una instrucción, se está
accediendo a la memoria de programa para traer la siguiente
instrucción a ejecutar. (salvo un salto o llamada a subpr.)
•Todas las instrucciones ocupan una posición de memoria de programa
•Todas las instrucciones se ejecutan en un ciclo de instrucción = 4
ciclos de reloj (salvo las instrucciones de salto)
•Ortogonalidad de los registros: se opera entre el registro de trabajo W
y cualquier otro registro, el resultado puede almacenarse en W
9
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
ARQUITECTURA HARVARD
• El tiempo de acceso se mejora respecto a la arquitectura
von Neumann donde programa y datos se traen a la CPU
usando el mismo bus.
• La arquitectura Harvard tiene memoria de programa y
memoria de datos separadas y se accede a ellas a través de
buses separados.
10
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Microcontroladores PIC.
Características
• Eficiencia del código: permiten gran compactación de programas
• Rapidez de ejecución: a f de 20MHz  5 millones de instr./seg.
• Seguridad en acceso: Separa memoria de datos y de programa
• Juego reducido de instrucciones
• Compatibilidad de pines y código entre dispositivos (familias)
• Gran variedad de versiones en distintos encapsulados (8 - 84 pines)
• Herramientas de desarrollo software y hardware abundantes y de bajo
coste
11
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Familias de PIC
Familia PIC16C5X
•Encapsulados de 14, 18, 20 y 28 pines
•Instrucciones de 12 bits
•Juego de 33 instrucciones
•Es la familia base de partida de los PIC
Familia PIC16CXXX/16FXXX
•Encapsulados desde 18 hasta 68 pines (DIP, SSOP, PLCC,
QFP)
•Instrucciones de 14 bits en Memoria de Programa
•Juego de 35 instrucciones
•Gran variedad de módulos integrados
12
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
• Puertos de Entrada/Salida
• Puerto Esclavo Paralelo (PSP)
• Temporizadores/contadores (TMR0, TMR1, TMR2)
• Captura / Comparación / PWM (CCP1 y CCP2)
• Conversión Analógica / Digital (A/D)
• Transmisor Receptor Asíncrono Síncrono Universal (USART)
• Puerto Serie Síncrono (BSSP ó MSSP)
• Memoria EEPROM de datos
• FLASH EEPROM de programa modificable desde el código
Familia
PIC16CXXX/16FXXX
13
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Familia
PIC16CXXX/16FXXX
Microcontrolador
PIC16F877
(gama media)
Microcontrolador
PIC16F877
(gama media)
8K x 14
368 x 8
256 x 8
PuertosdeE/S
Puerto Esclavo
Paralelo
Temporizadores
Conversor A/D
USART
Módulos CCP SSP
14
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
PIC. Proceso de diseño
Diseño software: el micro sin un programa cargado en su memoria no
hace nada, cuando el micro esté grabado con un programa eficiente
el conjunto empezará a funcionar
• Diseño del programa y escritura del código fuente en
ensamblador o en C
• Pruebas, verificación y modificación del código: Simulación
del programa (puro software) o emulación dentro del circuito de
aplicación (software y hardware)
• Grabación del código máquina en la memoria del
microcontrolador
Edición del código,
1ª depuración y
simulación
Emulación o
Depuración sobre
PCB
Grabación del micro
15
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
PIC 16F877
ORGANIZACIÓN DE LA
MEMORIA
Copyright ATE
16
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Organización de la memoria
El PIC16F877 dispone de tres tipos de memoria:
• Memoria de programa
Consta de 8192 posiciones (8Kwords) y contiene el programa con las
instrucciones que gobiernan la aplicación. Es no volátil.
• Memoria de datos RAM
Guarda las variables y datos. Está formada por registros de 8 bits. Es
volátil.
• Memoria EEPROM de datos
Es una pequeña área de memoria de datos de lectura y escritura no
volátil que permite garantizar que determinada información estará
siempre disponible al reiniciar el programa.
17
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Memoria
156 X 8
EEPRO
M
Memoria de programa
Memoria de datos RAM
Memoria EEPROM
18
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Memoria de programa
• La información contenida en esta memoria se graba
previamente mediante un equipo (programador o
grabador).
• Almacena todas las instrucciones del programa en
ejecución, y queda grabada de forma permanente.
• En el PIC16F877 esta memoria es no volátil del tipo
ROM Flash y admite unas 1000 grabaciones.
• Está organizada en palabras de 14 bits cada una.
• Todas las instrucciones ocupan una posición de
memoria de programa
• A la posición 0 se accede tras un RESET y a la
posición 4 tras una interrupción.
19
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Memoria de programa. Contador
de programa, PC.
 Para acceder a la memoria de programa de los
PIC16FXXX se utiliza un registro de 13 bits que actúa
como puntero de la instrucción que se debe ejecutar en
el siguiente ciclo de instrucción.
 Este registro es el Contador de Programa PC que
permite direccionar 8K posiciones de memoria de 14
bits (recordar que cada posición corresponde a una
instrucción) por tanto, el PC es capaz de direccionar 8K
instrucciones.
 Resulta fácil saber si un PIC tiene memoria de
programa suficiente para una determinada aplicación.
20
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Memoria de programa.
Contador de programa, PC.
Líneas de direcciones (direccionamiento)
Líneas de
datos
de la memoria
de programa
ACCESO A LA MEMORIA DE
PROGRAMA
ACCESO A LA MEMORIA DE
PROGRAMA
21
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
• Los 8K de memoria de programa
disponible están divididos en 4 páginas de
2K cada una (0h–7FFh, 800h-FFFh, 1000h-
17FFh y 1800h-1FFFh). Esto se debe a
que las instrucciones de salto y llamada a
subprograma permiten cargar sólo 11 bits
en el PC (desplazamiento en 211
= 2K)
•Si se están ejecutando instrucciones
secuencialmente, el contador de programa
pasará de una página a otra.
•Para saltar entre páginas de la memoria
de programa los 2 bits más altos del PC
deben modificarse. Esto se realiza
escribiendo en el registro PCLATH (es un
registro situado en la memoria de datos).
Memoria de programa.
Contador de programa, PC.
22
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
CONTADOR DE PROGRAMA
 El contador de programa (PC) es un
registro de 13 bits que se descompone en 2
registros: PCH y PCL
 El byte bajo PC<0:7> se denomina PCL y
está disponible en la memoria de datos. Es
un registro que se puede leer y escribir
directamente desde el programa.
 El “cuasibyte” alto PC<12:8> se denomina
PCH y no está disponible en la memoria de
datos. Este registro no se puede leer ni
escribir directamente. La escritura debe
realizarse usando como registro intermedio
el registro PCLATH que sí es un registro de
8 bits accesible en la memoria de datos del
microcontrolador. El contenido del registro
PCLATH se transfiere a la parte alta del PC
en el momento en que se escribe en el
registro PCL. También aporta dos bits al
PC en los saltos o llamadas a
subprogramas.
Memoria de programa.
Contador de programa, PC.
23
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
La pila
• La pila permite almacenar las direcciones a donde debe
retornar el programa cuando se finaliza una llamada a una subrutina
o cuando se finaliza la ejecución de una rutina de interrupción.
• Los microcontroladores de la familia PIC16 tienen una pila de 8
niveles x 13 bits, que por tanto permite como máximo 8 llamadas a
subrutinas (CALLs) o ejecuciones de rutinas de interrupción (salto a
0004h).
• El espacio de memoria para la pila no forma parte de la memoria de
programa ni de la memoria de datos que tiene el microcontrolador.
Es un espacio de memoria totalmente independiente. El puntero de
pila no se puede leer ni escribir. La pila es gestionada por el
hardware.
24
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Memoria RAM de datos
• La memoria de datos está distribuida en 4 posibles bancos de 128
bytes cada uno. Por tanto, la máxima cantidad de memoria disponible
en los microcontroladores PIC16 es de 512 bytes. No obstante, no
están implementadas todas las posiciones de memoria en todos los
bancos.
• Por ejemplo, un PIC16F876 sólo tiene implementadas 368 posiciones de
memoria de datos.
• A cada posición de memoria se le denomina
registro.
• La memoria de datos se organiza en bancos
de 128 bytes porque cuando se indica una
dirección de operando fuente, sólo se pueden
incluir 7 bits en la codificación: 27
=128 bytes
25
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
• Sirve para almacenar todos los datos que se manejan en un programa.
• Se distinguen dos tipos de registro:
 Registros de funciones especiales: Son los primeros registros. Cada
uno de ellos cumple un propósito especial en el control del PIC.
 Registros de propósito general: Se pueden usar para guardar datos
temporales. El PIC16F877 dispone de 368.
• Cuenta con cuatro bancos de memoria: Bancos 0, 1, 2 y 3.
 Los registros de funciones especiales aparecen de la dirección 00h a
1Fh del Banco 0, de 80h a 9Fh del Banco 1, de 100h a 10F en el Banco 2
y de 180h a 18Fh del Banco 3. Algunos son accesibles desde dos o más
bancos.
 Los registros de propósito general ocupan 368 posiciones de memoria.
Memoria RAM de
datos
26
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
La memoria de datosSTATUS STATUS STATUSSTATUS
PORTB PORTB
27
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
MODOS DE DIRECCIONAMIENTO
 La memoria de datos está distribuida en 4 posibles bancos de 128 bytes
cada uno.
 Existen 2 modos de direccionamiento para acceder a cualquiera de las
posiciones de la memoria de datos:
Direccionamiento directo
Direccionamiento indirecto
 Direccionamiento directo: La posición de memoria con la que se trabaja
viene directamente definida en el código de la instrucción.
 Direccionamiento indirecto: La posición de memoria con la que se trabaja
viene definida por el contenido del registro FSR (Posición 04h, 84h, 104h
o 184h), es decir, el registro FSR actúa como puntero de la posición de
memoria con la que se pretende operar.
Memoria de datos
28
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Memoria de datos: Direccionamiento.
BANCO RP1:RP0
0 00
1 01
2 10
3 11
DIRECCIONAMIENT
O DIRECTO
29
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Direccionamiento indirecto
1) SE LEE EL REGISTRO CONTENIDO EN EL CODIGO DE LA INSTRUCCIÓN.
2) SI EL REGISTRO ES DISTINTO DEL CORRESPONDIENTE A INDF (00h,80h,100h ó
180h) LA INSTRUCCIÓN SE EJECUTA SOBRE EL REGISTRO INDICADO EN LA
INSTRUCCIÓN COMPLEMENTADO CON LOS BITS RP1:RP0 DEL REGISTRO
STATUS (DIRECCIONAMIENTO DIRECTO)
3) SI EL REGISTRO CORRESPONDE A LA POSICION DE INDF (00h,80h,100h ó 180h),
LA INSTRUCCIÓN SE EJECUTA SOBRE EL REGISTRO INDICADO EN EL
REGISTRO FSR COMPLEMENTADO CON EL BIT IRP DEL REGISTRO STATUS
BCF STATUS, IRP ; dir. Indirecto, bancos 0/1
MOVLW 0x20 ; Inicializa puntero a RAM
MOVWF FSR ;
NEXT CLRF INDF ; limpia registro INDF
INCF FSR,F ; Inc puntero
BTFSS FSR,4 ; Todo limpio?
GOTO NEXT ; NO, limpia siguiente
CONTINUE ;
: ; SI, continua
Sencillo ejemplo de
direccionamiento indirecto
donde se limpian las
posiciones de memoria de
datos comprendidas entre
la posición 20h y la 2Fh
(ambas incluidas)
30
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Registro de estado
31
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Registro option
32
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Registro intcon
33
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
PIE1
34
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
PIR
1
35
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
CARACTERÍSTICAS
ESPECIALES DE LOS PIC
36
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Estas características suelen ser los aspectos que más distinguen la CPU
de estos dispositivos con otros microprocesadores.
• Oscilador: más simple y con menos elementos adicionales necesarios
• Resets y Watchdog: seguridad en el arranque, reinicio y “autovigilancia”
• Sleep: modo de bajo consumo para aplicaciones con baterías
• Interrupciones: lógica de máscaras y eventos y posición común del PTI
• Protección de código: para evitar la “copia” de programas grabados
• ICSP e ICSP LVP: (In-Circuit Serial Programming) programación en serie
ya en la tarjeta de la aplicación y a baja tensión (Low Voltage Program)
• Modo depuración ICD: (In-Circuit Debugger) modo especial que permite
depurar el código pero ya con el MCU conectado con el resto del circuito.
CARACTERÍSTICAS ESPECIALES DE
LOS PIC
37
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
• Todos los microcontroladores PIC tienen una posición de memoria
denominada palabra de configuración en la que cada bit tiene un
significado y configura las características especiales.
• Los bits de configuración están fuera del espacio de memoria de
programa de usuario por lo que sólo son accesibles durante la
programación del micro y no durante la ejecución de un
programa.
Las herramientas que ofrece MICROCHIP nos dan dos alternativas
para fijar los valores de estos bits de configuración: a través del
menú Configure > Configuration_Bits del entorno MPLAB ó
mediante la inclusión de una directiva de configuración en el
código del programa.
PALABRA DE
CONFIGURACIÓN
38
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
OSCILADO
R Los PIC16F87X pueden funcionar con 4 modos distintos
de oscilador. El usuario puede programar dos bits de
configuración para seleccionar uno de
estos 4 modos:
 LP Low Power Crystal (cristal de cuarzo ó resonador
cerámico hasta 200KHz)
 XT Crystal/Resonator (cristal de cuarzo ó resonador
cerámico hasta 4MHz)
 HS High Speed Crystal/Resonator (cristal de cuarzo
entre 4MHz y 20MHz)
 RC Resistor/Capacitor (red RC externa hasta 4MHz)
39
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
CICLO DE
INSTRUCCIÓN Un ciclo de instrucción es el tiempo que se tarda en ejecutar
una instrucción (salvo saltos) en el microcontrolador. En los
PIC16, un ciclo de instrucción dura 4 ciclos de reloj (Q1, Q2, Q3,
Q4).
 En una primera etapa, la instrucción es traída a la CPU. Esto
lleva un ciclo de instrucción.
 En la segunda etapa se ejecuta la instrucción. Esto lleva otro.
 No obstante, debido al solapamiento (pipelining) de traer la
instrucción actual y ejecución de la instrucción previa, una
instrucción se trae y otra se ejecuta cada ciclo de instrucción.
 Se produce un ciclo de instrucción de retardo si el
resultado de ejecutar la instrucción anterior modifica el
contenido del Contador de Programa (Ej: GOTO ó CALL).
40
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
MODO
SLEEP Los microcontroladores PIC pueden trabajar en dos modos
distintos:
 Modo Normal: ejecutando las instrucciones
 Modo Dormido o de bajo consumo: se suspende la ejecución
 El consumo de un microcontrolador depende de su frecuencia de
trabajo, a más frecuencia más consumo.
 El modo dormido supone un ahorro de consumo porque el oscilador
del microcontrolador deja de oscilar, por tanto no se ejecutan
instrucciones.
 En este modo “dormido” se entra por software cuando se ejecuta la
instrucción SLEEP
41
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
 Al entrar en modo dormido, el bit PD (STATUS<3>) se pone a 0 y el bit TO
(STATUS<4>) se pone a 1, estos bits indican que se entró en ese modo
para conocimiento posterior en tiempo de ejecución.
A continuación el oscilador deja de oscilar. Los pines asociados a Puertos
de
Entrada/Salida mantienen el valor previo a la ejecución de la instrucción
SLEEP.
 Si está habilitado el WATCHDOG (en la palabra de configuración), su
temporizador se pondrá a cero al ejecutar la instrucción SLEEP, pero se
mantendrá “corriendo” y podría desbordar ya que el Watchdog tiene un
oscilador RC independiente del propio del microcontrolador.
 El microcontrolador puede salir del modo de bajo consumo por alguno de
los siguientes motivos:
 1. Un RESET externo provocado en el pin MCLR.
 2. Desbordamiento del WATCHDOG.
 3. Interrupción provocada por algún evento de los periféricos que
pueden generarlos sin la presencia del oscilador.
MODO SLEEP
42
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
RESET DEL
MCU
Los PIC16F87X tienen 6 posibles fuentes de RESET del MCU:
 Power-on Reset (POR) -> Reset de Alimentación del Microcontrolador
 MCLR Reset durante funcionamiento normal -> Activación del pin de Reset
en modo normal
 MCLR Reset durante SLEEP -> Activación del pin de Reset en modo de
bajo consumo
 WDT Reset (durante funcionamiento normal) -> Desbordamiento del
Watchdog en modo normal
 WDT Wake-up (durante SLEEP) -> Desbordamiento del Watchdog en modo
de bajo consumo
 Brown-out Reset (BOR) -> Reset por caída temporal de la alimentación
 La mayoría de los registros del mapa de memoria de datos no se ven
afectados por ningún tipo de RESET. No obstante, hay muchos otros
registros que son “reseteados” a un valor determinado si se produce un
POR, un MCLR Reset ó WDT Reset durante funcionamiento normal, un
MCLR Reset durante SLEEP ó un BOR.
43
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
PERRO GUARDIÁN O WATCHDOG
 El temporizador Watchdog es un temporizador existente en el
microcontrolador basado en un oscilador RC interno, independiente del
oscilador del microcontrolador
 Este oscilador RC interno no tiene nada que ver con un posible oscilador
RC externo conectado a la patilla OSC1/CLKI.
 Si está activo, durante el funcionamiento normal del microcontrolador, un
desbordamiento (ó time-out) del Watchdog provoca un Reset del
microcontrolador (Watchdog Timer Reset).
 Para que no se desborde, cada cierto tiempo y antes de que llegue al límite,
se debe ejecutar una instrucción CLRWDT que “limpia” el Watchdog y le
hace comenzar una nueva cuenta desde cero.
 Si el dispositivo está en modo dormido, un desbordamiento del watchdog
provoca que el micro despierte y continue con el funcionamiento normal
(Watchdog Timer Wake-Up) con la instrucción que sigue a SLEEP.
 El bit TO del registro STATUS se pone a cero tras un desbordamiento del
Watchdog.
44
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
 Un preescaler es un divisor de frecuencia que puede hacer que se
cuente antes el número de desbordamientos del WDT y hacer así que el
tiempo que tarda en resetear al microcontrolador sea más largo. Ese
divisor de frecuencia está compartido con el TMR0 y por tanto, si se usa
para el TMR0 no se puede usar para el WATCHDOG y viceversa.
 El divisor de frecuencia del WATCHDOG viene definido por unos bits del
registro OPTION:
 PSA: a quién se le asigna el divisor.
 PS2-PS1-PS0: cuál es el factor de división de la frecuencia:
000: 1:2 para TMR0 / 1:1 para WDT. 100: 1:32 para TMR0 / 1:16 para WDT.
001: 1:4 para TMR0/ 1:2 para WDT. 101: 1:64 para TMR0 / 1:32 para WDT.
010: 1:8 para TMR0 / 1:4 para WDT. 110: 1:128 para TMR0 / 1:64 para WDT.
011: 1:16 para TMR0 / 1:8 para WDT. 111: 1:256 para TMR0 / 1:128 para WDT.
PERRO GUARDIÁN O WATCHDOG
45
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Los PIC16F87XA tienen hasta 15 posibles fuentes de interrupción, entre otras:
 Escritura o lectura del puerto esclavo paralelo (PSPIF)
 Desbordamiento del TMR0
 Desbordamiento del TMR1
 Desbordamiento del TMR2
 Captura de un módulo CCP (CCPxIF).
 Comparacion del modulo CCP en modo “disparo de evento especial”.
 Módulo SSP al detectar un bit de START ó STOP
 Módulo SSP al transmitir o recibir en modo esclavo
 Módulo USART al RX o TX (modo síncrono) (RCIF ó TXIF).
 Al finalizar una conversión A/D
 Al completar una escritura en EEPROM (EEIF).
 Al modificarse el estado de salida de alguno de los comparadores (CMIF).
 Interrupción externa por flanco en el pin RB0/INT (INTF).
 Interrupción por cambio en los valores de los pines RB4 a RB7 del PORTB
(RBIF).
INTERRUPCIONES
46
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
INTERRUPCIONES
 Se dispone de un bit de habilitación de interrupciones global GIE
(INTCON<7>) que permite deshabilitar todas las interrupciones (si está a 0).
Cuando el bit GIE está a 1, si una interrupción tiene su flag a 1 y sus bits de
habilitación a 1, el microcontrolador terminará la instrucción que se está
ejecutando en ese instante y, a continuación, pasará a ejecutar la posición 4
de la memoria de programa que corresponde a la posición del vector de
interrupción y que es el mismo para todas las interrupciones. Las fuentes de
interrupción pueden deshabilitarse individualmente utilizando sus máscaras o
bits de habilitación (bits acabados en “E”).
 El bit GIE se pone a 0 tras un RESET. Por tanto, al principio las
interrupciones están desactivadas.
 Al producirse el salto a la rutina o programa de tratamiento de la interrupción,
el bit GIE se pone a 0 deshabilitando el resto de interrupciones, salvo que
por software se vuelva a poner a 1 ese bit GIE. El retorno del programa de
tratamiento de interrupción (RETFIE) coloca en la máscara global GIE el
valor 1, además de recuperar el PC de la pila hardware.
 Los bits de flags pueden ponerse a 1 independientemente de que sus bits de
habilitación estén o no a 1, ya que indican eventos.
47
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Lógica de interrupciones
48
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
SALVANDO EL CONTEXTO
 Cuando se produce una interrupción sólo se guarda en la pila hardware
interna el valor del PC.
 Normalmente, se deberán salvar algunos otros registros para no perder su
contenido al regresar al programa principal y tras haber pasado por la rutina
de interrupción, máxime cuando se ignora cuándo se va a producir el salto
a ese programa de tratamiento de la interrupción (PTI) desde el programa
principal.
 Estos registros son al menos el W y el STATUS
 También puede resultar interesante guardar el registro PCLATH,
especialmentesi en la rutina de interrupción se cambia de página de
memoria de programa.
 Como no hay pila en RAM, hay que reservar posiciones de memoria en
RAM que habitualmente denominaremos W_TEMP, STATUS_TEMP y
PCLATH_TEMP donde se guardan los valores de W, STATUS y PCLATH
al entrar en la rutina de interrupción para luego recuperarlos al salir.
49
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
SECUENCIA PARA SALVAR EL
CONTEXTO DEL PROG. PCPAL.
 ;Para salvar el contexto no podemos emplear la instrucción
MOVF ;ya que afecta al registro STATUS (al bit Z), para evitarlo
;empleamos la instrucción SWAPF
movwf W_tmp ;Salvamos el registro W
swapf STATUS,W ; y el registro STATUS "girado" en W
bcf STATUS,RP0 ;Aseguramos el paso al banco 0
bcf STATUS,RP1 ;poniendo a 0 los dos bits de selección de
;banco
movwf STATUS_tmp ;Guardamos en el banco 0 STATUS girado
movf PCLATH,W ;Salvamos también PCLATH en W
movwf PCLATH_tmp ;y ahora en una posición auxiliar del
;banco 0
Siempre se debe hacer así o de una manera similar (si se guardan más
registros) al principio de un PTI
50
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
 ;Para recuperar los registros salvados no podemos usar
MOVF ;porque modifica a STATUS, para evitarlo usamos la
instrucción ;SWAPF
movf PCLATH_tmp,W ;Recuperamos PCLATH
movwf PCLATH ;directamente
swapf STATUS_tmp,W ;Recuperamos el registro STATUS con
;un SWAPF
movwf STATUS ;ahora estamos en el banco de partida
swapf W_tmp,F ;Recuperamos también el W con dos
;SWAPF
swapf W_tmp,W ;para evitar la instrucción MOVF
retfie ;Ahora ya podemos retornar del PTI
SECUENCIA PARA RECUPERAR EL
CONTEXTO DEL PROG. PCPAL.
51
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Programación en
ensamblador
Copyright ATE
52
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Ensamblador
 El lenguaje ensamblador expresa las instrucciones de una forma más
natural al hombre que el lenguaje máquina (0 y 1) a la vez que muy
cercana al microcontrolador, ya que cada una de esas instrucciones
se corresponde con otra en código máquina.
 El lenguaje ensamblador trabaja con nemónicos, que son grupos de
caracteres alfanuméricos que simbolizan las órdenes o tareas a
realizar.
 La traducción de los nemónicos a código máquina la realiza un
programa ensamblador: MPASM.
El programa escrito en lenguaje ensamblador se denomina código
fuente (*.asm). El programa ensamblador proporciona a partir de este
fichero el correspondiente código máquina, que suele tener la
extensión *.hex.
53
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Código fuente
Está compuesto por una sucesión de líneas de texto.
 Cada línea puede estructurarse en hasta cuatro campos o columnas
separados por uno o más espacios o tabulaciones entre sí.
 Campo de etiquetas. Expresiones alfanuméricas escogidas por el
usuario para identificar una determinada línea. Todas las etiquetas
tienen asignado el valor de la posición de memoria en la que se encuentra
el código al que acompañan.
 Campo de código. Corresponde al nemónico de una instrucción, de una
directiva o de una llamada a macro.
 Campo de operandos y datos. Contiene los operandos que precisa el
nemónico utilizado. Según el código puede haber dos, uno o ningún
operando.
 Campo de comentarios. Dentro de una línea, todo lo que se encuentre
a continuación de un punto y coma (;) será ignorado por el programa
ensamblador y considerado como comentario.
54
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Campo de código
Puede estar ocupado por:
 Instrucciones: son aquellos nemónicos que son convertidos por el
ensamblador en código máquina que puede ejecutar el
microcontrolador. Cada nemónico se convierte en una palabra en la
memoria de programa.
 Directivas: Pseudoinstrucciones que controlan el proceso de ensamblado
del programa, pero no son parte del código. Son indicaciones al programa
ensamblador de cómo tiene que generar el código máquina.
 Macros: Secuencia de nemónicos que pueden insertarse en el código
fuente del ensamblador de una manera abreviada mediante una simple
llamada.
55
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Decimal .<valor>d’<valor>’D’<valor>’
Hexadecimal
0x<valor>h’<valor>’H’<valor>’
<valor>h .<valor>H
Octal o’<valor>’O’<valor>’
Binario b’<valor>’B’<valor>’
ASCII ‘<carácter>’a’<carácter>’A’<carácter>’
Cadena “<cadena>”
TIPO SINTAXIS
Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un
cero para no confundirlas con una etiqueta.
Campo de operandos y datos
56
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Juego de instrucciones

Es un juego reducido de 35 instrucciones muy simples y rápidas.

La mayoría de las instrucciones se ejecuta en 4 ciclos de reloj; los
saltos se ejecutan en 8.

Todas las instrucciones tienen la misma longitud: 14 bits.
Instrucciones de CARGA
NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS
clrf f 00 → (f) Z
clrw 00 → (W) Z
movf f,d (f) → (destino) Z
movlw k k → (W) Ninguno
movwf f (W) → (f) Ninguno
57
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Juego de instrucciones
Instrucciones de BIT
NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS
bcf f,b Pone a 0 el bit ‘b’ del registro ‘f’ Ninguno
bsf f,b Pone a 1 el bit ‘b’ del registro ‘f’ Ninguno
Instrucciones ARITMÉTICAS
NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS
addlw k (W) + k → (W) C – DC - Z
addwf f,d (W) + (f) → (destino) C – DC - Z
decf f,d (f) - 1 → (destino) Z
incf f,d (f) + 1 → (destino) Z
sublw k K - (W) → (W) C – DC - Z
subwf f,d (f) - (W) → (destino) C – DC - Z
58
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Instrucciones LÓGICAS
NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS
andlw k (W) AND k → (W) Z
andwf f,d (W) AND (f) → (destino) Z
comf f,d (/f) → (destino) Z
iorlw k (W) OR k → (W) Z
iorwf f,d (W) OR (f) → (destino) Z
rlf f,d Rota (f) a izquierda → (destino) C
rrf f,d Rota (f) a derecha → (destino) C
swap f,d Intercambia nibbles (f) → (destino) Ninguno
xorlw k (W) XOR k → (W) Z
xorwf f,d (W) XOR (f) → (destino) Z
Juego de instrucciones
59
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Instrucciones de SALTO
NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS
btfsc f,b Salta si el bit ‘b’ de ‘f’ es 0 Ninguno
btfss f,b Salta si el bit ‘b’ de ‘f’ es 1 Ninguno
decfsz f,d (f) - 1 → (destino) y salta si es 0 Ninguno
incfsz f,d (f) + 1 → (destino) y salta si es 0 Ninguno
goto k Salta a la dirección ‘k’ Ninguno
Juego de instrucciones
60
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Instrucciones de manejo de SUBRUTINAS
NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS
call k Llamada a subrutina Ninguno
retfie Retorno de una interrupción Ninguno
retlw k Retorno con un literal en (W) Ninguno
return Retorno de una subrutina Ninguno
Juego de instrucciones
61
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Instrucciones ESPECIALES
NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS
clrwdt Borra Timer del Watchdog /TO - /PD
nop No operación Ninguno
sleep Entra en modo de bajo consumo /TO - /PD
Juego de instrucciones
62
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
 Controlan el proceso de ensamblado del programa, pero no son parte
del mismo (también se conocen como pseudoinstrucciones).
 Hay más de 50 directivas reconocidas por MPASM. A continuación
veremos algunas de las más utilizadas.
 END
Es la única directiva obligatoria. Indica al ensamblador dónde debe
detener el proceso. Debe colocarse en la última línea del programa.
 <etiqueta> EQU <expresión>
El valor <expresión> es asignado a <etiqueta>. Estas directivas se
suelen colocar al principio del programa y habitualmente se usan
para definir constantes y direcciones de memoria.
 [<etiqueta>] ORG <expresión>
Las instrucciones del código fuente que siguen a esta directiva se
ensamblan a partir de la posición indicada por <expresión>.
Directivas
63
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
__CONFIG <expresión> [& <expresión> & ... & <expresión>]
Permite indicar la configuración elegida para la grabación del PIC.
Ejemplo: __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC
LIST P=16F877
Indica el tipo de microcontrolador utilizado.
INCLUDE <p16F877.inc> o INCLUDE “p16F877.inc”
Incluye en el programa un fichero donde se definen las etiquetas
con las que se nombra a los diferentes registros y sus bits. Este
fichero se encuentra en el directorio principal del programa
ensamblador. Puede usarse esta directiva para incluir cualquier
otro fichero (El fichero de inclusión no puede terminar con
una directiva END).
Directivas
64
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
MANEJANDO LAS
INSTRUCCIONES
Lucía Marcos
65
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Registros FSR más utilizados y
bancos donde se ubican en la
RAMBanco 0:
 PORTA
 PORTB
 PORTC
 PORTD
 PORTE
 TMR0
 STATUS (en los dos bancos)
 INTCON (en los dos bancos)
 PCLATH (en los dos bancos)
 Banco 1:
 TRISA
 TRISB
 TRISC
 TRISD
 TRISE
 OPTION_REG
Después del RESET de encendido, estamos en el banco 0.
La selección de banco se realiza mediante los bits RP0 y RP1
que se encuentran en el registro STATUS
66
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Inicialización
La secuencia a seguir en el inicio es:
LIST P=16F877 ;Tipo de procesador
include P16F877.INC ;incluye fichero de símbolos y etiquetas
;se pueden incluir otros ficheros
;aquí reservamos las posiciones de memoria de datos que necesitemos a partir
;de la posición 0x20
org 0x00 ;inicio en el vector de Reset (posición 0 de la
;memoria de programa)
goto Inicio ;va a la primera instrucción del programa
; si se van a producir interrupciones, debemos tener en cuenta que el vector de
; interrupción se encuentra en la posición 4 de la memoria de programa, por lo
; que habrá que añadir:
org 0x04 ; vector de interrupción
goto trata_interrupción ; va al programa de tratamiento de la
;interrupción
67
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Configuración de los puertos
 Los puertos (que están en el banco 0) tienen unos registros
asociados, TRIS (en el banco 1) que permiten configurar cada una
de sus patillas como entrada o salida.
 Después del RESET de encendido, estos registros TRIS tienen
todos sus bits a 1 (los puertos correspondientes están configurados
como entradas).
Ejemplo: Queremos que los bits del puerto A <7:5> sean salidas y los
bits <4:0> sean entradas
bsf STATUS,RP0 ;pasamos al banco 1
movlw b'00011111' ;configuramos PORTA<7:5> como
movwf TRISA ;salidas y PORTA<4:0> como entradas,
;aunque esto último no es necesario.
68
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Operaciones con literales
 Todas las operaciones con literales se realizan con el registro W.
 Para cargar, sumar, etc. un registro F con un literal se debe hacer
en dos pasos:
 1º- Se realiza la operación con W
 2º- Se carga W en el registro F.
Ejemplo 1: cargar el registro OPTION_REG con 0000 0110.
movlw b'00000110' ;cargamos el registro option_reg...
movwf OPTION_REG ;...con el valor indicado
Ejemplo 2: sumar dos valores inmediatos (p.e. los decimales 12 y 7)
movlw 0x0C ;carga el 1er. sumando en W
addlw 0x07 ;le sumamos el 2º sumando
movwf Resultado ;guardamos el resultado
;antes hemos reservado una posición de memoria RAM para el resultado, a partir de la
0X20 (banco 0 en este caso) con la directiva EQU o bien con la directiva CBLOK.
; con EQU:
Resultado EQU 0x20
;con CBLOK:
CBLOK 0x20
Resultado
ENDC
69
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Obtener parte de un registro
Se hace una AND con 1s.
Ejemplo :
Queremos quedarnos con la parte alta del registro REG.
MOVF REG, W ;pasamos el contenido del registro a W
ANDLW 0xF0 ;hacemos la AND con F0 para obtener la parte
alta ;de REG, el resultado queda en W
Otra forma:
MOVLW 0xF0 ;cargamos W con el literal F0
ANDWF REG, 0 ;hacemos la AND entre W y REG y dejamos el
;resultado en W
70
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Comprobar si dos registros son
igualesSe utiliza la instrucción XORWF, por lo que se hace la XOR entre W y uno de los
registros.
Ejemplo: saber si el registro CONTADOR que es un registro que se inicializa a 0 y se
va incrementando es igual al registro FIN, en cuyo caso se termina el
programa; si no, incrementamos CONTADOR.
MOVF CONTADOR,W ; cargamos W con el contenido de CONTADOR
XORWF FIN ; hacemos la XOR entre W y FIN
BTFSS STATUS,Z ; miramos si el resultado ha sido cero;
INCF CONTADOR ; si no, se incrementa CONTADOR
GOTO END ; si sí, salta la siguiente instrucción y va a GOTO END
Otra opción es restar ambos registros utilizando el registro W; en este ejemplo sólo nos
interesa saber si son o no son iguales.MOVF CONTADOR, W ;cargamos W con el valor de CONTADOR
SUBWF FIN, W ; restamos FIN-CONTADOR y lo dejamos en W
BTFSC STATUS,Z ; si Z=0, salta ya que no son iguales
GOTO Iguales ; sí, son iguales
GOTO NoIguales ; no son iguales
En este caso hemos utilizado la instrucción BTFSC.
Si la comparación es entre un registro y un literal, se cargaría W con el
contenido del registro y se haría la XOR entre W y el literal con la instrucción
XORLW
71
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Interrupciones
 En las interrupciones el proceso que se sigue es el que muestra la
figura.
 Cuando se origina una interrupción el bit GIE (habilitación global de
interrupciones) del registro INTCON es puesto a 0, lo que impide
cualquier otra interrupción.
El bit de flag correspondiente se
pone a 1 y debe borrarse por
software.
La habilitación de una deter-
minada interrupción exige
poner a 1 el bit GIE y el corres-
pondiente bit de habilitación
de la interrupción particular;
ambos se encuentran en el
registro INTCON.
La instrucción RETFIE vuelve
a poner GIE a 1.
El registro INTCON está
en el banco 0 y el 1
72
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
 Hay que tener en cuenta que al principio de la interrupción hay que salvaguardar los registros W
y STATUS, a veces también el PCLATH.
PTI movwf W_tmp ;Salvamos el registro W
swapf STATUS,W ; y el registro STATUS "girado" en W
bcf STATUS,RP0 ;Aseguramos el paso al banco 0
bcf STATUS,RP1 ;poniendo a 0 los dos bits de selección de banco
movwf STATUS_tmp ;Guardamos en el banco 0 STATUS girado
movf PCLATH,W ;Salvamos también PCLATH en W
movwf PCLATH_tmp ;y ahora en una posición auxiliar del banco 0
 Al final del PTI, antes de RETFIE hay que recuperarlos.
movf PCLATH_tmp,W ;Recuperamos PCLATH directamente
movwf PCLATH
swapf STATUS_tmp,W ;Recuperamos el registro STATUS con un
SWAPF
movwf STATUS ;ahora estamos en el banco de partida
swapf W_tmp,F ;Recuperamos también el W con dos SWAPF
swapf W_tmp,W ;para evitar la instrucción MOVF
 retfie
Interrupciones
73
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
 Es un registro que se encuentra en el banco 0 de la RAM.
 Es un temporizador que se incrementa con cada pulso del oscilador
interno o con un reloj externo que se selecciona mediante el bit T0CS del
registro OPTION_REG que se encuentra en el banco 1: T0CS =0 para el
reloj interno.
 También tiene la posibilidad de aplicarle un divisor de frecuencia
(prescaler) de 8 bits que comparte con el WDT. El bit PSA (OPTION_REG
<3>) a 0 le asigna el prescaler al TMR0 y los bits PS2-PS0 seleccionan
por cuánto se divide la frecuencia.
Se puede leer y escribir en TMR0 y cuando se desborda puede producir
una interrupción.
Ejemplo: Se pretende que cada 200ms. se produzca un determinado
evento por interrupción del TMR0 utilizando el oscilador interno de 4 MHz
y sabiendo que cada ciclo de instrucción dura 4 ciclos del oscilador.
Como un solo desbordamiento del TMR0 sólo permite una temporización
de aproximadamente 65ms tendremos que hacer que se desborde varias
veces. Vamos a hacer que se desborde 20 veces para lo que tenemos
que precargar el TMR0 para que se desborde a los 10ms
TMR0
temp TMR0 = [(256 – carga) · PS + 2] · Tinstr
Elegimos PS=128
Carga = 180
Hay que cargar el reg. OPTION_REG con el binario: 00000110
Para permitir las interrupciones el registro INTCON debe cargarse con
el
binario 10100000. (Mirar la configuración de ambos registros)
74
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
Interrupción RBI
 Interrupción RBI es una interrupción producida por el cambio de estado en
alguna de las líneas RB4, RB5, RB6 o RB7. Hay que configurar esas líneas como
entradas y cargar el INTCON para permitir la interrupción.
Ejemplo: Vamos a utilizar la interrupción RBI para encender unos LEDs
conectados a los bits RB0, RB1, RB2 y RB3
BSF STATUS, RP0 ;pasamos al banco 1 para configurar el puerto B
MOVLW 0XF0 ;RB<4,7> entradas, RB<0,3> salidas
MOVWF TRISB
BCF STATUS, RP0 ;volvemos al banco 0
CLRF PORTB ;para inicializar el puerto (LEDs apagados)
MOVLW b’10001000 ;habilitamos las interrupciones generales
MOVWF INTCON ;y la particular poniendo GIE y RBIE a 1
Como en todas las interrupciones al principio del programa hay que poner:
ORG 0x04
GOTO PTI
Al principio del PTI hay que salvar los registros W y STATUS y al final del mismo
hay
que recuperarlos y borrar el flag RBIF
75
Universidad
de Oviedo
6.Microcontroladores.PIC
Tecnología Electrónica
;Escribir un programa que sume dos valores inmediatos (p.e. los decimales 12 y
7)
List p=16F877 ;tipo de procesador
include P16F877.INC ;incluye fichero de símbolos y
;etiquetas
Resultado equ 0x20 ;para almacenar el resultado
org 0x00 ;vector de Reset
goto Inicio
org 0x05 ;saltamos el vector de
;interrupción
Inicio movlw 0x0C ;carga el 1er. sumando en W
addlw 0x07 ;le sumamos el 2º sumando
movwf Resultado ;guardamos el resultado
Stop nop ;ponemos punto de parada
end ;fin del programa fuente
Suma de valores inmediatos

Más contenido relacionado

La actualidad más candente

Amplificadores operacionales
Amplificadores operacionalesAmplificadores operacionales
Amplificadores operacionalesJomicast
 
Automatismo de control para el acceso a un garaje
Automatismo de control para el acceso a un garajeAutomatismo de control para el acceso a un garaje
Automatismo de control para el acceso a un garajeJomicast
 
Electroneumatica
Electroneumatica Electroneumatica
Electroneumatica ronaldxz
 
Antecedentes de los controladores lógicos programables
Antecedentes de los controladores lógicos programablesAntecedentes de los controladores lógicos programables
Antecedentes de los controladores lógicos programablesAngel Ng
 
Diseño de un Amplificador de Audio
Diseño de un Amplificador de AudioDiseño de un Amplificador de Audio
Diseño de un Amplificador de AudioByron Ganazhapa
 
INVERSOR MONOFASICO
INVERSOR MONOFASICOINVERSOR MONOFASICO
INVERSOR MONOFASICOChagli Boo
 
Amplificador lm741 integrador y diferenciador pd
Amplificador lm741 integrador y  diferenciador pdAmplificador lm741 integrador y  diferenciador pd
Amplificador lm741 integrador y diferenciador pdFranklin J.
 
Amplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector ComunAmplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector Comuniscped
 
PLC: manual de practicas de laboratorio de controladores lógicos programables
PLC: manual de practicas de laboratorio de controladores lógicos programables PLC: manual de practicas de laboratorio de controladores lógicos programables
PLC: manual de practicas de laboratorio de controladores lógicos programables SANTIAGO PABLO ALBERTO
 
Amplificado roperacional comparador
Amplificado roperacional comparadorAmplificado roperacional comparador
Amplificado roperacional comparadorPAulo Borikua
 
Microcontroladores Pic basic - Carlos A. Reyes
Microcontroladores Pic basic - Carlos A. ReyesMicrocontroladores Pic basic - Carlos A. Reyes
Microcontroladores Pic basic - Carlos A. ReyesGerar González
 
Amplificadores Operacionales
Amplificadores OperacionalesAmplificadores Operacionales
Amplificadores OperacionalesEnrique
 
Circuitos Electronicos 5
Circuitos Electronicos 5Circuitos Electronicos 5
Circuitos Electronicos 5F Blanco
 

La actualidad más candente (20)

Amplificadores operacionales
Amplificadores operacionalesAmplificadores operacionales
Amplificadores operacionales
 
Opam
OpamOpam
Opam
 
Automatismo de control para el acceso a un garaje
Automatismo de control para el acceso a un garajeAutomatismo de control para el acceso a un garaje
Automatismo de control para el acceso a un garaje
 
Electroneumatica
Electroneumatica Electroneumatica
Electroneumatica
 
Antecedentes de los controladores lógicos programables
Antecedentes de los controladores lógicos programablesAntecedentes de los controladores lógicos programables
Antecedentes de los controladores lógicos programables
 
Estructura plc
Estructura plcEstructura plc
Estructura plc
 
Diseño de un Amplificador de Audio
Diseño de un Amplificador de AudioDiseño de un Amplificador de Audio
Diseño de un Amplificador de Audio
 
INVERSOR MONOFASICO
INVERSOR MONOFASICOINVERSOR MONOFASICO
INVERSOR MONOFASICO
 
Amplificador lm741 integrador y diferenciador pd
Amplificador lm741 integrador y  diferenciador pdAmplificador lm741 integrador y  diferenciador pd
Amplificador lm741 integrador y diferenciador pd
 
Amplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector ComunAmplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector Comun
 
1 intro automatas
1 intro automatas1 intro automatas
1 intro automatas
 
PLC: manual de practicas de laboratorio de controladores lógicos programables
PLC: manual de practicas de laboratorio de controladores lógicos programables PLC: manual de practicas de laboratorio de controladores lógicos programables
PLC: manual de practicas de laboratorio de controladores lógicos programables
 
Amplificado roperacional comparador
Amplificado roperacional comparadorAmplificado roperacional comparador
Amplificado roperacional comparador
 
Plc ppt1
Plc ppt1Plc ppt1
Plc ppt1
 
Simulacion ac ac
Simulacion ac acSimulacion ac ac
Simulacion ac ac
 
Microcontroladores Pic basic - Carlos A. Reyes
Microcontroladores Pic basic - Carlos A. ReyesMicrocontroladores Pic basic - Carlos A. Reyes
Microcontroladores Pic basic - Carlos A. Reyes
 
Plc1
Plc1Plc1
Plc1
 
Amplificadores Operacionales
Amplificadores OperacionalesAmplificadores Operacionales
Amplificadores Operacionales
 
Circuitos Electronicos 5
Circuitos Electronicos 5Circuitos Electronicos 5
Circuitos Electronicos 5
 
Clases Amplificadores Operacionales
Clases Amplificadores OperacionalesClases Amplificadores Operacionales
Clases Amplificadores Operacionales
 

Destacado

Destacado (20)

Ejercicio 03 Porticos
Ejercicio 03 PorticosEjercicio 03 Porticos
Ejercicio 03 Porticos
 
Presentacion capitulo 1
Presentacion capitulo 1Presentacion capitulo 1
Presentacion capitulo 1
 
Ejercicio 01 Llenar
Ejercicio 01 LlenarEjercicio 01 Llenar
Ejercicio 01 Llenar
 
Ejercicio 05 Subrutinas
Ejercicio 05 SubrutinasEjercicio 05 Subrutinas
Ejercicio 05 Subrutinas
 
Ejercicio 02 Tablas
Ejercicio 02 TablasEjercicio 02 Tablas
Ejercicio 02 Tablas
 
Microcontroladores ASM
Microcontroladores ASMMicrocontroladores ASM
Microcontroladores ASM
 
Ejercicio 09 Serie
Ejercicio 09 SerieEjercicio 09 Serie
Ejercicio 09 Serie
 
Ejercicio 04 Calculos
Ejercicio 04 CalculosEjercicio 04 Calculos
Ejercicio 04 Calculos
 
Ejercicio 07 Timers
Ejercicio 07 TimersEjercicio 07 Timers
Ejercicio 07 Timers
 
PIC MICROCONTROLADORES
PIC MICROCONTROLADORESPIC MICROCONTROLADORES
PIC MICROCONTROLADORES
 
El PIC16F84
El PIC16F84El PIC16F84
El PIC16F84
 
FAMILIA MICROCONTROLADORES
FAMILIA MICROCONTROLADORESFAMILIA MICROCONTROLADORES
FAMILIA MICROCONTROLADORES
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
Informe N°2-Microcontroladores
Informe N°2-MicrocontroladoresInforme N°2-Microcontroladores
Informe N°2-Microcontroladores
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PIC
 
Microcontroladores clase 8
Microcontroladores clase 8Microcontroladores clase 8
Microcontroladores clase 8
 
1. microcontrolador
1. microcontrolador1. microcontrolador
1. microcontrolador
 
Resumen microcontroladores
Resumen microcontroladoresResumen microcontroladores
Resumen microcontroladores
 
La Familia De Microcontroladores Pic
La Familia De Microcontroladores PicLa Familia De Microcontroladores Pic
La Familia De Microcontroladores Pic
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 

Similar a Diapos de pic

Similar a Diapos de pic (20)

04 procesadores y microcontroladores
04 procesadores y microcontroladores04 procesadores y microcontroladores
04 procesadores y microcontroladores
 
Introducción
IntroducciónIntroducción
Introducción
 
Introducción
IntroducciónIntroducción
Introducción
 
Introducción al PIC18F4550.pptx
Introducción al PIC18F4550.pptxIntroducción al PIC18F4550.pptx
Introducción al PIC18F4550.pptx
 
MICROCONTROLADORES.ppt
MICROCONTROLADORES.pptMICROCONTROLADORES.ppt
MICROCONTROLADORES.ppt
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
 
Microcontrolador wiki
Microcontrolador wikiMicrocontrolador wiki
Microcontrolador wiki
 
Ud1 3 microcontrolador_pic
Ud1 3 microcontrolador_picUd1 3 microcontrolador_pic
Ud1 3 microcontrolador_pic
 
135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-ppt135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-ppt
 
Informe practica ecuaciones # 6
Informe practica ecuaciones # 6Informe practica ecuaciones # 6
Informe practica ecuaciones # 6
 
Sesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresSesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladores
 
Microprocesadores - A.ppt
Microprocesadores - A.pptMicroprocesadores - A.ppt
Microprocesadores - A.ppt
 
Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887
 
Micro1
Micro1Micro1
Micro1
 
El microcontrolador PIC16F877
El microcontrolador PIC16F877El microcontrolador PIC16F877
El microcontrolador PIC16F877
 
Arquitectura de Computadorasv
Arquitectura de ComputadorasvArquitectura de Computadorasv
Arquitectura de Computadorasv
 
Microprosedador
MicroprosedadorMicroprosedador
Microprosedador
 
Libro basico pic
Libro basico picLibro basico pic
Libro basico pic
 
Microcontroladoresf1
Microcontroladoresf1Microcontroladoresf1
Microcontroladoresf1
 
18 f4550 2
18 f4550 218 f4550 2
18 f4550 2
 

Diapos de pic

  • 2. 2 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Microcontroladores  Son circuitos integrados que incorporan todos los bloques funcionales de un Sistema Microprocesador en un único encapsulado.  Necesitan una tensión continua (5V, 3.3V, 2.5V, 1.5V...) y un oscilador para funcionar.  Interpretan (decodifican) combinaciones de bits (instrucciones) y generan señales digitales internas y/o externas.  Ejecutan de manera continua una secuencia de instrucciones (programa) que permite controlar un sistema o subsistema electrónico.
  • 3. 3 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Sistema mínimo microprocesador El sistema mínimo está basado en la estructura de von Newman. Sus bloques básicos son los siguientes: El sistema mínimo está basado en la estructura de von Newman. Sus bloques básicos son los siguientes: •CPU, Central Process Unit o Unidad Central de Proceso. Formada por dos bloques: Unidad de Control y Unidad de Proceso. •Memoria, donde residen las instrucciones del programa y sus datos. •Módulos E/S, elementos encargados de recibir y entregar información al exterior. CPU MEMORIA UDS. E / S Reloj Bus de Direcciones Bus de Datos Bus de Control Los tres módulos están conectados entre sí por medio de los Buses de Comunicación. Cada bus está formado por un conjunto de conductores por los cuales se transmite la información digital.
  • 4. 4 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Microprocesadores y microcontroladores Sistema Microprocesador (varios C.I. en una PCB) Microcontrolador (único C.I.)
  • 5. 5 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Tarjeta de Sistema Microprocesador para control C.I. Microcontrolador Microprocesadores y microcontroladores
  • 6. 6 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Sistemas empotrados • Sistemas que incorporan microcontroladores (o microprocesadores) para una tarea específica pero que no son “programables” directamente por el usuario • Los microcontroladores de 8 bits dominan en la mayoría de las aplicaciones • El microcontrolador es el núcleo del sistema electrónico versátil de bajo coste y reducido tamaño que es capaz de detectar las señales de entrada y generar las salidas de un equipo, sistema o instrumento • Por su reducido tamaño y coste permiten la fácil implantación de sistemas de“inteligencia” distribuida a lo largo de sistemas más complejos • Los microcontroladores son los semiconductores más abundantes de todos en la actualidad.
  • 7. 7 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Sistemas empotrados Evolución Microprocesadores: Computadores 75 Millones Microprocesadores/año Evolución Microcontroladores: Sistemas Empotrados 2500 MillonesMicrocontroladores/año
  • 8. 8 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Microcontroladores PIC •Arquitectura Harvard: buses internos separados para memoria de datos (8 bits) y de programa (12, 14 ó 16 bits depende de la familia) •Microprocesador RISC: juego de instrucciones reducido •Estructura pipe-line: durante la ejecución de una instrucción, se está accediendo a la memoria de programa para traer la siguiente instrucción a ejecutar. (salvo un salto o llamada a subpr.) •Todas las instrucciones ocupan una posición de memoria de programa •Todas las instrucciones se ejecutan en un ciclo de instrucción = 4 ciclos de reloj (salvo las instrucciones de salto) •Ortogonalidad de los registros: se opera entre el registro de trabajo W y cualquier otro registro, el resultado puede almacenarse en W
  • 9. 9 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica ARQUITECTURA HARVARD • El tiempo de acceso se mejora respecto a la arquitectura von Neumann donde programa y datos se traen a la CPU usando el mismo bus. • La arquitectura Harvard tiene memoria de programa y memoria de datos separadas y se accede a ellas a través de buses separados.
  • 10. 10 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Microcontroladores PIC. Características • Eficiencia del código: permiten gran compactación de programas • Rapidez de ejecución: a f de 20MHz  5 millones de instr./seg. • Seguridad en acceso: Separa memoria de datos y de programa • Juego reducido de instrucciones • Compatibilidad de pines y código entre dispositivos (familias) • Gran variedad de versiones en distintos encapsulados (8 - 84 pines) • Herramientas de desarrollo software y hardware abundantes y de bajo coste
  • 11. 11 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Familias de PIC Familia PIC16C5X •Encapsulados de 14, 18, 20 y 28 pines •Instrucciones de 12 bits •Juego de 33 instrucciones •Es la familia base de partida de los PIC Familia PIC16CXXX/16FXXX •Encapsulados desde 18 hasta 68 pines (DIP, SSOP, PLCC, QFP) •Instrucciones de 14 bits en Memoria de Programa •Juego de 35 instrucciones •Gran variedad de módulos integrados
  • 12. 12 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica • Puertos de Entrada/Salida • Puerto Esclavo Paralelo (PSP) • Temporizadores/contadores (TMR0, TMR1, TMR2) • Captura / Comparación / PWM (CCP1 y CCP2) • Conversión Analógica / Digital (A/D) • Transmisor Receptor Asíncrono Síncrono Universal (USART) • Puerto Serie Síncrono (BSSP ó MSSP) • Memoria EEPROM de datos • FLASH EEPROM de programa modificable desde el código Familia PIC16CXXX/16FXXX
  • 13. 13 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Familia PIC16CXXX/16FXXX Microcontrolador PIC16F877 (gama media) Microcontrolador PIC16F877 (gama media) 8K x 14 368 x 8 256 x 8 PuertosdeE/S Puerto Esclavo Paralelo Temporizadores Conversor A/D USART Módulos CCP SSP
  • 14. 14 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica PIC. Proceso de diseño Diseño software: el micro sin un programa cargado en su memoria no hace nada, cuando el micro esté grabado con un programa eficiente el conjunto empezará a funcionar • Diseño del programa y escritura del código fuente en ensamblador o en C • Pruebas, verificación y modificación del código: Simulación del programa (puro software) o emulación dentro del circuito de aplicación (software y hardware) • Grabación del código máquina en la memoria del microcontrolador Edición del código, 1ª depuración y simulación Emulación o Depuración sobre PCB Grabación del micro
  • 15. 15 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica PIC 16F877 ORGANIZACIÓN DE LA MEMORIA Copyright ATE
  • 16. 16 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Organización de la memoria El PIC16F877 dispone de tres tipos de memoria: • Memoria de programa Consta de 8192 posiciones (8Kwords) y contiene el programa con las instrucciones que gobiernan la aplicación. Es no volátil. • Memoria de datos RAM Guarda las variables y datos. Está formada por registros de 8 bits. Es volátil. • Memoria EEPROM de datos Es una pequeña área de memoria de datos de lectura y escritura no volátil que permite garantizar que determinada información estará siempre disponible al reiniciar el programa.
  • 17. 17 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Memoria 156 X 8 EEPRO M Memoria de programa Memoria de datos RAM Memoria EEPROM
  • 18. 18 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Memoria de programa • La información contenida en esta memoria se graba previamente mediante un equipo (programador o grabador). • Almacena todas las instrucciones del programa en ejecución, y queda grabada de forma permanente. • En el PIC16F877 esta memoria es no volátil del tipo ROM Flash y admite unas 1000 grabaciones. • Está organizada en palabras de 14 bits cada una. • Todas las instrucciones ocupan una posición de memoria de programa • A la posición 0 se accede tras un RESET y a la posición 4 tras una interrupción.
  • 19. 19 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Memoria de programa. Contador de programa, PC.  Para acceder a la memoria de programa de los PIC16FXXX se utiliza un registro de 13 bits que actúa como puntero de la instrucción que se debe ejecutar en el siguiente ciclo de instrucción.  Este registro es el Contador de Programa PC que permite direccionar 8K posiciones de memoria de 14 bits (recordar que cada posición corresponde a una instrucción) por tanto, el PC es capaz de direccionar 8K instrucciones.  Resulta fácil saber si un PIC tiene memoria de programa suficiente para una determinada aplicación.
  • 20. 20 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Memoria de programa. Contador de programa, PC. Líneas de direcciones (direccionamiento) Líneas de datos de la memoria de programa ACCESO A LA MEMORIA DE PROGRAMA ACCESO A LA MEMORIA DE PROGRAMA
  • 21. 21 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica • Los 8K de memoria de programa disponible están divididos en 4 páginas de 2K cada una (0h–7FFh, 800h-FFFh, 1000h- 17FFh y 1800h-1FFFh). Esto se debe a que las instrucciones de salto y llamada a subprograma permiten cargar sólo 11 bits en el PC (desplazamiento en 211 = 2K) •Si se están ejecutando instrucciones secuencialmente, el contador de programa pasará de una página a otra. •Para saltar entre páginas de la memoria de programa los 2 bits más altos del PC deben modificarse. Esto se realiza escribiendo en el registro PCLATH (es un registro situado en la memoria de datos). Memoria de programa. Contador de programa, PC.
  • 22. 22 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica CONTADOR DE PROGRAMA  El contador de programa (PC) es un registro de 13 bits que se descompone en 2 registros: PCH y PCL  El byte bajo PC<0:7> se denomina PCL y está disponible en la memoria de datos. Es un registro que se puede leer y escribir directamente desde el programa.  El “cuasibyte” alto PC<12:8> se denomina PCH y no está disponible en la memoria de datos. Este registro no se puede leer ni escribir directamente. La escritura debe realizarse usando como registro intermedio el registro PCLATH que sí es un registro de 8 bits accesible en la memoria de datos del microcontrolador. El contenido del registro PCLATH se transfiere a la parte alta del PC en el momento en que se escribe en el registro PCL. También aporta dos bits al PC en los saltos o llamadas a subprogramas. Memoria de programa. Contador de programa, PC.
  • 23. 23 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica La pila • La pila permite almacenar las direcciones a donde debe retornar el programa cuando se finaliza una llamada a una subrutina o cuando se finaliza la ejecución de una rutina de interrupción. • Los microcontroladores de la familia PIC16 tienen una pila de 8 niveles x 13 bits, que por tanto permite como máximo 8 llamadas a subrutinas (CALLs) o ejecuciones de rutinas de interrupción (salto a 0004h). • El espacio de memoria para la pila no forma parte de la memoria de programa ni de la memoria de datos que tiene el microcontrolador. Es un espacio de memoria totalmente independiente. El puntero de pila no se puede leer ni escribir. La pila es gestionada por el hardware.
  • 24. 24 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Memoria RAM de datos • La memoria de datos está distribuida en 4 posibles bancos de 128 bytes cada uno. Por tanto, la máxima cantidad de memoria disponible en los microcontroladores PIC16 es de 512 bytes. No obstante, no están implementadas todas las posiciones de memoria en todos los bancos. • Por ejemplo, un PIC16F876 sólo tiene implementadas 368 posiciones de memoria de datos. • A cada posición de memoria se le denomina registro. • La memoria de datos se organiza en bancos de 128 bytes porque cuando se indica una dirección de operando fuente, sólo se pueden incluir 7 bits en la codificación: 27 =128 bytes
  • 25. 25 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica • Sirve para almacenar todos los datos que se manejan en un programa. • Se distinguen dos tipos de registro:  Registros de funciones especiales: Son los primeros registros. Cada uno de ellos cumple un propósito especial en el control del PIC.  Registros de propósito general: Se pueden usar para guardar datos temporales. El PIC16F877 dispone de 368. • Cuenta con cuatro bancos de memoria: Bancos 0, 1, 2 y 3.  Los registros de funciones especiales aparecen de la dirección 00h a 1Fh del Banco 0, de 80h a 9Fh del Banco 1, de 100h a 10F en el Banco 2 y de 180h a 18Fh del Banco 3. Algunos son accesibles desde dos o más bancos.  Los registros de propósito general ocupan 368 posiciones de memoria. Memoria RAM de datos
  • 26. 26 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica La memoria de datosSTATUS STATUS STATUSSTATUS PORTB PORTB
  • 27. 27 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica MODOS DE DIRECCIONAMIENTO  La memoria de datos está distribuida en 4 posibles bancos de 128 bytes cada uno.  Existen 2 modos de direccionamiento para acceder a cualquiera de las posiciones de la memoria de datos: Direccionamiento directo Direccionamiento indirecto  Direccionamiento directo: La posición de memoria con la que se trabaja viene directamente definida en el código de la instrucción.  Direccionamiento indirecto: La posición de memoria con la que se trabaja viene definida por el contenido del registro FSR (Posición 04h, 84h, 104h o 184h), es decir, el registro FSR actúa como puntero de la posición de memoria con la que se pretende operar. Memoria de datos
  • 28. 28 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Memoria de datos: Direccionamiento. BANCO RP1:RP0 0 00 1 01 2 10 3 11 DIRECCIONAMIENT O DIRECTO
  • 29. 29 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Direccionamiento indirecto 1) SE LEE EL REGISTRO CONTENIDO EN EL CODIGO DE LA INSTRUCCIÓN. 2) SI EL REGISTRO ES DISTINTO DEL CORRESPONDIENTE A INDF (00h,80h,100h ó 180h) LA INSTRUCCIÓN SE EJECUTA SOBRE EL REGISTRO INDICADO EN LA INSTRUCCIÓN COMPLEMENTADO CON LOS BITS RP1:RP0 DEL REGISTRO STATUS (DIRECCIONAMIENTO DIRECTO) 3) SI EL REGISTRO CORRESPONDE A LA POSICION DE INDF (00h,80h,100h ó 180h), LA INSTRUCCIÓN SE EJECUTA SOBRE EL REGISTRO INDICADO EN EL REGISTRO FSR COMPLEMENTADO CON EL BIT IRP DEL REGISTRO STATUS BCF STATUS, IRP ; dir. Indirecto, bancos 0/1 MOVLW 0x20 ; Inicializa puntero a RAM MOVWF FSR ; NEXT CLRF INDF ; limpia registro INDF INCF FSR,F ; Inc puntero BTFSS FSR,4 ; Todo limpio? GOTO NEXT ; NO, limpia siguiente CONTINUE ; : ; SI, continua Sencillo ejemplo de direccionamiento indirecto donde se limpian las posiciones de memoria de datos comprendidas entre la posición 20h y la 2Fh (ambas incluidas)
  • 36. 36 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Estas características suelen ser los aspectos que más distinguen la CPU de estos dispositivos con otros microprocesadores. • Oscilador: más simple y con menos elementos adicionales necesarios • Resets y Watchdog: seguridad en el arranque, reinicio y “autovigilancia” • Sleep: modo de bajo consumo para aplicaciones con baterías • Interrupciones: lógica de máscaras y eventos y posición común del PTI • Protección de código: para evitar la “copia” de programas grabados • ICSP e ICSP LVP: (In-Circuit Serial Programming) programación en serie ya en la tarjeta de la aplicación y a baja tensión (Low Voltage Program) • Modo depuración ICD: (In-Circuit Debugger) modo especial que permite depurar el código pero ya con el MCU conectado con el resto del circuito. CARACTERÍSTICAS ESPECIALES DE LOS PIC
  • 37. 37 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica • Todos los microcontroladores PIC tienen una posición de memoria denominada palabra de configuración en la que cada bit tiene un significado y configura las características especiales. • Los bits de configuración están fuera del espacio de memoria de programa de usuario por lo que sólo son accesibles durante la programación del micro y no durante la ejecución de un programa. Las herramientas que ofrece MICROCHIP nos dan dos alternativas para fijar los valores de estos bits de configuración: a través del menú Configure > Configuration_Bits del entorno MPLAB ó mediante la inclusión de una directiva de configuración en el código del programa. PALABRA DE CONFIGURACIÓN
  • 38. 38 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica OSCILADO R Los PIC16F87X pueden funcionar con 4 modos distintos de oscilador. El usuario puede programar dos bits de configuración para seleccionar uno de estos 4 modos:  LP Low Power Crystal (cristal de cuarzo ó resonador cerámico hasta 200KHz)  XT Crystal/Resonator (cristal de cuarzo ó resonador cerámico hasta 4MHz)  HS High Speed Crystal/Resonator (cristal de cuarzo entre 4MHz y 20MHz)  RC Resistor/Capacitor (red RC externa hasta 4MHz)
  • 39. 39 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica CICLO DE INSTRUCCIÓN Un ciclo de instrucción es el tiempo que se tarda en ejecutar una instrucción (salvo saltos) en el microcontrolador. En los PIC16, un ciclo de instrucción dura 4 ciclos de reloj (Q1, Q2, Q3, Q4).  En una primera etapa, la instrucción es traída a la CPU. Esto lleva un ciclo de instrucción.  En la segunda etapa se ejecuta la instrucción. Esto lleva otro.  No obstante, debido al solapamiento (pipelining) de traer la instrucción actual y ejecución de la instrucción previa, una instrucción se trae y otra se ejecuta cada ciclo de instrucción.  Se produce un ciclo de instrucción de retardo si el resultado de ejecutar la instrucción anterior modifica el contenido del Contador de Programa (Ej: GOTO ó CALL).
  • 40. 40 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica MODO SLEEP Los microcontroladores PIC pueden trabajar en dos modos distintos:  Modo Normal: ejecutando las instrucciones  Modo Dormido o de bajo consumo: se suspende la ejecución  El consumo de un microcontrolador depende de su frecuencia de trabajo, a más frecuencia más consumo.  El modo dormido supone un ahorro de consumo porque el oscilador del microcontrolador deja de oscilar, por tanto no se ejecutan instrucciones.  En este modo “dormido” se entra por software cuando se ejecuta la instrucción SLEEP
  • 41. 41 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica  Al entrar en modo dormido, el bit PD (STATUS<3>) se pone a 0 y el bit TO (STATUS<4>) se pone a 1, estos bits indican que se entró en ese modo para conocimiento posterior en tiempo de ejecución. A continuación el oscilador deja de oscilar. Los pines asociados a Puertos de Entrada/Salida mantienen el valor previo a la ejecución de la instrucción SLEEP.  Si está habilitado el WATCHDOG (en la palabra de configuración), su temporizador se pondrá a cero al ejecutar la instrucción SLEEP, pero se mantendrá “corriendo” y podría desbordar ya que el Watchdog tiene un oscilador RC independiente del propio del microcontrolador.  El microcontrolador puede salir del modo de bajo consumo por alguno de los siguientes motivos:  1. Un RESET externo provocado en el pin MCLR.  2. Desbordamiento del WATCHDOG.  3. Interrupción provocada por algún evento de los periféricos que pueden generarlos sin la presencia del oscilador. MODO SLEEP
  • 42. 42 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica RESET DEL MCU Los PIC16F87X tienen 6 posibles fuentes de RESET del MCU:  Power-on Reset (POR) -> Reset de Alimentación del Microcontrolador  MCLR Reset durante funcionamiento normal -> Activación del pin de Reset en modo normal  MCLR Reset durante SLEEP -> Activación del pin de Reset en modo de bajo consumo  WDT Reset (durante funcionamiento normal) -> Desbordamiento del Watchdog en modo normal  WDT Wake-up (durante SLEEP) -> Desbordamiento del Watchdog en modo de bajo consumo  Brown-out Reset (BOR) -> Reset por caída temporal de la alimentación  La mayoría de los registros del mapa de memoria de datos no se ven afectados por ningún tipo de RESET. No obstante, hay muchos otros registros que son “reseteados” a un valor determinado si se produce un POR, un MCLR Reset ó WDT Reset durante funcionamiento normal, un MCLR Reset durante SLEEP ó un BOR.
  • 43. 43 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica PERRO GUARDIÁN O WATCHDOG  El temporizador Watchdog es un temporizador existente en el microcontrolador basado en un oscilador RC interno, independiente del oscilador del microcontrolador  Este oscilador RC interno no tiene nada que ver con un posible oscilador RC externo conectado a la patilla OSC1/CLKI.  Si está activo, durante el funcionamiento normal del microcontrolador, un desbordamiento (ó time-out) del Watchdog provoca un Reset del microcontrolador (Watchdog Timer Reset).  Para que no se desborde, cada cierto tiempo y antes de que llegue al límite, se debe ejecutar una instrucción CLRWDT que “limpia” el Watchdog y le hace comenzar una nueva cuenta desde cero.  Si el dispositivo está en modo dormido, un desbordamiento del watchdog provoca que el micro despierte y continue con el funcionamiento normal (Watchdog Timer Wake-Up) con la instrucción que sigue a SLEEP.  El bit TO del registro STATUS se pone a cero tras un desbordamiento del Watchdog.
  • 44. 44 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica  Un preescaler es un divisor de frecuencia que puede hacer que se cuente antes el número de desbordamientos del WDT y hacer así que el tiempo que tarda en resetear al microcontrolador sea más largo. Ese divisor de frecuencia está compartido con el TMR0 y por tanto, si se usa para el TMR0 no se puede usar para el WATCHDOG y viceversa.  El divisor de frecuencia del WATCHDOG viene definido por unos bits del registro OPTION:  PSA: a quién se le asigna el divisor.  PS2-PS1-PS0: cuál es el factor de división de la frecuencia: 000: 1:2 para TMR0 / 1:1 para WDT. 100: 1:32 para TMR0 / 1:16 para WDT. 001: 1:4 para TMR0/ 1:2 para WDT. 101: 1:64 para TMR0 / 1:32 para WDT. 010: 1:8 para TMR0 / 1:4 para WDT. 110: 1:128 para TMR0 / 1:64 para WDT. 011: 1:16 para TMR0 / 1:8 para WDT. 111: 1:256 para TMR0 / 1:128 para WDT. PERRO GUARDIÁN O WATCHDOG
  • 45. 45 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Los PIC16F87XA tienen hasta 15 posibles fuentes de interrupción, entre otras:  Escritura o lectura del puerto esclavo paralelo (PSPIF)  Desbordamiento del TMR0  Desbordamiento del TMR1  Desbordamiento del TMR2  Captura de un módulo CCP (CCPxIF).  Comparacion del modulo CCP en modo “disparo de evento especial”.  Módulo SSP al detectar un bit de START ó STOP  Módulo SSP al transmitir o recibir en modo esclavo  Módulo USART al RX o TX (modo síncrono) (RCIF ó TXIF).  Al finalizar una conversión A/D  Al completar una escritura en EEPROM (EEIF).  Al modificarse el estado de salida de alguno de los comparadores (CMIF).  Interrupción externa por flanco en el pin RB0/INT (INTF).  Interrupción por cambio en los valores de los pines RB4 a RB7 del PORTB (RBIF). INTERRUPCIONES
  • 46. 46 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica INTERRUPCIONES  Se dispone de un bit de habilitación de interrupciones global GIE (INTCON<7>) que permite deshabilitar todas las interrupciones (si está a 0). Cuando el bit GIE está a 1, si una interrupción tiene su flag a 1 y sus bits de habilitación a 1, el microcontrolador terminará la instrucción que se está ejecutando en ese instante y, a continuación, pasará a ejecutar la posición 4 de la memoria de programa que corresponde a la posición del vector de interrupción y que es el mismo para todas las interrupciones. Las fuentes de interrupción pueden deshabilitarse individualmente utilizando sus máscaras o bits de habilitación (bits acabados en “E”).  El bit GIE se pone a 0 tras un RESET. Por tanto, al principio las interrupciones están desactivadas.  Al producirse el salto a la rutina o programa de tratamiento de la interrupción, el bit GIE se pone a 0 deshabilitando el resto de interrupciones, salvo que por software se vuelva a poner a 1 ese bit GIE. El retorno del programa de tratamiento de interrupción (RETFIE) coloca en la máscara global GIE el valor 1, además de recuperar el PC de la pila hardware.  Los bits de flags pueden ponerse a 1 independientemente de que sus bits de habilitación estén o no a 1, ya que indican eventos.
  • 48. 48 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica SALVANDO EL CONTEXTO  Cuando se produce una interrupción sólo se guarda en la pila hardware interna el valor del PC.  Normalmente, se deberán salvar algunos otros registros para no perder su contenido al regresar al programa principal y tras haber pasado por la rutina de interrupción, máxime cuando se ignora cuándo se va a producir el salto a ese programa de tratamiento de la interrupción (PTI) desde el programa principal.  Estos registros son al menos el W y el STATUS  También puede resultar interesante guardar el registro PCLATH, especialmentesi en la rutina de interrupción se cambia de página de memoria de programa.  Como no hay pila en RAM, hay que reservar posiciones de memoria en RAM que habitualmente denominaremos W_TEMP, STATUS_TEMP y PCLATH_TEMP donde se guardan los valores de W, STATUS y PCLATH al entrar en la rutina de interrupción para luego recuperarlos al salir.
  • 49. 49 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica SECUENCIA PARA SALVAR EL CONTEXTO DEL PROG. PCPAL.  ;Para salvar el contexto no podemos emplear la instrucción MOVF ;ya que afecta al registro STATUS (al bit Z), para evitarlo ;empleamos la instrucción SWAPF movwf W_tmp ;Salvamos el registro W swapf STATUS,W ; y el registro STATUS "girado" en W bcf STATUS,RP0 ;Aseguramos el paso al banco 0 bcf STATUS,RP1 ;poniendo a 0 los dos bits de selección de ;banco movwf STATUS_tmp ;Guardamos en el banco 0 STATUS girado movf PCLATH,W ;Salvamos también PCLATH en W movwf PCLATH_tmp ;y ahora en una posición auxiliar del ;banco 0 Siempre se debe hacer así o de una manera similar (si se guardan más registros) al principio de un PTI
  • 50. 50 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica  ;Para recuperar los registros salvados no podemos usar MOVF ;porque modifica a STATUS, para evitarlo usamos la instrucción ;SWAPF movf PCLATH_tmp,W ;Recuperamos PCLATH movwf PCLATH ;directamente swapf STATUS_tmp,W ;Recuperamos el registro STATUS con ;un SWAPF movwf STATUS ;ahora estamos en el banco de partida swapf W_tmp,F ;Recuperamos también el W con dos ;SWAPF swapf W_tmp,W ;para evitar la instrucción MOVF retfie ;Ahora ya podemos retornar del PTI SECUENCIA PARA RECUPERAR EL CONTEXTO DEL PROG. PCPAL.
  • 52. 52 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Ensamblador  El lenguaje ensamblador expresa las instrucciones de una forma más natural al hombre que el lenguaje máquina (0 y 1) a la vez que muy cercana al microcontrolador, ya que cada una de esas instrucciones se corresponde con otra en código máquina.  El lenguaje ensamblador trabaja con nemónicos, que son grupos de caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar.  La traducción de los nemónicos a código máquina la realiza un programa ensamblador: MPASM. El programa escrito en lenguaje ensamblador se denomina código fuente (*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente código máquina, que suele tener la extensión *.hex.
  • 53. 53 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Código fuente Está compuesto por una sucesión de líneas de texto.  Cada línea puede estructurarse en hasta cuatro campos o columnas separados por uno o más espacios o tabulaciones entre sí.  Campo de etiquetas. Expresiones alfanuméricas escogidas por el usuario para identificar una determinada línea. Todas las etiquetas tienen asignado el valor de la posición de memoria en la que se encuentra el código al que acompañan.  Campo de código. Corresponde al nemónico de una instrucción, de una directiva o de una llamada a macro.  Campo de operandos y datos. Contiene los operandos que precisa el nemónico utilizado. Según el código puede haber dos, uno o ningún operando.  Campo de comentarios. Dentro de una línea, todo lo que se encuentre a continuación de un punto y coma (;) será ignorado por el programa ensamblador y considerado como comentario.
  • 54. 54 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Campo de código Puede estar ocupado por:  Instrucciones: son aquellos nemónicos que son convertidos por el ensamblador en código máquina que puede ejecutar el microcontrolador. Cada nemónico se convierte en una palabra en la memoria de programa.  Directivas: Pseudoinstrucciones que controlan el proceso de ensamblado del programa, pero no son parte del código. Son indicaciones al programa ensamblador de cómo tiene que generar el código máquina.  Macros: Secuencia de nemónicos que pueden insertarse en el código fuente del ensamblador de una manera abreviada mediante una simple llamada.
  • 55. 55 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Decimal .<valor>d’<valor>’D’<valor>’ Hexadecimal 0x<valor>h’<valor>’H’<valor>’ <valor>h .<valor>H Octal o’<valor>’O’<valor>’ Binario b’<valor>’B’<valor>’ ASCII ‘<carácter>’a’<carácter>’A’<carácter>’ Cadena “<cadena>” TIPO SINTAXIS Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un cero para no confundirlas con una etiqueta. Campo de operandos y datos
  • 56. 56 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Juego de instrucciones  Es un juego reducido de 35 instrucciones muy simples y rápidas.  La mayoría de las instrucciones se ejecuta en 4 ciclos de reloj; los saltos se ejecutan en 8.  Todas las instrucciones tienen la misma longitud: 14 bits. Instrucciones de CARGA NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS clrf f 00 → (f) Z clrw 00 → (W) Z movf f,d (f) → (destino) Z movlw k k → (W) Ninguno movwf f (W) → (f) Ninguno
  • 57. 57 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Juego de instrucciones Instrucciones de BIT NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS bcf f,b Pone a 0 el bit ‘b’ del registro ‘f’ Ninguno bsf f,b Pone a 1 el bit ‘b’ del registro ‘f’ Ninguno Instrucciones ARITMÉTICAS NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS addlw k (W) + k → (W) C – DC - Z addwf f,d (W) + (f) → (destino) C – DC - Z decf f,d (f) - 1 → (destino) Z incf f,d (f) + 1 → (destino) Z sublw k K - (W) → (W) C – DC - Z subwf f,d (f) - (W) → (destino) C – DC - Z
  • 58. 58 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Instrucciones LÓGICAS NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS andlw k (W) AND k → (W) Z andwf f,d (W) AND (f) → (destino) Z comf f,d (/f) → (destino) Z iorlw k (W) OR k → (W) Z iorwf f,d (W) OR (f) → (destino) Z rlf f,d Rota (f) a izquierda → (destino) C rrf f,d Rota (f) a derecha → (destino) C swap f,d Intercambia nibbles (f) → (destino) Ninguno xorlw k (W) XOR k → (W) Z xorwf f,d (W) XOR (f) → (destino) Z Juego de instrucciones
  • 59. 59 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Instrucciones de SALTO NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS btfsc f,b Salta si el bit ‘b’ de ‘f’ es 0 Ninguno btfss f,b Salta si el bit ‘b’ de ‘f’ es 1 Ninguno decfsz f,d (f) - 1 → (destino) y salta si es 0 Ninguno incfsz f,d (f) + 1 → (destino) y salta si es 0 Ninguno goto k Salta a la dirección ‘k’ Ninguno Juego de instrucciones
  • 60. 60 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Instrucciones de manejo de SUBRUTINAS NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS call k Llamada a subrutina Ninguno retfie Retorno de una interrupción Ninguno retlw k Retorno con un literal en (W) Ninguno return Retorno de una subrutina Ninguno Juego de instrucciones
  • 61. 61 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Instrucciones ESPECIALES NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS clrwdt Borra Timer del Watchdog /TO - /PD nop No operación Ninguno sleep Entra en modo de bajo consumo /TO - /PD Juego de instrucciones
  • 62. 62 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica  Controlan el proceso de ensamblado del programa, pero no son parte del mismo (también se conocen como pseudoinstrucciones).  Hay más de 50 directivas reconocidas por MPASM. A continuación veremos algunas de las más utilizadas.  END Es la única directiva obligatoria. Indica al ensamblador dónde debe detener el proceso. Debe colocarse en la última línea del programa.  <etiqueta> EQU <expresión> El valor <expresión> es asignado a <etiqueta>. Estas directivas se suelen colocar al principio del programa y habitualmente se usan para definir constantes y direcciones de memoria.  [<etiqueta>] ORG <expresión> Las instrucciones del código fuente que siguen a esta directiva se ensamblan a partir de la posición indicada por <expresión>. Directivas
  • 63. 63 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica __CONFIG <expresión> [& <expresión> & ... & <expresión>] Permite indicar la configuración elegida para la grabación del PIC. Ejemplo: __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC LIST P=16F877 Indica el tipo de microcontrolador utilizado. INCLUDE <p16F877.inc> o INCLUDE “p16F877.inc” Incluye en el programa un fichero donde se definen las etiquetas con las que se nombra a los diferentes registros y sus bits. Este fichero se encuentra en el directorio principal del programa ensamblador. Puede usarse esta directiva para incluir cualquier otro fichero (El fichero de inclusión no puede terminar con una directiva END). Directivas
  • 65. 65 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Registros FSR más utilizados y bancos donde se ubican en la RAMBanco 0:  PORTA  PORTB  PORTC  PORTD  PORTE  TMR0  STATUS (en los dos bancos)  INTCON (en los dos bancos)  PCLATH (en los dos bancos)  Banco 1:  TRISA  TRISB  TRISC  TRISD  TRISE  OPTION_REG Después del RESET de encendido, estamos en el banco 0. La selección de banco se realiza mediante los bits RP0 y RP1 que se encuentran en el registro STATUS
  • 66. 66 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Inicialización La secuencia a seguir en el inicio es: LIST P=16F877 ;Tipo de procesador include P16F877.INC ;incluye fichero de símbolos y etiquetas ;se pueden incluir otros ficheros ;aquí reservamos las posiciones de memoria de datos que necesitemos a partir ;de la posición 0x20 org 0x00 ;inicio en el vector de Reset (posición 0 de la ;memoria de programa) goto Inicio ;va a la primera instrucción del programa ; si se van a producir interrupciones, debemos tener en cuenta que el vector de ; interrupción se encuentra en la posición 4 de la memoria de programa, por lo ; que habrá que añadir: org 0x04 ; vector de interrupción goto trata_interrupción ; va al programa de tratamiento de la ;interrupción
  • 67. 67 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Configuración de los puertos  Los puertos (que están en el banco 0) tienen unos registros asociados, TRIS (en el banco 1) que permiten configurar cada una de sus patillas como entrada o salida.  Después del RESET de encendido, estos registros TRIS tienen todos sus bits a 1 (los puertos correspondientes están configurados como entradas). Ejemplo: Queremos que los bits del puerto A <7:5> sean salidas y los bits <4:0> sean entradas bsf STATUS,RP0 ;pasamos al banco 1 movlw b'00011111' ;configuramos PORTA<7:5> como movwf TRISA ;salidas y PORTA<4:0> como entradas, ;aunque esto último no es necesario.
  • 68. 68 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Operaciones con literales  Todas las operaciones con literales se realizan con el registro W.  Para cargar, sumar, etc. un registro F con un literal se debe hacer en dos pasos:  1º- Se realiza la operación con W  2º- Se carga W en el registro F. Ejemplo 1: cargar el registro OPTION_REG con 0000 0110. movlw b'00000110' ;cargamos el registro option_reg... movwf OPTION_REG ;...con el valor indicado Ejemplo 2: sumar dos valores inmediatos (p.e. los decimales 12 y 7) movlw 0x0C ;carga el 1er. sumando en W addlw 0x07 ;le sumamos el 2º sumando movwf Resultado ;guardamos el resultado ;antes hemos reservado una posición de memoria RAM para el resultado, a partir de la 0X20 (banco 0 en este caso) con la directiva EQU o bien con la directiva CBLOK. ; con EQU: Resultado EQU 0x20 ;con CBLOK: CBLOK 0x20 Resultado ENDC
  • 69. 69 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Obtener parte de un registro Se hace una AND con 1s. Ejemplo : Queremos quedarnos con la parte alta del registro REG. MOVF REG, W ;pasamos el contenido del registro a W ANDLW 0xF0 ;hacemos la AND con F0 para obtener la parte alta ;de REG, el resultado queda en W Otra forma: MOVLW 0xF0 ;cargamos W con el literal F0 ANDWF REG, 0 ;hacemos la AND entre W y REG y dejamos el ;resultado en W
  • 70. 70 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Comprobar si dos registros son igualesSe utiliza la instrucción XORWF, por lo que se hace la XOR entre W y uno de los registros. Ejemplo: saber si el registro CONTADOR que es un registro que se inicializa a 0 y se va incrementando es igual al registro FIN, en cuyo caso se termina el programa; si no, incrementamos CONTADOR. MOVF CONTADOR,W ; cargamos W con el contenido de CONTADOR XORWF FIN ; hacemos la XOR entre W y FIN BTFSS STATUS,Z ; miramos si el resultado ha sido cero; INCF CONTADOR ; si no, se incrementa CONTADOR GOTO END ; si sí, salta la siguiente instrucción y va a GOTO END Otra opción es restar ambos registros utilizando el registro W; en este ejemplo sólo nos interesa saber si son o no son iguales.MOVF CONTADOR, W ;cargamos W con el valor de CONTADOR SUBWF FIN, W ; restamos FIN-CONTADOR y lo dejamos en W BTFSC STATUS,Z ; si Z=0, salta ya que no son iguales GOTO Iguales ; sí, son iguales GOTO NoIguales ; no son iguales En este caso hemos utilizado la instrucción BTFSC. Si la comparación es entre un registro y un literal, se cargaría W con el contenido del registro y se haría la XOR entre W y el literal con la instrucción XORLW
  • 71. 71 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Interrupciones  En las interrupciones el proceso que se sigue es el que muestra la figura.  Cuando se origina una interrupción el bit GIE (habilitación global de interrupciones) del registro INTCON es puesto a 0, lo que impide cualquier otra interrupción. El bit de flag correspondiente se pone a 1 y debe borrarse por software. La habilitación de una deter- minada interrupción exige poner a 1 el bit GIE y el corres- pondiente bit de habilitación de la interrupción particular; ambos se encuentran en el registro INTCON. La instrucción RETFIE vuelve a poner GIE a 1. El registro INTCON está en el banco 0 y el 1
  • 72. 72 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica  Hay que tener en cuenta que al principio de la interrupción hay que salvaguardar los registros W y STATUS, a veces también el PCLATH. PTI movwf W_tmp ;Salvamos el registro W swapf STATUS,W ; y el registro STATUS "girado" en W bcf STATUS,RP0 ;Aseguramos el paso al banco 0 bcf STATUS,RP1 ;poniendo a 0 los dos bits de selección de banco movwf STATUS_tmp ;Guardamos en el banco 0 STATUS girado movf PCLATH,W ;Salvamos también PCLATH en W movwf PCLATH_tmp ;y ahora en una posición auxiliar del banco 0  Al final del PTI, antes de RETFIE hay que recuperarlos. movf PCLATH_tmp,W ;Recuperamos PCLATH directamente movwf PCLATH swapf STATUS_tmp,W ;Recuperamos el registro STATUS con un SWAPF movwf STATUS ;ahora estamos en el banco de partida swapf W_tmp,F ;Recuperamos también el W con dos SWAPF swapf W_tmp,W ;para evitar la instrucción MOVF  retfie Interrupciones
  • 73. 73 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica  Es un registro que se encuentra en el banco 0 de la RAM.  Es un temporizador que se incrementa con cada pulso del oscilador interno o con un reloj externo que se selecciona mediante el bit T0CS del registro OPTION_REG que se encuentra en el banco 1: T0CS =0 para el reloj interno.  También tiene la posibilidad de aplicarle un divisor de frecuencia (prescaler) de 8 bits que comparte con el WDT. El bit PSA (OPTION_REG <3>) a 0 le asigna el prescaler al TMR0 y los bits PS2-PS0 seleccionan por cuánto se divide la frecuencia. Se puede leer y escribir en TMR0 y cuando se desborda puede producir una interrupción. Ejemplo: Se pretende que cada 200ms. se produzca un determinado evento por interrupción del TMR0 utilizando el oscilador interno de 4 MHz y sabiendo que cada ciclo de instrucción dura 4 ciclos del oscilador. Como un solo desbordamiento del TMR0 sólo permite una temporización de aproximadamente 65ms tendremos que hacer que se desborde varias veces. Vamos a hacer que se desborde 20 veces para lo que tenemos que precargar el TMR0 para que se desborde a los 10ms TMR0 temp TMR0 = [(256 – carga) · PS + 2] · Tinstr Elegimos PS=128 Carga = 180 Hay que cargar el reg. OPTION_REG con el binario: 00000110 Para permitir las interrupciones el registro INTCON debe cargarse con el binario 10100000. (Mirar la configuración de ambos registros)
  • 74. 74 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica Interrupción RBI  Interrupción RBI es una interrupción producida por el cambio de estado en alguna de las líneas RB4, RB5, RB6 o RB7. Hay que configurar esas líneas como entradas y cargar el INTCON para permitir la interrupción. Ejemplo: Vamos a utilizar la interrupción RBI para encender unos LEDs conectados a los bits RB0, RB1, RB2 y RB3 BSF STATUS, RP0 ;pasamos al banco 1 para configurar el puerto B MOVLW 0XF0 ;RB<4,7> entradas, RB<0,3> salidas MOVWF TRISB BCF STATUS, RP0 ;volvemos al banco 0 CLRF PORTB ;para inicializar el puerto (LEDs apagados) MOVLW b’10001000 ;habilitamos las interrupciones generales MOVWF INTCON ;y la particular poniendo GIE y RBIE a 1 Como en todas las interrupciones al principio del programa hay que poner: ORG 0x04 GOTO PTI Al principio del PTI hay que salvar los registros W y STATUS y al final del mismo hay que recuperarlos y borrar el flag RBIF
  • 75. 75 Universidad de Oviedo 6.Microcontroladores.PIC Tecnología Electrónica ;Escribir un programa que sume dos valores inmediatos (p.e. los decimales 12 y 7) List p=16F877 ;tipo de procesador include P16F877.INC ;incluye fichero de símbolos y ;etiquetas Resultado equ 0x20 ;para almacenar el resultado org 0x00 ;vector de Reset goto Inicio org 0x05 ;saltamos el vector de ;interrupción Inicio movlw 0x0C ;carga el 1er. sumando en W addlw 0x07 ;le sumamos el 2º sumando movwf Resultado ;guardamos el resultado Stop nop ;ponemos punto de parada end ;fin del programa fuente Suma de valores inmediatos