while(1){
PIN1=INPUT(PIN_C3);
if(j<4&&r==0&&PIN1==0){
lcd_putc("\f ACCEDIENDO ");
for(i=0;i<15;i++){
lcd_gotoxy(i,2);
lcd_putc("*");
delay_ms(50);
}
if(PIN1==0){
lcd_putc("\f PASSWORD ");
i=0;
while(i<4){
while(PIN1==0){
PIN1=INPUT(PIN_C3);
}
while(PIN2==0){
PIN2=INPUT(PIN_C4);
}
while(PIN3==0){
PIN3=INPUT(PIN_C5);
}
IF(PIN1==1&&PIN2==1&&PIN3==1){
while(PIN1==1&&PIN2==1&&PIN3==1){
PIN1=INPUT(PIN_C3);
PIN2=INPUT(PIN_C4);
PIN3=INPUT(PIN_C5);
}
if(PIN1==0&&PIN2==1&&PIN3==1){
dato[i]='1';
i++;
lcd_gotoxy(i+3,2);
lcd_putc('*');
DELAY_MS(500);
}
if(PIN1==1&&PIN2==0&&PIN3==1){
dato[i]='3';
i++;
lcd_gotoxy(i+3,2);
lcd_putc('*');
DELAY_MS(500);
}
if(PIN1==1&&PIN2==1&&PIN3==0){
dato[i]='5';
i++;
lcd_gotoxy(i+3,2);
lcd_putc('*');
DELAY_MS(500);
}
}
}
for(i=0;i<4;i++){
clave[i]=read_eeprom(i);
}
if( dato[0]==clave[0] && dato[1]==clave[1] && dato[2]==clave[2] && dato[3]==clave[3]){
lcd_gotoxy(5,1);
printf(lcd_putc,"\f Accediendo ");
for(i=0;i<15;i++){
lcd_gotoxy(i,2);
printf(lcd_putc,"*");
delay_ms(50);
}
r=1;
}
else{
lcd_putc("\f Clave incorecta ");
j++;
delay_ms(2000);
}
}
}
} DO{
SET_ADC_CHANNEL(0);
DELAY_US(10);
RADIO=READ_ADC();
RADIO=RADIO*2/1023.0;
write_eeprom(6,RADIO);
PRINTF(LCD_PUTC,"\f RADIO");
PRINTF(LCD_PUTC,"\n %f ",RADIO);
PIN1=INPUT(PIN_C3);
MEN=0;
i++;
r=0;}WHILE(PIN1==1);
}Pueden presionar 2 botones al mismo tiempo. Lo cual va a invalidar la clave al menos como tengo realizado el programa.
Tambien vas a tener que usar un timer para hacer un timeout si es que se queda a la mitad del pass y no se ingresa mas nada.
O queres que cuando se presionen 2 botones no cuente como si se hubiera presionado otro hasta que suelte todo ?.
En ese caso.. suponiendo que sean 4 botones.
Si presiono el boton 1, no lo suelto y presiono el boton 2.
- El boton 2 cuenta o no ?, es decir lo tomo como presionado ?
- Si suelto el boton 2 primero que deberia pasar ?
- Si suelto el boton 1 primero que deberia pasar ?
Hacer eso es agregar mas condiciones para que entre adentro del if, nada mas.
Hola yo lo que hago en estos casos es lo siguiente: cuando detecto que presionaron la tecla activo una bandera (1 bit), esta bandera impide volver a entrar si no han soltado la tecla, cuando sueltan la tecla se apaga la bandera habilitando nuevamente la función.Código: C[/code]
[code]void funcion() { if(!bit_test(tecla) && !ban_tecla) { ban_tecla = 1; "resto de funciones" } else if(bit_test(tecla) && ban_tecla) { ban_tecla = 0; "resto de funciones" } }
Saludos