Hola muy buenas
Estoy comenzando a utilizar el módulo adc del pic 16f88.
Tomando parte del código de Carlos tengo el siguiente programa
'16F88 MODULO DESVIOS MASTER
'Prueba del adc
'que controla un disp de 4 entradas
Define CONF_WORD = 0x3f0a
Define CONF_WORD_2 = 0x3ffc
Define CLOCK_FREQUENCY = 8
ANSEL = 0x00 'todos los pines digitales
CMCON = 0x07
'Define SIMULATION_WAITMS_VALUE = 1 'solo para simulacion
'##############################
'definición de puertos
TRISA = %00100001
TRISB = %00000100
Symbol led = PORTA.1
led = 1
WaitMs 1000
led = 0
'##################################################################
'***********************************DEFINICION DE VARIABLES**************************************
'-------------------------------Variables del ADC y Rutina division------------------------------
Dim num_1 As Word 'valor del adc y retorna la parte entera
Dim num_2 As Word 'factor de la escala y retorna el primer decimal
Dim num_3 As Word 'segundo decimal
Dim num_4 As Word
Dim dvdo As Word 'dividendo operacion
Dim dvsor As Word 'divisor operacion
'--------------------------------------Variables Programa----------------------------------------
'------------------------------------------ASIGNACIONES------------------------------------------
'**************************************DEFINICION DE PUERTOS*************************************
'----------------------ASIGNACION DE I/O y valores de inicion de las salidas---------------------
Define ADC_SAMPLEUS = 0 'el minimo, configuracion del ADC
Define ADC_CLOCK = 5 '16Tad a 8Mhz = 2uSeg, minimo permitido por el micro 1.5uSeg, configuracion ADC
'_______________registros afectados por Define ADC_CLOCK y ADCIN________________
ANSEL = %00000001 'los pin I/O digitales y RA0 analogico
ADCON0 = %01000000 'Fosc/16 a 8Mhz (ADCON1.ADCS2=1) =2uSeg (minimo 1.uSeg), channel RA4
ADCON1 = %01000000 'voltage reference (AVdd/AVss) y seleccion de escala division clock/2 ADCON1.ADCS2=1
'--------------------------------------Main Programa-----------------------------------------------
Hseropen 4800
main:
Gosub lee_adc 'salto con retorno, rutina de lectura de la entrada ADC
If num_1 > 163 And num_1 < 168 Then
Toggle led
Endif
Hserout num_1
WaitMs 1000
Goto main
End
'**************************************Subrrutinas**********************************************
'--------------------------------------Subrrutina lectura ADC, division y LCD
lee_adc: '_______________________lee la entrada analogica
Adcin 0, num_1 'lee el valor de la entrada analogica y lo carga en num_1
num_2 = 205 'asigna factor de correccion, para 5V
num_3 = num_2 * num_1
Return
Lee el valor del adc y lo envia al hiperterminal de proteus.
Quiero encender y apagar un led según el valor en voltios que aparece en un voltímetro conectado a la entrada del ADC.
En este caso quiero encender y apagar un led si el valor leido en voltios es de 4,54
No sé muy bien como pasar este valor a esta condicion
If num_1 > 163 And num_1 < 168 Then
Toggle led
Endif
Que es la que controla el encendido y apagado del led.
¿Cómo sería?
Un saludo