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...
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...
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.
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á...
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.
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:...
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.
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.
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.
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.
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.
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á...
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.
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.
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.
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.
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...
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.
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.
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.
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.
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.
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.
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.
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.
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º...
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º...
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.
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.
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.
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.
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).
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...
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...
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.
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 •...
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.
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.
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).
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.
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...
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...