📄 motorasm.asm
字号:
RIGHTKEY EQU P1.0
LEFTKEY EQU P1.1
RSTKEY EQU P1.2
ENA_1 EQU P0.0
ENB_1 EQU P0.1
ENA_2 EQU P0.4
ENB_2 EQU P0.5
MOTOR1 EQU P0.2
MOTOR2 EQU P0.3
MOTOR3 EQU P0.6
MOTOR4 EQU P0.7
SENSOR1 EQU P2.0
SENSOR2 EQU P2.1
SENSOR3 EQU P2.2
SENSOR4 EQU P2.3
SENSOR5 EQU P2.4
SENSOR6 EQU P2.5
RST EQU P3.0
READY_MOTOR1 EQU 20H.3
READY_MOTOR2 EQU 20H.4
READY_MOTOR3 EQU 20H.5
FLAG_RIGHT EQU 20H.1
FLAG_LEFT EQU 20H.2
FLAG_SENSOR1 EQU 21H.1
FLAG_SENSOR2 EQU 21H.2
FLAG_SENSOR3 EQU 21H.3
FLAG_SENSOR4 EQU 21H.4
FLAG_SENSOR5 EQU 21H.5
FLAG_SENSOR6 EQU 21H.6
FLAG_TIMER0 EQU 21H.7
FLAG_ERROR EQU 20H.6
RIGHTSENSOR EQU 30H
LEFTSENSOR EQU 31H
NUM EQU 32H
ORG 0000H
SJMP START
ORG 000BH
AJMP TIMER0
ORG 0030H
START:
MOV P0,#00H
MOV P1,#0FFH
MOV P2,#0FFH
CLR FLAG_RIGHT
CLR FLAG_LEFT
CLR FLAG_SENSOR1
CLR FLAG_SENSOR2
CLR FLAG_SENSOR3
CLR FLAG_SENSOR4
CLR FLAG_SENSOR5
CLR FLAG_SENSOR6
CLR FLAG_TIMER0
CLR FLAG_ERROR
CLR READY_MOTOR1
CLR READY_MOTOR2
CLR READY_MOTOR3
; LCALL DELAY3S
; MOV P0,#00H
MOV RIGHTSENSOR,#00H
MOV LEFTSENSOR,#00H
MOV NUM,#00H
MOV TMOD,#01H
MOV TH0,#03CH
MOV TL0,#0B0H
SETB EA
SETB ET0
J1:
CPL RST
JB RIGHTKEY,K1
LCALL DELAY
JNB RIGHTKEY,J2
SJMP J1
K1:
JB LEFTKEY,K2
LCALL DELAY
JNB LEFTKEY,J5
SJMP J1
K2:
JB RSTKEY,J1
LCALL DELAY
JB RSTKEY,J1
LJMP J8
J2:
SETB ENA_1
SETB ENB_1
SETB ENA_2
SETB MOTOR1
SETB MOTOR2
SETB MOTOR3
CLR FLAG_ERROR
MOV RIGHTSENSOR,#00H
CLR FLAG_TIMER0
CPL RST
LCALL DELAY3S
LCALL READ_SENSOR
JB FLAG_ERROR,J1
CLR FLAG_RIGHT
CLR FLAG_LEFT
; CLR FLAG_TIMER0
LCALL DELAY3S
CLR FLAG_SENSOR1
CLR FLAG_SENSOR2
CLR FLAG_SENSOR3
CLR FLAG_SENSOR4
CLR FLAG_SENSOR5
CLR FLAG_SENSOR6
CLR MOTOR1
CLR MOTOR2
CLR MOTOR3
SETB ENA_1
SETB ENB_1
SETB ENA_2
LCALL DELAY3S
CLR ENA_1
CLR ENB_1
CLR ENA_2
SJMP J1
J5:
SETB ENA_1
SETB ENB_1
SETB ENA_2
CLR MOTOR1
CLR MOTOR2
CLR MOTOR3
CLR FLAG_ERROR
MOV LEFTSENSOR,#00H
CLR FLAG_TIMER0
CPL RST
LCALL DELAY3S
LCALL READ_SENSOR1
JNB FLAG_ERROR,M1
AJMP J1
M1:
CLR FLAG_RIGHT
CLR FLAG_LEFT
; CLR FLAG_TIMER0
LCALL DELAY3S
CLR FLAG_SENSOR1
CLR FLAG_SENSOR2
CLR FLAG_SENSOR3
CLR FLAG_SENSOR4
CLR FLAG_SENSOR5
CLR FLAG_SENSOR6
SETB MOTOR1
SETB MOTOR2
SETB MOTOR3
SETB ENA_1
SETB ENB_1
SETB ENA_2
LCALL DELAY3S
CLR ENA_1
CLR ENB_1
CLR ENA_2
LJMP J1
J8:
SETB ENA_1
SETB ENB_1
SETB ENA_2
CLR MOTOR1
CLR MOTOR2
CLR MOTOR3
L1:
CPL RST
JB SENSOR1,L2
CLR ENA_1
SETB READY_MOTOR1
L2:
JB SENSOR2,L3
CLR ENB_1
SETB READY_MOTOR2
L3:
JB SENSOR3,L4
CLR ENA_2
SETB READY_MOTOR3
L4:
JNB READY_MOTOR1,L1
JNB READY_MOTOR2,L1
JNB READY_MOTOR3,L1
CLR READY_MOTOR1
CLR READY_MOTOR2
CLR READY_MOTOR3
LJMP J1
READ_SENSOR:
S0:
JB FLAG_ERROR,S9
CPL RST
JB FLAG_SENSOR1,S1
JB SENSOR1,S1
CLR ENA_1
SETB FLAG_SENSOR1
INC RIGHTSENSOR
S1:
JB FLAG_SENSOR2,S2
JB SENSOR2,S2
CLR ENB_1
SETB FLAG_SENSOR2
INC RIGHTSENSOR
S2:
JB FLAG_SENSOR3,S6
JB SENSOR3,S6
CLR ENA_2
SETB FLAG_SENSOR3
INC RIGHTSENSOR
S6:
MOV R4,RIGHTSENSOR
CJNE R4,#01H,S5
JB FLAG_TIMER0,S5
SETB TR0
SETB FLAG_TIMER0
S5:
CJNE R4,#02H,S7
JB FLAG_TIMER0,S7
SETB TR0
SETB FLAG_TIMER0
S7:
CJNE R4,#03H,S8
MOV RIGHTSENSOR,#00H
SETB FLAG_RIGHT
S8:
JB FLAG_RIGHT,S9
SJMP S0
S9:
CLR TR0
RET
READ_SENSOR1:
S10:
JB FLAG_ERROR,S19
CPL RST
JB FLAG_SENSOR4,S14
JB SENSOR4,S14
CLR ENA_1
SETB FLAG_SENSOR4
INC LEFTSENSOR
S14:
JB FLAG_SENSOR5,S15
JB SENSOR5,S15
CLR ENB_1
SETB FLAG_SENSOR5
INC LEFTSENSOR
S15:
JB FLAG_SENSOR6,S16
JB SENSOR6,S16
CLR ENA_2
SETB FLAG_SENSOR6
INC LEFTSENSOR
S16:
MOV R4,LEFTSENSOR
CJNE R4,#01H,S11
JB FLAG_TIMER0,S11
SETB TR0
SETB FLAG_TIMER0
S11:
CJNE R4,#02H,S12
JB FLAG_TIMER0,S12
SETB TR0
SETB FLAG_TIMER0
S12:
CJNE R4,#03H,S17
MOV LEFTSENSOR,#00H
SETB FLAG_LEFT
S17:
JB FLAG_LEFT,S19
SJMP S10
S19:
CLR TR0
RET
TIMER0:
CLR TR0
MOV TH0,#03CH
MOV TL0,#0B0H
INC NUM
MOV R0,NUM
CJNE R0,#28H,D1
MOV NUM,#00H
CLR ENA_1
CLR ENB_1
CLR ENA_2
CLR FLAG_SENSOR1
CLR FLAG_SENSOR2
CLR FLAG_SENSOR3
CLR FLAG_SENSOR4
CLR FLAG_SENSOR5
CLR FLAG_SENSOR6
; CLR FLAG_TIMER0
SETB FLAG_ERROR
CPL P2.6
SJMP D2
D1:
SETB TR0
CPL RST
D2:
RETI
DELAY:
MOV R2,#50
L10:
MOV R3,#200
DJNZ R3,$
DJNZ R2,L10
RET
DELAY3S:
MOV R5,#100
L11:
MOV R2,#150
L12:
MOV R3,#200
L13:
CPL RST
DJNZ R3,L13
DJNZ R2,L12
DJNZ R5,L11
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -