mirror of
https://github.com/sergeyyarkov/attiny24a_memory-led-game.git
synced 2026-10-11 18:28:55 +03:00
feat: init ports & effect_1 of leds
This commit is contained in:
commit
ee5d4ed163
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
.vscode
|
||||
firmware.asm~
|
||||
firmware.pro
|
||||
firmware.lst
|
||||
13
Makefile
Normal file
13
Makefile
Normal file
@ -0,0 +1,13 @@
|
||||
MCU = t24
|
||||
SRCFILE = firmware
|
||||
TARGET = usbasp
|
||||
DEVICE = usb
|
||||
|
||||
build: $(SRCFILE).asm
|
||||
gavrasm $(SRCFILE)
|
||||
|
||||
flash:
|
||||
avrdude -p $(MCU) -c $(TARGET) -P $(DEVICE) -U flash:w:$(SRCFILE).hex:a
|
||||
|
||||
clean:
|
||||
rm -f $(SRCFILE).asm~ $(SRCFILE).hex $(SRCFILE).obj $(SRCFILE).lst $(SRCFILE).cof
|
||||
15
README.md
Normal file
15
README.md
Normal file
@ -0,0 +1,15 @@
|
||||
# Memory Led Game
|
||||
|
||||
**Device**: ATtiny24A
|
||||
|
||||
**Package**: 14-pin-PDIP_SOIC
|
||||
|
||||
**Assembler**: gavrasm v5.0
|
||||
|
||||
**Clock frequency**: 8MHz with CKDIV8
|
||||
|
||||
**Fuses**: lfuse: 0x42, hfuse: 0xDF, efuse: 0xFF, lock:0xFF
|
||||
|
||||
**Schematic**:
|
||||
|
||||
-
|
||||
135
firmware.asm
Normal file
135
firmware.asm
Normal file
@ -0,0 +1,135 @@
|
||||
;
|
||||
; Project name: memory-led-game
|
||||
; Description: Simple memory game using leds
|
||||
; Source code: https://github.com/sergeyyarkov/attiny24a_memory-led-game
|
||||
; Device: ATtiny24A
|
||||
; Package: 14-pin-PDIP_SOIC
|
||||
; Assembler: gavrasm v5.0
|
||||
; Clock frequency: 8MHz with CKDIV8
|
||||
; Fuses: lfuse: 0x42, hfuse: 0xDF, efuse: 0xFF, lock:0xFF
|
||||
;
|
||||
; Written by Sergey Yarkov 27.09.2021
|
||||
|
||||
.device ATtiny24A ; Setup device name
|
||||
.list ; Enable listing
|
||||
|
||||
;
|
||||
; LEDS constants
|
||||
.equ LED_DIR = DDRA
|
||||
.equ LED_PORT = PORTA
|
||||
.equ LED_PIN_0 = PINA0
|
||||
.equ LED_PIN_1 = PINA1
|
||||
.equ LED_PIN_2 = PINA2
|
||||
.equ LED_PIN_3 = PINA3
|
||||
|
||||
;
|
||||
; Buttons constants
|
||||
.equ BTN_DIR = DDRA
|
||||
.equ BTN_PORT = PORTA
|
||||
.equ BTN_PIN_4 = PINA4
|
||||
.equ BTN_PIN_5 = PINA5
|
||||
.equ BTN_PIN_6 = PINA6
|
||||
.equ BTN_PIN_7 = PINA7
|
||||
|
||||
;
|
||||
; Buzzer constants
|
||||
.equ BUZZ_DIR = DDRB
|
||||
.equ BUZZ_PORT = PORTB
|
||||
.equ BUZZ_PIN = PINB2
|
||||
|
||||
.macro init_stack_p ; Setup stack pointer
|
||||
ldi @0, low(@1)
|
||||
out SPL, @0
|
||||
.endm
|
||||
|
||||
.org 0x00 ; Start program at 0x00
|
||||
.cseg ; Code segment
|
||||
|
||||
main: ; Start up program
|
||||
init_stack_p r16, RAMEND
|
||||
rcall init_ports ; Initialize MCU ports
|
||||
|
||||
loop: ; Program loop
|
||||
rcall effect_1
|
||||
rjmp loop
|
||||
|
||||
effect_1:
|
||||
push r17
|
||||
push r18
|
||||
push r19
|
||||
|
||||
;
|
||||
; Set first led to high
|
||||
ldi r17, 0xf1
|
||||
out LED_PORT, r17
|
||||
rcall delay_100ms
|
||||
|
||||
;
|
||||
; Shift remaining bits
|
||||
ldi r17, 0x01
|
||||
|
||||
;
|
||||
; Loop counter
|
||||
ldi r19, 3
|
||||
|
||||
effect_1_loop:
|
||||
ldi r18, 0xf0
|
||||
lsl r17
|
||||
add r18, r17
|
||||
out LED_PORT, r18
|
||||
rcall delay_100ms
|
||||
dec r19
|
||||
brne effect_1_loop
|
||||
|
||||
pop r17
|
||||
pop r18
|
||||
pop r19
|
||||
ret
|
||||
|
||||
init_ports: ; Init MCU ports
|
||||
; Setup PORTA
|
||||
ldi r16, 0x0f
|
||||
out DDRA, r16 ; Set directions of leds and buttons
|
||||
swap r16
|
||||
out PORTA, r16 ; Set low signal on leds and pull-up on buttons
|
||||
|
||||
; Setup PORTB
|
||||
sbi DDRB, BUZZ_PIN ; Set direction of buzzer pin to output
|
||||
cbi PORTB, BUZZ_PIN ; Set low signal on buzzer
|
||||
clr r16
|
||||
ret
|
||||
|
||||
delay_1s: ; For 1MHz frequency
|
||||
.equ outer_count = 100
|
||||
.equ inner_count = 2499
|
||||
|
||||
ldi r18, outer_count
|
||||
_reset_d_1s:
|
||||
ldi r24, low(inner_count)
|
||||
ldi r25, high(inner_count)
|
||||
_loop_d_1s:
|
||||
sbiw r24, 1
|
||||
brne _loop_d_1s
|
||||
|
||||
dec r18
|
||||
brne _reset_d_1s
|
||||
ldi r18, outer_count
|
||||
ret
|
||||
|
||||
delay_100ms:
|
||||
push r18
|
||||
push r19
|
||||
|
||||
ldi r18, 130 ; 1c
|
||||
ldi r19, 222 ; 1c
|
||||
_loop_d_100ms:
|
||||
dec r19 ; 1c
|
||||
brne _loop_d_100ms ; 2 or 1c = 665c
|
||||
dec r18 ; 1c
|
||||
brne _loop_d_100ms ; 2 or 1c
|
||||
nop
|
||||
pop r19
|
||||
pop r18
|
||||
ret
|
||||
|
||||
info: .db "Memory led game. Written by Sergey Yarkov 27.09.2021"
|
||||
12
firmware.hex
Normal file
12
firmware.hex
Normal file
@ -0,0 +1,12 @@
|
||||
:020000020000FC
|
||||
:100000000FED0DBF15D001D0FECF1F932F933F935F
|
||||
:1000100011EF1BBB1ED011E033E020EF110F210FB9
|
||||
:100020002BBB17D03A95C9F71F912F913F91089597
|
||||
:100030000FE00ABB02950BBBBA9AC298002708953D
|
||||
:1000400024E683EC99E00197F1F72A95D1F724E6AD
|
||||
:1000500008952F933F9322E83EED3A95F1F72A95C4
|
||||
:10006000E1F700003F912F9108954D656D6F727912
|
||||
:10007000206C65642067616D652E20577269747409
|
||||
:10008000656E2062792053657267657920596172C7
|
||||
:0E0090006B6F762032372E30392E32303231FF
|
||||
:00000001FF
|
||||
Loading…
x
Reference in New Issue
Block a user