欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 紅外遙控解碼 [打印本頁]

作者: xiaos    時間: 2015-4-10 16:57
標題: 紅外遙控解碼
#define _1_HighCap         
#define _1_LowFroor         
#define _0_HighCap         
#define _0_LowFroor      

#define Head_Cap
#define Head_Froor

#define IRDA_Read()    //讀出IRDA引腳的電平的方法
// 當高電平的時間在  
_1_LowFroor和_1_HighCap之間時認為接收到   1
//當高電平時間在
_0_LowFroor 和 _0_HighCap   之間時認為就收到   0

uint16_t Get_LowTime(void)
{
    //實現一個獲取高電平的時間的函數
}

uint16_t Get_HighTime(void)
{
    //實現一個回去低電平時間的函數
}

void Test(void)
{
    uint8_t HeadCode=0;   //第七位為 1表示接收到頭碼  [6:0]位 用來存儲 接收到的電平個數  
    uint8_t Irad_Buff[4];   //0-7 地址碼   8-15 地址碼反碼  16-23 數據碼  24-31 數據碼反碼
    uint8_t Byte,Bit;
    uint16_t HighTime;
    while(1)
    {
        if(!IRDA_Read())//出現了低電平
        {
            if(!(HeadCode&0x80))//如果沒有接受到頭碼
            {
                Get_LowTime();//過濾低電平
               
HighTime=Get_HighTime();
                if(HighTime>
Head_Froor&&HighTime<Head_Cap)  //如果高電平的時間在這兩個數之間 就
認為頭碼來了     {
                    HeadCode|=0x80;//標記頭碼來了
                }
            }
            else
            {
                for(Byte=0;Byte<4;Byte++)
                {
                    for(Bit=0;Bit<8;Bit++)
                    {
                     
  Get_LowTime();//過濾低電平
                        
HighTime=Get_HighTime();
                        if(HighTime>
_1_LowFroor&&HighTime<_1_HighCap)
                        {
                           
Irad_Buff[Byte]>>=1;
                            Irad_Buff[Byte]|=0x80;
                           
HeadCode++;
                        }
                        if(
HighTime>_0_LowFroor&&HighTime<_0_HighCap)
                        {
                           
Irad_Buff[Byte]>>=1;
                            Irad_Buff[Byte]&=0x7f;
                           
HeadCode++;
                        }

                    }
                }
                HeadCode&=0x7f;
            
if(HeadCode==32&&Irad_Buff[0]+Irad_Buff[1]==0xff&&Irad_Buff[2]+Irad_Buff[3]==0xff)
                 {
                    
HeadCode=0;
                    //解碼正確  得到的編碼就是Irad_Buff[2]
                 }
                else
                {
                    //錯誤
                  
HeadCode=0;
                }
            }
        }
    }
}














   








歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1