Introduccin Tecnologa Electrnica Universidad de Oviedo Microcontroladores circuitos

  • Slides: 75
Download presentation
Introducción Tecnología Electrónica

Introducción Tecnología Electrónica

Universidad de Oviedo Microcontroladores circuitos integrados que incorporan todos los bloques funcionales de un

Universidad de Oviedo Microcontroladores circuitos integrados que incorporan todos los bloques funcionales de un Sistema Microprocesador en un único encapsulado. 6. Microcontroladores. PIC Son Necesitan una tensión continua (5 V, 3. 3 V, 2. 5 V, 1. 5 V. . . ) 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. Tecnología Electrónica 2

Universidad de Oviedo Sistema mínimo microprocesador 6. Microcontroladores. PIC El sistema mínimo está basado

Universidad de Oviedo Sistema mínimo microprocesador 6. Microcontroladores. PIC 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. Bus de Direcciones Formada por dos bloques: Unidad de Control y Unidad de MEMORIA UDS. E / S CPU Proceso. • Memoria, donde residen las Bus de Datos instrucciones del programa y sus datos. Bus de Control • Módulos E/S, elementos encargados de recibir y entregar Reloj información al exterior. 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. Tecnología Electrónica 3

Universidad de Oviedo Microprocesadores y microcontroladores 6. Microcontroladores. PIC Sistema Microprocesador (varios C. I.

Universidad de Oviedo Microprocesadores y microcontroladores 6. Microcontroladores. PIC Sistema Microprocesador (varios C. I. en una PCB) Microcontrolador (único C. I. ) Tecnología Electrónica 4

Universidad de Oviedo Microprocesadores y microcontroladores 6. Microcontroladores. PIC Tarjeta de Sistema Microprocesador para

Universidad de Oviedo Microprocesadores y microcontroladores 6. Microcontroladores. PIC Tarjeta de Sistema Microprocesador para control C. I. Microcontrolador Tecnología Electrónica 5

Sistemas empotrados Universidad de Oviedo • Sistemas que incorporan microcontroladores (o microprocesadores) para una

Sistemas empotrados Universidad de Oviedo • Sistemas que incorporan microcontroladores (o microprocesadores) para una tarea específica pero que no son “programables” directamente por el usuario 6. Microcontroladores. PIC • 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. Tecnología Electrónica 6

6. Microcontroladores. PIC Sistemas empotrados Evolución Microprocesadores: Computadores 75 Millones Microprocesadores/año Universidad de Oviedo

6. Microcontroladores. PIC Sistemas empotrados Evolución Microprocesadores: Computadores 75 Millones Microprocesadores/año Universidad de Oviedo Evolución Microcontroladores: Sistemas Empotrados año / s re o d ola r t n o c icro M es n o l Mil 0 250 Tecnología Electrónica 7

Microcontroladores PIC Universidad de Oviedo • Arquitectura Harvard: buses internos separados para memoria de

Microcontroladores PIC Universidad de Oviedo • Arquitectura Harvard: buses internos separados para memoria de datos (8 bits) y de programa (12, 14 ó 16 bits depende de la familia) 6. Microcontroladores. PIC • 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 Tecnología Electrónica 8

ARQUITECTURA HARVARD • El tiempo de acceso se mejora respecto a la arquitectura von

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. Tecnología Electrónica

Microcontroladores PIC. Características Universidad de Oviedo • Eficiencia del código: permiten gran compactación de

Microcontroladores PIC. Características Universidad de Oviedo • Eficiencia del código: permiten gran compactación de programas • Rapidez de ejecución: a f de 20 MHz 5 millones de instr. /seg. 6. Microcontroladores. PIC • 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 Tecnología Electrónica 10

Familias de PIC Universidad de Oviedo 6. Microcontroladores. PIC Familia PIC 16 C 5

Familias de PIC Universidad de Oviedo 6. Microcontroladores. PIC Familia PIC 16 C 5 X • 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 PIC 16 CXXX/16 FXXX • 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 Tecnología Electrónica 11

Universidad de Oviedo Familia PIC 16 CXXX/16 FXXX • Puertos de Entrada/Salida • Puerto

Universidad de Oviedo Familia PIC 16 CXXX/16 FXXX • Puertos de Entrada/Salida • Puerto Esclavo Paralelo (PSP) 6. Microcontroladores. PIC • Temporizadores/contadores (TMR 0, TMR 1, TMR 2) • Captura / Comparación / PWM (CCP 1 y CCP 2) • 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 Tecnología Electrónica 12

Universidad de Oviedo Familia PIC 16 CXXX/16 FXXX 368 x 8 Microcontrolador PIC 16

Universidad de Oviedo Familia PIC 16 CXXX/16 FXXX 368 x 8 Microcontrolador PIC 16 F 877 (gama media) Puertos de E/S 6. Microcontroladores. PIC 8 K x 14 Temporizadores Puerto Esclavo Paralelo Módulos CCP SSP 256 x 8 Conversor A/D Tecnología Electrónica USART 13

PIC. Proceso de diseño Universidad de Oviedo 6. Microcontroladores. PIC Diseño software: el micro

PIC. Proceso de diseño Universidad de Oviedo 6. Microcontroladores. PIC 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 Emulación o Depuración sobre PCB Edición del código, 1ª depuración y simulación Grabación del micro Tecnología Electrónica 14

PIC 16 F 877 ORGANIZACIÓN DE LA MEMORIA Copyright ATE Tecnología Electrónica

PIC 16 F 877 ORGANIZACIÓN DE LA MEMORIA Copyright ATE Tecnología Electrónica

Universidad de Oviedo Organización de la memoria El PIC 16 F 877 dispone de

Universidad de Oviedo Organización de la memoria El PIC 16 F 877 dispone de tres tipos de memoria: • Memoria de programa 6. Microcontroladores. PIC Consta de 8192 posiciones (8 Kwords) 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. Tecnología Electrónica 16

Universidad de Oviedo Memoria de datos RAM 6. Microcontroladores. PIC Memoria de programa Memoria

Universidad de Oviedo Memoria de datos RAM 6. Microcontroladores. PIC Memoria de programa Memoria EEPROM 156 X 8 Tecnología Electrónica 17

Universidad de Oviedo Memoria de programa • La información contenida en esta memoria se

Universidad de Oviedo Memoria de programa • La información contenida en esta memoria se graba previamente mediante un equipo (programador o grabador). 6. Microcontroladores. PIC • Almacena todas las instrucciones del programa en ejecución, y queda grabada de forma permanente. • En el PIC 16 F 877 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. Tecnología Electrónica 18

Universidad de Oviedo Memoria de programa. Contador de programa, PC. 6. Microcontroladores. PIC Para

Universidad de Oviedo Memoria de programa. Contador de programa, PC. 6. Microcontroladores. PIC Para acceder a la memoria de programa de los PIC 16 FXXX 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 8 K posiciones de memoria de 14 bits (recordar que cada posición corresponde a una instrucción) por tanto, el PC es capaz de direccionar 8 K instrucciones. Resulta fácil saber si un PIC tiene memoria de programa suficiente para una determinada aplicación. Tecnología Electrónica 19

Universidad de Oviedo Memoria de programa. Contador de programa, PC. 6. Microcontroladores. PIC Líneas

Universidad de Oviedo Memoria de programa. Contador de programa, PC. 6. Microcontroladores. PIC Líneas de direcciones (direccionamiento) Líneas de datos de la memoria de programa ACCESO A LA MEMORIA DE PROGRAMA Tecnología Electrónica 20

Universidad de Oviedo 6. Microcontroladores. PIC Memoria de programa. Contador de programa, PC. •

Universidad de Oviedo 6. Microcontroladores. PIC Memoria de programa. Contador de programa, PC. • Los 8 K de memoria de programa disponible están divididos en 4 páginas de 2 K cada una (0 h– 7 FFh, 800 h-FFFh, 1000 h 17 FFh y 1800 h-1 FFFh). 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 = 2 K) • 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). Tecnología Electrónica 21

6. Microcontroladores. PIC Memoria de programa. Contador de programa, PC. Universidad de Oviedo CONTADOR

6. Microcontroladores. PIC Memoria de programa. Contador de programa, PC. Universidad de Oviedo 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. Tecnología Electrónica 22

Universidad de Oviedo La pila 6. Microcontroladores. PIC • La pila permite almacenar las

Universidad de Oviedo La pila 6. Microcontroladores. PIC • 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 PIC 16 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 0004 h). • 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. Tecnología Electrónica 23

Universidad de Oviedo Memoria RAM de datos La memoria de datos está distribuida en

Universidad de Oviedo 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 PIC 16 es de 512 bytes. No obstante, no están implementadas todas las posiciones de memoria en todos los bancos. • Por ejemplo, un PIC 16 F 876 sólo tiene implementadas 368 posiciones de memoria de datos. 6. Microcontroladores. PIC • 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 • Tecnología Electrónica 24

Memoria RAM de datos • Sirve para almacenar todos los datos que se manejan

Memoria RAM de datos • 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 PIC 16 F 877 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 00 h a 1 Fh del Banco 0, de 80 h a 9 Fh del Banco 1, de 100 h a 10 F en el Banco 2 y de 180 h a 18 Fh del Banco 3. Algunos son accesibles desde dos o más bancos. Ø Los registros de propósito general ocupan 368 posiciones de memoria. Tecnología Electrónica

STATUS PORTB 6. Microcontroladores. PIC PORTB La memoria de datos Universidad de Oviedo Tecnología

STATUS PORTB 6. Microcontroladores. PIC PORTB La memoria de datos Universidad de Oviedo Tecnología Electrónica 26

Universidad de Oviedo MODOS DE DIRECCIONAMIENTO 6. Microcontroladores. PIC La memoria de datos está

Universidad de Oviedo MODOS DE DIRECCIONAMIENTO 6. Microcontroladores. PIC 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 04 h, 84 h, 104 h o 184 h), es decir, el registro FSR actúa como puntero de la posición de memoria con la que se pretende operar. Memoria de datos Tecnología Electrónica 27

Memoria de datos: Direccionamiento. Universidad de Oviedo 6. Microcontroladores. PIC DIRECCIONAMIENTO DIRECTO Tecnología Electrónica

Memoria de datos: Direccionamiento. Universidad de Oviedo 6. Microcontroladores. PIC DIRECCIONAMIENTO DIRECTO Tecnología Electrónica BANCO RP 1: RP 0 0 00 1 01 2 10 3 11 28

Universidad de Oviedo 6. Microcontroladores. PIC Direccionamiento indirecto 1) SE LEE EL REGISTRO CONTENIDO

Universidad de Oviedo 6. Microcontroladores. PIC 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 (00 h, 80 h, 100 h ó 180 h) LA INSTRUCCIÓN SE EJECUTA SOBRE EL REGISTRO INDICADO EN LA INSTRUCCIÓN COMPLEMENTADO CON LOS BITS RP 1: RP 0 DEL REGISTRO STATUS (DIRECCIONAMIENTO DIRECTO) 3) SI EL REGISTRO CORRESPONDE A LA POSICION DE INDF (00 h, 80 h, 100 h ó 180 h), LA INSTRUCCIÓN SE EJECUTA SOBRE EL REGISTRO INDICADO EN EL REGISTRO FSR COMPLEMENTADO CON EL BIT IRP DEL REGISTRO STATUS Sencillo ejemplo de direccionamiento indirecto donde se limpian las posiciones de memoria de datos comprendidas entre la posición 20 h y la 2 Fh (ambas incluidas) NEXT BCF STATUS, IRP MOVLW 0 x 20 MOVWF FSR CLRF INDF INCF FSR, F BTFSS FSR, 4 GOTO NEXT CONTINUE : ; dir. Indirecto, bancos 0/1 ; Inicializa puntero a RAM ; ; limpia registro INDF ; Inc puntero ; Todo limpio? ; NO, limpia siguiente ; ; SI, continua Tecnología Electrónica 29

6. Microcontroladores. PIC Registro de estado Universidad de Oviedo Tecnología Electrónica 30

6. Microcontroladores. PIC Registro de estado Universidad de Oviedo Tecnología Electrónica 30

6. Microcontroladores. PIC Registro option Universidad de Oviedo Tecnología Electrónica 31

6. Microcontroladores. PIC Registro option Universidad de Oviedo Tecnología Electrónica 31

6. Microcontroladores. PIC Registro intcon Universidad de Oviedo Tecnología Electrónica 32

6. Microcontroladores. PIC Registro intcon Universidad de Oviedo Tecnología Electrónica 32

6. Microcontroladores. PIC PIE 1 Universidad de Oviedo Tecnología Electrónica 33

6. Microcontroladores. PIC PIE 1 Universidad de Oviedo Tecnología Electrónica 33

6. Microcontroladores. PIC PIR 1 Universidad de Oviedo Tecnología Electrónica 34

6. Microcontroladores. PIC PIR 1 Universidad de Oviedo Tecnología Electrónica 34

CARACTERÍSTICAS ESPECIALES DE LOS PIC Tecnología Electrónica

CARACTERÍSTICAS ESPECIALES DE LOS PIC Tecnología Electrónica

Universidad de Oviedo CARACTERÍSTICAS ESPECIALES DE LOS PIC 6. Microcontroladores. PIC Estas características suelen

Universidad de Oviedo CARACTERÍSTICAS ESPECIALES DE LOS PIC 6. Microcontroladores. PIC 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. Tecnología Electrónica 36

Universidad de Oviedo PALABRA DE CONFIGURACIÓN 6. Microcontroladores. PIC • Todos los microcontroladores PIC

Universidad de Oviedo PALABRA DE CONFIGURACIÓN 6. Microcontroladores. PIC • 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. Tecnología Electrónica 37

OSCILADOR Universidad de Oviedo 6. Microcontroladores. PIC Los PIC 16 F 87 X pueden

OSCILADOR Universidad de Oviedo 6. Microcontroladores. PIC Los PIC 16 F 87 X 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 200 KHz) XT Crystal/Resonator (cristal de cuarzo ó resonador cerámico hasta 4 MHz) HS High Speed Crystal/Resonator (cristal de cuarzo entre 4 MHz y 20 MHz) RC Resistor/Capacitor (red RC externa hasta 4 MHz) Tecnología Electrónica 38

CICLO DE INSTRUCCIÓN Universidad de Oviedo 6. Microcontroladores. PIC Un ciclo de instrucción es

CICLO DE INSTRUCCIÓN Universidad de Oviedo 6. Microcontroladores. PIC Un ciclo de instrucción es el tiempo que se tarda en ejecutar una instrucción (salvo saltos) en el microcontrolador. En los PIC 16, un ciclo de instrucción dura 4 ciclos de reloj (Q 1, Q 2, Q 3, Q 4). 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). Tecnología Electrónica 39

MODO SLEEP Universidad de Oviedo Los microcontroladores PIC pueden trabajar en dos modos distintos:

MODO SLEEP Universidad de Oviedo 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 6. Microcontroladores. PIC Tecnología Electrónica 40

Universidad de Oviedo 6. Microcontroladores. PIC MODO SLEEP Al entrar en modo dormido, el

Universidad de Oviedo 6. Microcontroladores. PIC MODO SLEEP 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. Tecnología Electrónica 41

RESET DEL MCU Universidad de Oviedo Los PIC 16 F 87 X tienen 6

RESET DEL MCU Universidad de Oviedo Los PIC 16 F 87 X tienen 6 posibles fuentes de RESET del MCU: 6. Microcontroladores. PIC 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. Tecnología Electrónica 42

Universidad de Oviedo 6. Microcontroladores. PIC PERRO GUARDIÁN O WATCHDOG El temporizador Watchdog es

Universidad de Oviedo 6. Microcontroladores. PIC 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 OSC 1/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. Tecnología Electrónica 43

Universidad de Oviedo PERRO GUARDIÁN O WATCHDOG preescaler es un divisor de frecuencia que

Universidad de Oviedo PERRO GUARDIÁN O WATCHDOG 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 TMR 0 y por tanto, si se usa para el TMR 0 no se puede usar para el WATCHDOG y viceversa. 6. Microcontroladores. PIC Un El divisor de frecuencia del WATCHDOG viene definido por unos bits del registro OPTION: ◦ PSA: a quién se le asigna el divisor. ◦ PS 2 -PS 1 -PS 0: cuál es el factor de división de la frecuencia: 000: 1: 2 para TMR 0 / 1: 1 para WDT. 001: 1: 4 para TMR 0/ 1: 2 para WDT. 010: 1: 8 para TMR 0 / 1: 4 para WDT. 011: 1: 16 para TMR 0 / 1: 8 para WDT. 100: 1: 32 para TMR 0 / 1: 16 para WDT. 101: 1: 64 para TMR 0 / 1: 32 para WDT. 110: 1: 128 para TMR 0 / 1: 64 para 111: 1: 256 para TMR 0 / 1: 128 para Tecnología Electrónica 44

Universidad de Oviedo 6. Microcontroladores. PIC INTERRUPCIONES Los PIC 16 F 87 XA tienen

Universidad de Oviedo 6. Microcontroladores. PIC INTERRUPCIONES Los PIC 16 F 87 XA tienen hasta 15 posibles fuentes de interrupción, entre otras: ◦ Escritura o lectura del puerto esclavo paralelo (PSPIF) ◦ Desbordamiento del TMR 0 ◦ Desbordamiento del TMR 1 ◦ Desbordamiento del TMR 2 ◦ Captura de un módulo CCP (CCPx. IF). ◦ 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 RB 0/INT (INTF). ◦ Interrupción por cambio en los valores de los pines RB 4 a RB 7 del PORTB (RBIF). Tecnología Electrónica 45

6. Microcontroladores. PIC INTERRUPCIONES Universidad de Oviedo Se dispone de un bit de habilitación

6. Microcontroladores. PIC INTERRUPCIONES Universidad de Oviedo 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. Tecnología Electrónica 46

Universidad de Oviedo 6. Microcontroladores. PIC Lógica de interrupciones Tecnología Electrónica 47

Universidad de Oviedo 6. Microcontroladores. PIC Lógica de interrupciones Tecnología Electrónica 47

Universidad de Oviedo 6. Microcontroladores. PIC SALVANDO EL CONTEXTO Cuando se produce una interrupción

Universidad de Oviedo 6. Microcontroladores. PIC 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, especialmente si 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. Tecnología Electrónica 48

Universidad de Oviedo SECUENCIA PARA SALVAR EL CONTEXTO DEL PROG. PCPAL. Siempre se debe

Universidad de Oviedo SECUENCIA PARA SALVAR EL CONTEXTO DEL PROG. PCPAL. Siempre se debe hacer así o de una manera similar (si se guardan más registros) al principio de un PTI 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 6. Microcontroladores. PIC ; Para movwf W_tmp swapf STATUS, W bcf STATUS, RP 0 bcf STATUS, RP 1 movwf STATUS_tmp movf PCLATH, W movwf PCLATH_tmp ; Salvamos el registro W ; y el registro STATUS "girado" en W ; Aseguramos el paso al banco 0 ; poniendo a 0 los dos bits de selección d ; banco ; Guardamos en el banco 0 STATUS gira ; Salvamos también PCLATH en W ; y ahora en una posición auxiliar del ; banco 0 Tecnología Electrónica 49

Universidad de Oviedo SECUENCIA PARA RECUPERAR EL CONTEXTO DEL PROG. PCPAL. recuperar los registros

Universidad de Oviedo SECUENCIA PARA RECUPERAR EL CONTEXTO DEL PROG. PCPAL. recuperar los registros salvados no podemos usar MOVF ; porque modifica a STATUS, para evitarlo usamos la instrucción ; SWAPF 6. Microcontroladores. PIC ; Para movf PCLATH_tmp, W movwf PCLATH swapf STATUS_tmp, W movwf STATUS swapf W_tmp, F swapf W_tmp, W retfie PTI ; Recuperamos PCLATH ; directamente ; Recuperamos el registro STATUS con ; un SWAPF ; ahora estamos en el banco de partida ; Recuperamos también el W con dos ; SWAPF ; para evitar la instrucción MOVF ; Ahora ya podemos retornar del Tecnología Electrónica 50

Programación en ensamblador Copyright ATE Tecnología Electrónica

Programación en ensamblador Copyright ATE Tecnología Electrónica

Ensamblador Universidad de Oviedo lenguaje ensamblador expresa las instrucciones de una forma más natural

Ensamblador Universidad de Oviedo 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. 6. Microcontroladores. PIC 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. Tecnología Electrónica 52

Código fuente 6. Microcontroladores. PIC Universidad de Oviedo Está compuesto por una sucesión de

Código fuente 6. Microcontroladores. PIC Universidad de Oviedo 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 comentario. Tecnología Electrónica 53

Campo de código Universidad de Oviedo 6. Microcontroladores. PIC Puede estar ocupado por: Instrucciones:

Campo de código Universidad de Oviedo 6. Microcontroladores. PIC 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. Tecnología Electrónica 54

Universidad de Oviedo Campo de operandos y datos Las constantes hexadecimales que empiecen por

Universidad de Oviedo Campo de operandos y datos Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un cero para no confundirlas con una etiqueta. TIPO 6. Microcontroladores. PIC Decimal Hexadecimal SINTAXIS D’<valor>’ d’<valor>’ . <valor> H’<valor>’ h’<valor>’ 0 x<valor>H <valor>h Octal O’<valor>’ o’<valor>’ Binario B’<valor>’ b’<valor>’ ASCII Cadena A’<carácter>’ a’<carácter>’ . ‘<carácter>’ “<cadena>” Tecnología Electrónica 55

Juego de instrucciones Es un juego reducido de 35 instrucciones muy simples y rápidas.

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. 6. Microcontroladores. PIC Universidad de Oviedo Todas las instrucciones tienen la misma longitud: 14 bits. Instrucciones de CARGA NEMÓNICO clrf f clrw DESCRIPCIÓN FLAGS AFECTADOS 00 (f) Z 00 (W) Z Z movf f, d (f) (destino) movlw k k (W) Ninguno movwf f (W) (f) Ninguno Tecnología Electrónica 56

Universidad de Oviedo Juego de instrucciones Instrucciones de BIT 6. Microcontroladores. PIC NEMÓNICO DESCRIPCIÓN

Universidad de Oviedo Juego de instrucciones Instrucciones de BIT 6. Microcontroladores. PIC 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) C – DC - Z subwf f, d (f) - (W) (destino) C – DC - Z Tecnología Electrónica 57

Universidad de Oviedo Juego de instrucciones Instrucciones LÓGICAS 6. Microcontroladores. PIC NEMÓNICO DESCRIPCIÓN FLAGS

Universidad de Oviedo Juego de instrucciones Instrucciones LÓGICAS 6. Microcontroladores. PIC 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) xorlw k (W) XOR k (W) Z xorwf f, d (W) XOR (f) (destino) Z Ninguno Tecnología Electrónica 58

Universidad de Oviedo Juego de instrucciones 6. Microcontroladores. PIC Instrucciones de SALTO NEMÓNICO DESCRIPCIÓN

Universidad de Oviedo Juego de instrucciones 6. Microcontroladores. PIC 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 Tecnología Electrónica 59

Universidad de Oviedo Juego de instrucciones 6. Microcontroladores. PIC Instrucciones de manejo de SUBRUTINAS

Universidad de Oviedo Juego de instrucciones 6. Microcontroladores. PIC Instrucciones de manejo de SUBRUTINAS NEMÓNICO call k retfie retlw return k DESCRIPCIÓN FLAGS AFECTADOS Llamada a subrutina Ninguno Retorno de una interrupción Ninguno Retorno con un literal en (W) Ninguno Retorno de una subrutina Ninguno Tecnología Electrónica 60

Universidad de Oviedo Juego de instrucciones 6. Microcontroladores. PIC Instrucciones ESPECIALES NEMÓNICO DESCRIPCIÓN clrwdt

Universidad de Oviedo Juego de instrucciones 6. Microcontroladores. PIC Instrucciones ESPECIALES NEMÓNICO DESCRIPCIÓN clrwdt Borra Timer del Watchdog nop No operación sleep Entra en modo de bajo consumo FLAGS AFECTADOS /TO - /PD Ninguno /TO - /PD Tecnología Electrónica 61

Universidad de Oviedo 6. Microcontroladores. PIC Directivas Controlan el proceso de ensamblado del programa,

Universidad de Oviedo 6. Microcontroladores. PIC Directivas 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>. Tecnología Electrónica 62

Universidad de Oviedo Directivas __CONFIG <expresión> [& <expresión> &. . . & <expresión>] Permite

Universidad de Oviedo Directivas __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 6. Microcontroladores. PIC LIST P=16 F 877 Indica el tipo de microcontrolador utilizado. INCLUDE <p 16 F 877. inc> o INCLUDE “p 16 F 877. 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). Tecnología Electrónica 63

MANEJANDO LAS INSTRUCCIONES Lucía Marcos Tecnología Electrónica

MANEJANDO LAS INSTRUCCIONES Lucía Marcos Tecnología Electrónica

Universidad de Oviedo Registros FSR más utilizados y bancos donde se ubican en la

Universidad de Oviedo Registros FSR más utilizados y bancos donde se ubican en la RAM 6. Microcontroladores. PIC Banco 0: ◦ ◦ ◦ ◦ ◦ PORTA PORTB PORTC PORTD PORTE TMR 0 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 RP 0 y RP 1 que se encuentran en el registro STATUS Tecnología Electrónica 65

6. Microcontroladores. PIC Inicialización Universidad de Oviedo La secuencia a seguir en el inicio

6. Microcontroladores. PIC Inicialización Universidad de Oviedo La secuencia a seguir en el inicio es: LIST P=16 F 877 ; Tipo de procesador include P 16 F 877. 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 0 x 20 org 0 x 00 ; 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 0 x 04 ; vector de interrupción goto trata_interrupción ; va al programa de tratamiento de la ; interrupción Tecnología Electrónica 66

Universidad de Oviedo Configuración de los puertos Los puertos (que están en el banco

Universidad de Oviedo 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. 6. Microcontroladores. PIC 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 movlw movwf STATUS, RP 0 b'00011111' TRISA ; pasamos al banco 1 ; configuramos PORTA<7: 5> como ; salidas y PORTA<4: 0> como entradas, ; aunque esto último no es necesario. Tecnología Electrónica 67

Universidad de Oviedo Operaciones con literales 6. Microcontroladores. PIC Todas las operaciones con literales

Universidad de Oviedo Operaciones con literales 6. Microcontroladores. PIC 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 0 x 0 C ; carga el 1 er. sumando en W addlw 0 x 07 ; 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 0 X 20 (banco 0 en este caso) con la directiva EQU o bien con la directiva CBLOK. ; con EQU: Resultado EQU 0 x 20 ; con CBLOK: CBLOK 0 x 20 Resultado ENDC Tecnología Electrónica 68

Universidad de Oviedo Obtener parte de un registro 6. Microcontroladores. PIC Se hace una

Universidad de Oviedo Obtener parte de un registro 6. Microcontroladores. PIC Se hace una AND con 1 s. Ejemplo : Queremos quedarnos con la parte alta del registro REG. MOVF REG, W ANDLW alta 0 x. F 0 ; pasamos el contenido del registro a W ; hacemos la AND con F 0 para obtener la parte ; de REG, el resultado queda en W Otra forma: MOVLW ANDWFREG, 0 0 x. F 0 ; cargamos W con el literal F 0 ; hacemos la AND entre W y REG y dejamos el ; resultado en W Tecnología Electrónica 69

Universidad de Oviedo Comprobar si dos registros son iguales 6. Microcontroladores. PIC Se utiliza

Universidad de Oviedo Comprobar si dos registros son iguales 6. Microcontroladores. PIC Se 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 No. Iguales ; 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 Tecnología Electrónica 70

Interrupciones Universidad de Oviedo En las interrupciones el proceso que se sigue es el

Interrupciones Universidad de Oviedo 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 determinada interrupción exige poner a 1 el bit GIE y el correspondiente 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 6. Microcontroladores. PIC Tecnología Electrónica 71

Universidad de Oviedo Interrupciones Hay que tener en cuenta que al principio de la

Universidad de Oviedo Interrupciones 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. 6. Microcontroladores. PIC PTI ; Salvamos el registro W ; y el registro STATUS "girado" en W ; Aseguramos el paso al banco 0 ; poniendo a 0 los dos bits de selección de banco ; Guardamos en el banco 0 STATUS girado ; Salvamos también PCLATH en W ; y ahora en una posición auxiliar del banco 0 Al final del PTI, antes de RETFIE hay que recuperarlos. SWAPF movwf W_tmp swapf STATUS, W bcf STATUS, RP 0 bcf STATUS, RP 1 movwf STATUS_tmp movf PCLATH, W movwf PCLATH_tmp movf PCLATH_tmp, W movwf PCLATH swapf STATUS_tmp, W movwf STATUS swapf W_tmp, F swapf W_tmp, W retfie ; Recuperamos PCLATH directamente ; Recuperamos el registro STATUS con un ; ahora estamos en el banco de partida ; Recuperamos también el W con dos SWAPF ; para evitar la instrucción MOVF Tecnología Electrónica 72

TMR 0 Universidad de Oviedo Es un registro que se encuentra en el banco

TMR 0 Universidad de Oviedo 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 T 0 CS del registro OPTION_REG que se encuentra en el banco 1: T 0 CS =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 TMR 0 y los bits PS 2 PS 0 seleccionan por cuánto se divide la frecuencia. Se puede leer y escribir en TMR 0 y cuando se desborda puede producir una interrupción. Ejemplo: Se pretende que cada 200 ms. se produzca un determinado evento por interrupción del TMR 0 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 TMR 0 sólo permite una temporización de aproximadamente 65 ms tendremos que hacer que se desborde varias veces. Vamos a hacer que se desborde 20 veces = [(256 – carga) · PS + 2]el· Tinstr para lotemp que. TMR 0 tenemos que precargar TMR 0 para que se desborde a los 10 ms Elegimos PS=128 6. Microcontroladores. PIC 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) Tecnología Electrónica 73

Interrupción RBI Universidad de Oviedo Interrupción RBI es una interrupción producida por el cambio

Interrupción RBI Universidad de Oviedo Interrupción RBI es una interrupción producida por el cambio de estado en 6. Microcontroladores. PIC alguna de las líneas RB 4, RB 5, RB 6 o RB 7. 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 RB 0, RB 1, RB 2 y RB 3 BSF STATUS, RP 0 ; pasamos al banco 1 para configurar el puerto B MOVLW 0 XF 0 ; RB<4, 7> entradas, RB<0, 3> salidas MOVWF TRISB BCF STATUS, RP 0 ; volvemos al banco 0 CLRF PORTB ; para inicializar el puerto (LEDs apagados) MOVLW b’ 1000 ; 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 0 x 04 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 Tecnología Electrónica 74

Universidad de Oviedo Suma de valores inmediatos 6. Microcontroladores. PIC ; Escribir un programa

Universidad de Oviedo Suma de valores inmediatos 6. Microcontroladores. PIC ; Escribir un programa que sume dos valores inmediatos (p. e. los decimales 12 y 7) Inicio Stop List include p=16 F 877 P 16 F 877. INC Resultado org goto org equ 0 x 00 Inicio 0 x 05 movlw addlw movwf nop end 0 x 0 C 0 x 07 Resultado 0 x 20 ; tipo de procesador ; incluye fichero de símbolos y ; etiquetas ; para almacenar el resultado ; vector de Reset ; saltamos el vector de ; interrupción ; carga el 1 er. sumando en W ; le sumamos el 2º sumando ; guardamos el resultado ; ponemos punto de parada ; fin del programa fuente Tecnología Electrónica 75