📄 rfsoftdecode.txt
字号:
下面发一段AVR单片机的C语言版本的无线遥控解码程序,针对2240、2262等常用的无线编码芯片!单片机是ATmega8,可以完全拷贝使用!
同时本人承接各种安防,电动控制,小家电和无线电控制方面的开发设计工作,价格绝对实惠,产品可靠性高,成本低,方便生产!收到合格样品后再付开发费用!联系方式:QQ:710414207
///**********************************************************************
void RE_DF(void)
{
CODE_TEMP3=0;
CODE_TEMP1=0;
CODE_TEMP2=0;
times=0;
re_data=get_bit(PIND,6);
while(re_data==0)
{
wdt_reset();
delay_us(40);
times++;
if(times>500)
{
goto code_out;
}
re_data=get_bit(PIND,6);
}
times=0;
while(re_data)
{
wdt_reset();
delay_us(40);
times++;
if(times>150)
{
goto code_out;
}
re_data=get_bit(PIND,6);
}
times=0;
while(re_data==0)
{
wdt_reset();
delay_us(40);
times++;
if(times>550)
{
goto code_out;
}
re_data=get_bit(PIND,6);
}
count=24;
bit_num=0;
if((times>100)&&(times<450))
{ ///451
while(count--)
{
h_times=0;
low_times=0;
while(re_data&&(h_times<581))
{
wdt_reset();
wdt_reset();
wdt_reset();
wdt_reset();
h_times++;
re_data=get_bit(PIND,6);
}
if((h_times>100)&&(h_times<550))
{
low_times=0;
while((low_times<551)&&(re_data==0))
{
wdt_reset();
wdt_reset();
wdt_reset();
wdt_reset();
low_times++;
re_data=get_bit(PIND,6);
}
if((low_times>100)&&(low_times<550))
{
times=low_times+h_times;
if((times>400)&&(times<850)) //128
{
if(CODE_TEMP2%2)
{
CODE_TEMP1=CODE_TEMP1/2+128;
}
else
{
CODE_TEMP1=CODE_TEMP1/2;
}
if(CODE_TEMP3%2)
{
CODE_TEMP2=CODE_TEMP2/2+128;
}
else
{
CODE_TEMP2=CODE_TEMP2/2;
}
if(h_times>low_times)
{
CODE_TEMP3=CODE_TEMP3/2+128;
}
else
{
CODE_TEMP3=CODE_TEMP3/2;
}
bit_num++;
if(bit_num==24)
{
if(s.study&((CODE_TEMP3&0xf0)==0x20))
{
switch(study_num)
{
case 0:
{
eeprom_write_byte(1,CODE_TEMP1);
delay_ms(100);
eeprom_write_byte(2,CODE_TEMP2);
delay_ms(100);
eeprom_write_byte(3,CODE_TEMP3);
delay_ms(100);
study_num=1;
s.do_study=1;
break;
}
case 1:
{
eeprom_write_byte(4,CODE_TEMP1);
delay_ms(100);
eeprom_write_byte(5,CODE_TEMP2);
delay_ms(100);
eeprom_write_byte(6,CODE_TEMP3);
delay_ms(100);
study_num=2;
s.do_study=1;
break;
}
case 2:
{
eeprom_write_byte(7,CODE_TEMP1);
delay_ms(100);
eeprom_write_byte(8,CODE_TEMP2);
delay_ms(100);
eeprom_write_byte(9,CODE_TEMP3);
delay_ms(100);
study_num=0;
s.do_study=1;
break;
}
default: study_num=0;break;
}
}
}
}
else
count=0;
}
else
count=0;
}
else
count=0;
}
}
code_out:
times=0;
count=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -