|
最近在做一個315M的無線學習型遙控,功能是能學習無線遙控器的按鍵功能,學習好后,發射出去可以實現所學遙控器的功能控制設備。無線接收我用的是外部中斷來接收,但是程序寫入單片機,運行時,一按學習鍵,馬上就中斷,我把超外差接收模塊去掉按學習鍵時不會立即運行中斷,接上就不正常,馬上就中斷,懷疑是不是干擾問題,請大神給看看如何解決?
/*********無線數據接收程序**************************/
void intt0(void) interrupt 0 //外部中斷0服務程序
{
EX0=0;
// IT0=0;
EA=0;
if(R_315M==0)
{
Delay1ms(100); //延時程序
if(R_315M==1)
{
clear_buf(); //數據緩存清0
goto receive_end;
}
receive_cnt=0;
F_dat[receive_cnt]=0x0011; //315M標志 自定
while(receive_cnt<250)
{
receive_cnt++;
TR0=1;//啟動定時器0
while(R_315M==0); //低電平
TR0=0;
F_dat[receive_cnt]=TH0*256+TL0; //脈寬寬度測量
receive_cnt++;
TH0=0;
TL0=0;
TF0=0;
TR0=1;
while(R_315M==1)
{
if(TF0==1)
{
goto receive_end;
}
}
TR0=0;
F_dat[receive_cnt]=TH0*256+TL0; //脈寬寬度測量
TH0=0;
TL0=0;
TF0=0;
}
}
receive_end:
if(F_dat[5]>=50) //消除干擾
{
TR0=0;
receive_OK=1; //接收完畢標志
F_dat[receive_cnt]=0x0000;
receive_cnt=0;
TH0=0;
TL0=0;
TF0=0;
}
else
{
clear_buf(); //數據緩存清0
receive_cnt=0;
TR0=0;
TH0=0;
TL0=0;
TF0=0;
EX0=1;
// IT0=1;
EA=1;
}
}
/*******************************************************/
|
|