這是一台紅外線自走車的程式,但是我希望有人能夠把註解寫的再詳細些。
以及告訴我每個英文所代表的一為何。
;*************************************************************************
; 程 式 開 始
;*************************************************************************
;宣告區
;*************************************************************************
TIMETEMP0 EQU 30H
TIMETEMP1 EQU 31H
RUN_FLAG REG 32H.0
GOFORWARD EQU 3 ;伺服馬達使之前轉的時間常數
GOBACK EQU 25 ;伺服馬達使之後轉的時間常數
MOTOR1 REG P2.6 ;伺服馬達1使用8051的P2.6來控制
MOTOR2 REG P2.7 ;伺服馬達2使用8051的P2.7來控制
;*************************************************************************
;程式開始
;*************************************************************************
ORG 00H ;程式開始進入點
JMP START ;跳到START初始化
ORG 0BH ;計時中斷0進入點
JMP TIMER0_INT ;跳到TIMER0_INT執行程式
;----------------------------------------------------------
START:
CLR RUN_FLAG ;將自動走膠帶狀態清除
CLR MOTOR1 ;將伺服馬達1號的輸出清為LOW電位
CLR MOTOR2 ;將伺服馬達2號的輸出清為LOW電位
CALL INIT_TIMER ;呼叫INIT_TIMER初始化計時器
;----------------------------------------------------------
MAIN:
CALL BOTTOM_CHECK ;呼叫BOTTOM_CHECK執行啟動按鍵判斷
CALL AUTO_RUN ;呼叫AUTO_RUN執行膠帶路線判斷
JMP MAIN ;跳到MAIN重新前面程序
;----------------------------------------------------------
BOTTOM_CHECK:
JB P3.0,EXIT_BOTTOM_CHECK ;如果P2.0按鈕沒被按下,跳離開
MOV R5,#2 ;將R5設定為2
CALL DELAY ;呼叫DELAY副程式
JB P3.0,EXIT_BOTTOM_CHECK ;如果P2.0按鈕沒被按下,跳離開
SETB RUN_FLAG ;將啟動旗標設為1
EXIT_BOTTOM_CHECK:
JNB P3.0,EXIT_BOTTOM_CHECK ;如果按鍵還在按下的狀態,在原地跳躍
RET ;離開副程式
;----------------------------------------------------------
AUTO_RUN:
JNB RUN_FLAG,JMP_POINT ;如果目前不為自動走膠帶狀態,跳離開
MOV A,P1 ;將P1的資料送到A(感測器狀態)
ANL A,#00011111B ;只保留下五位元的資料
CJNE A,#0,CHECK1 ;如果A的資料為0(全壓到線狀態),執行下面程式
MOV R5,#200 ;將R5設定為200
CALL DELAY ;呼叫DELAY副程式
WAIT_LOOP:
MOV R0,#1 ;將R0設定為1(馬達移動1單位)
CALL MOTORGOF ;呼叫MOTORGOF執行車體前進副程式
MOV A,P1 ;將P1的資料送到A(感測器狀態)
ANL A,#00011111B ;只保留下五位元的資料
CJNE A,#0,WAIT_LOOP2 ;如果A的資料為0(全壓到線狀態),執行下面程式
JMP WAIT_LOOP ;跳到WAIT_LOOP
WAIT_LOOP2:
MOV R0,#1 ;將R0設定為1(馬達移動1單位)
CALL MOTORGOF ;呼叫MOTORGOF執行車體前進副程式
JNB P1.0,CHECK2 ;如果P1.0為壓到線狀態,跳到CHECK2
JNB P1.4,CHECK2 ;如果P1.4為壓到線狀態,跳到CHECK2
JMP EXIT_AUTO_MODE ;跳到EXIT_AUTO_MODE離開
WAIT_LOOP3:
JMP EXIT_AUTO_MODE ;跳到EXIT_AUTO_MODE離開
CHECK1:
JNB P1.0,CHECK2 ;如果P1.0為壓到線狀態,跳到CHECK2
JNB P1.1,CHECK2 ;如果P1.1為壓到線狀態,跳到CHECK2
JNB P1.2,CHECK2 ;如果P1.2為壓到線狀態,跳到CHECK2
JNB P1.3,CHECK2 ;如果P1.3為壓到線狀態,跳到CHECK2
JNB P1.4,CHECK2 ;如果P1.4為壓到線狀 ..
訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容