NEC红外发射问题;

2019-07-14 22:15发布

本帖最后由 ai上冬天de雪 于 2015-7-23 22:03 编辑

请教NEC协议红外编码解码问题,我接收用的原子的例程,自己写的红外发射程序,,严格按照时序来的,但是就是接收不到红外发送的信息,程序在下面,希望有朋友为我解惑,感激不尽;
//红外发射程序;
void  Submit_Data(u8 addr,u8 data)
{
u8 addr_count,data_count;
u8 addr_buff=0,data_buff=0,data_flag=0;
   PWM_PA3=0;
   delay_us(4500);
  Star_Submit(); //发射引导码函数;
addr_buff=addr;
for(addr_count=8;addr_count>0;addr_count--)    //·¢Ë͵ØÖ·Âë、、发送地址码
{
  data_flag=addr_buff>>(addr_count-1)&0x01;
  if(data_flag==0) Submit_Code_Zero();
  else if(data_flag==1) Submit_Code_One();
}
addr_buff=~addr;
for(addr_count=8;addr_count>0;addr_count--)    //·¢ËÍ ~µØÖ·发送地址反码
{
  data_flag=addr_buff>>(addr_count-1)&0x01;
  if(data_flag==0) Submit_Code_Zero();
  else if(data_flag==1) Submit_Code_One();
}

addr_buff=data ;
for(addr_count=8;addr_count>0;addr_count--)    //·¢ËÍdata   发送数据
{
  data_flag=addr_buff>>(addr_count-1)&0x01;
  if(data_flag==0) Submit_Code_Zero();
  else if(data_flag==1) Submit_Code_One();
}
addr_buff=~data ;
for(addr_count=8;addr_count>0;addr_count--)    //·¢song  ~data   发送数据反码
{
  data_flag=addr_buff>>(addr_count-1)&0x01;
  if(data_flag==0) Submit_Code_Zero();
  else if(data_flag==1) Submit_Code_One();
}  
}

void Star_Submit(void)
{
PWM_PA3=1895;
delay_ms(9);
PWM_PA3=0;

delay_us(4500);
}
void Submit_Code_Zero(void)  //·¢ËÍ¡°0¡±    发送一位0;
{
  PWM_PA3=1895;
delay_us(560);////Ô Öµ560£¬

  PWM_PA3=0;
delay_us(560);
}
void Submit_Code_One(void)  //·¢ËÍ¡°1¡±、、发送一位1;
{
PWM_PA3=1895;
delay_us(560);
PWM_PA3=0;
delay_us(1650);
}
PWM_PA3是一个pwm通道,频率是38khz;72M的计数频率,1895差不多就是38khz;
我用示波器看的话波形没问题,时序也不错,可是就是接收不到发送的数据;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
hgdhgd
1楼-- · 2019-07-15 11:41
 精彩回答 2  元偷偷看……
hominidclint
2楼-- · 2019-07-15 12:55
ding ding,zuo deng da xia jie da
weimingmign0985
3楼-- · 2019-07-15 14:39
pwm一开始的是低还是高啊?

一周热门 更多>