51单片机红外遥控控制小车?

我写了一个程序然后下载到小车上为什么没有反应是程序哪点出错了嘛求大佬帮忙看看感谢#include"reg52.h"#include"intrins.h"typedefun... 我写了一个程序 然后下载到小车上 为什么没有反应 是程序哪点出错了嘛 求大佬帮忙看看 感谢

#include"reg52.h"
#include"intrins.h"

typedef unsigned int u16;
typedef unsigned char u8;

u16 Irvalue[6];
u16 irprosok;
u8 Time;

sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;

sbit IRIN=P3^3;

void delay(u16 i)
{
while(i--);
}

void Forward() //前进
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}

void Back() //后退
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}

void int1init(void) //外部中断1初始化
{
IT1 = 1; //指定外部中断0下降沿触发,INT1 (P3.3)
EX1= 1; //使能外部中断
EA = 1; //开总中断

IRIN=1;
}

void RedaIr() interrupt 2
{
u8 j,k;
u16 err;
Time=0;
delay(700);
if(IRIN==0)
{
err=1000;
while((IRIN==0)&&(err>0))
{
delay(1);
err--;
}
if(IRIN==1)
{
err=500;
while((IRIN==1)&&(err>0))
{
delay(1);
err--;
}
for(k=0;k<4;k++)
{
for(j=0;j<8;j++)
{
err=60;
while((IRIN==0)&&(err>0))
{
delay(1);
err--;
}
err=500;
while((IRIN==1)&&(err>0))
{
delay(10);
Time++;
err--;
if(Time>30)
{
return;
}
}
Irvalue[k]>>=1;
if(Time>=8)
{
Irvalue[k]|=0x08;
}

Time=0;
}
}
}
if(Irvalue[2]!=~Irvalue[3])
{
return;
}
}
irprosok=1;
}

void Infrared() //红外按键处理
{
switch(Irvalue[2])
{
case 0x0c: //按键1前进
{
Forward();
}
break;

case 0x18: //按键2后退
{
Back();
}
break;

case 0x5e: //按键3停止
{
P1=0x00;
}
break;
}
irprosok=0;
}

void main()
{
int1init(); //初始化外部中断
while(1)
{
if(irprosok)
{
Infrared();
}
}
}
展开
 我来答
小灰狼Y
2020-08-03 · TA获得超过266个赞
知道小有建树答主
回答量:557
采纳率:81%
帮助的人:75.1万
展开全部
没有人把程序写出来就可以正常运行的,都是需要调试的。慢慢调试好就可以了。

首先调试红外发送的数据,接收端是否能正常接收,例如可以先把红外解码做好。然后就是小车的驱动是否正常,即用固定的数据写进去,小车是否能按预期运行。
然后再结合调试。
中洲贸易
2024-11-26 广告
无线遥控开关,作为现代智能家居的重要组成部分,为我们的生活带来了极大的便利。它采用先进的无线传输技术,能够实现远距离控制家电的开关状态,无需布线,安装简便。通过简单的配对操作,即可轻松连接家中的各种电器设备,如灯光、风扇、电视等。无线遥控开... 点击进入详情页
本回答由中洲贸易提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式