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();
}
}
} 展开
#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();
}
}
} 展开
中洲贸易
2024-11-26 广告
2024-11-26 广告
无线遥控开关,作为现代智能家居的重要组成部分,为我们的生活带来了极大的便利。它采用先进的无线传输技术,能够实现远距离控制家电的开关状态,无需布线,安装简便。通过简单的配对操作,即可轻松连接家中的各种电器设备,如灯光、风扇、电视等。无线遥控开...
点击进入详情页
本回答由中洲贸易提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询