完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
#include
typedef unsigned char u8; typedef unsigned int u16; u8 code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//转动数组 u8 code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; u16 code smgduan[17]={0,1,2,3,4}; u8 IrValue[6]; u8 Time; u8 read; u8 DisplayData[8]; ***it IRIN=P3^2; ***it LSA=P2^2; ***it LSB=P2^3; ***it LSC=P2^4; void delay(u16 i) { while(i--); } void delayB(u16 i) { u16 n; while(i--) { for(n=0;n<125;n++) {} } } void DigDisplay() { DisplayData[0] = smgduan[IrValue[2]/16]; DisplayData[1] = smgduan[IrValue[2]%16]; DisplayData[2] = smgduan[16]; } void irread() { IT0=1; EX0=1; EA=1; IRIN=1; } void motor_ffw() { u8 i; for (i=0; i<8; i++) //一个周期转30度 { P1 = FFW; //取数据 delayB(5); //调节转速 } } void motor_rev() { u8 i; for (i=0; i<8; i++) //一个周期转30度 { P1 = REV; //取数据 delayB(5); //调节转速 } } void main() { irread(); while(1) { DigDisplay(); if((DisplayData[0]==4)&&(DisplayData[1]==3)) motor_ffw(); if((DisplayData[0]==4)&&(DisplayData[1]==0)) motor_rev(); if((DisplayData[0]==4)&&(DisplayData[1]==4)) P1=0x0f; } } void ReadIr() interrupt 0 //接受红外数据中断 { u8 j,k; u16 err; Time=0; delay(700); //7ms if(IRIN==0) //确认是否真的接收到正确的信号 { err=1000; //1000*10us=10ms,超过说明接收到错误的信号 /*当两个条件都为真是循环,如果有一个条件为假的时候跳出循环,免得程序出错的时 侯,程序死在这里*/ while((IRIN==0)&&(err>0)) //等待前面9ms的低电平过去 { delay(1); err--; } if(IRIN==1) //如果正确等到9ms低电平 { err=500; while((IRIN==1)&&(err>0)) //等待4.5ms的起始高电平过去 { delay(1); err--; } for(k=0;k<4;k++) //共有4组数据 { for(j=0;j<8;j++) //接收一组数据 { err=60; while((IRIN==0)&&(err>0))//等待信号前面的560us低电平过去 { delay(1); err--; } err=500; while((IRIN==1)&&(err>0)) //计算高电平的时间长度。 { delay(10); //0.1ms Time++; err--; if(Time>30) { return; } } IrValue[k]>>=1; //k表示第几组数据 if(Time>=8) //如果高电平出现大于565us,那么是1 { IrValue[k]|=0x80; } Time=0; //用完时间要重新赋值 } } } if(IrValue[2]!=~IrValue[3]) { return; } } } |
|
|
|
只有小组成员才能发言,加入小组>>
2374 浏览 0 评论
8693 浏览 4 评论
36418 浏览 18 评论
4974 浏览 0 评论
24201 浏览 34 评论
1346浏览 2评论
1592浏览 1评论
1973浏览 1评论
1408浏览 0评论
1843浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 09:51 , Processed in 1.267039 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号