历史上的今天
返回首页

历史上的今天

今天是:2024年10月28日(星期一)

正在发生

2019年10月28日 | 用pic16f630 MCU实现的315MHZ无线软件解码和编码.代替PT2272和pt2262

2019-10-28 来源:eefocus

#include    

//#include    

#define uchar unsigned char   

#define uint unsigned int   

#define PORTAIT(adr,bit) ((unsigned)(&adr)*8+(bit)) ///絕對尋址位操作指令   

#define PORTCIT(adr,bit)((unsigned)(&adr)*8+(bit)) ///絕對尋址位操作指令   



static bit KEY1 @ PORTAIT(PORTA,0);   

static bit KEY2 @ PORTAIT(PORTA,1);   

static bit KEY3 @ PORTAIT(PORTA,4);   

static bit KEY4 @ PORTAIT(PORTA,5);   


static bit DECODE_POWER_ON_OFF @ PORTCIT(PORTC,0);   

static bit LED1 @ PORTCIT(PORTC,1);   

static bit LED2 @ PORTCIT(PORTC,5);   

static bit BEEP @ PORTCIT(PORTC,2);   

static bit DIN  @ PORTCIT(PORTC,3);   

static bit DOUT @ PORTCIT(PORTC,4);   


uint i;   


uchar keyCode;   

bit sign_key;   





#define Err 0xFF                //當解碼程序發現接收的數據是無效數據時返回此值   


char DeviceAddr[9]="1010ffff";  //報警器的地址,1 接高電平,0 接低電平(地), F 為懸空.(人可讀)   


uchar AddrH,AddrL;              //產品地址(機可讀)   


void delay_150us(uchar t)   

{   uchar k;   

    uchar j;   

      for(k=t;k>0;k--)   

      for(j=50;--j;);   

}   

void delay_50us(uchar t)   

{        

      uchar k;   

      uchar i;   

      for(k=t;k>0;k--)   

      for(i=14;--i;);   

}   


void Convert()          //人可讀地址轉換為MCU可讀   

{   

    uchar i;   

    for(i=0;i<4;i++){   

        if(DeviceAddr[i]=='0')   

        {   AddrH<<=2;   

            AddrH|=0;   

        }   

        if(DeviceAddr[i]=='1')   

        {   

            AddrH<<=2;   

            AddrH|=3;   

        }   

        if(DeviceAddr[i]=='f')   

        {   

            AddrH<<=2;   

            AddrH|=1;   

        }   

    }   

        for(i=4;i<8;i++){   

        if(DeviceAddr[i]=='0')   

        {      

            AddrL<<=2;   

            AddrL|=0;              

        }   

        if(DeviceAddr[i]=='1')   

        {   

            AddrL<<=2;   

            AddrL|=3;   

        }   

        if(DeviceAddr[i]=='f')   

        {   

            AddrL<<=2;   

            AddrL|=1;   

        }   

    }   

}   

void Send(uchar *DAddr,uchar SendData)   

{       uchar temp,i;   

        DOUT=1;   

        delay_150us(2);   

        DOUT=0;   

        delay_150us(60);   

        for(i=0;i<8;i++)//Send AddrCode   

        {   temp=*DAddr++;   

            if(temp=='1')   

            {   DOUT=1;   

                delay_150us(6);   

                DOUT=0;   

                delay_150us(2);   

                DOUT=1;   

                delay_150us(6);   

                DOUT=0;   

                delay_150us(2);                

            }   

            if(temp=='f')   

            {   DOUT=1;   

                delay_150us(2);   

                DOUT=0;   

                delay_150us(6);   

                DOUT=1;   

                delay_150us(6);    

                DOUT=0;   

                delay_150us(2);   

            }   

            if(temp=='0')   

            {   DOUT=1;   

                delay_150us(2);   

                DOUT=0;   

                delay_150us(6);   

                DOUT=1;   

                delay_150us(2);   

                DOUT=0;   

                delay_150us(6);   

            }   

        }   

        for(i=0;i<4;i++)///Send Data   

        {   if(SendData&(8>>i))   

            {   

                DOUT=1;   

                delay_150us(6);   

                DOUT=0;   

                delay_150us(2);   

                ////////////////////   

                DOUT=1;   

                delay_150us(6);   

                DOUT=0;   

                delay_150us(2);   

            }   

            else   

            {          

                DOUT=1;   

                delay_150us(2);   

                DOUT=0;   

                delay_150us(6);   

                ///   

                DOUT=1;   

                delay_150us(2);   

                DOUT=0;   

                delay_150us(6);   

            }   

        }   

}   

uchar GetData()//解碼程序   

{      

         uchar i,j,k;   

         uchar ReadCode[3],GetCode;   

         //------------------------找同步頭-------------------------   

         if(!DIN)return Err;   

         delay_150us(3);   

         for(i=0;i<28;i++)   

         {   

            if(DIN)return Err;   

            delay_150us(2);    

         }   

         for(i=0;i<30;i++)   

         {   

            if(DIN)break;   

            delay_50us(1);   

            if(i>25)return Err;//如果超時則返回   

         }   

        //-----------------------接收地址碼和數據碼-----------------   

         for(j=0;j<3;j++)   

         {   

            for(i=0;i<8;i++)   

            {    

推荐阅读

史海拾趣

Chip Technologies Inc公司的发展小趣事

Chip Technologies Inc深知人才是企业发展的核心力量。因此,公司一直注重人才培养和团队建设。通过搭建完善的培训体系,公司培养了一批高素质的研发人才和管理人才。同时,公司还积极营造团结、协作的工作氛围,使得团队成员能够充分发挥自己的潜能,共同推动公司的发展。

Floeth Electronic Ltd公司的发展小趣事

Chip Technologies Inc自成立以来,一直致力于芯片技术的研发与创新。在某一年,公司成功研发出一款具有划时代意义的芯片,这款芯片在功耗、性能及集成度等方面均达到了行业领先水平。这一技术突破迅速赢得了市场的认可,公司订单量激增,业绩大幅提升。随着技术的不断迭代与完善,Chip Technologies Inc逐渐在电子行业树立起了技术领先的形象,并成功吸引了众多投资者的关注。

Goldentech Discrete Semiconductor Inc公司的发展小趣事

为了进一步提升国际竞争力,Goldentech制定了明确的国际化战略。公司通过设立海外研发中心、销售网络和服务中心,加强与国际市场的联系和沟通。同时,Goldentech还积极参与国际标准的制定和推广工作,提升其在全球半导体行业的话语权和影响力。经过多年的努力,Goldentech已经成功在多个国家和地区建立了完善的业务体系和服务网络,为全球客户提供更加便捷、高效的服务和支持。

CTC [Compact Technology Corp.]公司的发展小趣事

为了进一步扩大市场份额,CTC公司开始寻求与其他行业的跨界合作。一次与汽车制造商的洽谈中,CTC公司提出将自身的电子技术应用于汽车制造中,以提升汽车的性能和智能化水平。双方经过深入交流,达成了合作意向。这一跨界合作不仅为CTC公司带来了新的业务领域,也推动了汽车行业的创新发展。

Ceratech Corporation公司的发展小趣事

在电子行业的早期,Ceratech Corporation公司以其对滤波器技术的深入研究和不断创新而崭露头角。公司研发团队不断攻克技术难题,成功研发出一系列高性能的Ceratech滤波器,这些滤波器以其优异的性能和稳定性,迅速在市场中占据了一席之地。随着技术的不断积累和创新,Ceratech Corporation逐渐在滤波器领域树立起了自己的品牌和技术优势。

客益(Guestgood)公司的发展小趣事

随着全球化进程的加速推进,Ceratech Corporation公司意识到要想在激烈的国际竞争中立于不败之地,必须实施全球化战略。公司开始积极拓展海外市场,通过建立海外分公司、参加国际展会等方式,加强与国际同行的交流与合作。同时,公司还积极引进国际先进的技术和管理经验,不断提升自身的创新能力和管理水平。通过全球化战略的实施,Ceratech Corporation逐渐成为了国际电子行业中的佼佼者。

问答坊 | AI 解惑

audio processing中文版

Matlab进行音频处理的材料,很不错的,希望大家喜欢…

查看全部问答>

pcb布线技巧

本帖最后由 paulhyde 于 2014-9-15 09:18 编辑 很好的资料啊  …

查看全部问答>

运营人,进来学写工作总结(精彩漫画)

转帖给各位(南方报业网),向编写工作总结的筒子们道声辛苦了。              年年岁岁月月,考考评评选选。    又到了年终,又到了写年终工作总结的日子。         黎明来临前总是黑暗 ...…

查看全部问答>

如何判断U盘或者文件夹是否存在?

我现在有这么个需求:在wince下,写一个程序,去检测U盘是否插上了。 我发现这种检测U盘是否已经插上了比较困难,因为这不是个实时检测。 当点击我的程序之后,如果用户没有插U盘,就提醒用户插U盘。所以,会去检测U盘是否插上了。 考虑这种检 ...…

查看全部问答>

??FAT32文件系统的扩展名长度问题!!!

FAT32文件系统中的文件扩展名只定义了三个字节的空间 那么四个字节以上的扩展名它是怎么处理的? 比如RMVB格式的 谢谢 …

查看全部问答>

RS232-串口USB的数问题

仿真时,我笔记本上的USB口最小为com11,而Keil中的com为1-8,com11能驱动,将com11改为com3(不知以前做什么用的),就是驱动不了,为什么?要怎么做呢?…

查看全部问答>

基于GSM报警器设计

大家好!我是一个刚到的新手,是学电子信息的,我喜欢的方向是计算机软件,准备的考研方向也是计算机软件,可是现在大三了,专业课的作业是叫我们实做!基于GSM 报警器设计(无人机房温度测控),现在老师的要求是要求我们设计一块试验用的STM ...…

查看全部问答>

急求:vxworks下实现2个千兆网卡的百兆连接

各位大大,现在我有2个一样的主板,网卡芯片是82574L,现在要实现百兆连接,我只接了四根线,   然后2个主板互相PING确不通,可是每个对别的PC进行PING就没问题,想问问个位,怎么解决,   是驱动问题吗?还是哪里需要做改动。 &nbs ...…

查看全部问答>

高手帮帮忙,LM系列的

我今天尝试了一下从我自己写的工程1跳转到工程2,但是失败了。工程1位于flash的0x00000000~0x00002fff,打算用来做我们自己的bootloader,工程2分配到flash的0x00003000~0x0003ffff。我能否在工程1里控制指针直接跳到工程2上开始运行?…

查看全部问答>

Vishay推出用于无线充电的新款接收线圈

Vishay推出用于无线充电的新款接收线圈 新器件采用铁粉并符合WPC标准,具有高磁导屏蔽和大于70%的效率 宾夕法尼亚、MALVERN — 2012 年 7 月13 日 — 日前,Vishay Intertechnology, Inc.(NYSE 股市代号:VSH)宣布,推出新款采用铁粉材料,符合 ...…

查看全部问答>