完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我用别人好的PT2262加315的遥控器 再用别人现程SYN400R做的315接收模块 想用80C51解码 在网上找了二个程序 试了都不行 接收模块我是这样连接的接收模块GND接地 5V接电源 OUT接P3。2口 硬件我都试个没问题 给我看一下程序那里要修的 我还另外加了如图所示的电路也不行 请高手看是那里的问题
谢谢 // 自适应频率的2262解码代码很感兴趣,经试验完全可以用谢谢LZ的好资料 //让PT2262无线解码不再神秘,让菜鸟们都能做解码程序 //自适应频率的2262解码代码 晶振11.0592到22.1184MHZ #include"AT89x52.h" #include #define uchar unsigned char #define uint unsigned int ***it shou = P3^2; //外部中断 1 //========================================================================= void Inittimer0(void) { TMOD = 0x11; //定时器1,定时器0用模式1 16位计时用,12T EA = 1; ET0 = 1; ET1=1; } //======================================================================== void main(void) { InitTimer0(); EX0=1; while(1); } //======================================================================== void ex0(void) interrupt 0 //外部中断 1 { bit err=0; uchar i,tl,th,ma1,ma2,ma3; uchar TimeCount; uint l,m; EX0=0; //关闭外部中断 TR1=1; //起动定时器 i=0; if(TimeCount>0)//当按键按下释放后该值不在赋值就同通过递减直到该值等于0 ? { TimeCount--;//等于0后表示按键释放 ? } while(shou==0); //等待第一低电平 while(i<24) { while(shou==0); //等待高电平到来 tl=TL1; th=TH1; TH1=TL1=0; //记录低电平长度并初始化高电平头 l=th; l=((l<<8)+tl); if(i==0) //处理低电平 { if(l>2360) { //确认是引导头 m=l/31; } else //不符合规则(出错) { i=0; TR1=0; TH1=TL1=0; err=1; break; } } else { if(((l>(m-(m/4)))&&(l<(m+(m/4))))||((l>((m*3)-(m/2)))&&(l<((m*3)+(m/2))))); else { i=0; TR1=0; TH1=TL1=0; err=1; break; } } while(shou==1); //等待低电平到来 th=TH1; tl=TL1; TH1=TL1=0; l=th; l=((l<<8)+tl); // if((l>460)&&(l<760)) //短为0 短610 if(((l>(m-(m/4)))&&(l<(m+(m/4))))) { i++; ma1<<=1; //纠正了LZ的高低位相反问题 } // else if((l>1577)&&(l<1977)) //长为1 长1777 else if(((l>((m*3)-(m/2)))&&(l<((m*3)+(m/2))))) { i++; ma1<<=1; //纠正了LZ的高低位相反问题 ma1+=1; //纠正了LZ的高低位相反问题 } else //不符合规则出错 { i=0; TR1=0; TH1=TL1=0; err=1; break; } if(i==8) { ma3=ma1; //SBUF=ma3; //P1=ma3; } if(i==16) { ma2=ma1; //SBUF=ma2; //P1=ma2; } if(i==24)////解t==0)//为0表示是新的一次按下对其进行处理,如过该值大于0表示已经按下不在处理 { ACC=ma1; if(ACC==0xC0) //P1=0xef; P1_0=~P1_0; if(ACC==0x30) //P1=0xdf; P1_1=~P1_1; if(ACC==0x0c) //P1=0xbf; P1_2=~P1_2; if(ACC==0x03) //P0=0x7f; P1_3=~P1_3; } TimeCount=30;//防止按键没放开直在取反,保证按1次只做1次处理 } } TR1=0; TH1=0; TL1=0; EX0=1; } 码成功结束 { if(TimeCoun
|
|
相关推荐
4个回答
|
|
家里的电瓶车遥控器坏了,想配个新的,不过这东西拆不开了,就想把地址码读出来,就在自己单片机板上加了个315MHz的接收模块,解码成功后却发现另一个遥控器不正常就看了下结果震荡电阻不一样,于是在修改前写了个频率自适应的,刚写的,还热着呢,不过没修改完善,自适应解码成功率只有90%左右。
void inittimer1(void) { TR1=0; TH1=TL1=0; } void InitTimer0(void) { TMOD = 0x11; //定时器1,定时器0用模式1 16位计时用,12T // TL0 = 0xf9; // TH0 = 0x4b; //定时25ms,22.1184MHz,12T模式 EA = 1; ET0 = 1; ET1=1; } void main(void) { InitTimer0(); EX0=1; while(1); } void ex0(void) interrupt 0 { uchar err=0; uchar i,tl,th; uchar ma1,ma2,ma3; uint l,m; EX0=0; TR1=1; i=0; while(shou==0); while(i<24) { while(shou==0); //等待高电平到来 tl=TL1; th=TH1; TH1=TL1=0; //记录低电平长度并初始化高电平头 l=th; l=((l<<8)+tl); if(i==0) //处理低电平 { //处理的是第一次(即引导头) // if((l>16259)&&(l<18259)) //17259 长度判断是否符合 if(l>2360) { //确认是引导头 m=l/32; } else //不符合规则(出错) { i=0; TR1=0; TH1=TL1=0; err=1; break; } } else { //短555 长1666 // if(((l>405)&&(l<705))||((l>1466)&&(l<1866))); if(((l>(m-(m/4)))&&(l<(m+(m/4))))||((l>((m*3)-(m/2)))&&(l<((m*3)+(m/2))))); else { i=0; TR1=0; TH1=TL1=0; err=1; break; } } while(shou==1); //等待低电平到来 th=TH1; tl=TL1; TH1=TL1=0; l=th; l=((l<<8)+tl); // if((l>460)&&(l<760)) //短为0 短610 if(((l>(m-(m/4)))&&(l<(m+(m/4))))) { i++; ma1>>=1; } // else if((l>1577)&&(l<1977)) //长为1 长1777 else if(((l>((m*3)-(m/2)))&&(l<((m*3)+(m/2))))) { i++; ma1>>=1; ma1+=128; } else //不符合规则出错 { i=0; TR1=0; TH1=TL1=0; err=1; break; } if(i==8) { ma3=ma1; SBUF=ma3; } if(i==16) { ma2=ma1; SBUF=ma2; } if(i==24)////解码成功结束 { led=!led; if(ma1==0x03)ma1=1; if(ma1==0x0c)ma1=2; if(ma1==0x30)ma1=3; if(ma1==0xc0)ma1=4; SBUF=ma1; Delay(255); Delay(255); Delay(255); Delay(255); } } TR1=0; TH1=0; TL1=0; EX0=1; /* TR1=0; th=TH1; tl=TL1; TH1=TL1=0 TR1=1; time1_us=1; tim_t=th; tim_t<<=8; tim_t+=tl; if( */ } |
|
|
|
这个不错!呵呵!支持一下!单片机论坛www.arm8.net
|
|
|
|
|
|
|
|
315接收模块输出直接P3。2口吗 有没有什么地方需要改动的? |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
7 浏览 0 评论
26 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
13 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
644 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1000 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11770 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 05:48 , Processed in 0.579432 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号