⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 top1838.c

📁 1838红外编码检测程序
💻 C
字号:
#include <reg52.h>
#include<intrins.h>
#define uint unsigned int 
#define uchar unsigned char 
sbit wei=P2^7;
sbit input=P3^2;
uchar n=0,n0=0;
uint  sum=0,get=0,get1=0,get0=0;shu=0x0001;
uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf};
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint checkdata();
void systeminitial()
{
 	TMOD=0x21;
	TH1=0xfd;//初值
	TL1=0xfd;
	TR1=1;//开启T1
	PCON=0x80;
	SM0=0;//波特率的方式
	SM1=1;
	IT0=1;
	EX0=1;
	EA=1;
	ET0=1;
	TH0=0x00;
	TL0=0x00;
}
void main()
{
	systeminitial();
	while(1);
}
void in()interrupt 0
{
		EX0=0;
		TR0=1;
	    while(input==0);
		TR0=0;
        sum=TH0*256+TL0;
		TH0=0x00;
		TL0=0x00;

        if(sum>8000)
		{
			TR0=1;
        	while(input==1);
        	TR0=0;
        	sum=TH0*256+TL0;
			TH0=0x00;
			TL0=0x00;
			
		    if(sum>3500)
				{ 
					for(n=0;n<16;n++) get0=checkdata();
					shu=0x0001;
					for(n=0;n<16;n++) get1=checkdata();
					shu=0x0001;
					while(input==0);
					get1=get1%256;
					wei=0;
					if(get1==0x56)
					{
					  P0=table1[n0];
					  n0++;
					  if(n0==6) n0=0;

					  SBUF=0x75;
					  while(!TI);
					  TI=0;
					  SBUF=0x70;
					  while(!TI);
					  TI=0;
					  SBUF=0x20;
					  while(!TI);
					  TI=0;
					 }
					else if(get1==0x57)
					{
					  if(n0>0) n0--;
					  P0=table1[n0];
					  if(n0==0) n0=6;

					  SBUF=0x64;
					  while(!TI);
					  TI=0;
					  SBUF=0x6f;
					  while(!TI);
					  TI=0;
					  SBUF=0x77;
					  while(!TI);
					  TI=0;
					  SBUF=0x6e;
					  while(!TI);
					  TI=0;
					  SBUF=0x20;
					  while(!TI);
					  TI=0;

					 }
					else
					{
						get1=get1%16;
						P0=table[get1];

						SBUF=get1+0x30;
						while(!TI);
						TI=0;
						SBUF=0x20;
					    while(!TI);
					    TI=0;
						n0=0;
					}
					get=0;
					get0=0;
					get1=0;
				}
		}
		IE0=0;
		EX0=1;
}
uint checkdata()
{
	while(input==0);
	TR0=1;
	while(input==1);
	TR0=0;
	sum=TH0*256+TL0;
	TH0=0x00;
	TL0=0x00;
	if(sum>1000)
		{
			get=get|shu;
			shu=_irol_(shu,1);
		}
	else	shu=_irol_(shu,1);
	return  get;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -