欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
msp430單片機(jī)紅外解碼1838.c驅(qū)動(dòng)程序
[打印本頁]
作者:
das
時(shí)間:
2015-4-18 03:45
標(biāo)題:
msp430單片機(jī)紅外解碼1838.c驅(qū)動(dòng)程序
//***********************************************************************
// 遙控器鍵碼
//***********************************************************************
#define KEY_0 0x16 //鍵0
#define KEY_1 0x0C //鍵1
#define KEY_2 0x18 //鍵2
#define KEY_3 0x5E //鍵3
#define KEY_4 0x08 //鍵4
#define KEY_5 0x1C //鍵5
#define KEY_6 0x5A //鍵6
#define KEY_7 0x42 //鍵7
#define KEY_8 0x52 //鍵8
#define KEY_9 0x4A //鍵9
#define KEY_POWER 0x45 //電源
#define KEY_MODE 0x46 //模式
#define KEY_SOUND 0x47 //靜音
#define ch_ 0x45 //模式
#define ch 0x46
#define cha 0x47 //模式
uchar KEY_VAL=0;
uchar code_value=0;
uchar key_code[4],code='_';
//***********************************************************************
// MSP430IO口初始化
//***********************************************************************
/*void Port_Init()
{
LED8DIR = 0xFF; //設(shè)置IO口方向?yàn)檩敵?br />
LED8 = 0xFF; //P2口初始設(shè)置為FF
RED_L;
RED_IN;
}*/
//*************************************************************************
// 遙控器鍵值賦功能值子程序
//*************************************************************************
void Key_Icode(void)
{
switch(key_code[2]) //第3個(gè)字節(jié)是數(shù)據(jù),第4個(gè)字節(jié)是反碼
{ //為了更穩(wěn)定,可以加上第4個(gè)字節(jié)數(shù)據(jù)的判斷
case KEY_0:KEY_VAL=0;break;
case KEY_1:KEY_VAL=1;break;
case KEY_2:KEY_VAL=2;break;
case KEY_3:KEY_VAL=3;break;
case KEY_4:KEY_VAL=4;break;
case KEY_5:KEY_VAL=5;break;
case KEY_6:KEY_VAL=6;break;
case KEY_7:KEY_VAL=7;break;
case KEY_8:KEY_VAL=8;break;
case KEY_9:KEY_VAL=9;break;
case ch_ :code='-';break;
case ch :code='_';break;
case cha :code='+';break;
default:KEY_VAL=10;break;
}
}
//*************************************************************************
// 顯示采集到的數(shù)據(jù)到LED燈
//*************************************************************************
void Display_Key(uint data_KEY)
{if(code=='_');
//鍵值顯示到LED燈上,二進(jìn)制的形式顯示,只識(shí)別0~9
}
//*************************************************************************
// 遙控器解碼子程序
//*************************************************************************
void Red_Code()
{
uchar i,j,k = 0;
for(i = 0;i < 19;i++)
{
delay_us(400); //延時(shí)400us
if(RED_R) //9ms內(nèi)有高電平,則判斷為干擾,退出處理程序
{
return;
}
}
while(!RED_R); //等待9ms低電平過去
for(i=0;i<5;i++) //是否連發(fā)碼
{
delay_us(500);
if(!RED_R)
{
return;
}
}
while(RED_R); //等待4.5ms高電平過去
for(i = 0;i < 4;i++) //接收4個(gè)字節(jié)的數(shù)據(jù)
{
for(j = 0;j < 8;j++) //每個(gè)字節(jié)的數(shù)據(jù)8位
{
while(!RED_R); //等待變高電平
while(RED_R) //計(jì)算高電平時(shí)間
{
delay_us(100);
k++;
if(k >22) //高電平時(shí)間過長(zhǎng),則退出處理程序
{
return;
}
}
code_value>>=1; //接受一位數(shù)據(jù)
if(k >= 7)
{
code_value|=0x80; //高電平時(shí)間大于0.56,則為數(shù)據(jù)1
}
k = 0; //計(jì)時(shí)清零
}
key_code[i]=code_value; //四個(gè)字節(jié)的數(shù)據(jù)
}
Key_Icode(); //調(diào)用賦值函數(shù)
// Display_Key(KEY_VAL); //顯示按鍵值
delay_ms(50);
}
//***********************************************************************
// 主程序
//***********************************************************************
/*void main(void)
{
WDT_Init(); //看門狗初始化
Clock_Init(); //時(shí)鐘初始化
Port_Init(); //端口初始化,用于控制IO口輸入或輸出
while(1)
{
Red_Code(); //調(diào)用遙控器解碼子程序
}
}*/
復(fù)制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1