单片机红外线遥控问题
这是单片机红外线测试代码,捕捉到9ms低电平时流水灯亮,但实际上没反应,求解错误。#include<reg52.h>bitirflag=0;sbitIR_INPUT=P3...
这是单片机红外线测试代码,捕捉到9ms低电平时流水灯亮,但实际上没反应,求解错误。
#include <reg52.h>
bit irflag=0;
sbit IR_INPUT = P3^2;
void InitInfrared()
{
IR_INPUT = 1;
TMOD |= 0x01;
IT0 = 1;
EX0 = 1;
}
unsigned int GetHighTime()
{
TH0 = 0;
TL0 = 0;
TR0 = 1;
while (IR_INPUT)
{
if (TH0 >= 0x40)
{
break;
}
}
TR0 = 0;
return (TH1*256 + TL1);
}
unsigned int GetLowTime()
{
TH0 = 0;
TL0 = 0;
TR0 = 1;
while (!IR_INPUT)
{
if (TH0 >= 0x40)
{
break;
}
}
TR0 = 0;
return (TH1*256 + TL1);
}
void EXINT1_ISR() interrupt 1
{
unsigned int time;
time = GetLowTime();
if ((time<7833) || (time>8755))
{
IE0 = 0;
return;
}
irflag = 1;
IE0 = 0;
}
void main()
{
InitInfrared();
if(irflag==1)
{
P1=0x01;
}
} 展开
#include <reg52.h>
bit irflag=0;
sbit IR_INPUT = P3^2;
void InitInfrared()
{
IR_INPUT = 1;
TMOD |= 0x01;
IT0 = 1;
EX0 = 1;
}
unsigned int GetHighTime()
{
TH0 = 0;
TL0 = 0;
TR0 = 1;
while (IR_INPUT)
{
if (TH0 >= 0x40)
{
break;
}
}
TR0 = 0;
return (TH1*256 + TL1);
}
unsigned int GetLowTime()
{
TH0 = 0;
TL0 = 0;
TR0 = 1;
while (!IR_INPUT)
{
if (TH0 >= 0x40)
{
break;
}
}
TR0 = 0;
return (TH1*256 + TL1);
}
void EXINT1_ISR() interrupt 1
{
unsigned int time;
time = GetLowTime();
if ((time<7833) || (time>8755))
{
IE0 = 0;
return;
}
irflag = 1;
IE0 = 0;
}
void main()
{
InitInfrared();
if(irflag==1)
{
P1=0x01;
}
} 展开
2个回答
展开全部
捕获个9ms的时间不用这么复杂吧 ……
参考一下下面的代码。单片机是12周期的51单片机,12M晶振:
void rem() interrupt 0 // 中断函数
{
uchar ramc=0; // 定义接收了4个字节的变量
uchar count=0; // 定义现在接收第几位
uchar a,b,c; // 用于延时计数
uint i=0; // 此处变量用来在下面配合连续监测9ms内是否有高电平
for(i=0; i<1000; i++) // 以下FOR语句执行时间为8.5ms左右,注意延时的准确性
{
if(prem) // 首先进入引导码的前半部判断,即是否有9ms左右的低电平
return; // 只要出现了高电平,引导码错误退出整个中断(注意与break语句的区别)
}
……………………
参考一下下面的代码。单片机是12周期的51单片机,12M晶振:
void rem() interrupt 0 // 中断函数
{
uchar ramc=0; // 定义接收了4个字节的变量
uchar count=0; // 定义现在接收第几位
uchar a,b,c; // 用于延时计数
uint i=0; // 此处变量用来在下面配合连续监测9ms内是否有高电平
for(i=0; i<1000; i++) // 以下FOR语句执行时间为8.5ms左右,注意延时的准确性
{
if(prem) // 首先进入引导码的前半部判断,即是否有9ms左右的低电平
return; // 只要出现了高电平,引导码错误退出整个中断(注意与break语句的区别)
}
……………………
追问
能不能补全答案?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
高骏(北京)科技有限公司
2020-04-29 广告
2020-04-29 广告
无线数字微波传输建议选择高骏(北京)科技有限公司,价格合理,品质高服务好。高骏(北京)科技有限公司简称高骏科技。Cogent(高骏科技)创立于 2011年,始终致力于核心技术和创新性产品的自主研发,目前已成为国际知名的无线视音频传输与通信产...
点击进入详情页
本回答由高骏(北京)科技有限公司提供
展开全部
需要给你完成一份吗
追问
可以啊
追答
需要定做可以丘上说
我id
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询