Tabla de contenido

Publicidad

Enlaces rápidos

PIC
16F87X
TRABAJO
EXPLICACIÓN
Sebastián Martín García
2º DPE

Publicidad

Tabla de contenido
loading

Resumen de contenidos para Microchip PIC 16F87X

  • Página 1 16F87X TRABAJO EXPLICACIÓN Sebastián Martín García 2º DPE...
  • Página 2: Tabla De Contenido

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN INDICE DIFERENCIAS ENTRE PIC16F84 Y 16F87X ____________________________________ 4 PIC 16F87X_________________________________________________________________ 5 16F84 16F87X __________________________________________ 5 IFERENCIAS ENTRE SENSORES ANALOGICOS MAS UTILIZADOS __________________________________ 6 LDR _______________________________________________ 7 ENSOR DE UMINOSIDAD LM35 _____________________________________________ 7 ENSOR DE EMPERATURA ORGANIZACIÓN DE LA MEMORIA__________________________________________ 8 ____________________________________________________ 9...
  • Página 3 REINICIALIZACIÓN O RESET ____________________________________________ 29 PERRO GUARDIAN (WDT: WATCHDOG TIMER) ___________________________ 30 MODO DE REPOSO O BAJO CONSUMO ____________________________________ 30 PROGRAMACIÓN DE LOS PIC 16F87X _____________________________________ 31 TEMPORIZADORES _______________________________________________________ 32 TIPOS Y CARACTERÍSTICAS GENERALES_________________________________ 33 ESTRUCTURA INTERNA Y FUNCIONAMIENTO DEL TMR1__________________ 34...
  • Página 4: Diferencias Entre Pic16F84 Y 16F87X

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN DIFERENCIAS ENTRE PIC16F84 Y 16F87X ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 5: Pic 16F87X

    La memoria RAM de datos de los PIC 16F87X posee una capacidad de 192 bytes en dos de los modelos y de 368 bytes en los otros dos. Aunque superan ampliamente los 68 bytes del 16F84 mantienen la misma estructura básica de 4 bancos...
  • Página 6: Sensores Analogicos Mas Utilizados

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN SENSORES ANALOGICOS MAS UTILIZADOS ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 7: Sensores Analógicos Más Utilizados

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN Sensores Analógicos más utilizados Aunque el PIC 16F84 sirve para un sinfín de aplicaciones, hay varias para las que este microcontrolador no sirve. Un de ellas es la que vamos a tratar en este apartado, se trata de aplicaciones en las que sea necesario un conversor A/D para su tratamiento.
  • Página 8: Organización De La Memoria

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN ORGANIZACIÓN DE LA MEMORIA ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 9: Memoria De Programa

    La memoria FLASH en la que se graba el programa de aplicación en los PIC 16F87X, puede tener una capacidad de 4K u 8K palabras de 14 bits cada una. Dicha memoria está dividida en páginas de 2K palabras y está...
  • Página 10: Instrucciones

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN INSTRUCCIONES ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 11 Instrucciones Los mismos formatos, iguales modos de direccionamiento y las mismas 35 instrucciones que tenía el PIC 16F84 sirven para todos los modelos PIC 16F87X. No obstante, en los nuevos PIC, al contener más recursos, existen nuevos registros específicos de control cuyos bits se deberán escribir o leer para su gobierno.
  • Página 12: Registros Específicos

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN REGISTROS ESPECÍFICOS ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 13: Registro De Estado (Status)

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN Registros REGISTRO DE ESTADO (STATUS) Este es el registro más usado de todos pues sus bits están destinado a controlar las funciones vitales del procesador. Por ese motivo está duplicado en las cuartas posiciones de cada banco (03h, 83h, 103h, 183h) RP1 RP0 TO# PD# Z DC C Los tres bits de menos peso son los señalizadores de ciertas condiciones en las operaciones lógico-aritméticas:...
  • Página 14: Registro De Opciones (Option)

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN REGISTRO DE OPCIONES (OPTION) Tiene las mismas funciones que tenía en el PIC 16F84: 1ª: Asigna el divisor de frecuencias al TIMER0 o al perro guardián. 2ª: Elige el rango en el que trabaja el divisor de frecuencia. 3ª: Selecciona el tipo de reloj del TIMER0, que puede ser interno o externo a través de la pastilla TOCKI.
  • Página 15: Registro Para Controlar Las Interrupciones

    XPLICACIÓN REGISTRO PARA CONTROLAR LAS INTERRUPCIONES Los PIC 16F87X tienen muchas causas que pueden originar una interrupción, 13 posibles causas los de 28 patas y 14 los de 40. Al aceptarse una interrupción se salva el valor del PC en la Pila y se carga aquel con el valor 0004h, que es el vector de interrupciones.
  • Página 16: Registro De Control De Interrupciones (Intcon)

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN 1. REGISTRO DE CONTROL DE INTERRUPCIONES (INTCON) Se trata de un registro leíble y escribible, para facilitar su acceso se ha duplicado en los cuatro bancos. Tiene la misión de controlar las interrupciones provocadas por TMR0, cambio de estado en las cuatro líneas de más peso de la Puerta B y activación en la patilla RB0/INT.
  • Página 17: Registro De Permiso De Interrupciones 1 (Pie1)

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN 2. REGISTRO DE PERMISO DE INTERRUPCIONES 1 (PIE1) Contiene los bits que permiten o prohiben las interrupciones provocadas por los periféricos internos del microcontrolador y que no estaban contempladas en INTCON. Ocupa la dirección 8Ch y para que cumplan su función, los bits de PIE1, es necesario que el PIE sea igual a 1 en INTCON, 6.
  • Página 18: Registro De Permiso De Interrupciones 2 (Pie2)

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN 3. REGISTRO DE PERMISO DE INTERRUPCIONES 2 (PIE2) Contiene los bits de permiso de interrupción de las tres causas que no figuraban en el PIE1. La de fin de escritura de la EEPROM, colisión de bus en el modo de SSP y producción de una captura o comparación en el módulo CCP2.
  • Página 19: Registro De Los Señalizadores De Interrupcion 1 Y 2 (Pir1 Pir2)

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN REGISTRO DE LOS SEÑALIZADORES DE INTERRUPCION 1 Y 2 (PIR1 y PIR2) En correspondencia con los bits de permiso/prohibición de las causas de interrupción recogidas en el registro PIE1 y PIE2, existen otros dos registros, el PIR1 y PIR2, cuyos bits actúan de señalizadores del momento en el que se origina la causa que provoca la interrupción, independientemente de si está...
  • Página 20: Distribucion Memoria Ram

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN DISTRIBUCION MEMORIA RAM INDF 100h INDF INDF INDF 180h TMR0 OPTION_REG TMR0 101h OPTION_REG 181h 102h 182h STATUS STATUS STATUS 103h STATUS 183h 104h 184h PORTA TRISA 105h 185h PORTB TRISB PORTB 106h TRISB 186h PORTC...
  • Página 21: Lectura Y Escritura Eeprom Y Flash

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN LECTURA Y ESCRITURA EEPROM Y FLASH ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 22: Lectura Y Escritura De Las Memorias Eeprom Y Flash

    2 registros, para proporcionar la dirección de la memoria a consultar y para grabar el dato de 8 bits, sin embargo, en los PIC 16F87X, no basta con un solo registro para proporcionar la dirección de memoria, ya que esta alcanza los 13 bits, y lo mismo sucede con el dato, que a su vez alcanza los 14bits.
  • Página 23: Puertas E/S

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PUERTAS E/S ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 24: Puertas De E/S

    RABAJO Y XPLICACIÓN Puertas de E/S Los microcontroladores PIC 16F87X encapsulados con 28 patas, disponen de 3 puertas de E/S (A,B,C) mientras que los de 40 patas, alcanzan 5 (A,B,C,D,E). 1. PUERTA A Solo dispone de 6 líneas (RA0-RA5), son bidireccionales y se configuran a través del registro TRISA, situado en el Banco 1.
  • Página 25: Puerta B

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN 2. PUERTA B Dispone de 8 líneas bidireccionales cuya función se elige mediante la programación del TRISB. Todas las patas de la puerta B disponen de una resistencia interna de pull-up al positivo de la alimentación. Esta va conectada cuando el bit RBPU# (es bit 7 del registro OPTION), tiene valor 0.
  • Página 26: Puerta C

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN 3. PUERTA C Consta de 8 líneas bidireccionales cuyo sentido se configura mediante el registro TRISC. Todas las patas de esta puerta tienen multiplexadas diferentes funciones: RC0/T1OSO/T1CKI: Esta línea puede actuar como E/S digital, como salida del Timer 1 o como entrada de impulsos para el Timer 1.
  • Página 27: Recursos Especiales

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN RECURSOS ESPECIALES ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 28: Palabra De Configuración

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN Recursos especiales PALABRA DE CONFIGURACIÓN Es una posición reservada de la memoria de programa FLASH que ocupa la dirección 2007h y que solo es accesible durante la programación del PIC CP0 DEBUG - BODEN CP1 CP0 PWRTE# WDTE...
  • Página 29: Palabra De Identificación

    REINICIALIZACIÓN O RESET Los PIC 16F87X disponen de diversa maneras de reinicializarse. 1º Reset por conexión de alimentación. (POR: Power on Reset) El valor de tensión de alimentación Vdd sube entre 1,2 a 1,7 V.
  • Página 30: Perro Guardian (Wdt: Watchdog Timer)

    Puerta B. 4º- Interrupción originada por alguno de los nuevos periféricos de los PIC 16F87X tales como: a) Lectura o escritura en la puerta paralela PSP. b) Interrupción del Timer 1.
  • Página 31: Programación De Los Pic 16F87X

    2º DPE RABAJO Y XPLICACIÓN PROGRAMACIÓN DE LOS PIC 16F87X La posibilidad de programar a esta subfamilia de PIC en serie, permite grabar en la memoria de código el programa de trabajo, estando colocado el Pic sobre el circuito o producto de aplicación final. Esta característica permite a los fabricantes construir y montar completamente la tarjeta de circuito impreso y dejar pendiente la grabación del programa.
  • Página 32: Temporizadores

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN TEMPORIZADORES ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 33: Tipos Y Características Generales

    RABAJO Y XPLICACIÓN TIPOS Y CARACTERÍSTICAS GENERALES En la familia de los PIC 16F87X, disponen de tres temporizadores. El TMR0, el TMR1 y el TMR2. En TMR0 es idéntico al del 16F84, sus funciones más representativas son: 1º TMR0 es un Contador/Temporizador de 8 bits.
  • Página 34: Estructura Interna Y Funcionamiento Del Tmr1

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN ESTRUCTURA INTERNA Y FUNCIONAMIENTO DEL TMR1 El TMR1 es el único Temporizador/Contador ascendente con un tamaño de 16bits, lo que requiere el uso de 2 registros concatenados de 8 bits: TMR1h : TMR1L, que son los encargados de guardar el valor del montaje en cada momento, cuando el valor llega hasta FFFFh se activa el señalizador TMR1IF y se regresa al valor inicial 0000h.
  • Página 35: Registro De Control Del Tmr1 (T1Con)

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN REGISTRO DE CONTROL DEL TMR1 (T1CON) T1CKPS1 T1CKPS0 T1OSCEN T1SYNC# TMR1CS TMR1ON El funcionamiento del TMR1 esta gobernado por el valor con el que se programan los bits del registro T1CON que ocupa la dirección 10h de la memoria RAM.
  • Página 36: Funcionamiento Y Programacion Del Tmr2

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN FUNCIONAMIENTO Y PROGRAMACION DEL TMR2 Se trata de un temporizador ascendente de 8 bits, que leer y escribir, y que también puede realizar funciones especiales para la puerta serie síncrona (SPP) y para los módulos de captura y comparación (CCP) La señal de TMR2 es interna con valor de Fosc/4, y antes de ser aplicada pasa por un predivisor de frecuencia con rangos de 1:1, 1:4, 1:16.
  • Página 37: Captura, Comparacióny Modulación De Anchura De Pulsos

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN CAPTURA, COMPARACIÓN Y MODULACIÓN DE ANCHURA DE PULSOS ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 38: Introducción A Los Módulos Ccp

    RABAJO Y XPLICACIÓN INTRODUCCIÓN A LOS MÓDULOS CCP Los microcontroladores PIC 16F87X disponen de dos módulos CCP, llamados CCP1 y CCP2, que solo se diferencian en el “Disparo Especial”. Realizan tres funciones especiales: 1º Modo captura: una pareja de registros de un módulo CCPx captura el valor que tiene el TMR1 cuando ocurre un evento especial en la pata RC2/CCP1 o en la RC1/T1OSCI/CCP2.
  • Página 39: Modo Captura

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN MODO CAPTURA La pareja CCPxH-L del módulo CCPx captura el valor de 16 bits que contiene el Timer1 cuando sucede un evento en la pata RC/CCPx de la Puerta C, que previamente ha sido configurada como entrada poniendo a 1 el bit del registro TRISC. Los eventos que pueden ocurrir sobre la pata RCy/CCPx para producir la captura del valor del TMR1 sobre la pareja de registros CCPxH-L son: 1º...
  • Página 40: Modo Comparación

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN MODO COMPARACIÓN En esta forma de trabajo, la pareja de registros CCPR1H-L compara su contenido de forma continua, con el valor del TMR1. Cuando coinciden ambos valores, la Pata Rc2/CCP1, que se halla configurada como salida, le acontece uno de los siguientes eventos de acuerdo con la programación del los bits CCP1M3-0: 1º...
  • Página 41: Modo De Modulación De Anchura De Pulsos (Pwm)

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN MODO DE MODULACIÓN DE ANCHURA DE PULSOS (PWM) Con este modo de trabajo, se consiguen impulsos lógicos cuya anchura del nivel alto es de duración variable, que son de enorme aplicación en el control de dispositivos tan populares como los motores y los triacs.
  • Página 42: El Conversor A/D

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN EL CONVERSOR ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 43: Presentación Del Conversor Analógico / Digital

    RABAJO Y XPLICACIÓN PRESENTACIÓN DEL CONVERSOR ANALÓGICO / DIGITAL Los microcontroladores PIC 16F87x poseen un conversor A/D de 10 bits de resolución y 5 canales de entrada en los modelos con 28 patas y 8 canales para los de 40 patas.
  • Página 44: Frecuencia

    10 bits. Se requiere un tiempo mínimo de 12·TAD. El valor de TAD se selecciona por software mediante los bits ADCS1:ADCS0 y en los PIC 16F87x nunca debe ser menor de 1,6 microsegundos.
  • Página 45: Estructura Interna Y Configuración Del C A/D

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN ESTRUCTURA INTERNA Y CONFIGURACIÓN DEL C A/D El bit de menos peso (ADFM) del registro ADCON1 selecciona el formato del resultado de la conversión. Si vale 1, el resultado está justificado en el registro ADRESH, que tiene sus 6 bits de más peso a 0; mientras que si vale 0 la justificación se hace sobre el registro ADRESL, que tiene sus 6 bits de menos peso a 0.
  • Página 46: Pasos A Seguir Para Realizar Una Conversión Con El Móduloc A/D

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN Pasos a seguir para realizar una conversión con el módulo C A/D: 1. Configurar el módulo C A/D • Configurar las patas que actuarán como entradas analógicas, las que trabajan como E/S digitales y las usadas para la tensión de referencia (ADCON1).
  • Página 47: Módulo De Comunicaciones Serie Síncrona Mssp

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN MÓDULO DE COMUNICACIONES SERIE SÍNCRONA MSSP ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 48: Introducción

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN INTRODUCCIÓN La comunicación serie es una forma muy apreciada de transferir datos digitales entre sistemas y circuitos integrados, dada la reducida cantidad de líneas que precisa. En los PIC16F87X se ha implantado el módulo MSSP (Master Synchronous Serial Port), que proporciona una excelente interfaz de comunicación de los microcontroladores con otros microcontroladores y diversos periféricos, entre los que destacan la memoria EEPROM serie, los...
  • Página 49: Modo Spi

    Si actuase como esclavo, la línea RC5/SCK debería configurarse como entrada y la RA5/SS# debería conectarse a tierra. PIC MAESTRO RA5/SS# RA5/SS# PIC esclavo 1 PIC esclavo 1 PIC 16F87x RC3/SDO RC4/SDI RC5/SCK ESARROLLO ROYECTOS Y ROTOTIPOS...
  • Página 50: Modo I 2 C

    SCL. Los impulsos de reloj siempre los genera el maestro y tienen la función de sincronizar las transferencias con todos los esclavos colgados a las dos líneas. PIC MAESTRO PIC esclavo 1 PIC esclavo 1 PIC 16F87x RC4/SDA RC3/SCL Concepto del bus I Dos líneas, SDA (datos) y SCL (reloj), transportan la información entre los diferentes dispositivos conectados al bus.
  • Página 51: Direccionamiento Del Bus I C

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN Direccionamiento del bus I El primer byte que envía el maestro tras la condición de inicio, es el código que determina el esclavo (7 bit de mas peso) Código 0000 0000 de llamada general Bit de menos peso (R/W#), determina si se realiza una operación de lectura o escritura •...
  • Página 52 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 • WCOL se pone a 1 si se intenta escribir en SSPBUF en condiciones no válidas. • SSPOV se pone a 1 si hay desbordamiento en SSPBUF •...
  • Página 53 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN SSPSTAT SMP CKE D/A# R/W# bit de muestreo • 1 = los bits de datos se muestran al final del periodo 0 = los bits de datos se muestran a mitad del periodo nivel de SCL y SDA en modo multimaestro •...
  • Página 54: Usart (Sci)

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN USART (SCI) ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 55: Comunicación Serie Asíncrona

    RABAJO Y XPLICACIÓN COMUNICACIÓN SERIE ASÍNCRONA Los PIC 16F87x contienen un módulo MSSP con dos puertas para comunicación serie “síncrona”, o sea, con señal de reloj. También disponen de un módulo USART, capaz de soportar la comunicación serie síncrona y asíncrona.
  • Página 56: Programas (Asm)

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMAS (ASM) ESARROLLO ROYECTOS Y ROTOTIPOS LECTRÓNICOS...
  • Página 57 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 1 Lee el estado de los 6 interruptores del entrenador (RA5-RA0) y reflejar el nivel lógico de los mismos sobre los leds RB5-RB0 conectados a la puerta B List p=16F876 include "P16F876.INC" 0x05 Inicio clrf...
  • Página 58 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 2 Control de los leds RB0 y RB1 desde el interruptor RA0. RB0 refleja el estado de RA0, RB1 el complemento de RA0 List p=16F876 include "P16F876.INC" 0x05 Inicio clrf PORTB ;Borra el Puerto B STATUS,RP0 ;Selecciona banco 1 clrf...
  • Página 59 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 3 Se trata de realizar una rotación secuencial en el encendido de cada led conectados a la puerta B del entrenador. Si RA0 = 0, la rotación será de derecha a izquierda y viceversa. Cada led permanece encendido 0.25 segundos (250 mS) List p=16F876...
  • Página 60 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 4 La interrupción del TMR0. Se trata de comprobar la interrupción provocada por el TMR0. El programa lee el estado de los interruptores conectados a RA0 y RA4 para reflejarlo en los leds conectados a RB0 y RB4 respectivamente.
  • Página 61 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN ;Este es el cuerpo principal del programa. Consiste en leer constantemente el estado de RA0 y ;RA1 para visualiza sobre RB0 y RB1. Loop btfsc PORTA,0 ;Testea el estado de RA0 goto RA0_ES_1 PORTB,0 ;Desactiva RB0 goto...
  • Página 62 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 5 La interrupción externa RBO/INT. Se trata de comprobar la interrupción externa que se aplica a través del pin RBO/INT. El programa principal está en un ciclo cerrado en modo SLEEP (standby de bajo consumo). Cada vez que se detecta un flanco descendente en RB0 se provoca una interrupción cuyo tratamiento hace iluminar las salidas RB7-RB1 durante 1 seg.
  • Página 63 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 6 El Display de 7 segmentos del entrenador. Decodificador hex. BCD a 7 segmentos. Mediante los cuatro interruptores RA0-RA3 se introduce un valor hexadecimal de 4 bits que debe visualizarse sobre el display. List p=16F876 ;Tipo de procesador...
  • Página 64 ;Selecciona banco 3 EECON1,EEPGD ;Acceso a EEPROM de datos EECON1,WREN ;Permiso de escritura movlw b'01010101' movwf EECON2 movlw b'10101010' movwf EECON2 ;Secuencia establecida por Microchip EECON1,WR ;Orden de escritura Wait btfsc EECON1,WR ;Testear flag de fin de escritura goto Wait EECON1,WREN ;Desconecta permiso de escritura...
  • Página 65 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN ;------------------------------------------------------------------------------------------------------------------------------ ;Tabla: Esta rutina convierte el código BCD presente en los 4 bits de menos peso del reg. W en su ;equivalente a 7 segmentos. El código 7 segmentos retorna también en el reg. W Tabla: addwf PCL,F ;Desplazamiento sobre la tabla...
  • Página 66 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN Loop movf Contador,W call Tabla ;Convierte contador a 7 segmentos movwf PORTB ;Visualiza sobre el display Wait_0 btfss PORTA,0 ;RA0 está a "1" ?? goto Wait_0 ;No, esperar call Delay_10_ms ;Eliminar rebotes Wait_1 btfsc PORTA,0 ;RA0 está...
  • Página 67 ;Calcula el desplazamiento sobre la tabla ;------------------------------------------------------------------------------------------------------------------------------ ;La directiva dt genera tantas intsrucciones retlw como bytes o caracteres contenga Mens_0 "Trabajo / Explic",0x00 Mens_1 "PIC 16F87x",0x00 Mens_2 "Sebastian Martin",0x00 Mens_3 " Andoni Beraza",0x00 ;------------------------------------------------------------------------------------------------------------------------------ ;Delay_var: Esta rutina de propósito general realiza una temporización variable entre 10 mS y 2.5". Se ;emplea un preescaler de 256 y al TMR0 se le carga con 195.
  • Página 68 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN ;Mensaje: Esta rutina visualiza en el LCD el mensaje cuyo inicio está indicado en el acumulador. El fin ;de un mensaje se determina mediante el código 0x00 Mensaje movwf Temporal_1 ;Salva posición de la tabla Mensaje_1 movf Temporal_1,W ;Recupera posición de la tabla...
  • Página 69 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 9 Introducción al manejo del teclado Haciendo uso de las rutinas incluidas en el fichero TECLADO.INC, se trata de leer el teclado y, visualizar sobre los leds de la puerta B el código BCD de la tecla pulsada. La visualización se mantiene estable durante dos segundos hasta una nueva pulsación.
  • Página 70 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 10 El teclado y el LCD. Haciendo uso de las rutinas incluidas en los ficheros TECLADO.INC y LCD_CXX.INC, se trata de leer el teclado y, visualizar sobre el módulo LCD la tecla pulsada. El ejemplo pretende mostrar la interrupción por cambio de estado en cualquiera de las líneas RB4-RB7 del PIC el sistema se mantiene en el modo SLEEP de bajo consumo y sólo reacciona cuando tiene lugar la pulsación de cualquier tecla.
  • Página 71 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN ;Programa de tratamiento de la interrupción por cambio de estado Interrupcion INTCON,RBIE ;Desactiva mascara RBIE call Key_Scan ;Explora el teclado movf Tecla,W movwf Temporal_3 ;Salva la tecla temporalmente call Delay_10ms ;Elimina rebotes Inter_1 call Key_Scan ;Explora el teclado...
  • Página 72 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN call LCD_REG ;Borra LCD y HOME ;Salida del mensaje "Tecla pulsada:" movlw Mens_0 call Mensaje ;Visualiza el mensaje clrf PORTA clrf PORTB STATUS,RP0 ;Selecciona banco 1 movlw b'11110000' movwf TRISB ;RB0-RB3 salidas, RB4-RB7 entradas ;Tiempo de espera para estabilizar la puerta B STATUS,RP0 ;Selecciona banco 0...
  • Página 73 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 11 El TMR1 en el modo contador. Frecuencímetro Mediante un generador de onda cuadrada, se aplican pulsos por la línea RC0/T1CKI. El TMR1 cuenta los pulsos durante un intervalo de 1s. Al resultado de la cuenta representa el número de pulsos por segundo o herzios.
  • Página 74 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN ;16Bits_BCD: Esta rutina convierte un número binario de 16 bits situado en Cont_H y Cont_L y, lo ;convierte en 5 dígitos BCD que se depositan en las variables BCD_0, BCD_1 y BCD_2, siendo esta ;última la de menos peso.
  • Página 75: Call Up_Lcd

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN INTCON,2 ;Repone flag del TMR0 clrf TMR1L clrf TMR1H ;Borra el TMR1 T1CON,0 ;TMR1 en On, se inicia la nueva cuenta de pulsos externos retfie No_1000_mS movlw b’195’ movwf TMR0 ;Repone para temporizar otros 10mS INTCON,2 ;Repone el flag del TMR0 retfie...
  • Página 76 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 12 El TMR2. Temporización simple, segundero El TMR2 provoca una interrupción cada 10 mS. Transcurridas 100 interrupciones, el tiempo total transcurrido es de 1 segundo. El display conectado a la puerta B, cuenta intervalos de 1 segundo. List p=16F876 ;Tipo de procesador...
  • Página 77 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN Inicio clrf PORTB ;Desconecta salidas STATUS,RP0 ;Selecciona banco 1 clrf TRISB ;Puerta B se configura como salida PIE1,TMR2IE ;Habilita interrupción del TMR2 movlw b’195’ movwf PR2 ;Carga registro de periodos con 195 STATUS,RP0 ;Selecciona banco 0 ;El TMR2 emplea un preescaler y un postcaler de 1:16 (total 1:256).
  • Página 78: Call Lcd_Dato

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 13 Los módulos CCPx. Modo de Captura. Medida del tiempo entre un pulso y el siguiente. El ejemplo emplea el módulo CCP1 y trata de capturar el valor del TMR1 cada vez que lleguen un flanco descendente y otro ascendente por la línea RC2/CCP1.
  • Página 79 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN call LCD_DATO ;Visualiza ' ' movlw 0xe4 call LCD_DATO ;Visualiza micro movlw 'S' call LCD_DATO ;Visualiza 'S' return ;16Bits_BCD: Esta rutina convierte un número binario de 16 bits situado en Byte_H y Byte_L y, en 5 ;dígitos BCD que se depositan en las variables BCD_0, BCD_1 y BCD_2, siendo esta última la de menos ;peso.
  • Página 80: Inicio

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN retfie Medir movf Cap_1_L,W ;Es la captura del flanco ascendente subwf CCPR1L,W movwf Byte_L btfss STATUS,C incf Cap_1_H,F movf Cap_1_H,W subwf CCPR1H,W movwf Byte_H ;Restar el tiempo entre la 2ª captura y la 1ª call Bits16_BCD ;Convertir a BCD...
  • Página 81: Movlw B'00000001

    PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 14 Los módulos CCPx. Modo de Comparación. El TMR1 cuenta tantos pulsos externos como se indique mediante los interruptores RA5-RA0. Cada vez que se alcanza el valor fijado, la salida RB0 cambia de estado. List p=16F876 ;Tipo de procesador...
  • Página 82 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN ;El módulo CCP1 actúa en modo de comparación e interrupción al coincidir movlw b'00001010' movwf CCP1CON ;Módulo CCP en modo comparación clrf CCPR1H ;Puesta a 0 de la parte alta del valor a comparar clrf TMR1L clrf...
  • Página 83 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 15 Los módulos CCPx. Modo PWM. Modulación de anchura de pulsos. Consiste en generar una señal de onda cuadrada por la línea RC2/CCP1 cuyo periodo puede ser modificado así como la anchura del pulso (Duty Cycle). El periodo se determina según la fórmula T=(PR2+1)*4*Tosc*TMR2 preescaler.
  • Página 84 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN PROGRAMA 16 El módulo conversor ADC. Los dispositivos PIC16F87X disponen de un convertidor A/D de 10 bits de resolución y 5 u 8 canáles de entrada analógica. Con 5 Vref=4.8 mV/Bit; con 2.5 Vref=2.4 mV/Bit El ejemplo propone realizar la conversión de la tensión presente en el canal RA0/AN0.
  • Página 85 PIC 16F87 2º DPE RABAJO Y XPLICACIÓN ;Se activa el ADC y se selecciona el canal RA0/AN0. Frecuencia de trabajo Fosc/32 movlw b'10000001' movwf ADCON0 ;ADC en On, seleciona canal AN3 Loop STATUS,RP0 ;Selecciona página 1 movlw b'00111111' movwf TRISA ;Puerta A entradas clrf ADCON1...

Tabla de contenido