当前位置:首页 > 模拟 > 模拟
[导读]本文为PIC16F97+eV1527解码源程序

本文为PIC16F97+eV1527解码源程序

 //使用PIC16F917的片子,使用T0中断查询方式接收遥控命令

//************************************************************************************************************

#include ;

void main(void);

void interrupt ISR(void);

void sub_cpu_ini(void);

//************************************************************************************************************

unsigned char hh_w,ll_w; //高,低电平宽度

unsigned char ma_x; //接收到第几位编码了

unsigned char bma1,bma2,bma3,bma4; //用于接收过程存放遥控编码

unsigned char mma1,mma2,mma3,mma4; //用于解码过程

bit rf_ok; //接收到一个完整的遥控命令后置1,通知解码程序可以解码了

bit old_rc5; //保存上一次查询到的电平状态

bit tb_ok; //接收到同步的马时置1

void main()

{

sub_cpu_ini();

}

//***************************************************************************************************

//----- 中断服务程序 -----//

//***************************************************************************************************

void interrupt ISR(void) //只启用了T0中断,所以不用判断中断源

{ T0IF=0; // 清除T0中断标志

#asm

clrwdt //喂狗

#endasm

TMR0=125; //将T0中断时间修正为150uS

RC3=!RC3; //连接逻辑分析仪,查看T0中断时间间隔

if (!RC5) { ll_w++;old_rc5=0; } // 检测到低电平 低电平时间加1,记录本次电平状态

else // 检测到高电平

{ hh_w++;

if (!old_rc5) // 检测到从低到高的跳变,已检测到一个完整(高-低)电平周期

{ if (((hh_w>=2)&&(hh_w<=3))&&((ll_w>=60)&&(ll_w<=80))) //判同步码

{ ma_x=0; tb_ok=1; bma1=0; bma2=0; bma3=0; bma4=0;

}

else if ((tb_ok)&&((ll_w>=6)&&(ll_w<=9))) { ma_x++; } //已经接收到同步码,判0

else if ((tb_ok)&&((ll_w>=2)&&(ll_w<=3)))

{ switch (ma_x)

{ case 0 : { bma1=bma1 | 0B10000000; break; }//遥控编码第1位

case 1 : { bma1=bma1 | 0B01000000; break; }

case 2 : { bma1=bma1 | 0B00100000; break; }

case 3 : { bma1=bma1 | 0B00010000; break; }

case 4 : { bma1=bma1 | 0B00001000; break; }

case 5 : { bma1=bma1 | 0B00000100; break; }

case 6 : { bma1=bma1 | 0B00000010; break; }

case 7 : { bma1=bma1 | 0B00000001; break; }

case 8 : { bma2=bma2 | 0B10000000; break; }

case 9 : { bma2=bma2 | 0B01000000; break; }

case 10: { bma2=bma2 | 0B00100000; break; }

case 11: { bma2=bma2 | 0B00010000; break; }

case 12: { bma2=bma2 | 0B00001000; break; }

case 13: { bma2=bma2 | 0B00000100; break; }

case 14: { bma2=bma2 | 0B00000010; break; }

case 15: { bma2=bma2 | 0B00000001; break; }

case 16: { bma3=bma3 | 0B10000000; break; }

case 17: { bma3=bma3 | 0B01000000; break; }

case 18: { bma3=bma3 | 0B00100000; break; }

case 19: { bma3=bma3 | 0B00010000; break; }

case 20: { bma4=bma4 | 0B10000000; break; }//按键状态第1位

case 21: { bma4=bma4 | 0B01000000; break; }

case 22: { bma4=bma4 | 0B00100000; break; }

case 23: { bma4=bma4 | 0B00010000;

mma1=bma1;mma2=bma2;mma3=bma3;mma4=bma4;//将接收到的编码复制到解码寄存器中

//在下一行设一个断点,用ICD2调试

rf_ok=1; // 通知解码子程序可以解码了

break;

}

}

ma_x++;

}

else {ma_x=0; tb_ok=0; bma1=0; bma2=0; bma3=0; bma4=0;} //接收到不符合的高-低电平序列

ll_w=0;hh_w=1;

}

old_rc5=1; // 记录本次电平状态

}

}

//***************************************************************************************************

//----- 上电初始化程序 -----//

//***************************************************************************************************

void sub_cpu_ini()

{ PORTA =0B11110000; PORTB=0B11011100; PORTC=0B00111011; PORTE=0B11111111;

TRISA =0B11110000; TRISB=0B11111111; TRISC=0B00110011; TRISE=0B11111111;

WPUB =0B11011101;

OSCCON =0B01100111; //使用片内振荡频率 4MHZ

ANSEL =0B00000000; //模拟输入管脚配置为通用I/O口

CMCON0 =0B00000111; //关闭模拟比较器

OPTION =0B00001111; //对T0初始化,WDT预分频128

LCDCON =0B00000011; //VLCD引脚禁止(RC0,RC1,RC2)

T2CON =0B00000011; //设置T2为4096uS中断一次,作为一次处理循环

TMR1ON=0; //关闭Timer1

TMR2ON=0; //关闭Timer2

T0IF =0; //清除T0中断标志

TMR2IF=0; //清除T2中断标志

T0IE =1; //允许T0中断

// GIE =1; //打开全局中断

TMR2ON=1; //打开Timer2

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

2023年6月12日 – 专注于引入新品的全球半导体和电子元器件授权代理商贸泽电子 (Mouser Electronics) 与Texas Instruments联手推出全新电子书《Addressing New Chal...

关键字: 空中运输 模拟技术 数字信号处理

pic单片机应用很多,生活中到处都有pic单片机的身影。小编个人也是从事pic单片机开发的人员之一,对于pic单片机有一定的理解。今天,小编将带领大家一起看一下pic单片所具备的8大优势。

关键字: pic 单片机 寄存器

模拟接口是沟通物理世界与数字世界的桥梁。我们能够通过模拟信号去处理的信息,仅为物理世界中存在信息的一万万亿分之一,因此,社会需要模拟技术基础研究能快速发展。

关键字: 模拟技术 智能传感 芯片

全球半导体行业产值2018年达到了5000亿美元,根据不同的阶段可以分为半导体设计、半导体制造及半导体封测三个领域,我们厂商的半导体设计通常是指无晶圆厂设计公司(Fabless),特点是不自己生产芯片,晶圆生产是交给台积...

关键字: 芯片 封测 模拟技术

SpiceJet 成为首家借力Q400客机提升盈利潜力的航空公司 加拿大多伦多, Sept. 24, 2018 (GLOBE NEWSWIRE) -- Bombardier Commercial

关键字: pic ce

DC-DC转换器通过反馈控制系统,将不断变化的输入电压转换为(通常)固定的输出电压。反馈控制系统应尽量保持稳定,以避免出现振荡,或者发生最糟糕的情况:输出未经调节的输出电压。控制系统的速度应尽可能快,以响应动态变化,例如...

关键字: 模拟技术 数字电路

有源电子扫描阵列(AESA)因其卓越的性能、多功能能力,以及降低的功耗和雷达散射特征使得空中作战飞机的性能发生了革命性的变化,而且可靠性更高、生命周期内的成本费用更低。随着器件和封装技术的发展,诸如氮化镓(GaN)单片微...

关键字: 雷达 模拟技术

EVONETIX LTD(“Evonetix”)——从事可扩展、高保真度和快速基因合成桌面平台开发的合成生物公司,日前宣布与全球领先的高性能模拟技术公司ADI达成合作。双方将共同开发Evonetix专有的基于微机电系统(...

关键字: 芯片 模拟技术

随着科技的进步,设备越来越精密化,对于超微弱电流的测量的需求也不断涌现,nA(10-9)、fA(10-15)级别的电流也变得常见起来,例如光电效应的测试——光照在光电发射材料上会打出电子,如何对这些电子进行观察?

关键字: 模拟技术 测试测量

虚拟实境(VR)及模拟技术蓬勃发展,让汽车业得以透过此类工具来进行设计及测试,协助汽车制造商确保产品符合市场上对于汽车安全的最高要求、降低车辆实测时可能对测试人员或真实环境造成的威胁,并缩减自驾

关键字: vr 模拟技术
关闭
关闭