diff --git a/firmware.asm b/firmware.asm index 5b8307b..ba8fa8c 100644 --- a/firmware.asm +++ b/firmware.asm @@ -85,14 +85,6 @@ pop r16 .endm -.macro clr_btn_flag - push r16 - lds r16, BTN_FLAGS_ADDRESS - cbr r16, @0 - sts BTN_FLAGS_ADDRESS, r16 - pop r16 -.endm - .dseg ; Data segment .org SRAM_START @@ -108,12 +100,29 @@ BTN_FLAGS_ADDRESS: .byte 0x01 .cseg ; Code segment .org 0x00 ; Start program at 0x00 -rjmp start -rjmp PCINT4_ISR +; +; Setup vectors +rjmp start ; Program start at RESET vector +reti ; External Interrupt Request 0 +rjmp PCINT0_ISR ; Pin Change Interrupt Request 0 / active +reti ; Pin Change Interrupt Request 1 / inactive +reti ; Watchdog Time-out / inactive +reti ; Timer/Counter1 Capture Event / inactive +reti ; Timer/Counter1 Compare Match A / inactive +reti ; Timer/Counter1 Compare Match B / inactive +reti ; Timer/Counter1 Overflow / inactive +reti ; Timer/Counter0 Compare Match A / inactive +reti ; Timer/Counter0 Compare Match B / inactive +reti ; Timer/Counter0 Overflow / inactive +reti ; Analog Comparator / inactive +reti ; ADC Conversion Complete / inactive +reti ; EEPROM Ready / inactive +reti ; USI START / inactive +reti ; USI Overflow / inactive ; ; Interrupt service routines -PCINT4_ISR: ; First button +PCINT0_ISR: ; Button handlers there set_btn_flag 0x01 reti @@ -216,8 +225,6 @@ delay_before_start: ret init_interrupts: - push r16 - ; ; Enable Port Change Interrupt ldi r16, (1<