欧美极品高清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_High
Cap之間時認為接收到 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