?? 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 + -