完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近在做一个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; } } /*******************************************************/ |
|
相关推荐
9个回答
|
|
PIN_INT 低电平触发 肯定会中断 问题是你判别不了超外差模块发来的的数据流
|
|
|
|
无线接收模块的输出端,我接了个三极管反相了,所以接收模块是低电平,单片机是高电平这样子的;我是这样想的,不知对不对,无线模块在没有接收到信号时,一直是低电平,当接收到信号时,变成高电平,经三极管反相后,单片机端就变成低电平;反相是可以了,就是单片机老是一进入学习就中断。。。。。! |
|
|
|
你这个肯定是加了PT2272 PT2262,没有什么意思,还不如纯模拟威廉希尔官方网站
|
|
|
|
我没有加PT2262和PT2272的,我是想要单片机来模拟的!如果要加,我直接用上就行,何必加单片机麻烦。我想做个万解码的无线接收发射模块,要用单片机做! |
|
|
|
楼主, 最近我也研究这个, 可以告诉下现在是怎么实现的吗
|
|
|
|
最近有其他项目,太忙,还没有时间研究呢,无线的干扰信号比较大,程序里要想办法把干扰信号分辨出来,剩下的跟红外学习的是一样的,我也没有弄成功 |
|
|
|
以下为C程序:
#include #include #define uchar unsigned char #define uint unsigned int ***it TX_STATUS=P1^0;//定义P1.0口为发射状态指示 ***it PA_CNTL=P1^1;//定义P1.1口为功放电源控制信号 ***it data_out=P1^2;//定义P1.2口为数据输出 //初始化程序 void init() { TX_STATUS=0;//初始化,灭发射状态指示灯 PA_CNTL=0;//初始化,关功放电源使能 data_out=0;//初始化,关数据输出 } //初始化程序 //延时程序 void delayms(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //延时程序 //功放电源开启 void PA_POWER_ON() { PA_CNTL=1;//开功放电源 } //功放电源开启 //功放电源关闭 void PA_POWER_OFF() { PA_CNTL=0;//关功放电源 } //功放电源关闭 //发射状态指示程序 void TX_LED() { TX_STATUS=1;//点亮发射指示灯 delayms(150);//延时150ms TX_STATUS=0;//灭发射指示灯 } //发射状态指示程序 //产生1010 000000 0波形 void wave01() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 delayms(150);//第7位 delayms(150);//第8位 delayms(150);//第9位 delayms(150);//第10位 delayms(150);//第11位 } //产生1010 000001 1波形 void wave02() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 delayms(150);//第7位 delayms(150);//第8位 delayms(150);//第9位 data_out=1; delayms(150);//第10位 delayms(150);//第11位 } //产生1010 000010 1波形 void wave03() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 delayms(150);//第7位 delayms(150);//第8位 data_out=1; delayms(150);//第9位 data_out=0; delayms(150);//第10位 data_out=1; delayms(150);//第11位 } //产生1010 000011 0波形 void wave04() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 delayms(150);//第7位 delayms(150);//第8位 data_out=1; delayms(150);//第9位 delayms(150);//第10位 data_out=0; delayms(150);//第11位 } //产生1010 000100 1波形 void wave05() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 delayms(150);//第7位 data_out=1; delayms(150);//第8位 data_out=0; delayms(150);//第9位 delayms(150);//第10位 data_out=1; delayms(150);//第11位 } //产生1010 000101 0波形 void wave06() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 delayms(150);//第7位 data_out=1; delayms(150);//第8位 data_out=0; delayms(150);//第9位 data_out=1; delayms(150);//第10位 data_out=0; delayms(150);//第11位 } //产生1010 000110 0波形 void wave07() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 delayms(150);//第7位 data_out=1; delayms(150);//第8位 delayms(150);//第9位 data_out=0; delayms(150);//第10位 delayms(150);//第11位 } //产生1010 000111 1波形 void wave08() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 delayms(150);//第7位 data_out=1; delayms(150);//第8位 delayms(150);//第9位 delayms(150);//第10位 delayms(150);//第11位 } //产生1010 001000 1波形 void wave09() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 data_out=1; delayms(150);//第7位 data_out=0; delayms(150);//第8位 delayms(150);//第9位 delayms(150);//第10位 data_out=1; delayms(150);//第11位 } //产生1010 001001 0波形 void wave10() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 data_out=1; delayms(150);//第7位 data_out=0; delayms(150);//第8位 delayms(150);//第9位 data_out=1; delayms(150);//第10位 data_out=0; delayms(150);//第11位 } //产生1010 001010 0波形 void wave11() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 data_out=1; delayms(150);//第7位 data_out=0; delayms(150);//第8位 data_out=1; delayms(150);//第9位 data_out=0; delayms(150);//第10位 delayms(150);//第11位 } //产生1010 001011 1波形 void wave12() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 data_out=1; delayms(150);//第7位 data_out=0; delayms(150);//第8位 data_out=1; delayms(150);//第9位 delayms(150);//第10位 delayms(150);//第11位 } //产生1010 001100 0波形 void wave13() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 data_out=1; delayms(150);//第7位 delayms(150);//第8位 data_out=0; delayms(150);//第9位 delayms(150);//第10位 delayms(150);//第11位 } //产生1010 001101 1波形 void wave14() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 data_out=1; delayms(150);//第7位 delayms(150);//第8位 data_out=0; delayms(150);//第9位 data_out=1; delayms(150);//第10位 delayms(150);//第11位 } //产生1010 001110 1波形 void wave15() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 data_out=1; delayms(150);//第7位 delayms(150);//第8位 delayms(150);//第9位 data_out=0; delayms(150);//第10位 data_out=1; delayms(150);//第11位 } //产生1010 001111 0波形 void wave16() { data_out=1; delayms(150);//第1位 data_out=0; delayms(150);//第2位 data_out=1; delayms(150);//第3位 data_out=0; delayms(150);//第4位 delayms(150);//第5位 delayms(150);//第6位 data_out=1; delayms(150);//第7位 delayms(150);//第8位 delayms(150);//第9位 delayms(150);//第10位 data_out=0; delayms(150);//第11位 } void key_scan() { uchar x,y,z; P2=0x0f; x=P2&0x0f; P2=0xf0; y=P2&0xf0; z=x|y; switch(z) { case 0xee:PA_POWER_ON();wave01();PA_POWER_OFF();TX_LED();break;//按键01,输出波形01 case 0xde:PA_POWER_ON();wave02();PA_POWER_OFF();TX_LED();break;//按键02,输出波形02 case 0xbe:PA_POWER_ON();wave03();PA_POWER_OFF();TX_LED();break;//按键03,输出波形03 case 0x7e:PA_POWER_ON();wave04();PA_POWER_OFF();TX_LED();break;//按键04,输出波形04 case 0xed:PA_POWER_ON();wave05();PA_POWER_OFF();TX_LED();break;//按键05,输出波形05 case 0xdd:PA_POWER_ON();wave06();PA_POWER_OFF();TX_LED();break;//按键06,输出波形06 case 0xbd:PA_POWER_ON();wave07();PA_POWER_OFF();TX_LED();break;//按键07,输出波形07 case 0x7d:PA_POWER_ON();wave08();PA_POWER_OFF();TX_LED();break;//按键08,输出波形08 case 0xeb:PA_POWER_ON();wave09();PA_POWER_OFF();TX_LED();break;//按键09,输出波形09 case 0xdb:PA_POWER_ON();wave10();PA_POWER_OFF();TX_LED();break;//按键10,输出波形10 case 0xbb:PA_POWER_ON();wave11();PA_POWER_OFF();TX_LED();break;//按键11,输出波形11 case 0x7b:PA_POWER_ON();wave12();PA_POWER_OFF();TX_LED();break;//按键12,输出波形12 case 0xe7:PA_POWER_ON();wave13();PA_POWER_OFF();TX_LED();break;//按键13,输出波形13 case 0xd7:PA_POWER_ON();wave14();PA_POWER_OFF();TX_LED();break;//按键14,输出波形14 case 0xb7:PA_POWER_ON();wave15();PA_POWER_OFF();TX_LED();break;//按键15,输出波形15 case 0x77:PA_POWER_ON();wave16();PA_POWER_OFF();TX_LED();break;//按键16,输出波形16 default:; } } void main() { init();//上电初始化 key_scan(); } |
|
|
|
请问现在成功了吗?这是单片机接受部分的程序吧?我也好想
|
|
|
|
好想有人一起学习,自学好辛苦!多谢大神分享的程序和经验!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
397 浏览 1 评论
838 浏览 1 评论
1016 浏览 2 评论
为什么在频率为10^3 Hz处,产生的相移就可以确定约为-90度
1587 浏览 1 评论
【高手问答】威廉希尔官方网站 的功能是为了0.6v到40v之间调压,运放发热严重
4171 浏览 8 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 12:17 , Processed in 0.836524 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号