目的:方便程序的调试,提供效率,减少工作累,可以不在线调试编程时显示实时数据,特别产品不带显示的或者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程序——接收模块的更多相关文章

  1. 38KHz,NEC红外模拟发送和接收程序

    /*************************************************************************************************/ ...

  2. 模拟Modbus协议问题

    问题: 在嵌入式系统开发中,Modbus协议是工业控制系统中广泛应用的一种协议.本题用来简单模拟Modbus协议,只需根据条件生成符合该协议的数据帧,并解析所获取的数据.假设设备使用的协议发送数据格式 ...

  3. Android 模拟HTTP协议的编码问题 Android默认编码UTF-8

    Android通过GET和POST方法请求服务器和浏览器请求的过程是不一样的. 浏览器请求服务器的时候会先将中文进行UTF-8编码,然后再发送到服务器端. Android编程下我们需要通过URLEnc ...

  4. 模拟SPI协议时序

    SPI是串行外设接口总线,摩托罗拉公司开发的一种全双工,同步通信总线,有四线制和三线制. 在单片机系统应用中,单片机常常是被用来当做主机(MASTER),外围器件被当做从机(SLAVE). 所以,在以 ...

  5. 模拟telnet协议C语言客户端程序

    首先要了解telnet协议,一下两篇blog给了我初步的思路 https://www.cnblogs.com/liang-ling/p/5833489.html 这篇有比较基础的介绍 以及IAC命令含 ...

  6. 模拟I2C协议学习点滴之程序相关定义

    由于主机和从机都会给数据线SDA发信号,比如主机先给SDA发送数据后,从机收到数据后发送应答信号将SDA拉低,故SDA类型设定为inout.而DATA设定为inout类型,是起到校验通信的作用(后续的 ...

  7. 模拟IIC协议时序

    IIC是飞利浦公司开发的两线式串行总线,主要应用在单片机和外围电子器件之间的数据通讯. IIC总线优点是节约总线数,稳定,快速,是目前芯片制造上非常流行的一种总线,大多数单片机已经片内集成了IIC总线 ...

  8. 红外协议之NEC协议

    NEC协议载波:38khz 其逻辑1与逻辑0的表示如图所示: 逻辑1为2.25ms,脉冲时间560us:逻辑0为1.12ms,脉冲时间560us.所以我们根据脉冲时间长短来解码.推荐载波占空比为1/3 ...

  9. Delphi 使用串口模拟工具进行串口程序开发调试

      版权声明:本文为博主原创文章,如需转载请注明出处及作者. 本文由小李专栏原创,转载需注明出处:[http://blog.csdn.net/softwave/article/details/8907 ...

随机推荐

  1. golang实现tcp接入服务器

    接入服务器和后端业务服务其维持tcp连接,多个前端请求通过接入服务器访问后端业务服务器,接入服务器可以方便增加路由功能,维护多个业务服务器,根据消息ID路由到具体的业务服务器. 项目目录如下 simp ...

  2. plsql developer连接64位Oracle11g的解决方法

    1)安装Oracle 11g 64位 2)安装32位的Oracle客户端( instantclient-basic-win32-11.2.0.1.0)下载地址:http://www.oracle.co ...

  3. [Swust OJ 795]--Penney Game

    题目链接:http://acm.swust.edu.cn/problem/795/ Time limit(ms): 1000 Memory limit(kb): 65535   Description ...

  4. 使用wget -i下载多个文件

    使用wget -i下载多个文件 命令: wget -i filelist.txt 说明: 首先,保存一份下载链接文件 cat > filelist.txt url1 url2 url3 url4

  5. php基本框架

  6. C#调用Java方法

    C#调用Java方法(详细实例) 阅读目录 C#调用c++ C#调用JAVA方法 C#可以直接引用C++的DLL和转换JAVA写好的程序.最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具 ...

  7. 图的BFS代码

    图是严蔚敏书上P168的图, 图的邻接表存储,DFS可以看以前写的文章:http://www.cnblogs.com/youxin/archive/2012/07/28/2613362.html ]; ...

  8. 地精排序(Gnome Sort) 算法

    gnome应该是最简单排序的排序算法吧!Gnome Sort,这是该算法的作者命名的,O(n*n)时间复杂度,O(1)空间复杂度,属于稳定的排序算法.算法的思想是每趟循环找到第一个逆序的元素,把它和在 ...

  9. 枚举子集的3种方式 -- C++描述

    要求: 给定一个集合,枚举所有可能的子集.此处的集合是不包含重复元素的. Method0: 增量构造法 思路:每次选取一个元素至集合中,为了避免枚举重复的集合,此处要采用定序技巧 -- 除了第一个元素 ...

  10. Part Acquisition(spfa输出路径)

    Part Acquisition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4080   Accepted: 1742 ...