alguem poderia me enviar um exemplo de uma função em c que pede uma senha , no meu projeto eu tenho um lcd e 4 teclas , eu fiz essa abaixo para teste , mas ela esta louca e ainda não descobri o porque!
const int8 SENHA_MASTER[]={ 'E','M','0','4'};
const int8 MATRIZ_CARACTERE[]=
{
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H',
'I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','Y','X','Z'
};
LER_SENHA()
{
int8 MATRIZ_SENHA[4]={0,0,0,0};
int8 CONT_SIZEOF=0;
int8 Q_DADOS=0;
int8 Q_MAT=6;
boolean TESTE=1;
boolean RETORNO=0;
CONT_SIZEOF=sizeof(MATRIZ_CARACTERE);
lcd_escreve ('\f'); // apaga o display // apaga o display
lcd_pos_xy( 1, 1);
lcd_escreve (" Digite a Senha ");
lcd_pos_xy( 1, 2);
lcd_escreve (" 0000 ");
lcd_envia_byte(0,0x0D); // ativa cursor piscante
lcd_pos_xy( Q_MAT, 2);
lcd_envia_byte(1,MATRIZ_CARACTERE[Q_DADOS]);
lcd_pos_xy( Q_MAT, 2);
while( TESTE )
{
if( LER_ENTER() )
{
Q_DADOS=0;
MATRIZ_SENHA[Q_MAT]=MATRIZ_CARACTERE[Q_DADOS];
Q_MAT++;
if( Q_MAT == 11 ){ Q_MAT=6; }
lcd_pos_xy( Q_MAT, 2);
}
if( LER_MENU() )
{
if(
(MATRIZ_SENHA[0] == SENHA_MASTER[0]) && (MATRIZ_SENHA[1] == SENHA_MASTER[1]) &&
(MATRIZ_SENHA[2] == SENHA_MASTER[2]) && (MATRIZ_SENHA[3] == SENHA_MASTER[3])
){ RETORNO=1;}
else
{
lcd_envia_byte(0,0x0C); // ativa cursor sem piscar
lcd_escreve ('\f'); // apaga o display // apaga o display
lcd_pos_xy( 1, 1);
lcd_escreve (" Senha Errada ");
delay_ms( 800 );
}
TESTE=0;
}
if (!UP || !DOWM )
{
if( !UP )
{
Q_DADOS++;
if( Q_DADOS > ( CONT_SIZEOF-1 ) ){ Q_DADOS=0; }
}
if (!DOWM )
{
Q_DADOS--;
if( Q_DADOS == 255 ){Q_DADOS=CONT_SIZEOF-1;}
}
lcd_pos_xy( Q_MAT, 2);
lcd_envia_byte(1,MATRIZ_CARACTERE[Q_DADOS]);
lcd_pos_xy( Q_MAT, 2);
TEMPO = TEMPO-25; // decrementa o tempo de incremento/decremento
if( TEMPO <= 100 ){ TEMPO=100; }
delay_ms( TEMPO );
} //
if( UP && DOWM ){ TEMPO=250; } // recarrega o tempo de inc ou dec das variaveis
}
lcd_envia_byte(0,0x0C); // ativa cursor sem piscar
return ( RETORNO );
}