欢迎来到天天文库
浏览记录
ID:13948373
大小:39.50 KB
页数:5页
时间:2018-07-25
《红外线遥控小车c程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#includesbitservo=P2^5;//PWM信号输出sbitzuo11=P1^0;//为0为左边正转sbitzuo12=P1^1;//为1为左边正转sbityou21=P1^2;//为1为右边正转sbityou22=P1^3;//为0为右边正转ucharredmessage[4]={0x00,0x00,0x00,0x00};ucharqianjin[]={0xf6,0xf0,0xf0};//左右行驶变量ucharhoutui[]={0xf9,0xf0,0xf0};////uintqianX=0,houX=0;//u
2、inthaha;//uintmark;//uintmark1,mark2;ucharcontrol=12;//角度标识ucharjishu;//0.125ms次数标识unsignedlongm,Tc;voiddelay(uinta){uintb,c;for(b=a;b>0;b--)for(c=115;c>0;c--);}voidT1_out()interrupt2{Tc=TH0*256+TL0;//提取中断时间间隔时长TH0=0;TL0=0;//定时中断重新置零if((Tc>8000)&&(Tc<14000)){m=0;mark1=1;retu
3、rn;}//找到启始码if(mark1==1){if(Tc>1450&&Tc<3000){redmessage[m/8]=redmessage[m/8]>>1
4、0x80;m++;}if(Tc>700&&Tc<1450){redmessage[m/8]=redmessage[m/8]>>1;m++;//取码}if(m==32){m=0;mark1=0;if(redmessage[2]==~redmessage[3]){mark2=1;}else{mark2=0;//取码完成后判断读码是否正确}}}}voidred_check(){if(mark2
5、==1){switch(redmessage[2]){case0x16://遥控器+键按下角度加45control++;//角度标识加1jishu=0;//按键按下则20ms周期从新开始if(control==21){control=20;//已经是180度,则保持}break;case0x0d://遥控器-键按下角度减45control--;//角度标识减1jishu=0;if(control==0){control=1;//已经是0度,则保持}break;case0x15:houX=0;qianX=1;//前进数据位break;case0x
6、18:qianX=0;houX=1;//后退数据位break;case0x19:TR1=~TR1;P1=0xf0;//启动数据位break;default:break;}mark2=0;}}voidinitial_T01(){TMOD=0x21;TH1=0xfc;TL1=0x66;TH0=0xff;TL0=0x8c;EA=1;ET0=1;TR0=1;ET1=1;TR1=0;}voidmain(){m=0;mark1=0;EA=1;IT1=1;EX1=1;////TMOD=0x11;//TH0=0;//TL0=0;//TR0=1;control=
7、1;jishu=0;servo=0;initial_T01();servo=1;while(1){red_check();//红外接收处理}}voidT0_waytwo()interrupt1{TH0=0xff;TL0=0x8c;if(jishu8、in[haha];if(houX==1)P1=houtui[haha];////haha++;//if(haha==2)haha=0;}}
8、in[haha];if(houX==1)P1=houtui[haha];////haha++;//if(haha==2)haha=0;}}
此文档下载收益归作者所有