.INCLUDE "tn26def.inc" .LIST ; **** REGISTERS ************************************************* .DEF PC_HISTORY = r19 ; **** LABLES **************************************************** .EQU LED_PORT = PORTA .EQU LED_PIN = PINA .EQU LED_0_PIN = PA7 .EQU LED_1_PIN = PA6 .EQU LED_2_PIN = PA5 .EQU SW_PORT = PORTA .EQU SW_PIN = PINA .EQU SW_0_PIN = PA4 .EQU SW_1_PIN = PA3 .EQU SW_2_PIN = PA2 ; **** CODE SEGMENT ********************************************** .CSEG ; **** VECTORS *************************************************** .ORG 0x00 rjmp RESET_vect .ORG 0x02 rjmp PIN_CHANGE_vect PIN_CHANGE_vect: push r16 push r17 in r17, SREG in r18, PINA eor r18, PC_HISTORY in PC_HISTORY, PINA _sw_0_check: sbrs r18, SW_0_PIN rjmp _sw_1_check rjmp _sw_0_handler _sw_0_handler: rcall DEBOUNCE_SW ldi r16, LED_0_PIN sbis SW_PIN, SW_0_PIN rcall TOGGLE_LED rjmp _sw_exit _sw_1_check: sbrs r18, SW_1_PIN rjmp _sw_2_check rjmp _sw_1_handler _sw_1_handler: rcall DEBOUNCE_SW ldi r16, LED_1_PIN sbis SW_PIN, SW_1_PIN rcall TOGGLE_LED rjmp _sw_exit _sw_2_check: sbrs r18, SW_2_PIN rjmp _sw_exit _sw_2_handler: rcall DEBOUNCE_SW ldi r16, LED_2_PIN sbis SW_PIN, SW_2_PIN rcall TOGGLE_LED _sw_exit: out SREG, r17 pop r17 pop r16 reti RESET_vect: ldi r16, RAMEND out SP, r16 MCU_INIT: ldi r16, (1<