Ir ao conteúdo

Ajuda na programação do pic 16F28


Milena Pimentel

Posts recomendados

Postado

Boa tarde!

Alguem poderia me ajudar eu achei um projeto de tranca eletronica na net,só que eu usei o mikro c e na hora de compilar deu alguns erro e eu não consegui arrumar:(

Esse é a programação



int aux=100; // Tempo de varredura
while(aux != 0) // Laço para varredura
{
output_low(L1); // Joga 0 na coluna a ser varrida e 1 nas demais
output_high(L2);
output_high(L3);
output_high(L4);

if(input(C1) == 0) // Testa primeira coluna
{
i = 1;
j ++;
delay_ms(20); // Tempo para soltar tecla
// Chama a sub-rotina correspondente a tecla
}

if(input(C2) == 0) // Testa segunda coluna
{
i = 2;
j ++;
delay_ms(20); // Tempo para soltar a tecla
// Chama a sub-rotina corresponde a tecla
}

if(input(C3) == 0) // Testa terceira coluna
{
i = 3;
j ++;
delay_ms(20); // Tempo para soltar a tecla
// Chama a sub-rotina corresponde a tecla
}

aux--; // Decrementa 1 de aux
delay_us(aux); // Tempo de atraso da varredura é igual a aux
}

output_high(L1);
output_high(L2);
output_high(L3);
output_high(L4);

return; // Retorna
} // Fim da sub-rotina



//******************************************************************************



void scan2(){ // Faz primeira varredura

int aux=100; // Tempo de varredura
while(aux != 0) // Laço para varredura
{
output_high(L1); // Joga 0 na coluna a ser varrida e 1 nas demais
output_low(L2);
output_high(L3);
output_high(L4);

if(input(C1) == 0) // Testa primeira coluna
{
i = 4;
j ++;
delay_ms(20); // Tempo para soltar tecla
// Chama a sub-rotina correspondente a tecla
}

if(input(C2) == 0) // Testa segunda coluna
{
i = 5;
j ++;
delay_ms(20); // Tempo para soltar a tecla
// Chama a sub-rotina corresponde a tecla
}

if(input(C3) == 0) // Testa terceira coluna
{
i = 6;
j ++;
delay_ms(20); // Tempo para soltar a tecla
// Chama a sub-rotina corresponde a tecla
}

aux--; // Decrementa 1 de aux
delay_us(aux); // Tempo de atraso da varredura é igual a aux
}

output_high(L1);
output_high(L2);
output_high(L3);
output_high(L4);

return; // Retorna
} // Fim da sub-rotina



//******************************************************************************



void scan3(){ // Faz primeira varredura

int aux=100; // Tempo de varredura
while(aux != 0) // Laço para varredura
{
output_high(L1); // Joga 0 na coluna a ser varrida e 1 nas demais
output_high(L2);
output_low(L3);
output_high(L4);

if(input(C1) == 0) // Testa primeira coluna
{
i = 7;
j ++;
delay_ms(20); // Tempo para soltar tecla
// Chama a sub-rotina correspondente a tecla
}

if(input(C2) == 0) // Testa segunda coluna
{
i = 8;
j ++;
delay_ms(20); // Tempo para soltar a tecla
// Chama a sub-rotina corresponde a tecla
}

if(input(C3) == 0) // Testa terceira coluna
{
i = 9;
j ++;
delay_ms(20); // Tempo para soltar a tecla
// Chama a sub-rotina corresponde a tecla
}

aux--; // Decrementa 1 de aux
delay_us(aux); // Tempo de atraso da varredura é igual a aux
}

output_high(L1);
output_high(L2);
output_high(L3);
output_high(L4);

return; // Retorna
} // Fim da sub-rotina



//******************************************************************************



void scan4(){ // Faz primeira varredura

int aux=100; // Tempo de varredura
while(aux != 0) // Laço para varredura
{
output_high(L1); // Joga 0 na coluna a ser varrida e 1 nas demais
output_high(L2);
output_high(L3);
output_low(L4);

if(input(C1) == 0) // Testa primeira coluna
{
i = 10;
j = 10;
delay_ms(20); // Tempo para soltar tecla
// Chama a sub-rotina correspondente a tecla
}

if(input(C2) == 0) // Testa segunda coluna
{
i = 11;
j ++;
delay_ms(20); // Tempo para soltar a tecla
// Chama a sub-rotina corresponde a tecla
}

if(input(C3) == 0) // Testa terceira coluna
{
i = 12;
j = 12;
delay_ms(20); // Tempo para soltar a tecla
// Chama a sub-rotina corresponde a tecla
}

aux--; // Decrementa 1 de aux
delay_us(aux); // Tempo de atraso da varredura é igual a aux
}

output_high(L1);
output_high(L2);
output_high(L3);
output_high(L4);

return; // Retorna
} // Fim da sub-rotina



//******************************************************************************


void BIP(){
output_high(B);
delay_ms(100);
output_low(B);
}


//******************************************************************************


void ABRIR(){
output_high(T);
output_high(B);
delay_ms(2000);
output_low(T);
output_low(B);
}

//******************************************************************************


void main()
{

int d_1 = 0;
int d_2 = 0;
int d_3 = 0;
int d_4 = 0;
int d_5 = 0;





set_tris_a(0b11100001); //Define as entradas e saidas da porta "a"
set_tris_b(0b00000000); //Define as entradas e saidas da porta "b"
output_a(0); //Coloca todas as portas de "a" em nivel logico baixo
output_b(0); //Coloca todas as portas de "b" em nivel logico baixo
lcd_init();

while(TRUE) //Começo do programa
{

while(j == 0)
{
printf (lcd_putc, "\p\f..REP AREA 51.." );
printf (lcd_putc, "\n DIGITE A SENHA " );

scan1();
scan2();
scan3();
scan4();
}
BIP();
printf (lcd_putc, "\f SENHA ");
printf (lcd_putc, "\n *");
d_1 = i;
delay_ms(500);
j = 1;

while(j == 1)
{
printf (lcd_putc, "\f SENHA ");
printf (lcd_putc, "\n *");
scan1();
scan2();
scan3();
scan4();
}
BIP();
printf (lcd_putc, "\f SENHA ");
printf (lcd_putc, "\n **");
d_2 = i;
delay_ms(500);
j = 2;

while(j == 2)
{
printf (lcd_putc, "\f SENHA ");
printf (lcd_putc, "\n **");
scan1();
scan2();
scan3();
scan4();
}
BIP();
printf (lcd_putc, "\f SENHA ");
printf (lcd_putc, "\n ***");
d_3 = i;
delay_ms(500);
j = 3;

while(j == 3)
{
printf (lcd_putc, "\f SENHA ");
printf (lcd_putc, "\n ***");
scan1();
scan2();
scan3();
scan4();
}
BIP();
printf (lcd_putc, "\f SENHA ");
printf (lcd_putc, "\n ****");
d_4 = i;
delay_ms(500);
j = 4;

while(j == 4)
{
printf (lcd_putc, "\f SENHA ");
printf (lcd_putc, "\n ****");
scan1();
scan2();
scan3();
scan4();
}
BIP();
printf (lcd_putc, "\f SENHA ");
printf (lcd_putc, "\n *****");
d_5 = i;
delay_ms(500);
j = 5;

if( j == 5 )
{
if(d_1 == N1 && d_2 == N2 && d_3 == N3 && d_4 == N4 && d_5 ==N5 )
{
printf (lcd_putc, "\fBem vindo "nome da pessoa" ");
printf (lcd_putc, "\n Senha correta ");
ABRIR();
delay_ms(3000);
i = 0;
j = 0;
}


else
{
printf (lcd_putc, "\fSenha incorreta");
printf (lcd_putc, "\nTente novamente");
BIP();
delay_ms(100);
BIP();
delay_ms(100);
BIP();
delay_ms(100);
BIP();
delay_ms(100);
BIP();
delay_ms(100);
BIP();
delay_ms(3000);
i = 0;
j = 0;
}
d_1 = 0;
d_2 = 0;
d_3 = 0;
d_4 = 0;
d_5 = 0;

}
}
void scan1(){            // Faz primeira varredura

SE ALGUEM PUDER ME AJUDAR POIS ESTOU DESESPERADA É PARA MEU PROJETO FINAL:help:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!