|
本帖最后由 xiaojuan 于 2014-9-17 23:05 編輯
/*--------------------------------------------------------------------------
RED_READ.H
Header file for generic 80C52 and 80C32 microcontroller.
Copyright From @tonjinlv
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef__RED_READ1_H__
#define __RED_READ1_H__
uchar all_right=0;
uint buflag=0;
uint Ir_dat=0;
uchar flag=0;
bit right_data=0;
uchar temer=0;
uchar data dato[4]={0,0,0,0};
void right_send()
{
EA=0;
right_data=0;
send_str("#$");
send_com_char(dato[2]+0x30);
EA=1;
dato[3]=0;
dato[0]=0xaa;
}
uchar time(bit mode)
{
uchar boy,goy;
for(boy=0;boy<250;boy++)
{
delay_9ms();
if(RED!=mode){goy=boy;boy=252;}
}
return goy;
}
void red_in()interrupt 0
{
uchar ul8=8,uh8=8,dl8=8,dh8=8;
EX0=0;
temer=time(0);
if(temer>0xa0)
{
temer=time(1);
if(temer>0x20&temer<0x30)right_data=1;
if(temer>0x46&temer<0x61)
{
while(ul8--)
{
temer=time(0);
temer=time(1);
dato[0]<<=1;
if(temer>0x05&temer<0x0e);
else dato[0]|=0x01;
}
while(uh8--)
{
temer=time(0);
temer=time(1);
dato[1]<<=1;
if(temer>0x05&temer<0x0e);
else dato[1]|=0x01;
}
while(dl8--)
{
temer=time(0);
temer=time(1);
dato[2]>>=1;
if(temer>0x05&temer<0x0e);
else dato[2]|=0x80;
}
while(dh8--)
{
temer=time(0);
temer=time(1);
dato[3]>>=1;
if(temer>0x05&temer<0x0e);
else dato[3]|=0x80;
}
}
if(dato[0]==~dato[1]&dato[2]==~dato[3])right_data=1;
}
EX0=1;
}
void red_inint()
{
EX0=1;
IT0=0;
}
#endif
|
|