VEamos, he comenzado a tratar de evr el protocolo que tiene el mando que tengo libre y uso el siguiente programa que andaba por aqui por el foro, que creo que es de Potcher(mucha ayuda me presto antes en otras cosas)
//***************************************************
// CCS Compiler// Receptor IR (código RC5 de Philips)
//***************************************************
#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT // Los Fuses de siempre
#use delay(clock=4000000) // Oscilador a 4 Mhz
// Ojo a la libreria de LCD
#include <lcd1.c>
// selecciona la entrada del sensor IR
#define REC_IR PIN_B0
// ojo hay que ver donde se conecta el LCD
main(){
// define un bit
int1 bit;
// define enteros de 8 bits
int i, nbit, error;
byte buffer[2];
set_tris_c(0b00001111); // RB7-RB4 salidas, RB3-RB0 entradas
// inicializa el lcd y pone un mensaje
lcd_init();
printf(lcd_putc,"\fReceptor IR:");
lcd_gotoxy(1,2);
printf(lcd_putc,"RC5 de PHILIPS\n");
delay_ms(2000);
// El sensor receptor invierte el código
// RC5 del emisor (mando a distancia)
// bucle de trabajo
while(1)
{
buffer[0]=0; // pone a cero el primer Byte
buffer[1]=0; // pone a cero el segundo Byte
error=0;
nbit=0;
i=0;
while(input(REC_IR)==1);
// Espera al 1er bit de START (flanco de bajada) del receptor IR
delay_us(444);
// Se posiciona en el medio
// el codigo son 13 Bits ( 2 de start + 5 direccion + 6 comando)
while((nbit++ != 13) && (error == 0)) // 2º bit de START + 1 bit TOGGLE
{
// 5 bits DIR + 6 bits COMANDO
// nbit varía de 0 a 12 = 13 bits
delay_us (889);
// Mide en el primer semiperiodo del
// bit, para que invierta el código y
// dé el original RC5 del emisor
if(input(REC_IR)==0)
{
delay_us (889);
if(input(REC_IR) != 1)
error=1;
bit=0; // Es un 0
}
else
{
delay_us(889);
if (input(REC_IR) != 0)
error=1;
bit=1; // Es un 1
}
shift_left(buffer,2,bit); // buffer=buffer[0], 2·8=16bits, bit=0 ó 1
}
if(error) printf(lcd_putc,"\fError\n");
else printf(lcd_putc,"\f%x %x Comando %d\n",buffer[1],buffer[0],buffer[0]);
}
}
[end code]
Esto no me funciona y no se porque, no me lee nada en el LCD, ningun dato del IR, aunque los pulsos llegan bien, lo he comprobado sacandolos por otro pin del pic segun llegan y con el osciloscopio