📄 redreceive.h
字号:
#ifndef RED_RECEIVE_2004_3_12
#define RED_RECEIVE_2004_3_12
#include "User.h"
#define RED_TIME1 4
#define RED_TIME2 10
#define RED_VERIFY 0xE2
#define INT_FOOT P3_3
// 使用定时器0, TH<RED_TIME1 时判为0
// RED_TIME1<=TH<=RED_TIME2 时总判为1
// RED_VERIFY 为八位的校验码
void InitRedReceive()
{
TMOD=0x1;
TH0=0x00;
TL0=0x00;
TR0=1; ET0=0;
IT1=1; EX1=1;
}
struct{
byte Code;
byte Flag;
}RedKeyReceive={0xFF,0};
byte GetRedCode()
{
if(RedKeyReceive.Flag)
{
RedKeyReceive.Flag=FALSE;
return RedKeyReceive.Code;
}
else
return 0xFF;
}
void Int1(void) interrupt 2
{
byte TempL;
union { byte x[2]; word w; } Code;
TH0=TL0=0; TR0=1;
while(1)
{
while((TempL=TH0)<RED_TIME2 && INT_FOOT==0);
TH0=TL0=0;
if(TempL<RED_TIME1)
Code.w=Code.w<<1;
else if(TempL>=RED_TIME1 && TempL<RED_TIME2)
{
Code.w=Code.w<<1;
Code.w=Code.w|0x0001;
}
else if(TempL>=RED_TIME2)
{
if(Code.x[0]==RED_VERIFY)
{
RedKeyReceive.Code=Code.x[1];
RedKeyReceive.Flag=TRUE;
}
return;
}
while(INT_FOOT==1);
TH0=TL0=0;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -