欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
誠信求教,avr單片機紅外遙控長按鍵的問題
[打印本頁]
作者:
rjx007
時間:
2019-3-31 10:24
標題:
誠信求教,avr單片機紅外遙控長按鍵的問題
用的是ATMEGA8a,單次按鍵沒有問題,但自己搞了幾天處理連發碼都沒搞出來,誠信請教如何判斷是連發碼?
uchar IR_buf[4]={0x00,0x00,0x00,0x00}; //IR_buf[0]、IR_buf[1]為用戶碼低位、用戶碼高位接收緩沖區
// IR_buf[2]、IR_buf[3]為鍵數據碼和鍵數據碼反碼接收緩沖區
/********us延時程序,延時時間0.14ms(140us*)*******/
void Delayus(uint x)
{
char i, j;
for(i=0;i<x;i++)
{for(j=0;j<210;j++);}
}
interrupt [EXT_INT0] void ext_int0_isr(void)
{
uchar i,j,sum=0;
GICR |=(0<<INT0);
Delayus(20); //延時20*0.14MS ,2.8MS
for(i = 0;i < 14;i++)
{
Delayus(1);
if(IRIN) //9MS內有高電平,則判斷為干擾,退出處理程序
{
GICR |=(1<<INT0);
return; //返回
}
}
while(!(IRIN)); //等待9ms低電平過去
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
while(IRIN); //等待4.5ms高電平過去
while(!(IRIN)); //等待變高電平
while(IRIN) //計算高電平時間
{
Delayus(1); //延時0.14ms
sum++; //對0.14ms延時時間進行計數
if(sum >= 30) //高電平時間過長,則退出處理程序
{
GICR |=(1<<INT0);
return;
}
}
IR_buf[i] = IR_buf[i] >> 1; //接受一位數據
if(sum >= 6)
{IR_buf[i] = IR_buf[i] | 0x80;} //若計數值大于6(高電平時間大于0.56),則為數據1
sum = 0; //若計數小于6,數據最高位補"0",說明收到的是"0",同時計時清零
}
}
if(IR_buf[2]!=~IR_buf[3]) //將鍵數據反碼取反后與鍵數據碼碼比較,若不等,表示接收數據錯誤,放棄
{ GICR |=(1<<INT0); return;}
HW_Status=1;
}
void RR() //遙控器鍵控
{
if(HW_Status==1)
{ static uchar m;
if((IR_buf[2]==0xfb)||(IR_buf[2]==e)) //音量加
{
if( VOLUME_1<98)
{++ VOLUME_1;}
else if( VOLUME_1>=98)
{ VOLUME_1=98;}
}
if((IR_buf[2]==0xfa)||(IR_buf[2]==b)) //音量減
{
if( VOLUME_1>0)
{-- VOLUME_1;}
}
void RR() //遙控器鍵控處理
{
if(HW_Status==1)
{ static uchar m;
if((IR_buf[2]==0xfb)||(IR_buf[2]==e)) //音量加
{
if( VOLUME_1<98)
{++ VOLUME_1;}
else if( VOLUME_1>=98)
{ VOLUME_1=98;}
}
if((IR_buf[2]==0xfa)||(IR_buf[2]==b)) //音量減
{
if( VOLUME_1>0)
{-- VOLUME_1;}
}
}
復制代碼
作者:
devcang
時間:
2019-3-31 23:45
引導信號、低電平、重復記號,,,,,這判斷
~~~~~~~~~~~~~~~~~~~~~~~~
作者:
rjx007
時間:
2019-4-4 19:05
繼續求解
作者:
liuzx66
時間:
2019-4-4 21:12
不同的編碼芯片有不同的編碼方式,先看你所用的編碼芯片是什么,再找數據手冊看
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1