feat: sw flags constants

This commit is contained in:
Sergey Yarkov 2021-10-03 22:47:35 +03:00
parent 9dbdb2458f
commit 9a41167e83
2 changed files with 39 additions and 38 deletions

View File

@ -46,14 +46,21 @@
.equ POLLING_STATE = 0x03 .equ POLLING_STATE = 0x03
.equ COMPLETION_STATE = 0x04 .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 .macro init_stack_p ; Setup stack pointer
ldi @0, low(@1) ldi @0, low(@1)
out SPL, @0 out SPL, @0
.endm .endm
;
; @0 - I/O Register
; @1 - Data to write
.macro outi ; Out to i/o reg .macro outi ; Out to i/o reg
push r16 push r16
ldi r16, @1 ldi r16, @1
@ -71,6 +78,8 @@
pop r16 pop r16
.endm .endm
;
; @0 - New state
.macro set_state .macro set_state
push r16 push r16
lds r16, CURRENT_STATE_ADDRESS lds r16, CURRENT_STATE_ADDRESS
@ -80,13 +89,6 @@
pop r16 pop r16
.endm .endm
.macro set_sw_flag
push r19
ldi r19, @0
sts SW_FLAGS_ADDRESS, r19
pop r19
.endm
.dseg ; Data segment .dseg ; Data segment
.org SRAM_START .org SRAM_START
@ -105,7 +107,7 @@ SW_FLAGS_ADDRESS: .byte 0x01
; ;
; Setup vectors ; Setup vectors
rjmp start ; Program start at RESET vector 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 rjmp PCINT0_vect ; Pin Change Interrupt Request 0 / active
reti ; Pin Change Interrupt Request 1 / inactive reti ; Pin Change Interrupt Request 1 / inactive
reti ; Watchdog Time-out / inactive reti ; Watchdog Time-out / inactive
@ -127,7 +129,7 @@ reti ; USI Overflow / inactive
PCINT0_vect: PCINT0_vect:
push r17 push r17
push r18 push r18
; // TODO update flag only in POLLING state of MCU
in r18, SREG in r18, SREG
in r17, PINA ; Load current pins status of PINA in r17, PINA ; Load current pins status of PINA
andi r17, 0xf0 ; Get pins status of only buttons andi r17, 0xf0 ; Get pins status of only buttons
@ -144,7 +146,6 @@ reti
start: start:
init_stack_p r16, RAMEND ; Init stack pointer of MCU init_stack_p r16, RAMEND ; Init stack pointer of MCU
set_state INIT_STATE ; Turn MCU state to initialization set_state INIT_STATE ; Turn MCU state to initialization
set_sw_flag 0x00
loop: ; Program loop loop: ; Program loop
lds r16, CURRENT_STATE_ADDRESS lds r16, CURRENT_STATE_ADDRESS
init: ; Init state init: ; Init state
@ -159,7 +160,7 @@ loop: ; Program loop
lds r18, SW_FLAGS_ADDRESS lds r18, SW_FLAGS_ADDRESS
led_1: led_1:
cpi r18, 0xe0 cpi r18, SW_FLAG_1
brne led_off_1 brne led_off_1
led_on_1: led_on_1:
sbi LED_PORT, 0 sbi LED_PORT, 0
@ -167,7 +168,7 @@ loop: ; Program loop
led_off_1: led_off_1:
cbi LED_PORT, 0 cbi LED_PORT, 0
led_2: led_2:
cpi r18, 0xd0 cpi r18, SW_FLAG_2
brne led_off_2 brne led_off_2
led_on_2: led_on_2:
sbi LED_PORT, 1 sbi LED_PORT, 1
@ -175,7 +176,7 @@ loop: ; Program loop
led_off_2: led_off_2:
cbi LED_PORT, 1 cbi LED_PORT, 1
led_3: led_3:
cpi r18, 0xb0 cpi r18, SW_FLAG_3
brne led_off_3 brne led_off_3
led_on_3: led_on_3:
sbi LED_PORT, 2 sbi LED_PORT, 2
@ -183,7 +184,7 @@ loop: ; Program loop
led_off_3: led_off_3:
cbi LED_PORT, 2 cbi LED_PORT, 2
led_4: led_4:
cpi r18, 0x70 cpi r18, SW_FLAG_4
brne led_off_4 brne led_off_4
led_on_4: led_on_4:
sbi LED_PORT, 3 sbi LED_PORT, 3

View File

@ -1,28 +1,28 @@
:020000020000FC :020000020000FC
:100000001CC018950EC01895189518951895189538 :100000001CC018950EC01895189518951895189538
:100010001895189518951895189518951895189578 :100010001895189518951895189518951895189578
:1000200018951F932F932FB719B3107F84D0109377 :1000200018951F932F932FB719B3107F7FD010937C
:1000300062002FBF2F911F9118950FED0DBF0F93E9 :1000300062002FBF2F911F9118950FED0DBF0F93E9
:1000400000916000009361000F9301E00093600055 :1000400000916000009361000F9301E00093600055
:100050000F910F913F9330E0309362003F910091F8 :100050000F910F9100916000013061F44FD00F9328
:100060006000013061F44FD00F9300916000009365 :1000600000916000009361000F9302E00093600034
:1000700061000F9302E0009360000F910F91023036 :100070000F910F910230B1F420916200203E11F4F3
:10008000B1F420916200203E11F4D89A01C0D898B2 :10008000D89A01C0D898203D11F4D99A01C0D998C6
:10009000203D11F4D99A01C0D998203B11F4DA9A85 :10009000203B11F4DA9A01C0DA98203711F4DB9A88
:1000A00001C0DA98203711F4DB9A01C0DB980330E5 :1000A00001C0DB98033001F4043001F4D3CF1F9377
:1000B00001F4043001F4D3CF1F932F933F934F9358 :1000B0002F933F934F934BB30F9301EF0BBB0F91D4
:1000C0004BB30F9301EF0BBB0F9135D011E033E031 :1000C00035D011E033E020EF110F210F2BBB2ED0E4
:1000D00020EF110F210F2BBB2ED03A95C9F70F93AC :1000D0003A95C9F70F9308EF0BBB0F9127D018E0A3
:1000E00008EF0BBB0F9127D018E033E020EF1695F7 :1000E00033E020EF1695210F2BBB20D03A95C9F7AE
:1000F000210F2BBB20D03A95C9F74BBB4F913F91B5 :1000F0004BBB4F913F912F911F91089510D008D085
:100100002F911F91089510D008D001D0089516E0C6 :1001000001D0089516E0D3DF1A95E9F71BD00895C2
:10011000D3DF1A95E9F71BD0089500E10BBF00EF7C :1001100000E10BBF00EF02BB0027789408950FE0C9
:1001200002BB0027789408950FE00ABB02950BBB31 :100120000ABB02950BBBBA9AC29808952F933F93CE
:10013000BA9AC29808952F933F9321E43FEE3A95DF :1001300021E43FEE3A95F1F72A95E1F700003F916F
:10014000F1F72A95E1F700003F912F9108958F93E1 :100140002F9108958F939F9324E683EC99E0019774
:100150009F9324E683EC99E00197F1F72A95D1F774 :10015000F1F72A95D1F724E69F918F9108954D6587
:1001600024E69F918F9108954D656D6F7279206C93 :100160006D6F7279206C65642067616D652E205714
:1001700065642067616D652E205772697474656EC1 :1001700072697474656E206279205365726765795F
:1001800020627920536572676579205961726B6FBF :10018000205961726B6F762032372E30392E323023
:0C019000762032372E30392E32303231DA :0201900032310A
:00000001FF :00000001FF