这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» MCU» 请各位老大指点,小弟感激不尽

共1条 1/1 1 跳转至

请各位老大指点,小弟感激不尽

菜鸟
2005-06-14 22:15:59 打赏

文档:该程序功能是接收遥控信号。先发引导码,引道码9MS的高电平和4.5MS的低电平够成,再开始发用户码(16位) 接着发按键码(8位)最后发按键的反码(8位) 都是先发低位再发高位. 数据0是由0.56MS的高电平和0.56ms的低电平构成,数据1是由0.56ms高电平和1.685ms的底电平构成。所以我用低电平的时间 来判断是0还是1。 #include static unsigned char data array[4],i,,j; //***************************************************************************************** void int1(void) interrupt 2 { EA=1;file://开CPU中断 EX1=1;file://开INT1中断 ET1=1;file://开T1中断 TH1=0X00;file://计时器请0 TL1=0X00; for(i=0;i<4;i++)file://数组清0 {array[i]=0;} }file://**************************************************************************************************void timer1(void) interrupt 3 { int n,m; char k; TMOD=0X10;file://T1选择定时方式1

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]



关键词: 各位 老大 指点 小弟 感激不尽

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]