📄 irda_ck.c
字号:
static uchar Wave_Value; /*一个键码一个字节的值*/
static uchar Regist_Value; /*储存红外波形一个周期的时*/
static bit int0_flg=1;//外部中断标志位
//uchar time_long;
uchar DATA1;
uchar DATA2;
/*---------------------------------------------------------------------------*/
uchar Get_Data(void)
{ uchar i;Wave_Value=0x00;
int0_flg=1;
//-----------------------------
for(i=0;i<2;i++)
{
while(int0_flg);
int0_flg=1;
}
//--------------------
for(i=0;i<8;i++)
{
while(int0_flg);
if(Regist_Value>30){Wave_Value+=1;}
Wave_Value<<=1;
int0_flg=1;
}
return Wave_Value;
}
//-----------------------------------
bit Start_Wave(void)
{
if(Regist_Value>80)
return 1;
else
return 0;
}
//-----------------------------------
bit Verify_Model(void)
{
DATA1=Get_Data();
DATA2=Get_Data();
if(DATA1^DATA2==0xff)
{
return 1;}
else
{
return 0;}
}
/***********************************************************************************/
uchar irda(void)
{ if (!INT0)
{
int0_flg=1;
while(int0_flg)
if(Start_Wave())
{
int0_flg=1;
if(Verify_Model())
{
DATA1=Get_Data();
DATA2=Get_Data();
if(DATA1^DATA2==0xff)
return DATA1;
else return 0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -