TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: alexbalboa en 29 de Abril de 2006, 15:35:02
-
hola quisiera ver si me podrian ayudar un ejemplo de como usar el modulo comparador del 16f88 gracias :(
-
¿En que lenguaje de programacion?
Suerte!!! :wink:
-
en ensamblador por favor!!, plis es mega urgente no encuentro nada donde basarme mas o menos para aprender a utilizarlo, gracias :lol:
-
En esta web hay bastante informacion te puede ser util
http://www2.ate.uniovi.es/fernando/Doc2005/Sed_05/Sis_E_Dig_2004_05.html
Y aqui un ejemplo concreto de dicho modulo, su forma de configurarlo, eso si es con el 16F877, pero bueno te podras basar para realizarlo y adaptarlo al 16F88
http://www2.ate.uniovi.es/fernando/Doc2005/Sed_05/Ejemplos/tmp_larga.asm
Suerte!!! :wink:
-
en ensamblador por favor!!, plis es mega urgente no encuentro nada donde basarme mas o menos para aprender a utilizarlo, gracias :lol:
¿Qué es lo que no te sale?
¿Sabes algo de ensamblador?
Te digo un par de lineamientos luego tu dime si entendiste y sino te veo de postear algun codigo que te lo resuelva
1) Configuras el registro CCPCON en modo comparación.
2) Cargas en el CCPR1 el valor de comparacion con el cual quieras hacer que el flag CCPxIF se encienda. La x es porque no se si usaras el modulo 1 o 2.
3) Configuras el Timer1 , con el prescaler que desees para que te de el retardo que necesitas.
4) Cuando el registro TMR1 = CCPR1 o CCPR2 , el flag correspondiente CCP1IF o CCP2IF se encenderá.
Saludos
-
hola, si mira, lo que pasa es que nunca habia necesitado ese modulo, en fin este es mi intento de hacer que solo encienda el ultimo led conectado al puerto b mietras el voltaje pase el de referencia, lo hago de esta forma por que lo necesito en operacion multiplexada, alguna ayuda??
LIST P=PIC16F88;
INCLUDE P16F88.INC
__CONFIG _CONFIG1,_XT_OSC&_WDT_OFF&_MCLR_ON
org 0
BSF STATUS,RP0; con esto acceso al banco uno para configurar lo del convertidor
BCF STATUS,RP1;
MOVLW b'00001111'; configuro las salidas de b como dig y las entradas a como analogicas
MOVWF ANSEL;
MOVLW b'00011111'; configuro como entrada el puerto A
MOVWF TRISA;
MOVLW b'11111111'; configuro como salida el puerto B
MOVWF TRISB;
BSF CMCON,C2INV; configuro de forma que este en multiplexador con entradas no invertidas
BSF CMCON,C1INV;
BCF CMCON,CM0 ;
BSF CMCON,CM1 ;
BCF CMCON,CM2 ;
MOVLW b'10000100' ; los cuatro ultimos bits me controlan el voltaje de referencia
MOVWF CVRCON ; se carga la configuracion del voltaje de referencia
BCF STATUS,RP0 ; me regreso al banco 0
BCF PIR2,CMIF ; limpio la interrupcion del comparador
BSF PIE2,CMIE
BSF INTCON, PEIE
BSF INTCON, GIE
INI BSF STATUS,RP0
INICIO BCF CMCON,CIS ;leo la entrada 0 de A
BTFSS CMCON,C2OUT
GOTO INICIO
BCF PIR2,CMIF
BCF STATUS,RP0
MOVLW 80h
MOVWF PORTB
MOVLW 00h
MOVWF PORTB
GOTO INI
END
-
Oh, perdon, ,yo interprete el modulo de comparacion y captura, no el comparador!!
Fue mi error, dime bien que necesitas, porque no alcanzo a entenderte eso de multiplexar y de encender un led en el puerto b.
-
no pues a groso modo mi objetivo es meter entradas analogicas en el puerto a y dependiendo de el nivel de voltaje (superando el de referencia) que tenga cierta salida digital en el puerto b, mi duda tmb es si esta bien lo de configurar el puerto a como analogico moviendo el registro ansel quien sepa algo y me pudiese explicar si voy mas o menos bien.. muchisimas gracias