|
最近在做一個(gè)315M的無(wú)線學(xué)習(xí)型遙控,功能是能學(xué)習(xí)無(wú)線遙控器的按鍵功能,學(xué)習(xí)好后,發(fā)射出去可以實(shí)現(xiàn)所學(xué)遙控器的功能控制設(shè)備。無(wú)線接收我用的是外部中斷來(lái)接收,但是程序?qū)懭雴纹瑱C(jī),運(yùn)行時(shí),一按學(xué)習(xí)鍵,馬上就中斷,我把超外差接收模塊去掉按學(xué)習(xí)鍵時(shí)不會(huì)立即運(yùn)行中斷,接上就不正常,馬上就中斷,懷疑是不是干擾問(wèn)題,請(qǐng)大神給看看如何解決?
/*********無(wú)線數(shù)據(jù)接收程序**************************/
void intt0(void) interrupt 0 //外部中斷0服務(wù)程序
{
EX0=0;
// IT0=0;
EA=0;
if(R_315M==0)
{
Delay1ms(100); //延時(shí)程序
if(R_315M==1)
{
clear_buf(); //數(shù)據(jù)緩存清0
goto receive_end;
}
receive_cnt=0;
F_dat[receive_cnt]=0x0011; //315M標(biāo)志 自定
while(receive_cnt<250)
{
receive_cnt++;
TR0=1;//啟動(dòng)定時(shí)器0
while(R_315M==0); //低電平
TR0=0;
F_dat[receive_cnt]=TH0*256+TL0; //脈寬寬度測(cè)量
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; //脈寬寬度測(cè)量
TH0=0;
TL0=0;
TF0=0;
}
}
receive_end:
if(F_dat[5]>=50) //消除干擾
{
TR0=0;
receive_OK=1; //接收完畢標(biāo)志
F_dat[receive_cnt]=0x0000;
receive_cnt=0;
TH0=0;
TL0=0;
TF0=0;
}
else
{
clear_buf(); //數(shù)據(jù)緩存清0
receive_cnt=0;
TR0=0;
TH0=0;
TL0=0;
TF0=0;
EX0=1;
// IT0=1;
EA=1;
}
}
/*******************************************************/
|
|