função para senha

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

função para senha

Mensagempor rebelk » 01 Fev 2010 19:41

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 );
}
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor Andre_Cruz » 02 Fev 2010 08:23

rebelk,

Acredito que você ja tenha feito isso antes de postar o código aqui, mas vou tentar te ajudar.

Testa sua rotina por partes, OK ?

Verifique se o "Digite a Senha" é exibido no LCD.
Verifique se a função "lcd_pos_xy" esta aceitando a variavel Q_MAT como parametro.
Dentro do "While", teste pra ver se "LER_ENTER()" esta sendo setada, faça o mesmo para "LER_MENU()", teste os botões "UP" e "DOWN", o principal inicialize a matriz "MATRIZ_SENHA" com o valor da senha para ver se funciona.

Espero ter ajudado, senão pelo menos não ter atrapalhado.
Abraço

André
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor rebelk » 02 Fev 2010 08:46

valeu pelas dicas , vou ver isso !
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x