el programita...., la comunicación es por rs485
#include <16F873a.h>
#device adc=10 //resolucion de 1024 valores
#FUSES HS,NOWDT,PUT,PROTECT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#use standard_io (C)
#use standard_io (B)
#use standard_io (A)
//*#define ALL_ANALOG
float an;
float bn;
int16 a,b;
char valor;
#int_rda
void serial_isr(){
valor=getc();
switch(valor){
case 'A':
output_high(pin_c2);//* sacando un "1" por C2 habilito TRASNMISIÓN DEL MAX485.-
printf("%1.5f\r\n",an);
output_low(pin_c2); //*sacando un "0" por C2 deshabilito transmisión y habilito RECEPCIÓN.-
break;
case 'B':
output_high(pin_c2);//* sacando un "1" por C2 habilito TRASNMISIÓN DEL MAX485.-
printf("%1.5f\r\n",bn);
output_low(pin_c2); //*sacando un "0" por C2 deshabilito transmisi'on y habilito RECEPCIÓN.-
break;
}
}
void main()
{
valor=a=b=an=bn=0;
output_low(pin_c2);
enable_interrupts(int_rda);
enable_interrupts(global);
setup_adc_ports(all_analog);
//*setup_adc_ports(AN0_AN1_AN3);
setup_adc(ADC_CLOCK_INTERNAL);
while(true){
set_adc_channel(0); //* del canal se leera el valor analogico
delay_ms(20);
an=(5.0*read_adc())/1024.0;
delay_ms(15);
set_adc_channel(1); //* del canal se leera el valor analogico
delay_ms(20);
bn=(5.0*read_adc())/1024.0;
delay_ms(15);
}
}