本帖最后由 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;
我用示波器看的话波形没问题,时序也不错,可是就是接收不到发送的数据;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>