mmm interesante parece que es de seguro que soy yo, o es la hora, pero el punto es que lo que dices de sumar los valores tampoco resulta.
dejo el codigo para ver si me puedes desir que estoy haciendo mal.
y gracias por lo ya ayudado:
////////////////////////////////////////////////////////////////////////////////
/************************VARIABLES GLOVALES************************************/
////////////////////////////////////////////////////////////////////////////////
char lectura_radio=0x00;
char cadena_radio[30];
char comando_radio[30];
int identificadorIP=0;
int incremento_radio=0x00;
int1 procesar_radio=0;
char encendido1[]="encendido";
char apagado1[]="apagado";
char enviado1[]="enviado";
int x=0;
int menu=1,menu_rele=1,menu_voltaje=1,menu_corriente=1;
int a=4,b=4;
int1 ingreso_rele=0,ingreso_corriente=0;
int transmicion_erronea=0;
int transformar_dato;
float corriente;
int8 corriente1,corriente2;
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/****************FUNCIONES DE MANEJO DE RECEPCION DE DATOS*********************/
////////////////////////////////////////////////////////////////////////////////
void proceso_radio(char a);
void borrar_cadena_radio(void);
void copia_cadena_radio(void);
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
void control_reles(void);
void sensor_de_voltaje(void);
void sensor_de_corriente(void);
////////////////////////////////////////////////////////////////////////////////
/********************INTERRUPCION DE RECEPCION SERIAL**************************/
////////////////////////////////////////////////////////////////////////////////
#int_RDA //interrupcion para la resepcion del master
void rda_isr()
{
lectura_radio=0x00;
if(kbhit()) { //Esto es para que no se cuelgue el pic
lectura_radio=GETC(); //guarda el valor enviado por el puerto serie
proceso_radio(lectura_radio);
}
}
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/**************ALMACENAMIENTO DE DATO PROVENIENTES DEL RS232*******************/
////////////////////////////////////////////////////////////////////////////////
void proceso_radio (char a){
if(a==0x0D){
procesar_radio=1;
}
else{
cadena_radio[incremento_radio++]=a;
}
}
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/*****************************PROGRAMA PRINCIPAL*******************************/
////////////////////////////////////////////////////////////////////////////////
void main(){
lcd_init(); //inicializa, o activa lcd
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
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_RDA); //interrupcion INT_RDA activada. comunicacion RS-485
enable_interrupts(GLOBAL); //todas las interrupciones activadas
lcd_gotoxy(1,1);
printf(lcd_putc,"********************");
lcd_gotoxy(1,2);
printf(lcd_putc,"**control de corriente**");
lcd_gotoxy(1,4);
printf(lcd_putc,"********************");
delay_ms(2000);
printf(lcd_putc,"\f");
while(TRUE){
lcd_gotoxy(1,1);
printf(lcd_putc," MENU PRINCIPAL ");
/*if(procesar_radio==1){
copia_cadena_radio();
}*/
if(!input(PIN_C0)){
do{
}while(!input(PIN_C0));
menu--;
if(menu<1){menu=3;
}
}
if(!input(PIN_C1)){
do{
}while(!input(PIN_C1));
menu++;
if(menu>3){menu=1;
}
}
if(menu==1){
lcd_gotoxy(1,3);
printf(lcd_putc,"CONTROL DE RELES ");
if(!input(PIN_C2)){
do{
}while(!input(PIN_C2));
control_reles();
}
}
else if(menu==2){
lcd_gotoxy(1,3);
printf(lcd_putc,"SENSORES DE VOLTAJE ");
if(!input(PIN_C2)){
do{
}while(!input(PIN_C2));
sensor_de_voltaje();
}
}
else if(menu==3){
lcd_gotoxy(1,3);
printf(lcd_putc,"SENSORES DE CORRIENT");
if(!input(PIN_C2)){
do{
}while(!input(PIN_C2));
sensor_de_corriente();
}
}
}}
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/***********************FUNCION DE CONTROL DE RELES****************************/
////////////////////////////////////////////////////////////////////////////////
void control_reles(void){
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc," MENU DE CONTROL ");
lcd_gotoxy(1,2);
printf(lcd_putc," DE RELES ");
while(true){
if(procesar_radio==1){
copia_cadena_radio();
}
if (strcmp (comando_radio,encendido1) == 0 && ingreso_rele==1){
lcd_gotoxy(1,4);
printf(lcd_putc,"Rele %i encendido",menu_rele);
a=4;
ingreso_rele=0;
comando_radio[1]=1;
delay_ms(1500);
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc," MENU DE CONTROL ");
lcd_gotoxy(1,2);
printf(lcd_putc," DE RELES ");
}
else if (strcmp (comando_radio,apagado1) == 0 && ingreso_rele==1){
lcd_gotoxy(1,4);
printf(lcd_putc,"Rele %i apagado",menu_rele);
a=4;
ingreso_rele=0;
comando_radio[1]=1;
delay_ms(1500);
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc," MENU DE CONTROL ");
lcd_gotoxy(1,2);
printf(lcd_putc," DE RELES ");
}
if(!input(PIN_C0)){
do{
}while(!input(PIN_C0));
if(ingreso_rele==0){
menu_rele--;
if(menu_rele<1){menu_rele=8;
}
}
else if(ingreso_rele==1){
lcd_gotoxy(1,3);
printf(lcd_putc,"Enviando solisitud ");
lcd_gotoxy(1,4);
printf(lcd_putc," ");
printf("1.2.3.4.5.6");
putc(0X0D);
delay_ms(20);
printf("rele%i on",menu_rele);
putc(0X0D);
delay_ms(20);
printf("1.2.3.4.5.6");
putc(0X0D);
delay_ms(20);
printf("rele%i on",menu_rele);
putc(0X0D);
delay_ms(20);
printf("1.2.3.4.5.6");
putc(0X0D);
delay_ms(20);
printf("rele%i on",menu_rele);
putc(0X0D);
}
}
if(!input(PIN_C1)){
do{
}while(!input(PIN_C1));
if(ingreso_rele==0){
menu_rele++;
if(menu_rele>8){menu_rele=1;
}
}
else if(ingreso_rele==1){
lcd_gotoxy(1,3);
printf(lcd_putc,"Enviando solisitud ");
lcd_gotoxy(1,4);
printf(lcd_putc," ");
printf("1.2.3.4.5.6");
putc(0x0D);
delay_ms(20);
printf("rele%i off",menu_rele);
putc(0x0D);
delay_ms(20);
printf("1.2.3.4.5.6");
putc(0x0D);
delay_ms(20);
printf("rele%i off",menu_rele);
putc(0x0D);
delay_ms(20);
printf("1.2.3.4.5.6");
putc(0x0D);
delay_ms(20);
printf("rele%i off",menu_rele);
putc(0x0D);
}
}
lcd_gotoxy(1,a);
printf(lcd_putc,"CONTROL RELE %i ",menu_rele);
if(!input(PIN_C2)){
do{
}while(!input(PIN_C2));
printf(lcd_putc,"\f");
a=1;
ingreso_rele=1;
lcd_gotoxy(1,3);
printf(lcd_putc,"a>Encender Rele ");
lcd_gotoxy(1,4);
printf(lcd_putc,"b>Apagar Rele ");
}
if(!input(PIN_C3)){
do{
}while(!input(PIN_C3));
printf(lcd_putc,"\f");
break;
}
}
break;
}
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/*********************FUNCION DE SENSORES DE VOLTAJE***************************/
////////////////////////////////////////////////////////////////////////////////
void sensor_de_voltaje(void){
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc," MENU DE CONTROL DE ");
lcd_gotoxy(1,2);
printf(lcd_putc,"SENSORES DE VOLTAJE ");
while(true){
}}
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/*********************FUNCION DE SENSORES DE CORRIENTE*************************/
////////////////////////////////////////////////////////////////////////////////
void sensor_de_corriente(void){
transformar_dato=0;
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc," MENU DE CONTROL DE");
lcd_gotoxy(1,2);
printf(lcd_putc,"SENSORES DE CORRIENT");
while(true){
if(procesar_radio==1){
copia_cadena_radio();
}
if(transformar_dato==1){
corriente1=atoi(comando_radio);
}
else if(transformar_dato==2){
corriente2=atoi(comando_radio);
}
if (strcmp (comando_radio,enviado1) == 0 && ingreso_corriente==1){
corriente=(corriente1*256)+corriente2; //<------------------------aqui lo que dices
transformar_dato=0;
lcd_gotoxy(1,4);
printf(lcd_putc,"%f[Amp]",corriente);
delay_ms(1500);
ingreso_corriente=0;
}
if(!input(PIN_C0)){
do{
}while(!input(PIN_C0));
if(ingreso_corriente==0){
menu_corriente--;
if(menu_corriente<1){
menu_corriente=5;
}
}
}
if(!input(PIN_C1)){
do{
}while(!input(PIN_C1));
if(ingreso_corriente==0){
menu_corriente++;
if(menu_corriente>5){
menu_corriente=1;
}
}
}
lcd_gotoxy(1,b);
printf(lcd_putc,"SENSOR DE CORRIENTE%i",menu_corriente);
if(!input(PIN_C2)){
do{
}while(!input(PIN_C2));
printf(lcd_putc,"\f");
b=1;
ingreso_corriente=1;
lcd_gotoxy(1,3);
printf(lcd_putc,"Corriente sensor %i:"menu_corriente);
lcd_gotoxy(1,4);
printf(lcd_putc," ");
printf("1.2.3.4.5.6");
delay_ms(2);
putc(0x0D);
delay_ms(20);
printf("sensor de corriente %i",menu_corriente);
delay_ms(2);
putc(0x0D);
delay_ms(20);
printf("1.2.3.4.5.6");
delay_ms(2);
putc(0x0D);
delay_ms(20);
printf("sensor de corriente %i",menu_corriente);
delay_ms(2);
putc(0x0D);
delay_ms(20);
printf("1.2.3.4.5.6");
delay_ms(2);
putc(0x0D);
delay_ms(20);
printf("sensor de corriente %i",menu_corriente);
delay_ms(2);
putc(0x0D);
}
if(!input(PIN_C3)){
do{
}while(!input(PIN_C3));
printf(lcd_putc,"\f");
break;
}
}
break;
}
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/******************************************************************************/
/* TRASPASO DE DATOS DE LOS BUFFER DE RECEPCION A NUEVAS CADENAS */
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
void copia_cadena_radio(void){
switch (cadena_radio){ //selecciona las ip que comandaran el cto
// de control....
case "1.2.3.4.5.6": //ip del control remoto
x=1; //si IP es correcta entonces.... pongo vandera
identificadorIP=0; //reseteo identificadorIP...
//printf("oki doki"); // mando confirmacion de comunicacion he ip
break; // salgo del ip....
default: // en caso de ingresar una IP distinta, o algo distinto
identificadorIP++; // incremente identificador de ip como valores erroneos..
}
if(x==1 && identificadorIP==1){ //si.. la ip ingresada es correcta entonces.....
strcpy(comando_radio,cadena_radio); // paso a controlar el cto de control...
transformar_dato++;
x=0; //reseteo vandera de ip
identificadorIP=0; // reseteo vandera de datos de control de cto
}
borrar_cadena_radio(); // borro todo lo que a quedado en el buffer de
} //de recepción.....
////////////////////////////////////////////////////////////////////////////////
/************************************FIN***************************************/
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/******************************************************************************/
/* BORRAN BUFFER DE RECEPCION SERIAL DE LA UART 1 Y UART2 */
/******************************************************************************/
////////////////////////////////////////////////////////////////////////////////
void borrar_cadena_radio(void){
int c=0;
procesar_radio=0;
for(c=0;c<=incremento_radio;c++){
cadena_radio[c]=0;
}
incremento_radio=0x00;
}
////////////////////////////////////////////////////////////////////////////////
/************************************FIN***************************************/
////////////////////////////////////////////////////////////////////////////////