sarmad_101
Member level 3
I want to send data to computer to check that remote is sending rite data or not. Need Help about RS232 programing.
how can i send data from this program to computer.
The remote is using RC5 protocol.
Please anybody help me out.
:|
how can i send data from this program to computer.
The remote is using RC5 protocol.
Please anybody help me out.
:|
Code:
#include <18F252.h>
#use delay(clock=20000000)
#fuses NOWDT,HS, PUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD
#use rs232(baud=9600, xmit=pin_C6, rcv=pin_C7)
int1 get_RC5(void);
#define IR_INPUT PIN_B0 // the infrared receiver has to be connected to an
// interrupt-pin!
#define IR_STATUS (!input(IR_INPUT)) // invert the signal from the infrared receiver
typedef struct
{
int8 data[2];
int8 state;
} rc5_struct;
rc5_struct rc5;
#int_EXT
EXT_isr()
{
get_RC5();
}
int1 get_RC5(void)
{
int16 tmp,t;
int i;
int1 inp;
set_timer1(0);
while(IR_STATUS==1);
t=get_timer1();
if ((t<400) || (t>800)) return 0; // no RC5 code, abort decoding
for (i=0;i<13;i++)
{
inp=IR_STATUS;
set_timer1(0);
while (IR_STATUS==inp)
{
t=get_timer1();
if (t>800) return 0; // no RC5 code, abort decoding
}
tmp<<=1;
if (inp==0) tmp++;
set_timer1(0);
while (get_timer1()<776); // a simple delay would work here as well
}
tmp=tmp | 0x3000;
tmp=tmp & 0x37ff; // cut off togglebit
rc5.data[0]=tmp & 0xff; // device address
tmp>>=8;
rc5.data[1]=tmp & 0xff; // command code
rc5.state = 1;
disable_interrupts(INT_EXT);
return 1;
}
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
setup_timer_2(T2_DISABLED,0,1);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
rc5.state = 0;
while(1)
{
if(rc5.state==1) // did we receive a valid RC5 - command?
{
// interprete the command here...
rc5.state = 0;
enable_interrupts(INT_EXT);
}
}
}