搜索
bottom↓
回复: 16

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

[复制链接]

出0入0汤圆

发表于 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[device_wave_num++] = 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[xunhuan];
                 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[xunhuan++]=0;
                 }
                 
                 device_wave_num=0;
                 ////wave_temp[device_wave_num] = 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[device_wave_num] = 0;
study_measure_st = Study_Measure_End;
}

//定时器输出脉冲直到结束
#pragma interrupt_handler timer2_comp_isr:4
void timer2_comp_isr(void){   //波形还原
OCR2 = wave_temp[device_wave_num++];
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[device_wave_num++];
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;


      
  
} }

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-8-5 06:33:31 | 显示全部楼层
////      read_wave(fun_read);//先读再发射
////      TransmitWave();     //再发射


想歪了。。。

出0入0汤圆

 楼主| 发表于 2009-8-5 07:18:40 | 显示全部楼层
楼上我是先把遥控板上码读出来,然后打开空调,再把学习的码发送出去。

出0入0汤圆

发表于 2009-8-5 08:46:18 | 显示全部楼层
我解码过美的的。。

出0入0汤圆

发表于 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[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
static unsigned char txbuf[35]={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[temperature/10]);         
              LCD4_PutC(asc[temperature%10]);       
                  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[3]=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[0]=work_mode&0x1;
                                                      txbuf[1]=(work_mode&0x2)>>1;               
                                                          txbuf[2]=(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[4]=fan&0x1;
                                                      txbuf[5]=(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[6]=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[8]=temperature&0x1;
                                                       txbuf[9]=(temperature&0x2)>>1;
                                                           txbuf[10]=(temperature&0x4)>>2;
                                                           txbuf[11]=(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[8]=temperature&0x1;
                                                       txbuf[9]=(temperature&0x2)>>1;
                                                           txbuf[10]=(temperature&0x4)>>2;
                                                           txbuf[11]=(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);
              }         */     
}

出0入0汤圆

 楼主| 发表于 2009-8-5 14:57:15 | 显示全部楼层
我就不明白为什么还有00数据,高低电平之间应该有时间的.

出0入0汤圆

发表于 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

出0入0汤圆

发表于 2009-8-5 17:20:04 | 显示全部楼层
学习解码

出0入0汤圆

发表于 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标志位
      }        
             }

          }
}

出0入0汤圆

发表于 2009-10-28 23:27:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-19 12:53:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-6 14:31:00 | 显示全部楼层
标注

出0入0汤圆

发表于 2010-8-6 14:39:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-12 20:50:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-11-2 12:53:32 | 显示全部楼层
mark 留着学习学习

出0入0汤圆

发表于 2013-7-9 15:48:50 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2013-7-10 01:08:52 | 显示全部楼层
下下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 01:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表