diff --git a/firmware.asm b/firmware.asm new file mode 100644 index 0000000..6537ca6 --- /dev/null +++ b/firmware.asm @@ -0,0 +1,71 @@ +; +; Project name: thermostat +; Description: Electronic thermostat on AVR Microcontroller +; Source code: https://github.com/sergeyyarkov/attiny2313a_thermostat +; Device: ATtiny2313A +; Device Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/doc8246.pdf +; Package: SOIC-20W_7.5x12.8mm_P1.27mm +; Assembler: AVR macro assembler 2.2.7 +; Clock frequency: 12 MHz External Crystal Oscillator +; Fuses: lfuse: , hfuse: , efuse: , lock: +; +; Written by Sergey Yarkov 22.01.2023 + +.INCLUDE "tn2313Adef.inc" +.LIST + +.DEF tmp_r_a = r16 + +.DSEG + +.CSEG +.ORG 0x00 + +; MCU VECTORS +rjmp RESET_vect ; Program start at RESET vector +reti ; External Interrupt Request 0 / inactive +reti ; External Interrupt Request 1 / inactive +reti ; Timer/Counter1 Capture Event / inactive +reti ; Timer/Counter1 Compare Match A / inactive +reti ; Timer/Counter1 Overflow / inactive +reti ; Timer/Counter0 Overflow / inactive +reti ; USART0, Rx Complete / inactive +reti ; USART0 Data Register Empty / inactive +reti ; USART0, Tx Complete / inactive +reti ; Analog Comparator / inactive +reti ; Pin Change Interrupt Request 0/ inactive +reti ; Timer/Counter1 Compare Match B / inactive +reti ; Timer/Counter0 Compare Match A / inactive +reti ; Timer/Counter0 Compare Match B / inactive +reti ; USI Start Condition/ inactive +reti ; USI Overflow / inactive +reti ; EEPROM Ready/ inactive +reti ; Watchdog Timer Overflow / inactive +reti ; Pin Change Interrupt Request 1 / inactive +reti ; Pin Change Interrupt Request 2 / inactive + +RESET_vect: + ; + ; INIT STACK POINTER + ldi tmp_r_a, low(RAMEND) + out SPL, tmp_r_a + +MCU_INIT: + rcall INIT_PORTS + rjmp LOOP + +INIT_PORTS: + ldi r16, (1<