还剩14页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
#includereg
52.h#define ucharunsigned char#define uintunsigned int〃*********************第一部分Start**51c*|cr^C*^c*Jc*jcsbit INl=Pro;//以下是电机驱动芯片L298管脚位声明sbit PWMl=Pri;sbit IN2;P「2;sbit IN3=P「3;sbit PWM2;Pr4;sbit IN4=P「5;sbit RPR3二Pr6;//此处是传感器R PR220管脚位声明sbit RPR4=P「7;sbit RPR1=P2*O;sbit RPR2二P2」;sbit bzl=PTO;//避障1sbit bz2=P0\;〃避障2IN1=O,IN2=l,IN3=0,IN4=1;PW1=1;PW2=1;timer50;PWM1=1;PWM2=0;timer100;PWM1=O;PWM2=0;timer50;ifA=0bzl=lRPR4=0RPR3=二0RPRl=lRPR2=0〃左轮最外围检测到黑线左轮大转弯未检测到障碍物{IN1=O,IN2=1,IN3=0,IN4=1;PWM1=1;PWM2=1;timer50;PW1=O;PWM2=1;timer100;PW1=O;PWM2=0;timer400;}ifA=0bzl=lRPR4=0RPR3=二0RPRl=lRPR2=l//左转90°弯未检测到障碍物IN1=1,IN2=O,IN3=0,IN4=1;whileRPR3==1PWM1=1;PWM2=1;timer250;PWM1=O;PWM2=0;timer250;}ifA=0bzl=lRPR4=lRPR3:二1RPR1=ORPR2=O〃右转90°弯IN1=O,IN2=1,IN3=1,IN4=0;while RPR4==1PWM1=1;PWM2=1;timer250;PWM1=O;PWM2=0;tinier250;if A==Obzl=Ounsigned intk=0;fork=0;k=30;k++IN1=O,IN2=1,IN3=1,IN4=0;PW1=1;PWM2=1;timer250;PWM1=O;PW2=0;timer250;}fork=0;k=12;k++IN1=O,IN2=1,IN3=0,IN4=1;PW2=1;timer250;PW1=O;PW2=0;timer250;}sbit A=P3-2;〃默认为遥控避障工作模式,按下A键后小车变换为循迹避障模式sbit B=P03;//按下B键不放,小车前进sbit0Poe4;〃按下c键不放,小车左转弯sbit D=P0*5;//按下D键不放,小车右转弯sbit led=P0*7;int n=l;〃*********************第一部分End****〃*********************第二部分子函数定义S tart************/*********************************延时函数^|c5!c|c/void timerunsigned intt〃中断计时{unsigned inti;fori=0;it;i++/*延时t*50ms*/TMOD=0X10;TH0=0x3C;TLO=OxBO;TR1=1;whileJTFl;TR1=O;}intO interrupt0n=n+l;〃默认遥控功能i「n%2=0led=O;else led=l;EA=1;EXO=1;ITO=1;main EA=1;EXO=1;ITO=1;wh i1e1whilen%2==lifA==l break;ifA==OB==1bz1==1IN1=O,IN2=1,IN3=0,IN4=1;PW1=1;PW2=1;timer100;//5SPWM1=O;timer100;//5S}ifA==0C==lbzl==lIN1=O,IN2=1,IN3=0,IN4=1;PWM1=O;PWM2=1;timer50;PWM1=O;PW2=1;timer50;PWM1=O;PWM2=0;timer10;}if A==0D==lbzl==lIN1=O,IN2=1,IN3=0,IN4=1;PWM1=1;PWM2=0;timer50;PWM1=1;PWM2=0;timer50;PWM1=O;PWM2=0;timer10;ifA==0bzl==0unsigned intk=0;IN1=O,IN2=1,IN3=1,IN4=0;fork=0;k=30;k++PW1=1;PWM2=1;timer25;PW1=O;PWM2=0;timer25;}whilen%2==0ifA==l break;i fA==Obz1==1RPR4==0RPR3==0RPRl==0RPR2==0|RPR1=ORPR2=1RPR3=1RP R4=0〃未检测到黑线,小车继续前进IN1=O,IN2=1,IN3=0,IN4=1;PW1=1;PWM2=1;timer100;PW1=O;PWM2=0;timer400;}ifA=0bzl=lRPRl=0RPR2=二1RPR3=ORPR4=O//仅左轮检测到黑线,小车向左转弯{IN1=O,IN2=l,IN3=0,IN4=1;PWM1=1;PWM2=1;timer50;PWM1=O;PWM2=1;timer50;PWM1=O;PW=O;timer400;if A==0bz1==1RPR1==0RPR2==0RPR3==lRPR4==0//仅右轮检测到黑线,小车向右转弯未检测到隙碍物{IN1=O,IN2=l,IN3=0,IN4=1;PWM1=1;PWM2=1;timer50;PWM1=1;PWM2=0;timer50;PWM1=O;PWM2=0;timer400;ifA=0bzl==lRPR4=lRPR3=0RPRl=0RPR2==0//右轮最外围检测到黑线向右大转弯未检测到障碍物{。