#include<reg52.h>
sbit IR=P3^2;
unsigned char irdata[34];
unsigned char bitnum = 0;
unsigned int irtime;
bit startflag = 0;
bit irok=0;
//unsigned char buf[33];
void uart_init()
{
SCON = 0x50; //设置串口工作方式
//TMOD &= 0x0F;
TMOD |= 0x20;
TH1 = 0xFD; //9600
ET1 = 0;
// EA = 1;
TR1 = 1;
}
void Timer0_init()
{
EA = 1;
TMOD |= 0x02;
TH0 = 0;
ET0 = 1;
TR0 = 1;
}
void Timer0_isr() interrupt 1
{
irtime++; //256us 引导码 0:1.12/0.56=4 1:2.24/0.256=9
}
void Int0_init()
{
IT0 = 1;
EA = 1;
EX0 = 1;
}
void Int0_isr() interrupt 0 //中断服务函数
{
if(startflag)
{
if((irtime >= 40)&&(irtime <= 60))
{
bitnum = 0;
}
irdata[bitnum] = irtime + '0';
bitnum++;
irtime = 0;
if(bitnum == 33)
{
irdata[bitnum] = '\0';
bitnum = 0;
irok = 1;
startflag = 0;
}
}
else
{
startflag = 1;
irtime = 0;
}
}
void uart_send_byte(unsigned char byte)
{
SBUF = byte; //TI位自动置1,手动清零
while(!TI);
TI = 0;
}
void uart_send_string(unsigned char *temp)
{
while(*temp)
{
uart_send_byte(*temp);
temp++;
}
}
void main()
{
uart_init();
Int0_init();
Timer0_init();
while(1)
{
if(irok == 1)
{
uart_send_string(irdata);
uart_send_byte('\n');
//Ircordpro();
irok = 0;
}
/*if(irpro_ok == 1)
{
uart_send_string(buf);
} */
}
}
sbit IR=P3^2;
unsigned char irdata[34];
unsigned char bitnum = 0;
unsigned int irtime;
bit startflag = 0;
bit irok=0;
//unsigned char buf[33];
void uart_init()
{
SCON = 0x50; //设置串口工作方式
//TMOD &= 0x0F;
TMOD |= 0x20;
TH1 = 0xFD; //9600
ET1 = 0;
// EA = 1;
TR1 = 1;
}
void Timer0_init()
{
EA = 1;
TMOD |= 0x02;
TH0 = 0;
ET0 = 1;
TR0 = 1;
}
void Timer0_isr() interrupt 1
{
irtime++; //256us 引导码 0:1.12/0.56=4 1:2.24/0.256=9
}
void Int0_init()
{
IT0 = 1;
EA = 1;
EX0 = 1;
}
void Int0_isr() interrupt 0 //中断服务函数
{
if(startflag)
{
if((irtime >= 40)&&(irtime <= 60))
{
bitnum = 0;
}
irdata[bitnum] = irtime + '0';
bitnum++;
irtime = 0;
if(bitnum == 33)
{
irdata[bitnum] = '\0';
bitnum = 0;
irok = 1;
startflag = 0;
}
}
else
{
startflag = 1;
irtime = 0;
}
}
void uart_send_byte(unsigned char byte)
{
SBUF = byte; //TI位自动置1,手动清零
while(!TI);
TI = 0;
}
void uart_send_string(unsigned char *temp)
{
while(*temp)
{
uart_send_byte(*temp);
temp++;
}
}
void main()
{
uart_init();
Int0_init();
Timer0_init();
while(1)
{
if(irok == 1)
{
uart_send_string(irdata);
uart_send_byte('\n');
//Ircordpro();
irok = 0;
}
/*if(irpro_ok == 1)
{
uart_send_string(buf);
} */
}
}
1002

被折叠的 条评论
为什么被折叠?



