历史上的今天
今天是: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++) {
史海拾趣
|
转帖给各位(南方报业网),向编写工作总结的筒子们道声辛苦了。 年年岁岁月月,考考评评选选。 又到了年终,又到了写年终工作总结的日子。 黎明来临前总是黑暗 ...… 查看全部问答> |
|
我现在有这么个需求:在wince下,写一个程序,去检测U盘是否插上了。 我发现这种检测U盘是否已经插上了比较困难,因为这不是个实时检测。 当点击我的程序之后,如果用户没有插U盘,就提醒用户插U盘。所以,会去检测U盘是否插上了。 考虑这种检 ...… 查看全部问答> |
|
仿真时,我笔记本上的USB口最小为com11,而Keil中的com为1-8,com11能驱动,将com11改为com3(不知以前做什么用的),就是驱动不了,为什么?要怎么做呢?… 查看全部问答> |
|
大家好!我是一个刚到的新手,是学电子信息的,我喜欢的方向是计算机软件,准备的考研方向也是计算机软件,可是现在大三了,专业课的作业是叫我们实做!基于GSM 报警器设计(无人机房温度测控),现在老师的要求是要求我们设计一块试验用的STM ...… 查看全部问答> |
|
各位大大,现在我有2个一样的主板,网卡芯片是82574L,现在要实现百兆连接,我只接了四根线, 然后2个主板互相PING确不通,可是每个对别的PC进行PING就没问题,想问问个位,怎么解决, 是驱动问题吗?还是哪里需要做改动。 &nbs ...… 查看全部问答> |
|
我今天尝试了一下从我自己写的工程1跳转到工程2,但是失败了。工程1位于flash的0x00000000~0x00002fff,打算用来做我们自己的bootloader,工程2分配到flash的0x00003000~0x0003ffff。我能否在工程1里控制指针直接跳到工程2上开始运行?… 查看全部问答> |
|
Vishay推出用于无线充电的新款接收线圈 新器件采用铁粉并符合WPC标准,具有高磁导屏蔽和大于70%的效率 宾夕法尼亚、MALVERN — 2012 年 7 月13 日 — 日前,Vishay Intertechnology, Inc.(NYSE 股市代号:VSH)宣布,推出新款采用铁粉材料,符合 ...… 查看全部问答> |




