目的:方便程序的调试,提供效率,减少工作累,可以不在线调试编程时显示实时数据,特别产品不带显示的或者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. Android开源项目(一)

    Android开源项目(一) GitHub在中国的火爆程度无需多~~,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则~~~~了解当下比较流行的Android与iOS开源项 ...

  2. linux下c/c++方式访问curl的帮助手册

    自:http://blog.chinaunix.net/u1/47395/showart_1768832.html 有个业务需求需要通过curl 代理的方式来访问外网 百度了一把,测试可以正常使用.记 ...

  3. opencv中遇到的的一些错误

    一:错误提示:OpenCV Error:Bad argument<src and dst have different formats> in unkown function,file.. ...

  4. 74HC595的中文资料

    74HC595--具有三态输出锁存功能的8位串行输入.串行/并行输出移位寄存器 本文翻译自NXP的74HC595的datasheet 74HC595和74HCT595是带有存储寄存器和三态输出的8位串 ...

  5. Codeforces Round #261 (Div. 2)——Pashmak and Buses

    题目链接 题意: n个人,k个车,d天.每一个人每天能够坐随意一个车.输出一种情况保证:不存在两个人,每天都在同一辆车上 (1 ≤ n, d ≤ 1000; 1 ≤ k ≤ 109). 分析: 比赛中 ...

  6. Ext JS学习第五天 Ext_window组件(二)

    此文用来记录学习笔记 •上一讲我们已经学过了window的使用,那么在这将中,我们将结合然后把Ext中需要注意的地方,以及组建的使用给予介绍.indow做几个Web开发的经典示例. •ExtWeb实战 ...

  7. C#中静态方法的运用和字符串的常用方法(seventh day)

    又来到了今天的总结时间,由于昨天在云和学院学的知识没有弄懂,今天老师又专门给我们非常详细地讲了一遍,在这里非常谢谢老师.O(∩_∩)O 话不多说,下面就开始为大家总结一下静态方法的运用和字符串的常用方 ...

  8. Oracle更改数据库文件大小、实时增加文件容量

    --查询数据库文件路径.表空间.大小等 select * from dba_data_files ; --EAST.DBF数据库文件自动扩展20M,可无限扩展 alter database dataf ...

  9. jz2440: linux/arch/arm/下面的plat-和mach-

    jz2440: linux/arch/arm/下面的plat和mach plat-s3c24xxmach-s3c2440mach-s3c2410 ====================== 1. 三 ...

  10. ThinkPHP第三天(公共函数Common加载,dump定义,模板文件,定义替换__PUBLIC__)

    1.公共函数定义 自动加载:在项目的common文件夹中定义,公共函数文件命名规则为common.php,只有命名成common.php才能被自动载入. 动态加载:可以修改配置项‘LOAD_EXT_F ...