作者phimos (录)
看板ASM
标题[请益] 8051的问题
时间Fri Nov 12 13:04:32 2010
小弟就读电机系,
对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