
Source Code:
;- BAB3_02.ASM -------------------------------------------------------------------
;
; Lampu flip-flop genap dan ganjil pada Port 1
; bundet.com
;---------------------------------------------------------------------------------
#include <sfr51.inc>
Org 0h
;
Mulai:
Mov P1,#01010101B ; LED P1.0, P1.2, P1.4 dan P1.6 menyala (=55h)
Acall Delay ; lakukan penundaan sesaat...
Mov P1,#10101010B ; LED P1.1, P1.3, P1.5 dan P1.7 menyala (=0AAh)
Acall Delay ; lakukan penundaan sesaat...
Sjmp Mulai ; ulangi lagi dari awal
;
;-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
Demo:
https://youtu.be/0xRXZKTm7Os
Semoga bermanfaat & selamat belajar!