[請益] 8051的問題
小弟就讀電機系,
對8051有學過略懂,但忘了,
然後有學弟請益我8051的問題,
就有一台裝有三個超因波感應器的兩輪車,
還有一個超因波接受器,
車子會跟著接收器走
只是.....
學弟說
偵測到接受器一定的距離會停止,
這讓我...想破頭也想不出來
以下程式 有人想的出來嗎?
謝謝
ORG 00H ;開頭位置
START:
MOV 40H,#10
MOV 41H,#2
SETB P1.0 ;馬達直行
CLR P1.1
SETB P1.2
CLR P1.3
;==========================
;========主程式迴圈=========
;==========================
LOOP:
L2:
CALL WAVED
MOV A,P2 ;P2=>A
CPL A ;A反相
ANL A,#00000111B ;取3位元
CJNE A,#7,M1 ;A=7時(111)
MOV 40H,#10
MOV 41H,#2
SETB P1.0 ;車子往前
CLR P1.1
SETB P1.2
CLR P1.3
JMP M8
M1:
CJNE A,#2,M2 ;A=2時(010)
MOV 40H,#10
MOV 41H,#2
SETB P1.0 ;車子往前
CLR P1.1
SETB P1.2
CLR P1.3
JMP M8
M2:
CJNE A,#3,M3 ;A=3時(011)
MOV 40H,#10
MOV 41H,#2
SETB P1.0 ;車子往前
CLR P1.1
SETB P1.2
CLR P1.3
JMP M8
M3:
CJNE A,#6,M4 ;A=6時(110)
MOV 40H,#10
MOV 41H,#2
SETB P1.0 ;車子往前
CLR P1.1
SETB P1.2
CLR P1.3
JMP M8
M4:
CJNE A,#1,M5 ;A=1時(001)
MOV 40H,#10
MOV 41H,#2
CLR P1.0 ;車子右轉
CLR P1.1
SETB P1.2
CLR P1.3
CALL DELAY
JMP M8
M5:
CJNE A,#4,M7 ;A=4時(100)
MOV 40H,#10
MOV 41H,#2
SETB P1.0 ;車子左轉
CLR P1.1
CLR P1.2
CLR P1.3
CALL DELAY
JMP M8
M7:
CJNE A,#0,M8 ;A=0時(000)
DJNZ 40H,M8
MOV 40H,#10
DJNZ 41H,M8
MOV 41H,#2
CLR P1.0 ;車子停
CLR P1.1
CLR P1.2
CLR P1.3
JMP M8
M8:
JMP LOOP
WAVED:
CLR P3.0 ;選擇訊號00
CLR P3.1
CALL DELAY
MOV R6,#5
WL1: MOV R7,#5
WL2: JNB P2.7,WD1 ;有超音波訊號則跳WD1
DJNZ R7,WL2
DJNZ R6,WL1
SETB P2.0 ;P2.0設為1,右邊LED暗
JMP WAV2
WD1:
CLR P2.0 ;P2.0設為0,右邊LED亮
WAV2:
SETB P3.0 ;選擇訊號01
CLR P3.1
CALL DELAY
MOV R6,#5
WL3: MOV R7,#5
WL4: JNB P2.7,WD2 ;有超音波訊號則跳WD2
DJNZ R7,WL4
DJNZ R6,WL3
SETB P2.1 ;P2.1設為1,中間LED暗
JMP WAV3
WD2:
CLR P2.1 ;P2.1設為0,中間LED亮
WAV3:
CLR P3.0 ;選擇訊號10
SETB P3.1
CALL DELAY
MOV R6,#5
WL5: MOV R7,#5
WL6: JNB P2.7,WD3 ;有超音波訊號則跳WD3
DJNZ R7,WL6
DJNZ R6,WL5
SETB P2.2 ;P2.2設為1,左邊LED暗
JMP WAVOK
WD3:
CLR P2.2 ;P2.2設為0,左邊LED亮
WAVOK:
RET
; ======================
; ==廷時副程式R5來定時==
; ======================
DELAY: MOV R5,#2
DL0: MOV R6,#60
DL1: MOV R7,#60
DL2: DJNZ R7,DL2
DJNZ R6,DL1
DJNZ R5,DL0
RET
END
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.68.164.12
ASM 近期熱門文章
PTT數位生活區 即時熱門文章