hetao7241 发表于 2009-8-5 06:07:18

自己做的红外学习格力空调的编码大家看看有没有错?

01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 01 00 01 00 01 00 01 00 01 00 01 00 46 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 1A 01 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 1B 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 01 08 01 00 01 00 01 00 01 00 01 00 01 00 01 01 00 01 00 01 1A 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 09 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 09 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 09 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 09 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 00 00

448个字节。程序来自于本网站:

/*****************************************************
This program was produced by the
ICC V6.31A

Chip type         : ATmega8L
Program type      : Application
Clock frequency   : 4.000000 MHz
Memory model      : Small
External SRAM size: 0
Data Stack size   : 256

需要256字节的BOOTLOADER区
*****************************************************/
#include "TimeCtrl.h"

//中断===============================================
#pragma interrupt_handler int0_isr:2
void int0_isr(void){      //RECEIVE中断
unsigned char study_measure_temp;          //提高TCNT2的读取速度
if (study_measure_st==Study_Measure_Test)
        {
       study_measure_temp = TCNT2;
       TCNT2 = 0x00;
       wave_temp = study_measure_temp;
       if (device_wave_num>=WAVE_MAX-1)
               {
               TCCR2=0x00;       //start timer2,256分频
               
               GICR=0;                  //禁止INT0中断
               
               
               //UDR=0xaa;
               //while(!(UCSRA&0x40));
               //UCSRA|=0x40;
               
               for(xunhuan=0;xunhuan<WAVE_MAX;xunhuan++)
               {
               //UDR=xunhuan;
               //while(!(UCSRA&0x40));
               //UCSRA|=0x40;
               
               UDR=wave_temp;
               while(!(UCSRA&0x40));
               UCSRA|=0x40;
               
               for(yanshi=0;yanshi<100;yanshi++);
               }
               
               /*
               UDR=device_wave_num/256;
               while(!(UCSRA&0x40));
               UCSRA|=0x40;
               
               for(yanshi=0;yanshi<100;yanshi++);
               
               UDR=device_wave_num%256;
               while(!(UCSRA&0x40));
               UCSRA|=0x40;
               
               for(yanshi=0;yanshi<100;yanshi++);
               
               UDR=0xbb;
               while(!(UCSRA&0x40));
               UCSRA|=0x40;
               */
               
               
               
               ////for(xunhuan=0;xunhuan<WAVE_MAX;xunhuan++)
               {
               ////wave_temp=0;
               }
               
               device_wave_num=0;
               ////wave_temp = 0;
               
               
              study_measure_st = Study_Measure_End;
               PORTB=0x00;
               //PORTB=0x04;
               xuexibiaoji=0;
        }        }
else       
        {
       TCNT2=0;      //定时计数器
       TCCR2=0x06;       //start timer2,256分频
       TCCR1B=0;               //停止其它timer
       TCCR0=0;      //定时计数器停止工作,在发送时才工作
       TIFR=0xFF;      //所有中断置标志
       device_wave_num = 0;
       study_measure_st= Study_Measure_Test;
       PORTB=0x04;
} }

////#pragma interrupt_handler int1_isr:3
////void int1_isr(void){       //KEY0中断
////GICR=0x00;
////MCUCR=0x81;
////}

#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void){      //38K载波
TCNT0=0xDD;
flag_38K=~flag_38K;
if (flag_38K&&flag_code)//flag_38K=0xFF;flag_code=0xFF;
{
asm("nop");
transmit_on;//#define transmit_on       PORTD|=(1<<0)
}
else
transmit_off;//#define transmit_off PORTD&=~(1<<0),

PORTB=0x04;
}

#pragma interrupt_handler timer1_ovf_isr:9
void timer1_ovf_isr(void){       //时间基准
/*
*/
}
      
       
//定时器2采集脉宽没有脉冲来时超时自动中断
#pragma interrupt_handler timer2_ovf_isr:5
void timer2_ovf_isr(void){   //记录波形溢出处理
GICR = 0;                  //禁止INT0中断

wave_temp = 0;
study_measure_st = Study_Measure_End;
}

//定时器输出脉冲直到结束
#pragma interrupt_handler timer2_comp_isr:4
void timer2_comp_isr(void){   //波形还原
OCR2 = wave_temp;
flag_code=~flag_code;
if(OCR2==0) asm("cli");
}

//发射函数=============================================

void TransmitWave (void){

asm("cli");
TCCR1B=0;      //禁止TIMER1
TIFR = 0xFF;
TCNT0 = 0xCC;//启动定时器0
TCNT2 = 0;   //定时计数器2为零
device_wave_num = 0;
OCR2 = wave_temp;
flag_38K=0xFF;
flag_code=0xFF;
asm("sei");
transmit_on;   //红外管工作
TCCR2=0x0E;    //定时器2 256分频,CTC,最高值OCR
TCCR0=0x01;    //没有分频
while(OCR2)                //波形未结束
//asm("sleep");
asm("cli");
transmit_off;         //红外管截止
TCCR2 =0;
TCCR0 =0;
//TCNT1H=0xFF;
//TCNT1L=0x05;
//TCCR1B=0x03;
asm("sei");
PORTB=0x00;
}


//main=================================================
void device_init(void){
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State7=P State6=P State5=P State4=P State3=0 State2=0 State1=0 State0=0

DDRB=0x04;
////PORTB=0x04;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State6=P State5=P State4=P State3=0 State2=0 State1=0 State0=0
PORTC=0x70;
DDRC=0x0F;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=P State2=P State1=P State0=0
PORTD=0x0E;
DDRD=0xF1;

/*********************定时器0产生38KHZ方波******************/
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 4000.000 kHz
TCCR0=0x00;
//TCCR0=0x01;
TCNT0=0xDD;
/*********************定时器0产生38KHZ方波******************/

/********************定时器1为4毫秒中断一次****************/
//4毫秒中断一次
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 62.500 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
////TCNT1H=0xFF;
////TCNT1L=0x05;
//ICR1H=0x00;
//ICR1L=0x00;
//OCR1AH=0x00;
//OCR1AL=0x00;
//OCR1BH=0x00;
//OCR1BL=0x00;
////TCCR1A=0x00;
////TCCR1B=0x03;
/********************定时器1为4毫秒中断一次****************/

/****************定时器2为采集脉宽和输出脉宽***************/
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 15.625 kHz
// Mode: CTC top=OCR2
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
//TCCR2=0x06;   //normal
//TCCR2=0x0E;   //CTC
TCNT2=0x00;
OCR2=0x00;
/****************定时器2为采集脉宽和输出脉宽***************/

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// INT1: On
// INT1 Mode: Low level
GICR=0x00;
GIFR=0x00;

//MCUCSR = 0x80;//禁止JTAG
//MCUCR=0x81; //空闲模式
////MCUCR=0xA1; //掉电模式

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0xC5;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
////ACSR=0x80;
////SFIOR=0x00;

    UCSRB = 0x00;//禁止中断
        UCSRA = 0x00;
        UCSRC = BIT(URSEL) | 0x06;
        UBRRL = 0x19;
        UBRRH = 0x00;
        UCSRB = 0x08;

}

void main (void){
unsigned char temp,key_num=0;
unsigned char on_off_temp;
unsigned char work_temp,queue_temp,min_temp,fun_temp;
//unsigned char iix;
device_init();
////EEPROM_READ(EE_TASK,task);
////avil=EEPROMread(EE_AVIL);
////task_num=EEPROMread(EE_NUM);
////min=EEPROMread(EE_DATA)*30;
////task_cur=0;


//while(1)
{
//PORTB=0x00;
//PORTC=0x06;
//PORTD=0x00;
UDR=0x01;
while(!(UCSRA&0x40));
UCSRA|=0x40;

UDR=0x02;
while(!(UCSRA&0x40));
UCSRA|=0x40;

asm("sei");
}
while (1)
{
////key_num=0;
////if (flag_transmit) //遥控发射
      {
////      asm("cli");
////      choose=0xF0;
////      read_wave(fun_read);//先读再发射
////      TransmitWave();   //再发射
////      flag_transmit=0;
      }
          

if(xuexibiaoji==0)
{          
if ((PINC&0x10)!=0x10)       
{
GIFR=0x40;//中断0和1置标志,MCUCR=0xA1; //掉电模式
GICR=0x40;//开INT0
xuexibiaoji=1;
}
}

if(fasongbiaoji==0)
{          
if ((PINC&0x20)!=0x20)       
{
TransmitWave ( );
fasongbiaoji=0;
}
}   

               
               
++dengyanshi;       
if(dengyanshi<=65536)
{
////PORTB=0x04;
}
if((dengyanshi>65536)&&(dengyanshi<=125536))
{
////PORTB=0x00;
}
if(dengyanshi>125536)dengyanshi=0;


      

} }

chen1986sl 发表于 2009-8-5 06:33:31

////      read_wave(fun_read);//先读再发射
////      TransmitWave();   //再发射


想歪了。。。./emotion/em034.gif./emotion/em034.gif

hetao7241 发表于 2009-8-5 07:18:40

楼上我是先把遥控板上码读出来,然后打开空调,再把学习的码发送出去。

xieguangye 发表于 2009-8-5 08:46:18

我解码过美的的。。

hbzxx 发表于 2009-8-5 08:59:10

发一个正常使用的遥控器for Gree

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////





#include <iom48v.h>
#include <macros.h>
#include "lcd4bit.h"
#define delay_timer1(k) {TIFR1|=BIT(TOV1); TCNT1=65536-(k/2); TCCR1B=0x02; while (!(TIFR1&BIT(TOV1))); TCCR1B=0x0;}
const unsigned char asc={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
static unsigned char txbuf={1,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0};
unsigned char work_mode=1;    //"0":heat
                              //"1":cold
                                                          //"2":dehumidify
                                                          //"3":fan
                                                          //"4":auto
unsigned char power=0;      //"0":power off
                                                           //"1":power on
unsigned char fan=0;                  //"0":auto
                              //"1":low
                                                          //"2":mid
                                                          //"3":high
unsigned char fanangle=0;      //"0":fan angle off
                                                           //"1":fan angle on
unsigned char sleep=0;         //"0":sleep off
                                                           //"1":sleep on                                                          
unsigned char temperature=25;   //16+n,max 30,min 16       
///////////////////////////////////////////////////////////////////////////////
void write_eeprom(unsigned int address,unsigned char dat)
{   while (EECR & (1<<EEWE));    //wait until EEWE to 0
        EEAR=address;       
        EEDR=dat;       
        EECR|=(1<<EEMWE);                         //set EEMWE to 1
        EECR|=(1<<EEWE);                                        // set EEWE to 1               
}
unsigned char read_eeprom(unsigned int address)
{        while (EECR &(1<<EEWE));          //wait until EEWE to 0
    EEAR=address;
        EECR|=(1<<EERE);                                  // set EERE to 1
        return (EEDR);               
}       
///////////////////////////////////////////////////////////////////////////////
void ir_send(unsigned char *p,unsigned char len)
{unsigned char k;
   TCNT2=0;                   //send start bit
   TCCR2A=0x42;               //enable OC2
   TCCR2B=0x01;               //start timer2,
   delay_timer1(9000);      //delay 9000us      
   TCCR2B=0x0;                //stop timer2      
   TCCR2A=0x0;                //disable OC2   
   delay_timer1(4500);                  //delay 4500us   
   for (k=0;k<len;k++)
             { if (*p)                                                                      //send "1"   
                         { TCNT2=0;
                                   TCCR2A=0x42;             //enable OC2
                                      TCCR2B=0x01;                          //start timer2                  
                   delay_timer1(560);           //delay 560us                                             
                                   TCCR2B=0x0;            //stop timer2      
                   TCCR2A=0x0;            //disable OC2                                                                  
                                      delay_timer1(1680);                //delay 1680us   
                                   }        
               else                                                                   //send "0"
                             { TCNT2=0;                                       
                                   TCCR2A=0x42;             //enable OC2
                                      TCCR2B=0x01;             //start timer2                                     
                                   delay_timer1(560);                //delay 560us                                             
                                   TCCR2B=0x0;            //stop timer2   
                   TCCR2A=0x0;            //disable OC2                     
                   delay_timer1(560);                //delay 560us                                                 
                               }        
                p++;
           }
        TCNT2=0;   
        TCCR2A=0x42;          //start timer2,enable OC2
           TCCR2B=0x01;       
    delay_timer1(560);                                       
           TCCR2B=0x0;            //stop timer2   
    TCCR2A=0x0;            //disable OC2       
        delay_timer1(10000);
}       
void show_message(void)
{           LCD4_Home();
      if (power)
          { if (work_mode==0)
                             LCD4_PutS("Heat_M ");
                  else if (work_mode==1)   
                           LCD4_PutS("Cold_M ");
                  else if (work_mode==2)   
                           LCD4_PutS("Debu_M ");
                  else if (work_mode==3)   
                             LCD4_PutS("Fan_M");
                  else
                     LCD4_PutS("Auto_M ");
                  if (fan==1)       
                         LCD4_PutS(" low");
                    else if (fan==2)       
                         LCD4_PutS(" mid");
                    else if (fan==3)       
                         LCD4_PutS(" high ");
                    else
                       LCD4_PutS(" auto ");
              LCD4_PutS("fan");          
              LCD4_Home2();
              LCD4_PutC(asc);       
              LCD4_PutC(asc);       
                  LCD4_PutC('\"');       
                  LCD4_PutC('C');               
              LCD4_PutS("   swing ");
              if (fanangle)
                     LCD4_PutS("on ");
              else
                 LCD4_PutS("off");
             }
          else
             {LCD4_PutS("------ OFF -----");
                  LCD4_Home2();
                  LCD4_PutS("                ");
                    return;
               }       
}          
          
////////////////////////////////////////////////////////////////////////////////
void main(void)
{   PORTD=0x04;
          DDRD=0xF8;
          PORTC=0x3F;
          DDRC=0x0;
          PORTB=0x01;
          DDRB=0xFE;          
          OCR2A=0x35;          
          MCUCR=0x02;               //INT0 falling edge          
          delay_ms(100);
          LCD4_Init();
          LCD4_Clear();
          
          LCD4_PutS("GREE Remote for ");
          LCD4_Home2();
          LCD4_PutS("Air-Condition   ");       
          delay_ms(1000);
          show_message();
          MCUCR=0x02; // set int0 to failing edge interrupt        
                                     
          while (1)
                          {   ir_send(txbuf,35);
                          delay_ms(200);
                        }
                       
                             
           /*   {   unsigned char temp;       
                      //SMCR=0x04;
                            //SMCR|=0x01;
                          //asm("sleep");
                          delay_ms(10);   
            temp=(~PINC)&0x3F;
            if (temp==0)
                      continue;               //no key pressed
            delay_ms(20);
            temp=(~PINC)&0x3F;            
            switch (temp)
                   {case 0x1: if (power)      //PC0 to power control
                                                  power=0;
                                              else
                                                              power=1;
                                                         txbuf=power;
                                                          show_message();
                                              ir_send(txbuf,35);                                                       
                                  break;
                                        case 0x2: if (!power)
                                                   break;
                                                work_mode++;   //PC1 to mode control
                                                if (work_mode>4)
                                                      work_mode=0;
                                                txbuf=work_mode&0x1;
                                                    txbuf=(work_mode&0x2)>>1;               
                                                          txbuf=(work_mode&0x4)>>1;
                                                          show_message();       
                                                          ir_send(txbuf,35);
                                  break;
                                        case 0x4: if (!power)
                                                   break;
                                                fan++;   //PC2 to fan mode
                                                if (fan>3)
                                                      fan=0;
                                                txbuf=fan&0x1;
                                                    txbuf=(fan&0x2)>>1;
                                                          show_message();                                                       
                                                          ir_send(txbuf,35);
                                  break;
                                        case 0x8: if (!power)
                                                   break;
                                                if (fanangle)      //PC3 to fanangle control
                                                  fanangle=0;
                                              else
                                                              fanangle=1;
                                                         txbuf=fanangle;
                                                          show_message();
                                              ir_send(txbuf,35);
                                  break;
                                        case 0x10: if (!power)
                                                   break;
                                                   temperature--;   //PC4 to increase temperature
                                                   if (temperature<16)
                                                      temperature=16;
                                                           else          
                                                   txbuf=temperature&0x1;
                                                     txbuf=(temperature&0x2)>>1;
                                                           txbuf=(temperature&0x4)>>2;
                                                           txbuf=(temperature&0x8)>>3;
                                                           show_message();                                                       
                                                           ir_send(txbuf,35);
                                   break;        
                                        case 0x20: if (!power)
                                                   break;
                                                   temperature++;   //PC5 to increase temperature
                                                   if (temperature>30)
                                                       temperature=30;
                                                           else          
                                                   txbuf=temperature&0x1;
                                                     txbuf=(temperature&0x2)>>1;
                                                           txbuf=(temperature&0x4)>>2;
                                                           txbuf=(temperature&0x8)>>3;       
                                                           show_message();                                               
                                                           ir_send(txbuf,35);
                                   break;                                                                                                      
                      default:   break;//no key pressed
                       }
                       do
                               temp=(~PINC)&0x3F;                         
                     while (temp!=0);
                       delay_ms(100);
              }       */   
}

hetao7241 发表于 2009-8-5 14:57:15

我就不明白为什么还有00数据,高低电平之间应该有时间的.

hbzxx 发表于 2009-8-5 17:00:22

总共就35个位,有必要搞的那么复杂吗?
做一个USB的红外分析仪不就可以了.
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=1250086&bbs_page_no=1&search_mode=1&search_text=红外&bbs_id=1000

ddaitt999 发表于 2009-8-5 17:20:04

学习解码

hgasrb 发表于 2009-8-5 23:17:22

自己编写的模拟PT2272波形的程序,是不是格力空调的比较复杂?
#include "iom16v.h"
#include <macros.h>
#define SyncH 440 // 同步码
#define SyncL 14080 // 同步码
#define Narr 300 // 窄脉冲
#define Wide 1400 // 宽脉冲上限

volatile unsigned char count;
volatile unsigned char num;
volatile unsigned char bit;
volatile unsigned char Data;      //存储8位的数据。
volatile unsigned char flag;   //定义标志位

void delay_nus(unsigned int n)    //n微秒延时函数
{
unsigned int i;
for (i=0;i<n;i++)
{
      asm("nop");
}
}
void delay_nms(unsigned int n)//n毫秒延时函数
{
unsigned int i;
for (i=0;i<n;i++) //执行n次1毫秒延时
delay_nus(1000);
}
void main(void)
{
      unsigned char temp;
      count=0;
      num=0;
      bit=0B00000001;
      Data=0B00110010;      //设置Data 实际运用时,这就是函数的参数               
      flag=0;               //首先发射同步码
      DDRD=0B00100000;      //定义D口的PD5即OC1A为输出口;
      PORTD=0B11111111;       //PD位高电平;

      while(1)
      {
         bit=0B00000001;
TCCR1A=0;   
TCCR1B=0;
PORTD=0B11111111;             //PD位高电平,亮;
count=0;
delay_nms(10);       //延时34ms
OCR1A=SyncH;         //同步码的高电平为4*110=440
TCCR1A=0B01010011;      //设置TCCR1A
TCNT1=0;                //初始化TCNT1;
         TCCR1B=0B00011001;      //设置TCCR1B,用模式15,启动计数器
OCR1A=SyncL;         //同步码的低电平为128*110=14080;
temp=bit&Data;
if(temp==0)         //判断数据Data是1还是0,这里代码写的不好,自己会改改
{
   flag=0;
}
else
{
   flag=1;
}

bit=bit<<1;
count+=1;
while(count<10)
{

   if(flag==0 && ((TIFR&0B00000100)==0B00000100))
    {//这里的switch主要是生成不同长度的脉宽来表示1或0,switch是不是有需要优化的地方?大家指证
switch(num)
{
    case 0:
         OCR1A=Narr;
         num=1;
         break;
    case 1:
OCR1A=Wide;
num=2;
break;
    case 2:
OCR1A=Narr;
num=3;
break;
    case 3:
OCR1A=Wide;
num=0;
temp=bit&Data;
if(temp==0)
{
    flag=0;
}
else
{
   flag=1;
}
bit=bit<<1;
count+=1;
break;
}
TIFR=(TIFR&0B11111111);   //向TIFR的TOV1置1,清零TOV1标志位
    }

    if(flag==1 && ((TIFR&0B00000100)==0B00000100))
    {
switch(num)
{
   case 0:
       OCR1A=Wide;
       num=1;
       break;
   case 1:
       OCR1A=Narr;
       num=2;
       break;
   case 2:
       OCR1A=Wide;
       num=3;
       break;
   case 3:
       OCR1A=Narr;
       num=0;
       temp=bit&Data;
       if(temp==0)
                  {
flag=0;
                  }
       else
                  {
flag=1;
                   }
      bit=bit<<1;
      count+=1;
      break;
}
TIFR=(TIFR&0B11111111);   //向TIFR的TOV1置1,清零TOV1标志位
      }      
             }

          }
}

zhames 发表于 2009-10-28 23:27:19

mark

xinjie1023 发表于 2010-5-19 12:53:40

mark

ainet 发表于 2010-8-6 14:31:00

标注

xuejianhua1986 发表于 2010-8-6 14:39:27

mark

a331333835 发表于 2010-8-12 20:50:00

mark

277955973 发表于 2012-11-2 12:53:32

mark 留着学习学习

ye_song 发表于 2013-7-9 15:48:50

mark一下

zdtan2005 发表于 2013-7-10 01:08:52

{:lol:}下下
页: [1]
查看完整版本: 自己做的红外学习格力空调的编码大家看看有没有错?