循迹小车源程序,用汇编语言写。,自动循迹小车

做循迹小车的详细过程
1楼拜托,别人要的是过程 。怎么开始做的,第一步要干什么诸如此类的东西 。我也不懂 。
如何让循迹小车走“8”字型,主控为单片机
首区分踩线和十字路口 。一边传感器有效后,经过1/2的行程另一边的传感器有有效,说明已经踩线了,进行方向调整 。如果在1/2线宽内另一边传感器也有效了,说明到达十字路口,这时左转,直到右边的传感器无效,说明已经过了十字路口 。然后继续进行防踩线的行走方式 。
循迹小车源程序,用汇编语言写 。
主和程序入口*
;**
;*************************************
;
ORG0000H;程序执行起址
LJMPSTART;跳至START
ORG0003H;外中断0入口
LJMPINTEX0 ;跳至INTEX0中断服序
ORG000BH;定时器T0中断入口
RETI;中断返回
ORG0013H;外中断1入口
LJMPINTEX1 ;跳至INTEX1中断服务程序
ORG001BH;定时器T1中断入口
LJMPINTT1 ;跳至INTT1中断服务程序
ORG0023H;串口中断入口
RETI;中断返回
ORG002BH;定时器T2中断入口
RETI;中断返回
;
;***************************
;**
;*初始化程序*
;**
;****************************
CLEARMEMIO:MOVR0,#70H;清70H-76H显示单元
MOVR7,#07H;循环次数
ML0:MOV@R0, #00H;清0
INCR0;下一地址
DJNZR7,ML0;未完再循环
MOVTMOD,#10H;T1为16位定时器
MOVR4,#14H;1秒定时用(50毫秒20次)
MOVTL1,#0B0H;50毫秒定时用初值
MOVTH1,#3CH;
MOV20H,#00H;清0操作
MOV21H,#00H;
MOV22H,#00H;
MOV23H,#00H;
MOV24H,#00H;
CLR30H;清停车标志
SETBET1;开T1中断
SETBEX1;开外中断1
SETBIT1;外中断1采用边沿触发
SETBIT0;外中断0优先级为1(最高)
SETBEX0;开外中断0
SETBEA;开总中断允许
SETBTR1;开启定时器T1
RET;子程序返回
;
;*************************************
;**
;*主程序*
;**
;*************************************
;
START:LCALLCLEARMEMIO;上电初始化
SETBP1.6;选择7.5V输出
CLRP1.7;选择7.5V输出
SETBP3.7;前进状态
CLRP3.6;前进状态
CLRP1.0;电机供电开始
;MAIN:LCALLDISP;LED显示一次
LJMP MAIN;转MAIN循环
NOP;PC值出错处理
NOP
LJMPSTART;重新初始化
;
;*************************************
;**
;*外中断0服务程序,用作跑道位置处理 *
;*23H作跑道计数器*
;*************************************
INTEX0:PUSHACC;堆栈保护
PUSHPSW;
CLREX0;关中断
LCALLDISP;LED显示一次(延时抗干扰)
JBP3.2,IN0RET;P3.2为1退出(干扰)
INC23H;跑道计数器加1
MOVA,23H;数据入A
CJNEA,#06H,JUDGE1;不是第6道转JUDGE1
LCALLSTOP;是第6道,停车
LJMPIN0RET;转中断退出
JUDGE1:CJNEA,#03H,JUDGE2;不是第3道转JUDGE2
LCALLSTOPSLOW;是第3道,变慢车
LJMPIN0RET;转中断退出
JUDGE2:CJNEA,#04H,JUDGE3;不是第4道转JUDGE3
LCALLFAST;是第4道,变快车
LJMPIN0RET;转中断退出
JUDGE3:CJNEA,#05H,IN0RET;不是第5道转INORET退出
LCALLSTOPSLOW;是第5道,变慢车
IN0RET:CLRIE0;清外中断0中断标志
POPPSW;恢复现场
POPACC;
LCALLDL7MS;延时7毫秒(抗干扰)
SETBEX0;开外中断0
RETI;中断返回
;
;************************************
;*慢车控制子程序*
;************************************
STOPSLOW:CLRP1.6;关7.5V电源
CPLP3.6;反向驱动(刹车)
CPLP3.7;反向驱动
LCALLDS50MS;刹车时间(可根据试车情况调整)
LCALLDS50MS;
LCALLDS50MS;
CPLP3.6;正向驱动
CPLP3.7;正向驱动
SETBP1.7;开4.3V电源
RET;返回
;
;************************************
;*快车控制子程序*
;************************************
FAST:CLRP1.7; 关4.3V电源
SETBP1.6; 开7.5V电源
RET;返回
;
;************************************
;*停车控制程序*
;************************************
STOP:MOV23H,#00H;跑道计数单元清0
CPLP3.6;反向驱动(刹车)
CPLP3.7;反向驱动(刹车)
LCALLDS50MS;刹车时间
LCALLDS50MS;刹车时间(可调整)
SETBP1.0;关电机电源
SETBPT1;定时器T1为高优先级
LCALLDS10S;停车10秒
CLRPT1;恢复T1为低优先级
SETBP1.6;开7.5V电源(高速)
CLRP1.7;关4.3V
CLRP1.0;电机电源开
CPL30H;停车点位置判断标志取反
JB30H,STREN;为1(中途停车)转STREN
LCALLCLR00;是终点,调复0程序
STREN:RET;返回
求智能循迹小车程序(走