文档:该程序功能是接收遥控信号。先发引导码,引道码9MS的高电平和4.5MS的低电平够成,再开始发用户码(16位) 接着发按键码(8位)最后发按键的反码(8位) 都是先发低位再发高位. 数据0是由0.56MS的高电平和0.56ms的低电平构成,数据1是由0.56ms高电平和1.685ms的底电平构成。所以我用低电平的时间 来判断是0还是1。 #include
TR1=1;file://开T1 TH1=0X00;file://T1清0TL1=0X00; while(1){file://等待遥控信号的出现 while(!INT1);file://若为到电平,延时8.8ms for(n=0;n<8800;n++); while(INT1);file://若为低,延时4.4msfor(m=0;m<4400;m++); for(i=0;i<4;i++)file://装32位数据 { for(j=0;j<8;j++) { if(INT1==0)file://如果为低电平,开T1 TH1=0X00; TL1=0X00; TR1=1; if(INT1==1)file://如果为低电平,停止计时 TR1=0; if(TH1<0X04)file://如果时间小于1024us k=0;file://发的是0 else
k=1;file://否则发的是1 array[i]|=k;file://将0或1存到数组中 array[i]>>=1; }}}}
void main() { IE=0X86;file://开CPU中断 RI=1; IT1=1; 下降沿有效 SCON=0x50; PCON=0x01; TR1=1; TH1=0x00;
TL1=0x00;}
问题是,CPU响应的中断,收到数据,但是不是遥控发的数据,不知道是采样有问题,还是中断服务程序有问题,请各位老大指点,小弟感激不尽
[align=right][color=#000066][此贴子已经被作者于2005-6-14 20:42:33编辑过][/color][/align]