找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3354|回复: 1
收起左侧

貌似这种解码方式误码率低些(红外)

[复制链接]
ID:51090 发表于 2014-9-17 23:04 | 显示全部楼层 |阅读模式
本帖最后由 xiaojuan 于 2014-9-17 23:05 编辑

/*--------------------------------------------------------------------------
RED_READ.H
Header file for generic 80C52 and 80C32 microcontroller.
Copyright From @tonjinlv
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef__RED_READ1_H__
#define __RED_READ1_H__
uchar all_right=0;
uint buflag=0;
uint Ir_dat=0;
uchar flag=0;
bit right_data=0;
uchar temer=0;
uchar data dato[4]={0,0,0,0};
void right_send()
{
EA=0;
right_data=0;
send_str("#$");
send_com_char(dato[2]+0x30);
EA=1;
dato[3]=0;
dato[0]=0xaa;
}
uchar time(bit mode)
{
uchar boy,goy;
for(boy=0;boy<250;boy++)
{
delay_9ms();
if(RED!=mode){goy=boy;boy=252;}
}
return goy;
}
void red_in()interrupt 0
{
uchar ul8=8,uh8=8,dl8=8,dh8=8;
EX0=0;
temer=time(0);
if(temer>0xa0)
{
temer=time(1);
if(temer>0x20&temer<0x30)right_data=1;
if(temer>0x46&temer<0x61)
{
while(ul8--)
{
temer=time(0);
temer=time(1);
dato[0]<<=1;
if(temer>0x05&temer<0x0e);
else dato[0]|=0x01;
}
while(uh8--)
{
temer=time(0);
temer=time(1);
dato[1]<<=1;
if(temer>0x05&temer<0x0e);
else dato[1]|=0x01;
}
while(dl8--)
{
temer=time(0);
temer=time(1);
dato[2]>>=1;
if(temer>0x05&temer<0x0e);
else dato[2]|=0x80;
}
while(dh8--)
{
temer=time(0);
temer=time(1);
dato[3]>>=1;
if(temer>0x05&temer<0x0e);
else dato[3]|=0x80;
}
}
if(dato[0]==~dato[1]&dato[2]==~dato[3])right_data=1;
}
EX0=1;
}
void red_inint()
{
EX0=1;
IT0=0;
}
#endif
回复

使用道具 举报

ID:362056 发表于 2018-12-20 13:10 | 显示全部楼层
想知道误码率怎么计算
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表