循迹小车程序
i
cludereg52h第一部分StartsbitIN1P10以下是点击驱动芯片L298管脚位声明sbitPWM1P11sbitIN2P12sbitIN3P13sbitPWM2P14sbitIN4P15sbitRPR1P16此处是传感器RPR220管脚位声明sbitRPR2P17i
tcou
t10用于定时计数的两个全局变量位声明i
tcou
t20第一部分E
d第二部分子函数定义Startvoidforward_tur
1电机1前进IN10IN21voidreverse_retur
1电机1后退IN11IN20voidforward_tur
2电机2前进
IN30IN41voidreverse_retur
2电机2后退IN11IN20voidspeed1i
tcti
tsd电机1速度控制函数,其中参数sd为生成PWM波形的比较基准ifctsdPWM11elsePWM10
fvoidspeed2i
tcti
tsd电机2速度控制函数,其中参数sd为生成PWM波形的比较基准ifctsdPWM21elsePWM20第二部分子函数定义E
d第三部分小车直线前进,左转,右转函数定义Startvoidadva
cei
tct1i
tsd1i
tct2i
tsd2小车直线前进函数forward_tur
1forward_tur
2speed1ct1sd1speed2ct2sd2以下是方案1,通过使两轮一快一慢来实现转向voidleft_tur
1i
tct1i
tsd1i
tct2i
tsd2小车左转forward_tur
1forward_tur
2speed1ct1sd1speed2ct2sd2voidright_tur
1i
tct1i
tsd1i
tct2i
tsd2小车右转forward_tur
1forward_tur
2speed1ct1sd1speed2ct2sd2以下是方案2,通过使两轮一正传,一反转来实现转向voidleft_tur
2i
tct1i
tsd1i
tct2i
tsd2小车左转forward_tur
1reverse_retur
2
speed1ct1sd1speed2ct2sd2voidright_tur
2i
tct1i
tsd1i
tct2i
tsd2小车右转
fforward_tur
2reverse_retur
1speed1ct1sd1speed2ct2sd2第三部分小车直线前进,左转,右转函数定义E
d第4部分主函数Startmai
TMOD0x11中断模式设置TH0655361000256定时器1初始化TL0655361000256EA1ET01TR01TH1655361000256定时器2初始化TL1655361000256EA1ET11TR11while1
ifRPR10RPR20未检测到黑线,小车继续前进adva
cecou
t1500cou
t2500ifRPR11RPR20仅左轮检测到黑线,小车向左转弯left_tur
1cou
t1200cou
t2500ifRPR10RPR21仅右轮检测到黑线,小车向右转弯right_tur
1cou
t1500cou
t2200ifRPR11RPR21左右轮均检测黑线,小车继续前进(此处用来处理