![]() |
學(xué)習(xí)本質(zhì)就是學(xué)編碼方式,例如2262,1527編碼,再扣重點說就是存儲發(fā)射器的地址碼,具體的按鍵需要逐個具體學(xué)習(xí) |
各種遙控器有固定編碼格式,學(xué)習(xí)一個按鍵就知道對應(yīng)的編碼格式,其它按鍵值都是固定的值。 |
433模塊? |
//+++++++++++++++++++++++++2262與1527數(shù)據(jù)分離處理++++++++++++++++++++++++++++++++++++++++ if((da1527[0][0]==da1527[1][0]) && (da1527[0][1]==da1527[1][1]) && (da1527[0][2]==da1527[1][2])) //兩次接收到的數(shù)據(jù)相同 { uchar u,i,x; rf_ok=1; for(i=0;i<3;i++) //判定2262與1527 { for(u=0;u<4;u++) {if(((da1527[0][i]>>(u*2)) & 3)==2) {i=80;break;}} //有10則為1527 if(i==80) break; } if(i==80) //1527 { key_d=da1527[1][2] & 0x0f; //分出1527的按鍵值 da1527[0][2]=da1527[1][2]>>4; //分出1527的后4位地址 jmnx=1; //為0是2262,1是1527 } else //2262 { key_d=0; for(i=0;i<4;i++){if(((da1527[0][2]>>(i*2))&3)==3) key_d|=1<<i;} //計算出2262的按鍵數(shù)據(jù) da1527[0][2]=00; //2262無后4位地址,全為0 jmnx=0; //為0是2262,1是1527 } if (!study) //非學(xué)習(xí)狀態(tài) { rf_ok=0; for(x=0;x<60;x++) { if((da1527[0][0]==key_number[x*3+1])&&(da1527[0][1]==key_number[x*3+2]) &&(da1527[0][2]==key_number[x*3+3]))//判斷是否已學(xué)習(xí)過的編碼 { D0=key_d&0x08; //取得按鍵碼 D0=key_d&0x04; //取得按鍵碼 D0=key_d&0x02; //取得按鍵碼 D0=key_d&0x01; //取得按鍵碼 |
Powered by 單片機教程網(wǎng)