.include "m328pdef.inc"
.equ LED_DDR, DDRB
.equ LED_PORT, PORTB
.equ LED_PIN, PORTB0
.equ BTN_DDR, DDRC
.equ BTN_PORT, PORTC
.equ BTN_PIN, PINC0
.equ DELAY_MS, 500
.org 0x00
rjmp main
main:
; Inisialisasi LED sebagai output
ldi r16, (1 << LED_PIN)
out LED_DDR, r16
; Inisialisasi push button sebagai input dengan pull-up resistor
ldi r16, (0 << BTN_PIN)
out BTN_DDR, r16
ldi r16, (1 << BTN_PIN)
out BTN_PORT, r16
loop:
; Baca status push button
in r16, BTN_PIN
; Periksa apakah push button ditekan (LOW)
cpi r16, 0
breq turn_on_led
; Jika tidak ditekan, matikan LED
sbi LED_PORT, LED_PIN
rjmp loop
turn_on_led:
; Hidupkan LED
cbi LED_PORT, LED_PIN
; Tunggu sebentar
ldi r16, DELAY_MS / 4
delay_loop:
dec r16
brne delay_loop
; Kembali ke loop utama
rjmp loop
.end