#BYTE ADCON1=0X9F
#BYTE PORTB=0X06
#include "flex_lcd.c"
////////////VARIABLES//////
int8 O,Q;
FLOAT P,R;
CHAR DATO;
CHAR FLAG_TEMP=0;
CHAR FLAG_NIVEL=0;
///////////////////////////
///////////FUNCIONES//////
VOID LECTURA(VOID);
VOID CONTROL_TEMP(VOID);
VOID CONTROL_NIVEL(VOID);
///////////////////////////
/* #######################INTERRUPCIONES##########################
#int_RB //CAMBIO DE NIBBLE
void RB_isr(void)
{
}*/
#int_RDA //INTERRUPCION POR RECEPCION SERIE
void RDA_isr(void)
{
if(kbhit())
{
DATO=GETC();
IF(DATO=='1'|| DATO=='2' || DATO=='3' || DATO=='4' || DATO=='5' || DATO=='6' ){
FLAG_TEMP=1;}
ELSE IF(DATO=='A' || DATO=='B'){
FLAG_NIVEL=1;}
}
}
/*#int_TIMER0 //INTERRUCPION DESBORDAMIENTO TMR0
void TIMER0_isr(void)
{
}
#######################FIN INTERRUPCIONES#############################*/
void main()
{
setup_adc(ADC_CLOCK_DIV_8);
//setup_psp(PSP_DISABLED);
//setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//enable_interrupts(INT_RB);
//enable_interrupts(INT_EXT);
enable_interrupts(INT_RDA);
//enable_interrupts(INT_TIMER0);
//port_b_pullups(TRUE);
//enable_interrupts(GLOBAL);
// TODO: USER CODE!!
DELAY_MS(250);
SET_TRIS_B(0);
LCD_INIT();
LCD_PUTC("PRUEBA LCD");
DELAY_MS(1000);
LCD_PUTC("\f");
FOR(;;)
{
IF(FLAG_TEMP==1)
{
disable_interrupts(INT_RDA);
FLAG_TEMP=0;
CONTROL_TEMP();
LECTURA();
enable_interrupts(INT_RDA);
}
ELSE IF(FLAG_NIVEL==1)
{
disable_interrupts(INT_RDA);
FLAG_NIVEL=0;
CONTROL_NIVEL();
LECTURA();
enable_interrupts(INT_RDA);
}
}//FIN DEL FOR
}//FIN DEL MAIN
////################################LECTURA######################################
VOID LECTURA(VOID)
{
ADCON1=0B00001101; //AN0 AN1 VREF+ VREF-
SET_ADC_CHANNEL(0);
DELAY_US(20);
Q=READ_ADC();
ADCON1=0B00000100;//AN0 AN1 VREF+=VCC VREF-=GND
SET_ADC_CHANNEL(1);
DELAY_US(20);
O=READ_ADC();
P=(2.5*Q)/255.0;
R=(5.0*O)/255.0;
PRINTF(LCD_PUTC,"\fADC'S=%u %u",Q,O);
PRINTF(LCD_PUTC,"\nV1=%1.2fV V2=%1.2fV",P,R);
PRINTF("T%uT\r\n",Q);
PRINTF("N%uN\r\n",O);
DELAY_ms(1);
}
//#################################################################################
////###########################CONNTROL TEMPEPERATURA#####################################
VOID CONTROL_TEMP(VOID)
{ //INICIO FUNCION CONTROL TEMP
} //FIN FUNCION CONTROL TEMP
//########################################################################################
////###########################CONNTROL NIVEL#####################################
VOID CONTROL_NIVEL(VOID)
{ //INICIO FUNCION CONTROL TEMP
IF(DATO=='A')
OUTPUT_HIGH(PIN_B1);
ELSE IF(DATO=='B')
OUTPUT_LOW(PIN_B1);
} //FIN FUNCION CONTROL
//########################################################################################