Leitura de Botões Controle ECP (PIC 16F628A)

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Leitura de Botões Controle ECP (PIC 16F628A)

Mensagempor fmatheus » 29 Abr 2015 20:55

Olá Pessoal,

Estou tentando utilizar um código para ler os botões de um controle remoto ECP no PIC 16F628A e não funciona

O mais estranho é que com o 16F877A funcionou perfeitamente, mas com o 16F628A não

O código eu peguei nesse tópico aqui :

http://forum.clubedohardware.com.br/top ... lli/page-2


Fiz as adaptações para o 16F628A e ficou assim:
Código: Selecionar todos
#include <16F628A.h>
#FUSES HS, NOWDT, NOPROTECT,NOLVP,BROWNOUT, PUT
#use delay(clock = 4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8)
   //#define lcd_enable     pin_B0      // pino enable do LCD
   //#define lcd_rs         pin_B1      // pino rs do LCD
   //#define lcd_wr         pin_B2      // pino rs do LCD
   //#define lcd_d4         pin_B4      // pino de dados d4 do LCD
   //#define lcd_d5         pin_B5      // pino de dados d5 do LCD
   //#define lcd_d6         pin_B6      // pino de dados d6 do LCD
   //#define lcd_d7         pin_B7      // pino de dados d7 do LCD

#include "lcd.c"

#use fast_io(A)
#use fast_io(B)
#define RFIn PIN_B0 //entrada do sinal de RF
#define NBIT 28 // numero de bits
INT32 DATA=0;


int1 decoder(void)
{
byte x=0;
int16 time_aux=0;
DATA=0;
while(!input_state(RFIn))
{
time_aux++;
delay_us(10);
}

if((time_aux>1149) || (time_aux<=1151))
{

for(x=0;x<NBIT;x++)
{
while(input_state(RFin));
delay_us(250);

if(input_state(RFIn))
{
return FALSE;
}

delay_us(500);
if(!input_state(RFIn))
{
data|=0x8000000;
data>>=1;
}else data>>=1;
delay_us(500);
if(!input_state(RFin))
{
return FALSE;
}
}
return TRUE;
}
else return FALSE;

}

void main()
{

set_tris_A(0b00000000);

lcd_init();

while (TRUE) {
decoder();
printf(lcd_putc,"\fC: %Lu\nRECV",DATA);
delay_ms(5);

if(DATA==112971776){
output_toggle(PIN_A0);
delay_ms(500);
}
else if(DATA==110874624){
output_toggle(PIN_A1);
delay_ms(500);
}
else if(DATA==111923200){
output_toggle(PIN_A2);
delay_ms(500);
}
}
}


Na verdade o que estou tentando fazer aqora é acionar os LEDS das portas A0,A1 e A2 com os códigos dos botões que eu já li usando o 16F877A.

Eu montei o mesmo código como 16F877A e ele aciona os LEDS perfeitamente

Não consegui descobrir o porque de não estar funcionando
Alguém pode me ajudar a resolver esse mistério?
fmatheus
Bit
 
Mensagens: 39
Registrado em: 02 Mar 2007 14:53

Re: Leitura de Botões Controle ECP (PIC 16F628A)

Mensagempor Rodrigo_P_A » 30 Abr 2015 11:49

Procura aqui no forum HT6P20 vai aparecer um monte de posts, inclusive um dos membros postou um código completo.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Leitura de Botões Controle ECP (PIC 16F628A)

Mensagempor andre_luis » 01 Mai 2015 12:41

Muitos problemas desse tipo no PIC acontecem porque nem todos os registradores SFR são devidamente inicializados.
Por exemplo, para o 16F877A, o padrão é a porta RA incializar com as entradas analógicas ativadas.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ


Voltar para PIC

Quem está online

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

x