微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > NEC红外发射问题;

NEC红外发射问题;

时间:10-02 整理:3721RD 点击:

请教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;
我用示波器看的话波形没问题,时序也不错,可是就是接收不到发送的数据;

发射是在主函数里while循环;        while(1)
        {
                Submit_Data( 0x0000, 24);
  }

有没有哪位大神为我解答一下啊,,

你好,在吗?
我现在在做 stm8s 的红外发射 ,想借鉴你的,求帮助。谢谢

ding ding,zuo deng da xia jie da

pwm一开始的是低还是高啊?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top