oi tudo bem eu so novo aqui e queria q vocês me ajudassem estou tentando programar um pic 16f628a com codigo mais sempre aparece o erro(de verificação no endereço 0x000000 verificando:0x3ff lendo:0x0000 o que fazer?gostaria muito se vocês podesem me ajudar !obrigado pela atenção o codigo é o seguinte:
#use delay (clock=4000000)
#fuses INTRC_IO, NOWDT, PUT, NOBROWNOUT, NOLVP, NOMCLR
#include <lcd_flex.C>
#define C1 PIN_A6
#define C2 PIN_A7
#define C3 PIN_A0
#define L1 PIN_A1
#define L2 PIN_A2
#define L3 PIN_A3
#define L4 PIN_A4
#define B PIN_B3
#define T PIN_B2
int i = 0;
int j = 0;
//******************************************************************************
void scan1(){ // Faz primeira varredura
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(;
delay_ms(100);
output_low(;
}
//******************************************************************************
void ABRIR(){
output_high(T);
output_high(;
delay_ms(2000);
output_low(T);
output_low(;
}
//******************************************************************************
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 == 2 && d_2 == 5 && d_3 == 6 && d_4 == 3 && d_5 == 8 )
{
printf (lcd_putc, "\fBem vindo "antonio" ");
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;
}
}
#include <16F628.h>