org 0h
jmp mulai
mulai:
cek1: jb p1.0,cek2 ; cek penekanan tombol 2
call kanan ;
call label kanan
cek2: jb p1.1,cek3 ; cek penekanan tombol 1
call kiri
cek3: jb p1.2,cek1
call mati ;
call label kiri
sjmp
mulai ;
kembali ke label mulai
;--------------------------------------------
kanan: mov a,#01111111b ; isi data accu dengan 01111111b
kanan1: mov p0,a ;
isi data accu di p0
call
delay ; call delay
jb p1.1,terus ;cek penekanan tombol pada kanan1
sjmp kembali ;
kembali ke label kembali
terus: jb p1.2,terus1 ; cek penekanan tombol pada terus1
sjmp kembali ;
kembali ke kembali
terus1:
rr a ;
putar data accu ke kanan
cjne a,#11111110b,kanan1 ;bandingkan data 11111110b dengan data di
accu lalu ke label kanan1
sjmp kanan1 ;
kembali ke label kanan1
kembali: ret
;
kembali ke program awal
kiri: mov a,#11111110b ; isi data accu dengan 11111110b
kiri1: mov p0,a ;
isi data accu di p0
call delay
;
call delay
jb p1.2,next ; cek penekanan tombol pada next
sjmp back ;
kembali ke label back
next: jb p1.0,next1 ; cek penekanan tombol paada next1
sjmp back ;
kembali ke label back
next1: rl a ;
putar data accu ke kiri
cjne a,#011111111b,kiri1 ; bandingkan data 01111111b dengan data di accu lalu ke
kiri1
sjmp kiri1 ;
kembali ke label kiri1
back: ret
;
kembali ke program awal
mati: mov a,#11111111b
mati1: mov p0,a
call delay
jb p1.0,lanjut
sjmp kanan
lanjut: jb p1.1,lanjut1
sjmp kiri
lanjut1: jmp mulai
ret
;===========================================
;subroutine delay time
delay: mov r2,#180 ;
isi data register 2 dangan 180h
delay1: mov r3,#250 ;
isi data register 3 dengan 250h
delay2: djnz r3,delay2 ;
kurangi register 3 jika belum 0 jangan lompat ke delay2
djnz r2,delay1 ;
kurangi register 2 jika belum 0 jangan lompat ke delay1
ret
;
kembali ke program awal
end
;
program berakhir
No comments:
Post a Comment