You are on page 1of 4

Program Assembler untuk robot Line follower

$MOD51
;------------------------------------------------------------------------------;program untuk robot pengikut garis
;------------------------------------------------------------------------------kutub_A
bit
P1.0 ; motor 1
kutub_B
bit
P1.1
kutub_C
bit
P1.2 ; motor 2
kutub_D
bit
P1.3
sense_A
sense_B
sense_C
start
finish

bit
bit

bit
bit
bit

P3.0
P3.1
P3.2

; Sensor garis-A
; Sensor garis-B (center)
; Sensor garis-C

P3.3
P3.4

; saklar1
; saklar2

PWM_R
bit
P2.0 ; flag PWM motor kanan
PWM_L
bit
P2.1 ; flag PWM motor kiri
;--------------------------------------------org
00h
sjmp
main
org
0bh
ljmp
interupsi_timer0
;--------------------------------------------main:
call
init_timer
jb
start,$
call
sensor
jb
finish,loop
call
bounce
call
stop
loop:
sjmp loop
;---------------------------init_timer:
mov TMOD,#1
mov TH0,#high (-1000)
mov TL0,#low (-1000)
setb
EA
setb
ET0
setb
TR0
ret

;--------------------- Interupsi timer-0 ----------------------interupsi_timer0:


clr TR0
clr TF0
mov TH0,#high (-1000)
mov TL0,#low (-1000)
cpl PWM_R
cpl PWM_L
setb TR0
reti
;--------------------------------bounce:
mov TL1,#low (-50000)
mov TH1,#high (-50000)
clr
TF1
setb TR1
jnb
TF1,$
clr
TR1
ret
;---------------------------------------------------------------sensor:
jb
p3.0,bukan_kiri
jb
p3.2,bukan_kanan
sjmp sensor
bukan_kiri:
jb
p3.2,bukan_kanan1
call kanan
sjmp sensor
bukan_kanan1:
jb
p3.1,bukan_kiri_kanan_tengah
call maju
sjmp sensor
bukan_kiri_kanan_tengah:
sjmp sensor
bukan_kanan:
call kiri
sjmp sensor
;--------------------------------------memutar motor DC---------

maju:

; robot bergerak maju


clr
setb
clr
setb
ret

kutub_A
kutub_B
kutub_C
kutub_D

;
kanan:

; robot belok ke kanan


clr
setb
setb
clr
ret

kutub_A
kutub_B
kutub_C
kutub_D

setb
clr
clr
setb
ret

kutub_A
kutub_B
kutub_C
kutub_D

;
kiri:

; robot belok ke kiri

;
koreksi_kanan:
clr kutub_A
setb kutub_B
setb kutub_C
clr kutub_D
ret
;
koreksi_kiri:
setb kutub_A
clr kutub_B
clr kutub_C
setb kutub_D
ret
;
stop:
setb kutub_A
setb kutub_B
setb kutub_C
setb kutub_D
ret
;
mundur:
setb kutub_A
clr kutub_B
setb kutub_C

; gerak robot dikoreksi kekanan

; gerak robot dikoreksi kekiri

; robot berhenti

; robot bergerak mundur

clr kutub_D
ret
;----------------------akhir program ini-------------------------end

You might also like