#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
static unsigned char data IRCode[3],IRCON,IRCON2;
/*
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
*/
sbit LA=P0^0;
sbit LB=P0^1;
sbit RA=P0^2;
sbit RB=P0^3;
sbit UP=P0^4;
sbit DOWM=P0^5;
sbit P1_6=P0^6;
sbit P1_7=P0^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;//输入端口
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;//LED
bit flag;
bit pwm;
uchar go=2;//go=3,back=1,stop=2
uchar t;
void main(void)
{
unsigned int de;
void InitCom(unsigned char BaudRate);
void ComOutChar(unsigned char OutData);
void CSToOut(void);
TMOD = 0x01; //定时器0方式1
EA = 1; //允许CPU中断
IT0 = 1; //INT0下降沿有效
EX0 = 1; //开INT0中断;
do
{
for (de=0; de<30000; de++)
P3_7=1;
for (de=0; de<30000; de++)
P3_7=0;
}
while(1);
}
//定时器0中断处理
void timeint(void) interrupt 1 using 2
{
//TH0=0xFD;
//TL0=0x1E; //设定时值为800us
TH0=0xFC;
TL0=0xE0; //设定时值为800us
if (IRCON<3)
{
if (IRCON2<8) //每中断一次读一次遥控接收头的状态,每二次为遥控编码中的一个位
{
IRCON2++;
IRCode[IRCON]=IRCode[IRCON]<<1; //每读一次放入变量中的二进制的一个位,每次左移一位
IRCode[IRCON]=IRCode[IRCON] | P3_2; //每八次填满一个字节,一个字节存放遥控编码4个位
}
else
{
IRCON++; //填满一个字节,指向下一个变量
IRCON2=0; //计数清零
}
}
else
{
TR0 = 0; //关闭定时器
ET0 = 0; //定时器0中断关闭
//if ((IRCode[1]!=0x55)||(IRCode[2]!=0x4A))
flag=1;
//if (((IRCode[1]!=0x55)&&(IRCode[2]!=0x2B))||((IRCode[1]==0x56)&&(IRCode[2]==0xAB)))
//{
if(go==3)
{LA=1;
LB=0;
RA=1;
RB=0; //前进
}
if(go==1)
{LA=0;
LB=1;
RA=0;
RB=1; //后退
}
//}
if(go==2)
{LA=0;
LB=0;
RA=0;
RB=0; //停止
}
if((IRCode[1]==0x55)&&(IRCode[2]==0x2B))
{if(go==3)
{LA=0;LB=1;}
//else
// LB=0;
//LA=0;
//LB=0;
//RA=1;
//RB=0; //左转
}
if((IRCode[1]==0x56)&&(IRCode[2]==0xAB))
{if(go==1)
{RA=1;RB=0;}
//else
// RA=0;
//LA=1;
//LB=0;
//RA=0;
//RB=0; //右转
}
if((IRCode[1]==0x56)&&(IRCode[2]==0x55)&&(go<3))
{
LA=1;
LB=0;
RA=1;
RB=0; //前进
if(flag)
{go++;flag=0;}
}
if((IRCode[1]==0x56)&&(IRCode[2]==0x4A)&&(go>1))
{
LA=0;
LB=1;
RA=0;
RB=1; //后退
if(flag)
{go--;flag=0;}
}
if((IRCode[1]==0x55)&&(IRCode[2]==0xCA))
{UP=1;DOWM=0;pwm=0;} //提升
if((IRCode[1]==0x55)&&(IRCode[2]==0xCC))
{UP=0;DOWM=1;pwm=0;} //下降
if((IRCode[1]==0x56)&&(IRCode[2]==0xAC))
{UP=0;DOWM=0;pwm=0;} //自由
if((IRCode[1]==0x56)&&(IRCode[2]==0xB4))
pwm=1; //保持
if(pwm)
{if(t==0) UP=0;
if(t==192) UP=1; //高低电平1:3
t++;
}
EX0 = 1; //打开
}
}
//INT0中断
void INT0Fun(void) interrupt 0 using 2
{
ES = 0; //串口中断关闭
EX0 = 0; //外部中断0关闭
ET0 = 1; //定时器0中断打开
//TH0=0xFD;
//TL0=0x1E; //设定时值为800us
TH0=0xFC;
TL0=0xE0; //设定时值为800us
for (IRCON=0; IRCON<3; IRCON++)
IRCode[IRCON] = 0;
IRCON = 0;
IRCON2 = 0; //计数清零
TR0 = 1;//开始计数
}
没有合适的资源?快使用搜索试试~ 我知道了~
红外线51单片机程序.zip
共6个文件
c:5个
obj:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 178 浏览量
2022-06-30
00:39:56
上传
评论 1
收藏 6KB ZIP 举报
温馨提示
红外线51单片机程序
资源推荐
资源详情
资源评论
收起资源包目录
红外线51单片机程序.zip (6个子文件)
红外编码发送-带引导.c 2KB
红外编码发送2.c 1KB
红外编码发送.c 2KB
红外编码发送3.c 1KB
红外编码发送-带引导.OBJ 2KB
红外线可用.c 4KB
共 6 条
- 1
资源评论
卷积神经网络
- 粉丝: 339
- 资源: 8460
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 88-520告白(520气球).zip
- HTML+CSS+JS精品网页模板H126.rar
- n.cpp
- jdk-8u411-windows-x64下载安装可用
- vgg模型-图像分类算法对水果识别-不含数据集图片-含逐行注释和说明文档.zip
- KMP算法(Knuth-Morris-Pratt算法
- vgg模型-python语言pytorch框架训练识别化妆品分类-不含数据集图片-含逐行注释和说明文档.zip
- KMP算法(Knuth-Morris-Pratt算法
- shufflenet模型-基于人工智能的卷积网络训练识别狗的表情-不含数据集图片-含逐行注释和说明文档.zip
- EPIC Fantasy Town 1.0
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功