当前位置: 首页 > news >正文

网络市场调研计划书/seo搜索工具栏

网络市场调研计划书,seo搜索工具栏,北京壹零零壹网站建设,网站的建设项目是什么意思以前刚学MCU时做过红外遥控解码,参考别人的程序写了老半天,总共几十行,用外部中断方式,而且还很不好使。后来在做一个遥控控制RGB灯变色时,发现用外部中断方式解码在按键时RGB灯老闪(中断处理解码去了,PWM波…

以前刚学MCU时做过红外遥控解码,参考别人的程序写了老半天,总共几十行,用外部中断方式,而且还很不好使。

后来在做一个遥控控制RGB灯变色时,发现用外部中断方式解码在按键时RGB灯老闪(中断处理解码去了,PWM波程序被打断了,PWM用软件模拟的),

这时想可不可以不用中断来做呢,就在网上搜了搜,发现一个,就在这个基础上做了大量优化,最后的解码程序只有10行左右,且灵敏度也很好,给大家分享一下。

悄悄告诉你:这个代码相当好用!各种MCU移植都很方便

上源码:(只是核心部分)

sbit IR_IO = P1^6;          // IR管脚 任意IO

//定时器初始化为125uS中断一次

void IR_decode_init(void)

{

TMOD |= 0x12;                     // T1定时方式2

//--------------设定中断时间------------------------

TH0 = (-125);  TL0 = (-125); // 定时125us 12M晶振

ET0 = 1;        TR0 = 1;        // 启动T1

EA = 1;                              // 总中断允许

}

//解码的相关数据

bit Irprot_LastState = 0;   // 端口状态位

uchar codeCnt = 0;          // 数据码位计数

uchar irTime;                   // 码时间,用于以125us时间计时

uchar IR_data[4];            // 接收数据缓存

//下面为解码的关键部分,大家自己去分析。主思路就是计算下降沿间隔,其余什么高电平多少时间,低电平多少时间都不关心,因此代码比较精简。

//125us执行中断程序一次

void Timer0(void) interrupt 1

{

irTime++;

if(irTime==240) {irTime--;  codeCnt=0x3f;} // ir解码后码值存放时间, 240*125us = 30ms

if(IR_IO)   Irprot_LastState=1; // 记录IO状态

else if(Irprot_LastState)       // 有下降沿

{

Irprot_LastState = 0;        // 下降沿后IO状态记录为0

if(irTime<24)                // 小于24*125us=3ms的间隔才进行处理

{

codeCnt++;  codeCnt &= 0x1f;

IR_data[codeCnt>>3] <<= 1;

if( irTime>15 )   IR_data[codeCnt>>3]++;  // 大于15*125us=1.875ms的间隔为数据1

}

irTime = 0;                  // 下降沿处理完成,将时间清0

}

}

使用时只需查询codeCnt的值是否等于31(如果解码完成30ms后才去判断codeCnt==31,codeCnt将不会再是31,可以在程序中修改该标志的存活时间),是表示解码完成,解码数据放于IR_data[]数组中; 因为该解码的核心思想是检测两个下降沿相隔的时间,所以只要两个下降沿间隔符合,不管高低电平时间都会进行解码,所以如果要提高准确性,需把IR_data[]中的数据进行检验,

也就是看是否IR_data[2]==IR_data[3],如果是,99%是正确的.

以前刚学MCU时做过红外遥控解码,参考别人的程序写了老半天,总共几十行,用外部中断方式,而且还很不好使。

后来在做一个遥控控制RGB灯变色时,发现用外部中断方式解码在按键时RGB灯老闪(中断处理解码去了,PWM波程序被打断了,PWM用软件模拟的),

这时想可不可以不用中断来做呢,就在网上搜了搜,发现一个,就在这个基础上做了大量优化,最后的解码程序只有10行左右,且灵敏度也很好,给大家分享一下。

悄悄告诉你:这个代码相当好用!各种MCU移植都很方便

上源码:(只是核心部分)

sbit IR_IO = P1^6;          // IR管脚 任意IO

//定时器初始化为125uS中断一次

void IR_decode_init(void)

{

TMOD |= 0x12;                     // T1定时方式2

//--------------设定中断时间------------------------

TH0 = (-125);  TL0 = (-125); // 定时125us 12M晶振

ET0 = 1;        TR0 = 1;        // 启动T1

EA = 1;                              // 总中断允许

}

//解码的相关数据

bit Irprot_LastState = 0;   // 端口状态位

uchar codeCnt = 0;          // 数据码位计数

uchar irTime;                   // 码时间,用于以125us时间计时

uchar IR_data[4];            // 接收数据缓存

//下面为解码的关键部分,大家自己去分析。主思路就是计算下降沿间隔,其余什么高电平多少时间,低电平多少时间都不关心,因此代码比较精简。

//125us执行中断程序一次

void Timer0(void) interrupt 1

{

irTime++;

if(irTime==240) {irTime--;  codeCnt=0x3f;} // ir解码后码值存放时间, 240*125us = 30ms

if(IR_IO)   Irprot_LastState=1; // 记录IO状态

else if(Irprot_LastState)       // 有下降沿

{

Irprot_LastState = 0;        // 下降沿后IO状态记录为0

if(irTime<24)                // 小于24*125us=3ms的间隔才进行处理

{

codeCnt++;  codeCnt &= 0x1f;

IR_data[codeCnt>>3] <<= 1;

if( irTime>15 )   IR_data[codeCnt>>3]++;  // 大于15*125us=1.875ms的间隔为数据1

}

irTime = 0;                  // 下降沿处理完成,将时间清0

}

}

使用时只需查询codeCnt的值是否等于31(如果解码完成30ms后才去判断codeCnt==31,codeCnt将不会再是31,可以在程序中修改该标志的存活时间),是表示解码完成,解码数据放于IR_data[]数组中; 因为该解码的核心思想是检测两个下降沿相隔的时间,所以只要两个下降沿间隔符合,不管高低电平时间都会进行解码,所以如果要提高准确性,需把IR_data[]中的数据进行检验,

也就是看是否IR_data[2]==IR_data[3],如果是,99%是正确的.

http://www.jmfq.cn/news/4932919.html

相关文章:

  • 做最便宜的网站建设/东莞快速排名
  • 网站建设与管理的书/seo综合查询是啥意思
  • 哪个网站能看到医生做的全部手术/什么是网站推广
  • 建设网站机构/网站建站
  • 欧美网站建设公司排名/网站设计公司官网
  • 广州网站制作公司联系方式/杭州百度seo
  • 网站建设图总结/seogw
  • 织梦做公司网站要钱吗/软文广告代理平台
  • 软件工程毕业可以做网站吗/深圳网站页面设计
  • 中小企业网站建设济南兴田德润o厉害吗/做销售找客户渠道
  • 深圳服饰网站建设/竞价排名的服务模式是
  • 增值服务包含哪些产品/福鼎网站优化公司
  • 网站续费续的是什么钱/网站优化 seo和sem
  • 有了域名之后怎么做网站/杭州seo网站优化公司
  • 成都网站营销推广公司/seo项目分析
  • 苹果合适网站开发吗/陕西seo公司
  • 手机wap网站模板/真正免费的建站
  • 免费wordpress企业主题/广西关键词优化公司
  • 网页设计公司如何看待极简风格/内蒙古seo优化
  • 做网站必须网站备案/所有的竞价托管公司
  • 网站权重的重要性/百度贴吧的互动社区
  • 有什网站可以做设计赚钱/免费友情链接交换平台
  • 淄博个人网站建设/百度怎么提交收录
  • 做外贸网站买海外域名/站长之家最新网站
  • 哈尔滨做网站的公司哪家好/百度链接提交
  • 珠海室内设计公司排名/seo搜索引擎优化是什么意思
  • 客户网站开发全流程/网站制作流程
  • 查经互动平台/汕头seo外包机构
  • 成都网站建设的费用/百度文库网页版登录入口
  • app网站建设多少钱/信息流广告投放渠道