?? ir6122.c
字號:
#include "headfiles\headfiles.h"
/////////////////////////////////////////
// /////////
// 晶體:18.432MHz /////////
// /////////
/////////////////////////////////////////
void init_timer0(void) //初始化
{
TMOD &= 0XF0;
TMOD |= 0X1;
TL0 = 0x50;
TH0 = 0xFF;
TR0 = 1;
PT0 = 1;
ET0 = 1;
EA = 1;
P3 = 0xFF;
}
void timer_isr() interrupt 1 //中斷函數
{
// DISABLE;
EA = 0;
// test_IO_Flag = ~test_IO_Flag;
// P1 = test_IO_Flag;
IR_decode();
TL0 = 0x50;
TH0 = 0xFF;
// ENABLE;
EA = 1;
}
sbit Ir_line = P3^5;
bit High_Flag;
bit Rcv_OK;
#define data_code_long 12
#define data_code_short 4
unsigned char Ir_timer;
unsigned char Rcv_bit_cnt;
unsigned char Rcv_Byte_cnt;
unsigned char Rcv_Code[2];
#define data_code_long 12
#define data_code_short 4
void Rcv_bit_Deal(bit bt)
{
if((Ir_timer > data_code_short-3)&&(Ir_timer < data_code_short+4))
{
if(Rcv_bit_cnt&0x01)
{
Rcv_Code[Rcv_Byte_cnt] <<= 1;
Rcv_Code[Rcv_Byte_cnt] |= bt;
}
Rcv_bit_cnt++;
if(Rcv_bit_cnt==10)
{
Rcv_Byte_cnt++;
}
else if(Rcv_bit_cnt>25)
{
Rcv_OK = 1;
Rcv_bit_cnt = 0;
Rcv_Byte_cnt = 0;
}
else
{
}
}
else if((Ir_timer > data_code_long-4)&&(Ir_timer < data_code_long+5))
{
Rcv_Code[Rcv_Byte_cnt] <<= 1;
Rcv_Code[Rcv_Byte_cnt] |= bt;
Rcv_bit_cnt += 2;
if(Rcv_bit_cnt==11)
{
Rcv_Byte_cnt++;
}
else if(Rcv_bit_cnt>25)
{
Rcv_OK = 1;
Rcv_bit_cnt = 0;
Rcv_Byte_cnt = 0;
}
else
{
}
}
else
{
Rcv_bit_cnt = 0;
Rcv_Byte_cnt = 0;
}
}
void IR_decode(void)
{
if(Ir_line)
{
if(High_Flag)
{
Ir_timer++;
if(Ir_timer>180)
{
Ir_timer = 180;
}
}
else
{
Rcv_bit_Deal(0);
Ir_timer = 0;
}
High_Flag = 1;
}
else
{
if(High_Flag)
{
Rcv_bit_Deal(1);
Ir_timer = 0;
}
else
{
Ir_timer++;
}
High_Flag = 0;
}
}
void Rcv_IRKey(void)
{
if(Rcv_OK == 1)
{
Send_Str("Head code: \0");
Send_HEX_char(Rcv_Code[0]);
Send_Str(" \0");
Send_Str("Key code: \0");
Send_HEX_char(Rcv_Code[1]);
Send_Str("\r\n\0");
Rcv_OK = 0;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -