From 549cae1e3f65128981860cdc0b2cd4f631e958d5 Mon Sep 17 00:00:00 2001 From: sergeyyarkov Date: Sat, 28 Jan 2023 11:42:04 +0300 Subject: [PATCH] counter --- .gitignore | 1 + Makefile | 9 + firmware.asm | 137 ++++++++++ firmware.hex | 8 + tn2313Adef.inc | 698 +++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 853 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 firmware.asm create mode 100644 firmware.hex create mode 100644 tn2313Adef.inc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..397c677 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.lss \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ff6ecd4 --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +SRC_FILE = firmware +MCU = t2313 +PROGRAMMER = usbtiny + +build: + avrasm2 -fI -W+ie $(SRC_FILE).asm -l $(SRC_FILE).lss + +flash: + avrdude -c $(PROGRAMMER) -p $(MCU) -U flash:w:$(SRC_FILE).hex:i \ No newline at end of file diff --git a/firmware.asm b/firmware.asm new file mode 100644 index 0000000..e97bba7 --- /dev/null +++ b/firmware.asm @@ -0,0 +1,137 @@ +; +; Project name: shift-register-example +; Description: An example of using the single 74HC595 shift register with an AVR microcontroller +; Source code: https://github.com/sergeyyarkov/attiny2313a_shift-register-example +; 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: 0x4F, hfuse: 0x9F, efuse: 0xFF, lock: 0xFF +; +; Written by Sergey Yarkov 22.01.2023 + +.INCLUDE "tn2313Adef.inc" +.LIST + +.DEF COUNTER = r20 + +;========================================; +; LABELS ; +;========================================; + +.EQU CLOCK_PIN = PB0 ; ST_CP on 74HC595 +.EQU DATA_PIN = PB1 ; DS on 74HC595 +.EQU LATCH_PIN = PB2 ; SH_CP on 74HC595 + +;========================================; +; CODE SEGMENT ; +;========================================; + +.CSEG +.ORG 0x00 + +;========================================; +; 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: + ;========================================; + ; INITIALIZE STACK POINTER ; + ;========================================; + ldi r16, low(RAMEND) + out SPL, r16 + +MCU_INIT: + rcall INIT_PORTS + + ldi COUNTER, 0 + rjmp LOOP + +INIT_PORTS: + ldi r16, (1<