📄 红外检测.c
字号:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint RH_CODE;//定义接收码高位
uint RL_CODE;//定义接收码低位
bit RE_SUS; //定义接收标志位 1 表示接收成功
char code disp[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,0x30,0x25,0x67,0x23,0x64,0x74};
// 0 1 2 3 4 5 6 7 8 9 a b c d e f
//char code disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0x8e,0xff,0x00};
// 0 1 2 3 4 5 6 7 8 9 - f 空 显
char i1=0,i2=0,i3=0,i4=0,i5=0,i6=0,i7=0,i8=0; //显示缓冲 其中i0为虚拟位
void initial(void)
{
IT0=1; //外部中断0采用高到低的跳变有效
IE=0x8b; //开外部中断0 和两个定时器中断
}
delay(t)
{ char a;
while(t--)
for(a=120;a>0;a--); }
display(t)
{while(t--)
{P0=disp[i8];
P2=0x7f;
delay(1);
P2=0xff;
P0=disp[i7];
P2=0xbf;
delay(1);
P2=0xff;
P0=disp[i6];
P2=0xdf;
delay(1);
P2=0xff;
P0=disp[i5];
P2=0xef;
delay(1);
P2=0xff;
P0=disp[i4];
P2=0xf7;
delay(1);
P2=0xff;
P0=disp[i3];
P2=0xfb;
delay(1);
P2=0xff;
P0=disp[i2];
P2=0xfd;
delay(1);
P2=0xff;
P0=disp[i1];
P2=0xfe;
delay(1);
P2=0xff;} }
void set(void)
{ RE_SUS=0;
i8=RH_CODE/4096%16;i7=RH_CODE/256%16;i6=RH_CODE/16%16;i5=RH_CODE%16;
i4=RL_CODE/4096%16;i3=RL_CODE/256%16;i2=RL_CODE/16%16;i1=RL_CODE%16;
}
main()
{ initial();
while(1)
{ if(RE_SUS) set();
display(1); }
}
void ex_input(void) interrupt 0 //外部中断
{
RE_SUS=1;
RH_CODE++;
RL_CODE+=2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -