这么好的思路 1838T一体化红外接收 为啥不接受?
时间:10-02
整理:3721RD
点击:
头码 13.5ms
/*外部中断0 计时检测脉冲高电平宽度 边沿触发(下降沿)*/
#include <reg51.h>
#define unchar unsigned char
unchar zdcs=1,kehu1,kehu2,shuju,shujubu;//zds中断次数
bit start;
int time;
sbit A0=ACC^0;
void init0() //初始化INT0
{EA=1;
EX0=1;
IT0=1;
TH0=0x00;
TL0=0x00;
TR0=0;}
void init_com()//初始化串口 T1
{TMOD=0x21;
SCON=0X50;
PCON=0X00;
TH1=0XFD;
TL1=0XFD;
TR1=1;
}
void zd0() interrupt 0 //T0计时 INT0查询时间 并在中段中完成解码
{
if(TR0==1)
{TR0=0;
time=TH0*256+TL0;
TH0=0x00;
TL0=0x00;
}
if(TR0==0) //利用每次下降沿检测时间间隔
{TR0=1;
time=TH0*256+TL0;}
if(time>13300) //判断是否开始
{if(time<13700)
{start=1;} }
if(start==1)
{
if(time>1100&&time<1161) //0
{A0=0;
ACC<<=1;}
if(time>2214&&time<2270) //1
{A0=1;
ACC<<=1;}
if(zdcs==8)
{kehu1=ACC;}
if(zdcs==16)
{kehu2=ACC;}
if(zdcs==24)
{shuju=ACC;}
if(zdcs==32)
{shujubu=ACC;
zdcs=0;
start=0;
SBUF=shuju;}
zdcs+=1;
}
}
void main()
{init_com();
init0();
while(1)
{}
}
/*外部中断0 计时检测脉冲高电平宽度 边沿触发(下降沿)*/
#include <reg51.h>
#define unchar unsigned char
unchar zdcs=1,kehu1,kehu2,shuju,shujubu;//zds中断次数
bit start;
int time;
sbit A0=ACC^0;
void init0() //初始化INT0
{EA=1;
EX0=1;
IT0=1;
TH0=0x00;
TL0=0x00;
TR0=0;}
void init_com()//初始化串口 T1
{TMOD=0x21;
SCON=0X50;
PCON=0X00;
TH1=0XFD;
TL1=0XFD;
TR1=1;
}
void zd0() interrupt 0 //T0计时 INT0查询时间 并在中段中完成解码
{
if(TR0==1)
{TR0=0;
time=TH0*256+TL0;
TH0=0x00;
TL0=0x00;
}
if(TR0==0) //利用每次下降沿检测时间间隔
{TR0=1;
time=TH0*256+TL0;}
if(time>13300) //判断是否开始
{if(time<13700)
{start=1;} }
if(start==1)
{
if(time>1100&&time<1161) //0
{A0=0;
ACC<<=1;}
if(time>2214&&time<2270) //1
{A0=1;
ACC<<=1;}
if(zdcs==8)
{kehu1=ACC;}
if(zdcs==16)
{kehu2=ACC;}
if(zdcs==24)
{shuju=ACC;}
if(zdcs==32)
{shujubu=ACC;
zdcs=0;
start=0;
SBUF=shuju;}
zdcs+=1;
}
}
void main()
{init_com();
init0();
while(1)
{}
}