搜档网
当前位置:搜档网 › 单片机智能小车控制程序解析

单片机智能小车控制程序解析

;-----------------------------------------------------------
;程序说明:
;
;
;
;-------------------------------------------------------------
RTURN BIT P1.5 ;左转
LTURN BIT P1.6 ;右转
BEGAIN BIT P1.0 ;开始的按键
MIDDLE BIT P2.3 ;中间探测器
LEFT BIT P2.2 ;左边探测器
RIGHT BIT P2.4 ;右边探测器
LLEFT BIT P2.1
RRIGHT BIT P2.5
LLLEFT BIT P2.6 ;最左边探测器
RRRIGHT BIT P2.0 ;最右边探测器

MATEL1 BIT P1.1 ;金属探测1
MATEL2 BIT P1.2 ;金属探测2
MATEL3 BIT P1.3 ;金属探测3

METAL_ALARM BIT P1.4

ORG 00H
JMP START

START: MOV P2,#00H

SETB LTURN
SETB RTURN
LOOP: JNB BEGAIN,FOR2 ;;;;;;;;按钮按了没
JMP LOOP
FOR2: CALL DELAY1
JNB BEGAIN,$
CALL DELAY1
JMP FOR
FOR: MOV R0,#00H ;;;;;;;;开始的速度
FOR1: MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
JZ FOR
CPL A
MOV P2,A
JB MIDDLE,FOR3
JB RIGHT,FOR3 ;;;;;检测到直线 后加速
JB LEFT,FOR3
JB RRIGHT,FOR3
JB LLEFT,FOR3
JB LLLEFT,FOR3
JB RRRIGHT,FOR3

CALL DELAY1
INC R0
JMP FOR1

FOR3:
FOR33:MOV R0,#00H ;;;;;;;加速
FOR4: MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
JZ FOR33
CPL A
MOV P2,A
CALL CHECK1 ; ; ; ; ;
INC R0
JMP FOR4

CHECK1:MOV R4,#07H
MOV R5,#03H
MOV A,P2
CONTINUE: RLC A
JC CHECK2

CHECK2: DJNZ R5, CHECK3
CALL STOP
JMP $

CHECK3:DJNZ R4,CONTINUE

JB MIDDLE,A1
JB LEFT,A2
JB RIGHT,A3
JB LLEFT,A2
JB RRIGHT,A3
JB LLLEFT,A2
JB RRRIGHT,A3
JB MATEL1,STOP5S ;检测到金属停5秒
JB MATEL2,STOP5S
JB MATEL3,STOP5S

CALL DELAY1
SETB LTURN
SETB RTURN

CALL STOP
JMP $
;CALL DELAY3 ;;;黑线尽头,停5秒

A1: SETB LTURN
SETB RTURN
CALL DELAY2 ;;;;直线还是加速
RET
A2: SETB LTURN ;;;;转弯减速
CLR RTURN
CALL DELAY1
RET
A3: CLR LTURN ;;;;转弯减速
SETB RTURN
CALL DELAY1
RET
STOP5S:ORL P2,#0FFH
CLR METAL_ALARM
CALL DELAY3
SETB METAL_ALARM

RET
STOP: ORL P2,#0FFH
RET



DELAY1:MOV R7,#10 ;;; 减速延时
D1: MOV R6,#248
DJNZ R6,$
DJNZ R7,D1
RET
DELAY2:MOV R1,#10 ; 加速延时
D2: MOV R2,#230
DJNZ R2,$
DJNZ R1,D2
RET
DELAY3:MOV R1,#05
D22: CALL DELAY4
DJNZ R1,D22
RET
DELAY4:MOV R5,#100
D3: MOV R6,#20
D4: MOV R7,#248
DJNZ R7,$
DJNZ R6,D4
DJNZ R5,D3
RET
TABLE:DB 0cH,09H,03H,06H
DB 00H
DB 0cH,06H,03H,09H
DB 00H
END
















相关主题