
Program Assembly Menyalakan - Mematikan LED
Part 1
;- BAB4_01.ASM -------------------------------------------------------------------
;
; Program menyalakan/mematikan LED selama 1 detik
;
; --------------------------------------------------------------------------------
;
RATUSAN EQU 100 ; 100 x 10000 ud = 1 detik
CACAH EQU -10000
ORG 0H
MOV TMOD,#01H ; gunakan timer 0 mode 16 bit (0000 0001)
MULAI:
MOV P1,#00H ; hidupkan LED selama 1 detik
CALL TUNDA
MOV P1,#0FFH ; matikan LED selama 1 detik
CALL TUNDA
SJMP MULAI ; ulangi lagi dari awal
TUNDA: MOV R1,#RATUSAN
LAGI: MOV TH0,#HIGH CACAH ; isi TH0 dengan HIGH(CACAH)
MOV TL0,#LOW CACAH ; isi TL0 dengan LOW(CACAH)
SETB TR0 ; hidupkan timer 0
TUNGGU: JNB TF0,TUNGGU ; tunggu hingga melimpah
CLR TF0 ; matikan flag limpahan timer 0 scr manual
CLR TR0 ; matikan timer 0
DJNZ R1,LAGI ; apakah sudah #ratusan kali?
; BELUM! ulangi dari LAGI
RET ; SUDAH! kembali dari subrutin TUNDA
END
Part 2
;- BAB4_02.ASM -------------------------------------------------------------------
;
; Program menyalakan/mematikan LED setelah penekanan tombol
; pada P1.4 sebanyak 5 kali dengan menggunakan timer
;
; --------------------------------------------------------------------------------
;
CACAH EQU -5 ; cacah sama dengan 5
ORG 0H
;
MOV TMOD,#0Eh ; gunakan timer 0 mode 8 bit isi-ulang otomatis
LAGI: MOV TH0,#CACAH ; isi TH0 dengan #cacah
MOV TL0,#CACAH ; isi TL0 dengan #cacah
SETB TR0 ; aktifkan timer0
CEK: JNB TF0,$ ; tunggu hingga melimpah
CLR P1.0 ; hidupkan P1.0 setelah 5 kali
; penekanan tombol pada T0 (P1.4)
CLR TF0 ; bersihkan flag limpahan timer 0 scr manual
CEK1: JNB TF0,$ ; tunggu hingga overflow
SETB P1.0 ; matikan P1.0 setelah 5 kali
; penekanan tombol pada T0 (P1.4)
CLR TF0 ; bersihkan flag limpahan timer 0 scr manual
SJMP CEK ; ulangi lagi dari awal
END
Semoga bermanfaat & selamat belajar!