菜鸟做的无线开关(PT2262遥控器,315M超再生模块,软解码)
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_554695.jpg(原文件名:0001.jpg)
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_554696.jpg
(原文件名:0002.jpg)
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_554697.jpg
(原文件名:0003.jpg)
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_554698.jpg
(原文件名:0004.jpg)
#include "TYPEDEF.H"
#include "STC89C5X.H"
#include "INTRINS.H"
sfr P1M1 = 0x92;
#define ONSwitch() P1M1 |= 0x10; P1_4 = 1
#define OFFSwitch() P1M1 &= 0xEF; P1_4 = 0
INT8U RFLevel0;
INT8U RFLevel1;
INT8U RFStep;
INT8U RFBuf;
//
INT8U KeyAge;
INT8U KeyFlag;
INT8U SwitchState;
INT16U TimeOut;
//void Soft_Rst(void);
void SystemInit(void);
//INT8URead_Flash_Byte(INT16U addr);
//void Write_Flash_Byte(INT8U byte, INT16U addr);
//void Erase_Flash_Sector(INT16U addr);
/*
* Main function
*/
int main(void)
{
SystemInit();
while(1) {
if(TF1) {
TF1 = 0;
RFLevel1 = RFLevel0;
RFLevel0 = P3 & 0x80;
if(RFStep == 0) {
if(RFLevel0 == 0) {
RFBuf++;
} else {
if(RFBuf >= 60) {
RFBuf[++RFStep] = 1;
} else {
RFBuf = 0;
}
}
} else {
if(RFLevel0 != 0) {
if(++RFBuf == 0) {
RFStep = 0;
RFBuf = 0;
}
} else if(RFLevel1 != 0) {
if(++RFStep > 24) {
RFLevel0 = RFBuf / 15;
RFLevel1 = 0;
if(RFBuf< RFLevel0) RFLevel1++;
if(RFBuf> RFLevel0) RFLevel1++;
if(RFBuf< RFLevel0) RFLevel1++;
if(RFBuf> RFLevel0) RFLevel1++;
if(RFBuf< RFLevel0) RFLevel1++;
if(RFBuf> RFLevel0) RFLevel1++;
if(RFBuf< RFLevel0) RFLevel1++;
if(RFBuf> RFLevel0) RFLevel1++;
if(RFBuf< RFLevel0) RFLevel1++;
if(RFBuf > RFLevel0) RFLevel1++;
if(RFBuf < RFLevel0) RFLevel1++;
if(RFBuf > RFLevel0) RFLevel1++;
if(RFBuf < RFLevel0) RFLevel1++;
if(RFBuf > RFLevel0) RFLevel1++;
if(RFBuf < RFLevel0) RFLevel1++;
if(RFBuf > RFLevel0) RFLevel1++;
if(RFBuf < RFLevel0) RFLevel1++;
if(RFBuf < RFLevel0) RFLevel1++;
if(RFBuf < RFLevel0) RFLevel1++;
if(RFBuf < RFLevel0) RFLevel1++;
if(RFBuf < RFLevel0) RFLevel1++;
if(RFBuf < RFLevel0) RFLevel1++;
if(RFBuf > RFLevel0) RFLevel1++;
if(RFBuf > RFLevel0) RFLevel1++;
if(RFLevel1 >= 24) {
KeyAge++;
TimeOut= 0;
RFStep = 0;
RFBuf = 0;
if((KeyFlag == 0) && (KeyAge >= 1)) {
KeyFlag = 1;
if(SwitchState == 0) {
SwitchState = 1;
ONSwitch();
} else {
SwitchState = 0;
OFFSwitch();
}
}
}
} else {
RFBuf = 0;
}
}
}
if(++TimeOut > 6000) {
TimeOut = 0;
KeyAge= 0;
KeyFlag = 0;
}
}
}
}
/*
* Initializtion System
*/
void SystemInit(void)
{
IE = 0x00;
TMOD = 0x21;
TH1= 0xEC;
TR1= 1;
} 发现了STC 11和12系列中断有BUG,如果中断间隔很小,频繁中断时容易死机,不知道大家有没碰到 我一直在用啊,没有发现问题啊 mark,请教下楼主定时中断多长时间比较合适?以前试过好像不能同时兼容多种遥控 回复【3楼】Jason022
-----------------------------------------------------------------------
我用中断,结果上电工作几分钟就死机了,后来只好放在main函数了,你说的多种遥控应该是指数据速率不一样的吧?要兼容,采集速率要做成动态的,根据同步头的长度动态调整采集速率。我用的是内部时钟,精度很差,1L的代码就是动态决定采集速率的 回复【2楼】cmyldd
-----------------------------------------------------------------------
有个产品,串口中断很频繁(最快时大概1MS中断一次),用89C54,从未发现过问题,换成11F16,非常容易死机,原因至今没找到,晶体用的是32.768M的 1MS中断一次?BAUD是多少?9600的话那基本上一直在处理串口中断?CPU还有时间做其它事情? 回复【6楼】xnliuxiwen
-----------------------------------------------------------------------
是9600,每接收一个字节中断一次,当然有时间做其它事。Fosc = 32.768M,双倍速 1楼,发现了STC 11和12系列中断有BUG,如果中断间隔很小,频繁中断时容易死机,不知道大家有没碰到
-------------------------------------------
我用STC12C5204做上电唤醒,发现有程序跑飞,或换不醒。。
STC有没有技术支持论坛啊??他们那个姚永平普通话不行。 MARK mark! 你那模块什么样的(来个高清图看看), 好像我也有一块,上面主要就LM358, 一处接天线, 输出也是三脚.. 我想学习。。。无线开关(PT2262遥控器,315M超再生模块,软解码 楼主 可以提供点PDF 资料吗 怎样对码的?没看懂,请楼主指教一二。 mark~不错 mark 楼主,接收电路怎么做呢,新手想学学 mark! 回复【楼主位】Clinging 哆拉C梦
-----------------------------------------------------------------------
楼主 无线开关(PT2262遥控器,315M超再生模块,软解码 楼主 可以提供点 资料吗 楼主,请问如何提高接收距离啊?
我也做了个无线软解码的,可是距离只有12m左右吧!
有什么办法可以提高距离的么? 学习学习 记得无限开关纯数字就可以的,以前做过,用2262和2272加继电器 回复【19楼】skay_mcu
-----------------------------------------------------------------------
加入信号放大电路 楼主用那么高的晶振啊! 回复【23楼】xiaobendan仲跻东
-----------------------------------------------------------------------
内部RC 不错 回复【24楼】Clinging 哆拉C梦
-----------------------------------------------------------------------
内部RC没那么高吧??我用的12C5620内部RC一般是5-6M左右,你的怎么能达到32.768M????32.768K??
另外楼主能否讲解一下原理呀?最近也在研究这玩意. 回复【26楼】muzheyun
-----------------------------------------------------------------------
不好意思,是我没说清楚,32.768M是别的东西(请看5、6L),这个开关用的是内部RC
原理不知道怎么说,知道了PT2262的编码方式难道还不会解码么 #include "TYPEDEF.H"
楼主能否把头文件也给出来?谢谢! mark.慢慢看! 你的电源电路好危险哦 mark 我也比照做一个无线软解码试试 mark mark 菜鸟…… MARK mark 这东西越简单越好 红外线要简单很多。 最近正在学习无线解码,记号一下。 有点像贼的工具 学习学习了! skay_mcu 发表于 2010-10-30 10:44 楼主,请问如何提高接收距离啊? 我也做了个无线软解码的,可是距离只有12m左右吧! 有什么办法可以提高距离 ...
降低单片机频率试试,一般4M。 {:3_42:}好干净 一点注释都没有 mark
mark
楼主模块的距离可以到多少???? 你的RC降压上是不是少了个电阻? 遥控距离多远哈? 回帖。。楼主不错的程序。、、 学习,学习,再学习,可否详细点!!!!! {:time:}{:time:}{:time:}{:time:}{:time:} 程序存下了 xiaobendan 发表于 2010-12-28 13:21 static/image/common/back.gif
楼主用那么高的晶振啊!
315M晶振是发射无线信号用的晶振,还有433M的呢
本帖最后由 bbssilverkey 于 2013-4-23 16:15 编辑
我很喜欢楼主这种图,超帅,顺便说下:边缘距离会产生问题,处理一下可以更好 谢谢楼主!做的不错! Clinging 发表于 2010-5-16 18:13 static/image/common/back.gif
发现了STC 11和12系列中断有BUG,如果中断间隔很小,频繁中断时容易死机,不知道大家有没碰到 ...
STC12C5A60,频繁INT0外部中断也遇到死机问题,不过只有实验会发生这个现象,其他时候因为中断频率很低,没有遇到过。 这个不错的贴 #include "TYPEDEF.H"
楼主能否把头文件也给出来?谢谢! 学习一下 markPT2262遥控器
页:
[1]