完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
对于这个实验,我的思路是在main函数里通过比较接受到的红外控制的键码,来判断是否运转电机,可是不知道为什么下载到开发板上没反应?
#include #include #define NOP() _nop_() /* 定义空指令 */ unsigned char IRCOM[7]; ***it IRIN = P3^2; //红外接收器数据线 void IRdelay(char x); //x*0.14MS void delay(unsigned int i); //函数声名 void IRInit(); unsigned char code RUN[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //步进电机相序表 void delay1(unsigned int t); void motor_ffw() { unsigned char i; for (i=0; i<8; i++) //一个周期转3.75*8=30度 { P1 = RUN[i]&0x1f; //取数据 delay1(50); //调节转速 } } /******延时函数****************/ void delay1(unsigned int t) { unsigned int k; while(t--) { for(k=0; k<60; k++)//用for的空循环延长程序的执行时间 { } } } main() { IRInit(); while(1) { if(IRCOM[2] == 0x47) //这里的47H是我用的一个键的键码,我的想法是当按下这个键的时候 motor_ffw(); //电机转动,可是执行时没有反应????? } } void delay(unsigned int i) { char j; for(i; i > 0; i--) for(j = 200; j > 0; j--); } /*******************************************************************/ void IRInit() { IE |= 0x81; //允许总中断中断,使能 INT0 外部中断 TCON |= 0x01; //触发方式为脉冲负边沿触发 IRIN=1; //I/O口初始化 } /**********************************************************/ void IR_IN(void) interrupt 0 { unsigned char j,k,N=0; EX0 = 0; IRdelay(5); if (IRIN==1) { EX0 =1; return; } //确认IR信号出现 while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。 {IRdelay(1);} for (j=0;j<4;j++) //收集四组数据 { for (k=0;k<8;k++) //每组数据有8位 { while (IRIN) //等 IR 变为低电平,跳过4.5ms的前导高电平信号。 {IRdelay(1);} while (!IRIN) //等 IR 变为高电平 {IRdelay(1);} while (IRIN) //计算IR高电平时长 { IRdelay(1); N++; if (N>=30) { EX0=1; return;} //0.14ms计数过长自动离开。 } //高电平计数完毕 IRCOM[j]=IRCOM[j] >> 1; //数据最高位补“0” if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //数据最高位补“1” N=0; }//end for k }//end for j if (IRCOM[2]!=~IRCOM[3]) { EX0=1; return; } EX0 = 1; } /**********************************************************/ void IRdelay(unsigned char x) //x*0.14MS { unsigned char i; while(x--) { for (i = 0; i<13; i++) {} } } |
|
相关推荐
3 个讨论
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:12 , Processed in 0.799785 second(s), Total 62, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号