hola mlo gracias por responder pero probe lo que me dijiste y no resulta sigue asiendo nada. mejor les pongo el codigo para que vean de quese trata
unsigned char key; //Variable global tecla
char string[7],stringg[7],sstringg[7]; //almasena nueros pulsados
int a,b,c,e,f,g,h,i,j,k,m;
int16 lectura;
float clave=0,password,comprobarClave,nuebaclave;
#int_RDA //interrupcion para la resepcion del master
RDA_isr()
{
lectura=GETC(); //guarda el valor enviado por el RS-485
}
// Interrupcion RB4 - RB7 /////////////////////////////////////////////////////
#INT_RB
void interrupt_keypad()
{
key=read_keypad(); //Asigna la tecla pulsada
clear_interrupt(INT_RB); //Limpia bandera RBIF
delay_ms(10);
}
// Programa Principal /////////////////////////////////////////////////////////
void main(void)
{
init_keypad();
enable_interrupts(INT_RB); //interrupcion INT_RB activada
enable_interrupts(INT_RDA); //interrupcion INT_RDA activada. comunicacion RS-485
enable_interrupts(GLOBAL); //todas las interrupciones activadas
/*
* Pin RC5 que habilita la transmisión por el canal RS485
* \li LOW Habilita recepción RS485
* \li HIGH Habilita transmisión RS485.
*/
output_low(PIN_C5);
output_d(lectura); //avilito puerto D como resepcion de comunicacion con master
///////////////////nueva clave//////////////////////
if(key=='B'){ ///////////////presionar B + # para poder cambiar nueva clave if(key=='B'&&key=='F')
output_high(PIN_A2); //visulisa mediante LED vicolor el ingreso para cambiar clave (verde)
output_high(PIN_A3); //visulisa mediante LED vicolor el ingreso para cambiar clave (rojo)
e=90;
}
e++;
if(e>=90){
stringg[g]=key;
f++;
g=f-1;
if(key=='D'){
a=0;
e=0;
f=0;
g=0;
}
}
comprobarClave=atof(stringg);
if(comprobarClave==password&&key=='D'){
strcpy( stringg," "); // borra string
strcpy( sstringg," "); // borra string
h=40;
}
if(h==40&&key=='C'){
i=90;
output_low(PIN_A3); //led vicolor lo cambio a verde apagando el rojo para indicar el ingreso de nueva clave
}
i++;
if(i>=90){
sstringg[k]=key;
j++;
k=j-1;
if(key=='D'){
a=0;
e=0;
j=0;
k=0;
i=0;
m=50;
output_low(PIN_A2); //cambio de color led vicolor a rojo termino de cambio de clave
output_high(PIN_A3);
}
}
if(m==50){
nuebaclave=atof(sstringg);
password=nuebaclave;
}
else{
password=123456;
}
////////////termino de nueva clave//////////////
/////////ingreso de clave/////////////////
if(key=='A'){ //presionar la A para ingresar clave (if(key=='A'&&key=='*');)
a=90;
output_high(PIN_A0); //visulisa mediante LED rojo que no hay clave puesta
output_low(PIN_A1); //visulisa mediante LED verde el ingreso de clave correcta
}
a++;
if(a>=90){
string[b]=key;
c++;
b=c-1;
if(key=='D'){ //presionar D para finalisar ingreso de clave
a=0;
c=0; // borra contador de posicion string
b=0; // borra borra el contador y pone en pocision cero del string
e=0;
i=0;
}
}
clave=atof(string);
//////////////////////termino de ingreso clave//////////////
/////////////////////verificar clave pulsada///////////////
if(password==clave&&key=='D'){ //comprueva la clave......
output_low(PIN_A0);
output_high(PIN_A1);
strcpy( string," "); // borra string
}
/////////////////////termono de verificar clave///////////////
}
este es el esclavo