模拟红外协议C程序——接收模块
目的:方便程序的调试,提供效率,减少工作累,可以不在线调试编程时显示实时数据,特别产品不带显示的或者MCU是OPT的,有很大的帮助。
过程:将要看的数据发送出来,另一个板(一个带有显示的就OK了,显示就看个人的了,我之前用12864显示,后面坏了,就用4位数码管了)接收显示出来。
资源:通讯口只要2个IO(接收一个,发送一个),定时器2个(接收一个,发送一个)。
此篇是本人的接收模块,由于手头没有什么显示板,只有一个中颖的,带有4为数码管,就用此板作模拟接收。
此接收发送模块已经使用3年,一点问题都没有的哦!!!
如要沟通,请联系QQ:448704229
以下是接收模块:
//REMOTE 为接收IO ,设置为输入
static uint8 rx_ram0=0;
static uint8 rx_ram1=0;
static uint8 rx_ram2=0;
static uint8 bits_count=0; static uint8 tx_ram0=0;
static uint8 tx_ram1=0;
static uint8 tx_ram2=0;
static uint8 temp2=0;
static uint8 us100_timer=0; bit f_endcode=0;
bit B_nextbit=0;
bit send_enable_flag=0;
uint8 temp1=0;
uint8 temp=0;
void recievr_ird(void)
{ static uint8 TN=0;
static uint8 REMOTE_NUM=0;
if(TN<=200)
{
TN++;
}
if(!F_REMOTE)
{
if(REMOTE)
{
if(!F_RISE_YK)
{
F_RISE_YK=1;
if(F_YK_FIRST)
{
if(TN>=5)
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0; }
else
{
TN=0;
}
}
else
{
if(TN>=40)
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
else
{
if(TN>=20)
{
F_YK_FIRST=1;
TN=0;
REMOTE_NUM=0;
tx_ram0=0; }
else
{ //EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
} }
}
} }
else
{
if(F_RISE_YK)
{
F_RISE_YK=0;
if(F_YK_FIRST)
{
if(!F_YK_SECOND)
{
if(TN>=18)
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
} else
{
if(TN>=12)
{
F_YK_SECOND=1;
TN=0;
REMOTE_NUM=0;
tx_ram0=0; }
else
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
} }
}
else
{ tx_ram2=tx_ram2>>1; if(tx_ram1&0x01)
{
tx_ram2=tx_ram2|0x80;
}
else
{
tx_ram2=tx_ram2&0x7f;
} tx_ram1=tx_ram1>>1; if(tx_ram0&0x01)
{
tx_ram1=tx_ram1|0x80;
}
else
{
tx_ram1=tx_ram1&0x7f;
}
tx_ram0=tx_ram0>>1; if(TN>=12)
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0; } else
{
if(TN>=6)
{ tx_ram0|=0x80; ///
B_nextbit=1;
}
else
{
if(TN<2)
{
//EER
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0; }
else
{
tx_ram0&=0x7f; ///
B_nextbit=1;
} }
}
}
}
else
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
}
} }
if(B_nextbit)//移位操作//<intrins.h> temp = _cror_(temp,1);_rcl
{
B_nextbit=0;
TN=0;
REMOTE_NUM++; if(REMOTE_NUM>=24)
{
rx_ram0=tx_ram2;
F_REMOTE=1;
rx_ram1=tx_ram1;
rx_ram2=tx_ram0;
F_REMOTE=0; TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
}
}
模拟红外协议C程序——接收模块的更多相关文章
- 38KHz,NEC红外模拟发送和接收程序
/*************************************************************************************************/ ...
- 模拟Modbus协议问题
问题: 在嵌入式系统开发中,Modbus协议是工业控制系统中广泛应用的一种协议.本题用来简单模拟Modbus协议,只需根据条件生成符合该协议的数据帧,并解析所获取的数据.假设设备使用的协议发送数据格式 ...
- Android 模拟HTTP协议的编码问题 Android默认编码UTF-8
Android通过GET和POST方法请求服务器和浏览器请求的过程是不一样的. 浏览器请求服务器的时候会先将中文进行UTF-8编码,然后再发送到服务器端. Android编程下我们需要通过URLEnc ...
- 模拟SPI协议时序
SPI是串行外设接口总线,摩托罗拉公司开发的一种全双工,同步通信总线,有四线制和三线制. 在单片机系统应用中,单片机常常是被用来当做主机(MASTER),外围器件被当做从机(SLAVE). 所以,在以 ...
- 模拟telnet协议C语言客户端程序
首先要了解telnet协议,一下两篇blog给了我初步的思路 https://www.cnblogs.com/liang-ling/p/5833489.html 这篇有比较基础的介绍 以及IAC命令含 ...
- 模拟I2C协议学习点滴之程序相关定义
由于主机和从机都会给数据线SDA发信号,比如主机先给SDA发送数据后,从机收到数据后发送应答信号将SDA拉低,故SDA类型设定为inout.而DATA设定为inout类型,是起到校验通信的作用(后续的 ...
- 模拟IIC协议时序
IIC是飞利浦公司开发的两线式串行总线,主要应用在单片机和外围电子器件之间的数据通讯. IIC总线优点是节约总线数,稳定,快速,是目前芯片制造上非常流行的一种总线,大多数单片机已经片内集成了IIC总线 ...
- 红外协议之NEC协议
NEC协议载波:38khz 其逻辑1与逻辑0的表示如图所示: 逻辑1为2.25ms,脉冲时间560us:逻辑0为1.12ms,脉冲时间560us.所以我们根据脉冲时间长短来解码.推荐载波占空比为1/3 ...
- Delphi 使用串口模拟工具进行串口程序开发调试
版权声明:本文为博主原创文章,如需转载请注明出处及作者. 本文由小李专栏原创,转载需注明出处:[http://blog.csdn.net/softwave/article/details/8907 ...
随机推荐
- Microsoft SQL Server 混合云博客系列
Microsoft 云操作系统愿景的核心支柱之一就是借助我们的混合云基础结构改造数据中心.在 Windows Azure 基础结构服务正式发布后的几个月里,我们一直在发布博客,介绍 Windows A ...
- VC获取精确时间的做法
声明:本文章是我整合网上的资料而成的,其中的大部分文字不是我所为的,我所起的作用只是归纳整理并添加我的一些看法.非常感谢引用到的文字的作者的辛勤劳动,所参考的文献在文章最后我已一一列出. 对关注性能的 ...
- [置顶] Asp.Net底层原理(一、浏览器和服务器的交互原理)
…… 一.浏览器和服务器的交互原理 二.写自己的"迷你"Asp.net框架 三.Asp.Net的请求与响应过程 1.在此之前,首先简单的模拟一下我们去请求一个网址的时候,浏览器和服 ...
- HTML之框架(frameest、ifram)
1.frameset 最外层的去掉body用frameset <frameset rows="100,*"> 上下排版拆开,第一行高度占100,第二行*占剩下的 :co ...
- xhprof安装记录
选择一个工具分析PHP函数调用的资源耗用明细,以图表化的形式展现,方便优化代码. 安装xhprof $ pecl install xhprof-beta 在php.ini引用的extension中 ...
- Xcode - 内存分析
内存分析工具 1. ARC中的内存泄露 1. 一般内存分析, 主要是看看有没有内存泄露 2. 内存泄露: 创建了对象, 使用完毕没有释放, 将来就可能造成内存泄露 3. 内存泄露: 主要用于MRC的内 ...
- 关于UITableview刷新笔记
今天在做项目的时候 发现调用tableview 的 reloaddata 方法的时候出现崩溃. - 具体操作是执行某个方法后将数据数组中的某条数据删除(数组中存数组)发现调用刷新方法后 程序崩溃,查看 ...
- 安装Oracle,新建组、用户的时候的一个错误
[root@localhost /]# mkdir -p /u01/oracle[root@localhost /]# useradd -g oinstall -G dba -d /u01/oracl ...
- c语言中双维数组与指针的那点事儿
说起c语言的指针,估计对c语言只是一知半解的同志们可能都会很头疼,尤其它跟数组又无耻的联系到一起的时候,就更加淫荡了!!! 怎么说呢,就是有一点规定:(或准则) 数组名可以看成是指向数组头元素的指针, ...
- 基于原生js的图片延迟加载
当页面图片比较多的时候,我们通常会做一个延迟加载,避免页面打开时一下子的请求数太多,加载过慢影响用户体验. 如果项目用了jquery框架,则可以直接用 jquery.lazyload.可在jquery ...