📄 remote.c
字号:
#include "Reg52.h"
#include "remote.h"
unsigned char idata ir_data;
unsigned char idata ir_origin_data; //
unsigned int idata ir_addr_code; // replace "ir_raw_data"
bit data ir_command_ok=0;
bit data ir_low9ms_ok=0;
bit data ir_repeat_mark=0;
unsigned char idata ir_1000us_count=0;
unsigned int idata no_ir_count=0; // for new ir receive check
unsigned char idata ir_i; //
unsigned int data delay_time=0; // for ir interrupt
extern unsigned int time_count;
void ISR_Timer0(void) interrupt 1 using 0 //interrupt per 100us
{
if(IR_PORT) // sbit IR_PORT = P1^3
{
ir_1000us_count=0;
no_ir_count++;
if(ir_low9ms_ok)
{
if(!ir_command_ok)
{
//****************read ir data****
while(!IR_PORT);
TH0 = 0x0; TL0 = 0x0;
while(IR_PORT)
{
delay_time = TH0; delay_time <<= 8; delay_time += TL0;
if(delay_time > 65000) break;
}
//TR0 = 1 ;
for( ir_i=0;ir_i<32;ir_i++)
{
TH0 = 0x0; TL0 = 0x0;
while(!IR_PORT)
{
delay_time = TH0; delay_time <<= 8; delay_time += TL0;
if(delay_time > 65000) break;
}
TH0 = 0x0; TL0 = 0x0;
do
{
delay_time = TH0;
delay_time <<= 8;
delay_time += TL0;
}
while(delay_time<IR_SAMPLE_TIME);
// now read the bit data
if(IR_PORT) //"1"
{
if(ir_i < 16)
{
ir_addr_code>>=1;
ir_addr_code|=0x8000;
}
if(ir_i < 24)
{
ir_origin_data >>=1;
ir_origin_data |=0x80;
}
ir_data >>=1;
ir_data |= 0x80;
}
else{ // "0"
if(ir_i < 16)
{
ir_addr_code >>= 1;
}
if(ir_i < 24)
{
ir_origin_data >>= 1;
}
ir_data >>=1;
}
TH0 = 0x0; TL0 = 0x0;
while(IR_PORT)
{ // in case loop for ever, write "if(delay_time > 65000)..."
delay_time = TH0; delay_time <<= 8; delay_time += TL0;
if(delay_time > 65000) break;
}
}
ir_command_ok=1;
ir_low9ms_ok =0;
if((ir_addr_code==0xffff)&&(ir_origin_data==0xff)&&(ir_data==0xff))
{
ir_repeat_mark=1;
ir_command_ok=0; //for continuously detect repeat signal
}
}
//**************************************
}
}
else
{
ir_1000us_count++;
no_ir_count =0;
if(ir_1000us_count>6) //test: no-80 yes-60|40 in 11Mhz yes-60 in24Mhz
ir_low9ms_ok=1;
}
//For 100us IR
TH0 = TMRH; TL0 = TMRL;
//For OSD
time_count++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -