mirror of
https://github.com/sergeyyarkov/attiny24a_memory-led-game.git
synced 2026-10-11 02:08:54 +03:00
feat: sw flags constants
This commit is contained in:
parent
9dbdb2458f
commit
9a41167e83
33
firmware.asm
33
firmware.asm
@ -46,14 +46,21 @@
|
||||
.equ POLLING_STATE = 0x03
|
||||
.equ COMPLETION_STATE = 0x04
|
||||
|
||||
.equ TRUE = 1
|
||||
.equ FALSE = 0
|
||||
;
|
||||
; SW Flags states constants
|
||||
.equ SW_FLAG_1 = 0xe0
|
||||
.equ SW_FLAG_2 = 0xd0
|
||||
.equ SW_FLAG_3 = 0xb0
|
||||
.equ SW_FLAG_4 = 0x70
|
||||
|
||||
.macro init_stack_p ; Setup stack pointer
|
||||
ldi @0, low(@1)
|
||||
out SPL, @0
|
||||
.endm
|
||||
|
||||
;
|
||||
; @0 - I/O Register
|
||||
; @1 - Data to write
|
||||
.macro outi ; Out to i/o reg
|
||||
push r16
|
||||
ldi r16, @1
|
||||
@ -71,6 +78,8 @@
|
||||
pop r16
|
||||
.endm
|
||||
|
||||
;
|
||||
; @0 - New state
|
||||
.macro set_state
|
||||
push r16
|
||||
lds r16, CURRENT_STATE_ADDRESS
|
||||
@ -80,13 +89,6 @@
|
||||
pop r16
|
||||
.endm
|
||||
|
||||
.macro set_sw_flag
|
||||
push r19
|
||||
ldi r19, @0
|
||||
sts SW_FLAGS_ADDRESS, r19
|
||||
pop r19
|
||||
.endm
|
||||
|
||||
.dseg ; Data segment
|
||||
.org SRAM_START
|
||||
|
||||
@ -105,7 +107,7 @@ SW_FLAGS_ADDRESS: .byte 0x01
|
||||
;
|
||||
; Setup vectors
|
||||
rjmp start ; Program start at RESET vector
|
||||
reti ; External Interrupt Request 0
|
||||
reti ; External Interrupt Request 0 / inactive
|
||||
rjmp PCINT0_vect ; Pin Change Interrupt Request 0 / active
|
||||
reti ; Pin Change Interrupt Request 1 / inactive
|
||||
reti ; Watchdog Time-out / inactive
|
||||
@ -127,7 +129,7 @@ reti ; USI Overflow / inactive
|
||||
PCINT0_vect:
|
||||
push r17
|
||||
push r18
|
||||
|
||||
; // TODO update flag only in POLLING state of MCU
|
||||
in r18, SREG
|
||||
in r17, PINA ; Load current pins status of PINA
|
||||
andi r17, 0xf0 ; Get pins status of only buttons
|
||||
@ -144,7 +146,6 @@ reti
|
||||
start:
|
||||
init_stack_p r16, RAMEND ; Init stack pointer of MCU
|
||||
set_state INIT_STATE ; Turn MCU state to initialization
|
||||
set_sw_flag 0x00
|
||||
loop: ; Program loop
|
||||
lds r16, CURRENT_STATE_ADDRESS
|
||||
init: ; Init state
|
||||
@ -159,7 +160,7 @@ loop: ; Program loop
|
||||
|
||||
lds r18, SW_FLAGS_ADDRESS
|
||||
led_1:
|
||||
cpi r18, 0xe0
|
||||
cpi r18, SW_FLAG_1
|
||||
brne led_off_1
|
||||
led_on_1:
|
||||
sbi LED_PORT, 0
|
||||
@ -167,7 +168,7 @@ loop: ; Program loop
|
||||
led_off_1:
|
||||
cbi LED_PORT, 0
|
||||
led_2:
|
||||
cpi r18, 0xd0
|
||||
cpi r18, SW_FLAG_2
|
||||
brne led_off_2
|
||||
led_on_2:
|
||||
sbi LED_PORT, 1
|
||||
@ -175,7 +176,7 @@ loop: ; Program loop
|
||||
led_off_2:
|
||||
cbi LED_PORT, 1
|
||||
led_3:
|
||||
cpi r18, 0xb0
|
||||
cpi r18, SW_FLAG_3
|
||||
brne led_off_3
|
||||
led_on_3:
|
||||
sbi LED_PORT, 2
|
||||
@ -183,7 +184,7 @@ loop: ; Program loop
|
||||
led_off_3:
|
||||
cbi LED_PORT, 2
|
||||
led_4:
|
||||
cpi r18, 0x70
|
||||
cpi r18, SW_FLAG_4
|
||||
brne led_off_4
|
||||
led_on_4:
|
||||
sbi LED_PORT, 3
|
||||
|
||||
44
firmware.hex
44
firmware.hex
@ -1,28 +1,28 @@
|
||||
:020000020000FC
|
||||
:100000001CC018950EC01895189518951895189538
|
||||
:100010001895189518951895189518951895189578
|
||||
:1000200018951F932F932FB719B3107F84D0109377
|
||||
:1000200018951F932F932FB719B3107F7FD010937C
|
||||
:1000300062002FBF2F911F9118950FED0DBF0F93E9
|
||||
:1000400000916000009361000F9301E00093600055
|
||||
:100050000F910F913F9330E0309362003F910091F8
|
||||
:100060006000013061F44FD00F9300916000009365
|
||||
:1000700061000F9302E0009360000F910F91023036
|
||||
:10008000B1F420916200203E11F4D89A01C0D898B2
|
||||
:10009000203D11F4D99A01C0D998203B11F4DA9A85
|
||||
:1000A00001C0DA98203711F4DB9A01C0DB980330E5
|
||||
:1000B00001F4043001F4D3CF1F932F933F934F9358
|
||||
:1000C0004BB30F9301EF0BBB0F9135D011E033E031
|
||||
:1000D00020EF110F210F2BBB2ED03A95C9F70F93AC
|
||||
:1000E00008EF0BBB0F9127D018E033E020EF1695F7
|
||||
:1000F000210F2BBB20D03A95C9F74BBB4F913F91B5
|
||||
:100100002F911F91089510D008D001D0089516E0C6
|
||||
:10011000D3DF1A95E9F71BD0089500E10BBF00EF7C
|
||||
:1001200002BB0027789408950FE00ABB02950BBB31
|
||||
:10013000BA9AC29808952F933F9321E43FEE3A95DF
|
||||
:10014000F1F72A95E1F700003F912F9108958F93E1
|
||||
:100150009F9324E683EC99E00197F1F72A95D1F774
|
||||
:1001600024E69F918F9108954D656D6F7279206C93
|
||||
:1001700065642067616D652E205772697474656EC1
|
||||
:1001800020627920536572676579205961726B6FBF
|
||||
:0C019000762032372E30392E32303231DA
|
||||
:100050000F910F9100916000013061F44FD00F9328
|
||||
:1000600000916000009361000F9302E00093600034
|
||||
:100070000F910F910230B1F420916200203E11F4F3
|
||||
:10008000D89A01C0D898203D11F4D99A01C0D998C6
|
||||
:10009000203B11F4DA9A01C0DA98203711F4DB9A88
|
||||
:1000A00001C0DB98033001F4043001F4D3CF1F9377
|
||||
:1000B0002F933F934F934BB30F9301EF0BBB0F91D4
|
||||
:1000C00035D011E033E020EF110F210F2BBB2ED0E4
|
||||
:1000D0003A95C9F70F9308EF0BBB0F9127D018E0A3
|
||||
:1000E00033E020EF1695210F2BBB20D03A95C9F7AE
|
||||
:1000F0004BBB4F913F912F911F91089510D008D085
|
||||
:1001000001D0089516E0D3DF1A95E9F71BD00895C2
|
||||
:1001100000E10BBF00EF02BB0027789408950FE0C9
|
||||
:100120000ABB02950BBBBA9AC29808952F933F93CE
|
||||
:1001300021E43FEE3A95F1F72A95E1F700003F916F
|
||||
:100140002F9108958F939F9324E683EC99E0019774
|
||||
:10015000F1F72A95D1F724E69F918F9108954D6587
|
||||
:100160006D6F7279206C65642067616D652E205714
|
||||
:1001700072697474656E206279205365726765795F
|
||||
:10018000205961726B6F762032372E30392E323023
|
||||
:0201900032310A
|
||||
:00000001FF
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user