這是接收的C語言
void IrInit()
{
IT0=1;//狟蔥朓揖楷
EX0=1;//湖羲笢剿0埰勍
EA=1; //湖羲軞笢剿
IRIN=1;//場宎趙傷諳
}
/*******************************************************************************
* 滲杅靡 : ReadIr()
* 滲杅髡夔 : 黍綻俋杅硉腔笢剿滲杅
* 怀 : 拸
* 怀堤 : 拸
*******************************************************************************/
void ReadIr() interrupt 0
{
unsigned char j,k;
unsigned int err;
Time=0;
DelayMs(70);
if(IRIN==0) //岆瘁淩腔諉彶善淏腔陓瘍
{
err=1000; //1000*10us=10ms,閉徹佽隴諉彶善渣昫腔陓瘍
/*絞謗跺沭璃飲峈淩岆悜遠ㄛ彆衄珨跺沭璃峈樑腔奀緊泐堤悜遠ㄛ轎腕最唗堤渣腔奀
綜ㄛ最唗侚婓涴爵*/
while((IRIN==0)&&(err>0)) //脹渾醱9ms腔腴萇徹
{
DelayMs(1);
err--;
}
if(IRIN==1) //彆淏脹善9ms腴萇
{
err=500;
while((IRIN==1)&&(err>0)) //脹渾4.5ms腔宎詢萇徹
{
DelayMs(1);
err--;
}
for(k=0;k<4;k++) //僕衄4郪杅擂
{
for(j=0;j<8;j++) //諉彶珨郪杅擂
{
err=60;
while((IRIN==0)&&(err>0))//脹渾陓瘍醱腔560us腴萇徹
{
DelayMs(1);
err--;
}
err=500;
while((IRIN==1)&&(err>0)) //數呾詢萇腔奀潔酗僅﹝
{
DelayMs(1);//0.14ms
Time++;
err--;
if(Time>30)
{
EX0=1;
return;
}
}
IrValue[k]>>=1; //k桶尨菴撓郪杅擂
if(Time>=8) //彆詢萇堤珋湮衾565usㄛ饒繫岆1
{
IrValue[k]|=0x80;
}
Time=0; //蚚俇奀潔猁笭陔董硉
}
}
}
if(IrValue[2]!=~IrValue[3])
{
return;
}
}
|