.include "m328pdef.inc"
; Define constants
#define F_CPU 16000000 ; CPU clock frequency (16 MHz)
; I / O Register Definitions
.equ LED_DDR = DDRB
.equ LED_PORT = PORTB
.equ LED_PIN = PB5
; Main program
RESET:
ldi r16, 1 << LED_PIN ; Set LED pin as output
out LED_DDR, r16
MAIN:
ldi r16, 1 << LED_PIN ; Load value to toggle the LED
out LED_PORT, r16 ; Turn on the LED
_delay_ms(1000) ; Delay for 1 second
cbi LED_PORT, LED_PIN ; Turn off the LED
_delay_ms(1000) ; Delay for 1 second
rjmp MAIN ; Repeat
; Delay subroutine
_delay_ms:
; Input: r24 = number of milliseconds
; Output: None
ldi r17, 100 ; Load constant
DELAY_LOOP:
dec r24 ; Decrement milliseconds
brne DELAY_LOOP ; Repeat if not zero
ret
; End of program