z543g
Junior Member level 1

rc5_send
/** IR_LED TEST for 89c2051 **/
#define IR_LED P1.0
void delay_us(int tt)
{
while(tt--);
}
void delay_ms(int tt)
{
while(tt>0)
{
delay_us(160);
delay_us(160);
tt--;
}
}
void rc5_send_pulses(void)
{
unsigned char i;
i = 32;
while(i--)
{
IR_LED = 0;
delay_us(7);
IR_LED = 1;
delay_us(19);
}
}
void rc5_send_0(void)
{
rc5_send_pulses();
delay_us(889);
}
void rc5_send_1(void)
{
delay_us(889);
rc5_send_pulses();
}
void rc5_send(char address,char command)
{
unsigned int rc5_code;
unsigned char i;
rc5_code = 0x07;
rc5_code <<= 5;
rc5_code |= (address & 0x1f);
rc5_code <<= 6;
rc5_code |= (command & 0x3f);
rc5_code <<= 2;
i = 14;
while(i--) {
if(rc5_code & 0x8000)
rc5_send_1();
else
rc5_send_0();
rc5_code <<= 1;
}
}
void main(void)
{
while(1)
{
rc5_send(5,53);
delay_ms(114);
}
}
---------------------------------------------------------------------------
/** RC5_RECEIVE for 89c2051 **/
typedef unsigned char BYTE;
typedef unsigned int WORD;
#define RC5_IN P1.0
void delay_us(int tt)
{
while(tt--);
}
void delay_ms(int tt)
{
while(tt>0)
{
delay_us(160);
delay_us(160);
tt--;
}
}
BYTE read_SBUF(void)
{
while(RI == 0) {}
RI = 0;
return SBUF;
}
void write_SBUF(BYTE ch)
{
while(TI == 0) {}
TI = 0;
SBUF = ch;
}
void scu_str(char s[])
{
BYTE i;
i=0;
while(s != '\0')
{
write_SBUF(s[i++]);
}
}
void scu_init(void)
{
SCON = 0x52;
TMOD = TMOD & 0x0f;
TMOD = TMOD | 0x20;
TH1 = 0xfd;
TR1 = 1;
}
int rc5_receive(void)
{
int rc5_code;
unsigned char i;
unsigned char q;
rc5_code = 1;
while(RC5_IN) continue;
delay_us(444);
if(RC5_IN) return RC5_ERR;
i = 13;
while(i--)
{
q = 0;
rc5_code <<= 1;
delay_us(889);
if(RC5_IN) q= 2;
delay_us(889);
if(RC5_IN) q++;
switch(q)
{
case 1: rc5_code |= 0; break;
case 2: rc5_code |= 1; break;
defualt: return RC5_ERR;
}
}
return rc5_code & 0x07ff;
}
void main(void)
{
unsigned int i;
scu_init()
while(1)
{
i = rc5_receive();
printf("%d %d\n\r",i>>6,i & 0x003f);
}
}
answer:
16384 63
0 0
16384 63
16384 63 <-- i do not know about rc5 code.
please who
. error rc5 code source?
help me... help me...

/** IR_LED TEST for 89c2051 **/
#define IR_LED P1.0
void delay_us(int tt)
{
while(tt--);
}
void delay_ms(int tt)
{
while(tt>0)
{
delay_us(160);
delay_us(160);
tt--;
}
}
void rc5_send_pulses(void)
{
unsigned char i;
i = 32;
while(i--)
{
IR_LED = 0;
delay_us(7);
IR_LED = 1;
delay_us(19);
}
}
void rc5_send_0(void)
{
rc5_send_pulses();
delay_us(889);
}
void rc5_send_1(void)
{
delay_us(889);
rc5_send_pulses();
}
void rc5_send(char address,char command)
{
unsigned int rc5_code;
unsigned char i;
rc5_code = 0x07;
rc5_code <<= 5;
rc5_code |= (address & 0x1f);
rc5_code <<= 6;
rc5_code |= (command & 0x3f);
rc5_code <<= 2;
i = 14;
while(i--) {
if(rc5_code & 0x8000)
rc5_send_1();
else
rc5_send_0();
rc5_code <<= 1;
}
}
void main(void)
{
while(1)
{
rc5_send(5,53);
delay_ms(114);
}
}
---------------------------------------------------------------------------
/** RC5_RECEIVE for 89c2051 **/
typedef unsigned char BYTE;
typedef unsigned int WORD;
#define RC5_IN P1.0
void delay_us(int tt)
{
while(tt--);
}
void delay_ms(int tt)
{
while(tt>0)
{
delay_us(160);
delay_us(160);
tt--;
}
}
BYTE read_SBUF(void)
{
while(RI == 0) {}
RI = 0;
return SBUF;
}
void write_SBUF(BYTE ch)
{
while(TI == 0) {}
TI = 0;
SBUF = ch;
}
void scu_str(char s[])
{
BYTE i;
i=0;
while(s != '\0')
{
write_SBUF(s[i++]);
}
}
void scu_init(void)
{
SCON = 0x52;
TMOD = TMOD & 0x0f;
TMOD = TMOD | 0x20;
TH1 = 0xfd;
TR1 = 1;
}
int rc5_receive(void)
{
int rc5_code;
unsigned char i;
unsigned char q;
rc5_code = 1;
while(RC5_IN) continue;
delay_us(444);
if(RC5_IN) return RC5_ERR;
i = 13;
while(i--)
{
q = 0;
rc5_code <<= 1;
delay_us(889);
if(RC5_IN) q= 2;
delay_us(889);
if(RC5_IN) q++;
switch(q)
{
case 1: rc5_code |= 0; break;
case 2: rc5_code |= 1; break;
defualt: return RC5_ERR;
}
}
return rc5_code & 0x07ff;
}
void main(void)
{
unsigned int i;
scu_init()
while(1)
{
i = rc5_receive();
printf("%d %d\n\r",i>>6,i & 0x003f);
}
}
answer:
16384 63
0 0
16384 63
16384 63 <-- i do not know about rc5 code.
please who