433和315无线模块的软件编解码遥控程序文件

上传人:s9****2 文档编号:560314924 上传时间:2023-11-10 格式:DOC 页数:12 大小:108.50KB
返回 下载 相关 举报
433和315无线模块的软件编解码遥控程序文件_第1页
第1页 / 共12页
433和315无线模块的软件编解码遥控程序文件_第2页
第2页 / 共12页
433和315无线模块的软件编解码遥控程序文件_第3页
第3页 / 共12页
433和315无线模块的软件编解码遥控程序文件_第4页
第4页 / 共12页
433和315无线模块的软件编解码遥控程序文件_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《433和315无线模块的软件编解码遥控程序文件》由会员分享,可在线阅读,更多相关《433和315无线模块的软件编解码遥控程序文件(12页珍藏版)》请在金锄头文库上搜索。

1、/*遥控器接收程序433 和 315 无线模块的软件编解码遥控程序1:单片机软件解码 PT22402:选用 PIC16F877A 作为软件解码芯片3:单片机时钟频率选用外部4MHZ晶振4:选用外部中断脚作为编码信号脚输入脚5:可解PT2240芯片(8脚的学习型编码芯片 编码地址位:2的20次方 重复几率100万分 之一)6:功能有:遥控器学习(DEMOb的S9作为学习按纽)清除记忆(长按 DEMQb的S9即可清除遥控器地址的记忆)7:学习遥控器数量可以设定(可根据EEPROI的大小随便设定)&输出功能(有三路是 单击遥控器双稳,可以通过 PORTCt的LED可以看到结果还有一 路是 双击 遥控

2、器双稳)9:可选用315MH433MHZ的超再生/超外差接收模块*/*#include #include #define remote_geshu 10/* union BIT_16int TIMER1_REG;unsigned char REG2;union BIT_32unsigned long data_temp_long;unsigned char data_temp_byte4;/*/static union BIT_16 TIMER1_TEMP;/16 位定时器 1static union BIT_32 data_temp;/*static volatile unsigned ch

3、ar rec_status 97;static unsigned char data_cout;/ static unsigned char data;/ static unsigned int h_pulse;/ static unsigned int l_pulse;/接收的遥控器码位数 接收的 4 位数据 高电平宽度 低电平宽度static unsigned char remote_cout;/遥控器数量static unsigned char remote_numb;/遥控器编号/*static unsigned char TIMER15S1;/ static unsigned cha

4、r TIMER15S2;/ static unsigned char TIMER15S3;/ static unsigned char TIMER15S4;/LED static unsigned char TIMER15S5;/清除学习码按键长按时间 学习等待时间 遥控器数据缓冲时间 显示时间static unsigned char TIMER15S6;/ static unsigned char TIMER15S7;/ static unsigned char TIMER15S8;/static bit head (unsigned)(&rec_status)*8+(0);/static

5、bit learn (unsigned)(&rec_status)*8+(1);/同步头标志位 学习标志位*static bit recieved (unsigned)(&rec_status)*8+(2);/ 接收完成标志位static bit remote_button_status (unsigned)(&rec_status)*8+(3);/ 遥控器按键标志 位static bit first_click_status (unsigned)(&rec_status)*8+(4);/ 遥控器按键单击标 志位/*/*数据接收* /unsigned char data_read(void)i

6、f(h_pulsel_pulse) if(l_pulse200)&(l_pulse1000)数据为 1if(h_pulse(l_pulse2) return 1;/return 2;/ 无效的数据else if(h_pulse200)&(h_pulse1000)if(l_pulse(h_pulse2) return 0;/ 数据为 0return 2;/ 无效的数据/*/void clr_head(void)/ 清除寄存器data_cout=0;head=0;/*/#pragma interrupt_level 1void check_data(void)/ 检测数据是否正确if(head)s

7、witch (data_read()case 0:(data_temp.data_temp_long)=1;data_cout+;break;case1:(data_temp.data_temp_long)23)INTE=0;recieved=1;clr_head();/* /#pragma interrupt_level 1 void check_head(void)if(!head)&(!recieved)/if (h_pulse300)&(h_pulseh_pulse*27)&(l_pulse/*#pragma interrupt_level 1void interrupt level_

8、h_l(void)/* if(RAIF)/如果是电平中断 PORTA=PORTA;RAIF=0;/TIMER1_TEMP.REG0=TMR1L;TIMER1_TEMP.REG1=TMR1H; TMR1H=0;TMR1L=0;if(RA4)/ 如果是低电平中断 l_pulse=TIMER1_TEMP.TIMER1_REG;check_data();check_head();else/ 如果是高电平中断h_pulse=TIMER1_TEMP.TIMER1_REG;*/if(INTF)INTF=0;TIMER1_TEMP.REG0=TMR1L;TIMER1_TEMP.REG1=TMR1H;TMR1H

9、=0;TMR1L=0;if(INTEDG)/ 低电平宽度INTEDG=0;l_pulse=TIMER1_TEMP.TIMER1_REG;check_data();check_head(); elseINTEDG=1;h_pulse=TIMER1_TEMP.TIMER1_REG; if(T0IF)/T0IF=0;TIMER15S1+;TIMER15S2+;TIMER15S3+; TIMER15S4+;TIMER15S5+;TIMER15S6+;TIMER15S7+;TIMER15S8+; :*/*遥控器学习* /void clr_learn_reg(void)unsigned char n;di();for (n=1;n=remote_cout*4;n+) eeprom_write(n,0);eeprom_write(70,0); eeprom_write(71,0);ei(); /*

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号