📄 remsio.c
字号:
#include "reg51.h"
#include "common.h"
#include "struct.h"
#include "system.h"
#include "timer0.h"
#include "key1.h"
////27 5ms 5625
#define Colck 12 // clock
#define Xtal 27 //12 // mhz
#define Time_Base (Xtal/Colck)
#define Rem_1ms (400*Time_Base)//256 // 时间(US)/时基/256
#define Rem_1ms2 (1800*Time_Base)//256 // 时间(US)/时基/256
#define Rem_2ms (1400*Time_Base)//256 // 时间(US)/时基/256 4400//4500//
#define Rem_2ms5 (3200*Time_Base)//256 // 时间(US)/时基/256 5725//5625//2813//
#define Rem_10ms5 (9000*Time_Base)//256 // 时间(US)/时基/256 20900//21000//11812
#define Rem_12ms (12600*Time_Base)//256 // 时间(US)/时基/256 27100//27000//
#define Rem_13ms (12400*Time_Base)//256 // 时间(US)/时基/256 29150//29250//
#define Rem_14ms (14600*Time_Base)//256 // 时间(US)/时基/256 31600//31500//
#define UserId_Low 0x08
#define UserId_High 0xf7
#define uint unsigned int
uint TH0_TMP;
uCHAR Rem_Bit_Cnt;
uCHAR Rem_BUF0;
uCHAR Rem_BUF1;
uCHAR Rem_BUF2;
uCHAR Rem_BUF3;
uCHAR Remote_Code;
extern bit F_Remote_start;
extern bit F_Remote_In;
extern bit F_Remote_Rep;
extern uCHAR menu_num;
extern uCHAR m_cSource;
extern bit OSD_open;
//extern void OSDShowDig(uCHAR x,uCHAR y,uCHAR cColor,uCHAR num);
void INT1_Remtoe (void) interrupt 2
{
TH0_TMP = TH1 ;
TH0_TMP = TH0_TMP<<8 ;
TH0_TMP = TH0_TMP+TL1 ;
TL1 = 0 ;
TH1 = 0 ;
TR1 = 1 ;
if(TH0_TMP>=Rem_13ms && TH0_TMP<=Rem_14ms)
{ // start -- 13.5ms(9+4.5)
Rem_Bit_Cnt = 32 ;
F_Remote_start = 1 ;
return ;
}
if(F_Remote_start)
{
if(TH0_TMP>=Rem_1ms && TH0_TMP<=Rem_1ms2)
{ // "0"--1.12ms
Rem_BUF3=Rem_BUF3>>1 ;
}
else if(TH0_TMP>=Rem_2ms && TH0_TMP<=Rem_2ms5)
{ // "1"--2.24ms
Rem_BUF3=(Rem_BUF3>>1)|0x80 ;
}
else if(TH0_TMP>=Rem_10ms5 && TH0_TMP<=Rem_12ms)
{ // continue -- 11.25ms(9+2.25)
if(Remote_Code!=0x15&&Remote_Code!=0x12&&Remote_Code!=0x02)
{
Remote_Code=Rem_BUF2;
F_Remote_In = 1;
}
return ;
}
else
{
return ;
}
Rem_Bit_Cnt-- ;
if(Rem_Bit_Cnt==24)
{
Rem_BUF0 = Rem_BUF3 ;
}
else if(Rem_Bit_Cnt==16)
{
Rem_BUF1 = Rem_BUF3 ;
}
else if(Rem_Bit_Cnt==8)
{
Rem_BUF2 = Rem_BUF3 ;
}
if(Rem_Bit_Cnt!=0)
{
return ;
}
if(Rem_BUF2 != ~Rem_BUF3)
{ // 正反码不吻合则退出
F_Remote_start = 0 ;
return ;
}
/*
else
{
if((Rem_BUF2&0xf0)!=0x70)
{ // 如果不是SN遥控输入键则判断用户码
if(Rem_BUF0 != UserId_Low || Rem_BUF1 != UserId_High)
{ // 用户码不吻合则退出
F_Remote_start = 0 ;
return ;
}
}
*/
Remote_Code=Rem_BUF2 ;
F_Remote_In = 1;
// }
}
}
void function_Rem(void)
{
uCHAR i;
i=Remote_Code;
switch(i)
{
case 0x15:
MenuEvent();
break;
case 0x14:
Key_downEvent();
break;
case 0x16:
Key_upEvent();
break;
case 0x12:
choose_S();
break;
case 0x02:
PowerEvent();
break;
}
Timer0Start();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -