Anda di halaman 1dari 1

;- -------------------------------------------------------------------

; Lampu bergerak dari tengah ke pinggir kemudian kembali lagi...


;---------------------------------------------------------------------
#include <sfr51.inc>
Org 0h
;
Mulai: Mov P1,#11100111B ; Dua lampu tengah menyala, P13 dan P1.4 (=0E7h)
Acall Delay ; lakukan penundaan sesaat...
Mov P1,#11011011B ; Dua lampu berikutnya menyala, P1.2 dan P1.5 (=0DBh)
Acall Delay ; lakukan penundaan sesaat...
Mov P1,#10111101B ; Dua lampu berikutnya menyala, P1.1 dan P1.6 (=0BDh)
Acall Delay
Mov P1,#01111110B ; Dua lampu berikutnya menyala, P1.0 dan P1.7 (=7Eh)
Acall Delay
Mov P1,#10111101B ; dua lampu berikutnya menyala, P1.1 dan P1.6 (=0BDh)
Acall Delay
Mov P1,#11011011B ; Dua lampu berikutnya menyala, P1.2 dan P1.5 (=0DBh)
Acall Delay
Sjmp Mulai ; Lompat ke alamat dg label Mulai
;
;-subrutin DELAY-----------------------------------------------------------
;
; subrutin ini hanya sekedar melakukan penundaan sesaat dengan cara
; mengulangi proses (pengurangan isi register) hingga dicapai suatu
; kondisi tertentu
;
;--------------------------------------------------------------------------
DELAY: MOV R0,#5H ; Isi Register R0 dengan 5 (5x ulang)
DELAY1: MOV R1,#0FFH ; Isi Register R1 dengan 255 (255x ulang
DELAY2: MOV R2,#0 ; Isi register R2 dengan 0 (256x ulang)
DJNZ R2,$ ; R2=R2-1, jika R2 belum 0 ulangi lagi
DJNZ R1,DELAY2 ; R1=R1-1, jika R1 belum 0 ulangi DELAY2
DJNZ R0,DELAY1 ; R0=R0-1, jika R0 belum 0 ulangi DELAY1
RET ; Kembali ke pemanggil subrutin DELAY
END

Anda mungkin juga menyukai