循跡小車源程序,用匯編語言寫。,自動循跡小車

做循跡小車的詳細過程
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;返回
求智能循跡小車程序(走