mirror of
https://github.com/sergeyyarkov/attiny24a_memory-led-game.git
synced 2026-10-11 10:18:58 +03:00
feat: next lvl effect
This commit is contained in:
parent
3bd4cba25d
commit
26143bef1a
81
firmware.asm
81
firmware.asm
@ -118,7 +118,7 @@ PCINT0_vect: ; Button handler
|
|||||||
brne quit ; Do not change button flags unless in POLLING state of mcu
|
brne quit ; Do not change button flags unless in POLLING state of mcu
|
||||||
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
|
||||||
rcall delay_50ms ; Delay for button
|
rcall delay_20ms ; Delay for button
|
||||||
sts SW_FLAGS_ADDRESS, r17 ; Update flag status in SRAM
|
sts SW_FLAGS_ADDRESS, r17 ; Update flag status in SRAM
|
||||||
out SREG, r18
|
out SREG, r18
|
||||||
|
|
||||||
@ -272,29 +272,41 @@ btn_handler: ; Check the input value with answer in SRAM
|
|||||||
rjmp _btn_handler_exit
|
rjmp _btn_handler_exit
|
||||||
|
|
||||||
_game_over:
|
_game_over:
|
||||||
|
pop r18
|
||||||
rcall effect_1
|
rcall effect_1
|
||||||
ldi delay_counter_r, 0xff
|
ldi delay_counter_r, 0xff
|
||||||
ldi temp_r_c, SEQ_LENGTH
|
ldi temp_r_c, SEQ_LENGTH
|
||||||
dec temp_r_c
|
dec temp_r_c
|
||||||
mov seq_length_r, temp_r_c
|
mov seq_length_r, temp_r_c
|
||||||
|
rcall reset_game
|
||||||
|
ret
|
||||||
|
|
||||||
_btn_handler_exit_state:
|
_btn_handler_exit_state:
|
||||||
pop r18
|
pop r18
|
||||||
clr ZH
|
ldi temp_r, 0xf0
|
||||||
ldi ZL, $80
|
out LED_PORT, temp_r
|
||||||
cbi BUZZ_DIR, BUZZ_PIN
|
cbi BUZZ_DIR, BUZZ_PIN
|
||||||
ldi temp_r, 0xf0
|
rcall delay_50ms
|
||||||
out LED_PORT, temp_r
|
rcall effect_2
|
||||||
rcall delay_1s
|
rcall reset_game
|
||||||
set_state SHOWING_STATE
|
|
||||||
ldi poll_step_r, 1
|
|
||||||
inc seq_length_r
|
|
||||||
ret
|
ret
|
||||||
_btn_handler_exit:
|
_btn_handler_exit:
|
||||||
pop r18
|
pop r18
|
||||||
ret
|
ret
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
reset_game:
|
||||||
|
clr ZH
|
||||||
|
ldi ZL, $80
|
||||||
|
cbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
ldi temp_r, 0xf0
|
||||||
|
out LED_PORT, temp_r
|
||||||
|
rcall delay_1s
|
||||||
|
set_state SHOWING_STATE
|
||||||
|
ldi poll_step_r, 1
|
||||||
|
inc seq_length_r
|
||||||
|
ret
|
||||||
|
|
||||||
gen_ran_seq: ; Generate random sequence of bytes for leds and save answer to SRAM
|
gen_ran_seq: ; Generate random sequence of bytes for leds and save answer to SRAM
|
||||||
mov temp_r_b, seq_length_r
|
mov temp_r_b, seq_length_r
|
||||||
clr YH
|
clr YH
|
||||||
@ -444,6 +456,40 @@ effect_1: ; Shift bits of an leds in port every 50ms
|
|||||||
pop r17
|
pop r17
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
effect_2:
|
||||||
|
outi OCR0A, 142
|
||||||
|
sbi LED_PORT, 0
|
||||||
|
sbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
rcall delay_50ms
|
||||||
|
rcall delay_50ms
|
||||||
|
cbi LED_PORT, 0
|
||||||
|
cbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
|
||||||
|
outi OCR0A, 105
|
||||||
|
sbi LED_PORT, 1
|
||||||
|
sbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
rcall delay_50ms
|
||||||
|
rcall delay_50ms
|
||||||
|
cbi LED_PORT, 1
|
||||||
|
cbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
|
||||||
|
outi OCR0A, 80
|
||||||
|
sbi LED_PORT, 2
|
||||||
|
sbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
rcall delay_50ms
|
||||||
|
rcall delay_50ms
|
||||||
|
cbi LED_PORT, 2
|
||||||
|
cbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
|
||||||
|
outi OCR0A, 71
|
||||||
|
sbi LED_PORT, 3
|
||||||
|
sbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
rcall delay_50ms
|
||||||
|
rcall delay_50ms
|
||||||
|
cbi LED_PORT, 3
|
||||||
|
cbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
ret
|
||||||
|
|
||||||
init_interrupts:
|
init_interrupts:
|
||||||
;
|
;
|
||||||
; Enable Port Change Interrupt
|
; Enable Port Change Interrupt
|
||||||
@ -503,6 +549,21 @@ delay: ; For 1MHz frequency
|
|||||||
pop r18
|
pop r18
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
delay_20ms:
|
||||||
|
push r18
|
||||||
|
push r19
|
||||||
|
|
||||||
|
ldi r18, 26
|
||||||
|
ldi r19, 249
|
||||||
|
_loop_d_20ms:
|
||||||
|
dec r19
|
||||||
|
brne _loop_d_20ms
|
||||||
|
dec r18
|
||||||
|
brne _loop_d_20ms
|
||||||
|
pop r19
|
||||||
|
pop r18
|
||||||
|
ret
|
||||||
|
|
||||||
delay_50ms: ; For 1MHz frequency
|
delay_50ms: ; For 1MHz frequency
|
||||||
push r18
|
push r18
|
||||||
push r19
|
push r19
|
||||||
|
|||||||
84
firmware.hex
84
firmware.hex
@ -2,14 +2,14 @@
|
|||||||
:100000003EC018950EC01895189518951895189516
|
:100000003EC018950EC01895189518951895189516
|
||||||
:1000100018951895189515C0189518951895189550
|
:1000100018951895189515C0189518951895189550
|
||||||
:1000200018951F932F932FB710916000133031F460
|
:1000200018951F932F932FB710916000133031F460
|
||||||
:1000300019B3107F60D1109362002FBF2F911F91D1
|
:1000300019B3107F93D1109362002FBF2F911F919E
|
||||||
:1000400018957F937FB702C008EA52B7052702953B
|
:1000400018957F937FB702C008EA52B7052702953B
|
||||||
:10005000500F7FBF7F91189539D128D12DD13FEF17
|
:10005000500F7FBF7F9118956CD15BD160D13FEF7E
|
||||||
:1000600041E0A2E0AA2EFF27E0E802D078940895AC
|
:1000600041E0A2E0AA2EFF27E0E802D078940895AC
|
||||||
:1000700073E0F3D07A95E9F74AD1772708950FED29
|
:1000700073E0FDD07A95E9F788D1772708950FEDE1
|
||||||
:100080000DBF0027109361000F9301E00093600003
|
:100080000DBF0027109361000F9301E00093600003
|
||||||
:100090000F9110916000113041F4DEDF1093610088
|
:100090000F9110916000113041F4DEDF1093610088
|
||||||
:1000A0000F9302E0009360000F91123041F489D069
|
:1000A0000F9302E0009360000F91123041F493D05F
|
||||||
:1000B000109361000F9303E0009360000F911330E1
|
:1000B000109361000F9303E0009360000F911330E1
|
||||||
:1000C000C1F520916200203E51F40F930EE806BF67
|
:1000C000C1F520916200203E51F40F930EE806BF67
|
||||||
:1000D0000F91D89ABA9A2FD0D898BA98F2CF209187
|
:1000D0000F91D89ABA9A2FD0D898BA98F2CF209187
|
||||||
@ -18,39 +18,47 @@
|
|||||||
:1001000051F40F9309E606BF0F91DA9ABA9A13D009
|
:1001000051F40F9309E606BF0F91DA9ABA9A13D009
|
||||||
:10011000DA98BA98F2CF20916200203751F40F9309
|
:10011000DA98BA98F2CF20916200203751F40F9309
|
||||||
:1001200000E506BF0F91DB9ABA9A05D0DB98BA9822
|
:1001200000E506BF0F91DB9ABA9A05D0DB98BA9822
|
||||||
:10013000F2CF88D0AECF2F93DED0DDD0DCD0A9B304
|
:10013000F2CF92D0AECF2F931CD11BD11AD1A9B33D
|
||||||
:100140009A2FA07F9F70AA27A09362008191981791
|
:100140009A2FA07F9F70AA27A09362008191981791
|
||||||
:1001500029F42A2D241739F0439516C07ED03FEF9D
|
:1001500029F42A2D241751F0439510C02F9187D0F0
|
||||||
:10016000A2E0AA95AA2E2F91FF27E0E8BA9800EF07
|
:100160003FEFA2E0AA95AA2E0CD008952F9100EFA0
|
||||||
:100170000BBBCDD0109361000F9302E000936000A1
|
:100170000BBBBA98FED0A4D004D008952F91089557
|
||||||
:100180000F9141E0A39408952F91089508957A2D39
|
:100180000895FF27E0E8BA9800EF0BBBFED010936C
|
||||||
:10019000DD27C0E8B0D0652F663430F06C3830F021
|
:1001900061000F9302E0009360000F9141E0A3948F
|
||||||
:1001A000683C30F06F3F30F0A1E005C0A2E003C032
|
:1001A00008957A2DDD27C0E8E4D0652F663430F05D
|
||||||
:1001B000A4E001C0A8E0A9937A95703059F7000037
|
:1001B0006C3830F0683C30F06F3F30F0A1E005C0A3
|
||||||
:1001C0000895E5DF7A2DDD27C0E87030C1F1A991EF
|
:1001C000A2E003C0A4E001C0A8E0A9937A95703032
|
||||||
:1001D000A13031F0A23079F0A430C1F0A83009F19B
|
:1001D00059F700000895E5DF7A2DDD27C0E870307B
|
||||||
:1001E0000F930EE806BF0F91D89ABA9A76D0D89896
|
:1001E000C1F1A991A13031F0A23079F0A430C1F071
|
||||||
:1001F000BA9828D020C00F9307E406BF0F91D99A70
|
:1001F000A83009F10F930EE806BF0F91D89ABA9A6A
|
||||||
:10020000BA9A6BD0D998BA981DD015C00F9309E649
|
:100200009FD0D898BA9828D020C00F9307E406BF93
|
||||||
:1002100006BF0F91DA9ABA9A60D0DA98BA9812D0DB
|
:100210000F91D99ABA9A94D0D998BA981DD015C08E
|
||||||
:100220000AC00F9300E506BF0F91DB9ABA9A55D02A
|
:100220000F9309E606BF0F91DA9ABA9A89D0DA9845
|
||||||
:10023000DB98BA9807D051D07A95703031F607D054
|
:10023000BA9812D00AC00F9300E506BF0F91DB9A5F
|
||||||
:100240005AD008957F937FEF76BF7F9108953A50FB
|
:10024000BA9A7ED0DB98BA9807D07AD07A95703077
|
||||||
:10025000383208F008953FEF08951F932F933F938E
|
:1002500031F607D08ED008957F937FEF76BF7F91E0
|
||||||
:100260004F93F8944BB30F9301EF0BBB0F9143D017
|
:1002600008953A50383208F008953FEF08951F93EB
|
||||||
:1002700011E033E020EF110F210F2BBB3CD03A955A
|
:100270002F933F934F93F8944BB30F9301EF0BBB26
|
||||||
:10028000C9F70F9308EF0BBB0F9135D018E033E09F
|
:100280000F9177D011E033E020EF110F210F2BBB3E
|
||||||
:1002900020EF1695210F2BBB2ED03A95C9F77894F5
|
:1002900070D03A95C9F70F9308EF0BBB0F9169D057
|
||||||
:1002A0004BBB4F913F912F911F91089500E10BBFE0
|
:1002A00018E033E020EF1695210F2BBB62D03A9572
|
||||||
:1002B00000EF02BB00270895BA9802E400BF0FEFD9
|
:1002B000C9F778944BBB4F913F912F911F910895AF
|
||||||
:1002C00006BF02E003BF01E009BF08950FE00ABBCB
|
:1002C0000F930EE806BF0F91D89ABA9A52D051D028
|
||||||
:1002D00002950BBBBA9AC29808952F934F932FEFB4
|
:1002D000D898BA980F9309E606BF0F91D99ABA9A9F
|
||||||
:1002E000432F00002A95E9F700004A95D1F7000056
|
:1002E00048D047D0D998BA980F9300E506BF0F9130
|
||||||
:1002F0004F912F9108952F933F9321E43FEE3A952C
|
:1002F000DA9ABA9A3ED03DD0DA98BA980F9307E4CA
|
||||||
:10030000F1F72A95E1F700003F912F9108958F931F
|
:1003000006BF0F91DB9ABA9A34D033D0DB98BA98F3
|
||||||
:100310009F9324E683EC99E00197F1F72A95D1F7B2
|
:10031000089500E10BBF00EF02BB00270895BA98D3
|
||||||
:1003200024E69F918F9108954D656D6F7279206CD1
|
:1003200002E400BF0FEF06BF02E003BF01E009BF18
|
||||||
:1003300065642067616D652E205772697474656EFF
|
:1003300008950FE00ABB02950BBBBA9AC2980895C4
|
||||||
:1003400020627920536572676579205961726B6FFD
|
:100340002F934F932FEF432F00002A95E9F70000DA
|
||||||
:0C035000762032372E30392E3230323118
|
:100350004A95D1F700004F912F9108952F933F9325
|
||||||
|
:100360002AE139EF3A95F1F72A95E1F73F912F917C
|
||||||
|
:1003700008952F933F9321E43FEE3A95F1F72A95A4
|
||||||
|
:10038000E1F700003F912F9108958F939F9324E60A
|
||||||
|
:1003900083EC99E00197F1F72A95D1F724E69F9134
|
||||||
|
:1003A0008F9108954D656D6F7279206C656420673B
|
||||||
|
:1003B000616D652E205772697474656E20627920B4
|
||||||
|
:1003C000536572676579205961726B6F7620323799
|
||||||
|
:0803D0002E30392E323032319B
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|||||||
625
firmware.lss
625
firmware.lss
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
AVRASM ver. 2.2.7 firmware.asm Wed May 18 00:14:04 2022
|
AVRASM ver. 2.2.7 firmware.asm Sun May 22 21:06:03 2022
|
||||||
|
|
||||||
firmware.asm(13): Including file 'def.inc'
|
firmware.asm(13): Including file 'def.inc'
|
||||||
firmware.asm(21): warning: Register r26 already defined by the .DEF directive
|
firmware.asm(21): warning: Register r26 already defined by the .DEF directive
|
||||||
@ -892,7 +892,7 @@ firmware.asm(73): Including file 'macros.asm'
|
|||||||
000017 f431 brne quit ; Do not change button flags unless in POLLING state of mcu
|
000017 f431 brne quit ; Do not change button flags unless in POLLING state of mcu
|
||||||
000018 b319 in r17, PINA ; Load current pins status of PINA
|
000018 b319 in r17, PINA ; Load current pins status of PINA
|
||||||
000019 7f10 andi r17, 0xf0 ; Get pins status of only buttons
|
000019 7f10 andi r17, 0xf0 ; Get pins status of only buttons
|
||||||
00001a d160 rcall delay_50ms ; Delay for button
|
00001a d193 rcall delay_20ms ; Delay for button
|
||||||
00001b 9310 0062 sts SW_FLAGS_ADDRESS, r17 ; Update flag status in SRAM
|
00001b 9310 0062 sts SW_FLAGS_ADDRESS, r17 ; Update flag status in SRAM
|
||||||
00001d bf2f out SREG, r18
|
00001d bf2f out SREG, r18
|
||||||
|
|
||||||
@ -919,9 +919,9 @@ firmware.asm(73): Including file 'macros.asm'
|
|||||||
00002b 9518 reti
|
00002b 9518 reti
|
||||||
|
|
||||||
MCU_Init: ; This function executes once on start the main program
|
MCU_Init: ; This function executes once on start the main program
|
||||||
00002c d139 rcall init_ports
|
00002c d16c rcall init_ports
|
||||||
00002d d128 rcall init_interrupts
|
00002d d15b rcall init_interrupts
|
||||||
00002e d12d rcall init_buzzer
|
00002e d160 rcall init_buzzer
|
||||||
|
|
||||||
;
|
;
|
||||||
; Init important registers for game
|
; Init important registers for game
|
||||||
@ -940,10 +940,10 @@ firmware.asm(73): Including file 'macros.asm'
|
|||||||
MCU_Delay:
|
MCU_Delay:
|
||||||
000038 e073 ldi temp_r_b, 3
|
000038 e073 ldi temp_r_b, 3
|
||||||
_init_loop_loading:
|
_init_loop_loading:
|
||||||
000039 d0f3 rcall effect_1
|
000039 d0fd rcall effect_1
|
||||||
00003a 957a dec temp_r_b
|
00003a 957a dec temp_r_b
|
||||||
00003b f7e9 brne _init_loop_loading
|
00003b f7e9 brne _init_loop_loading
|
||||||
00003c d14a rcall delay_1s
|
00003c d188 rcall delay_1s
|
||||||
00003d 2777 clr temp_r_b
|
00003d 2777 clr temp_r_b
|
||||||
00003e 9508 ret
|
00003e 9508 ret
|
||||||
|
|
||||||
@ -973,7 +973,7 @@ firmware.asm(73): Including file 'macros.asm'
|
|||||||
showing: ; Showing state
|
showing: ; Showing state
|
||||||
000055 3012 cpi mcu_state_r, SHOWING_STATE
|
000055 3012 cpi mcu_state_r, SHOWING_STATE
|
||||||
000056 f441 brne polling
|
000056 f441 brne polling
|
||||||
000057 d089 rcall show_sequence ; Generate sequence and save answer to SRAM
|
000057 d093 rcall show_sequence ; Generate sequence and save answer to SRAM
|
||||||
000058 9310 0061
|
000058 9310 0061
|
||||||
00005a 930f
|
00005a 930f
|
||||||
00005b e003
|
00005b e003
|
||||||
@ -1043,15 +1043,15 @@ firmware.asm(73): Including file 'macros.asm'
|
|||||||
000097 98ba cbi BUZZ_DIR, BUZZ_PIN
|
000097 98ba cbi BUZZ_DIR, BUZZ_PIN
|
||||||
000098 cff2 rjmp btn_4
|
000098 cff2 rjmp btn_4
|
||||||
default:
|
default:
|
||||||
000099 d088 rcall OCR0A_reset
|
000099 d092 rcall OCR0A_reset
|
||||||
00009a cfae rjmp loop
|
00009a cfae rjmp loop
|
||||||
|
|
||||||
|
|
||||||
btn_handler: ; Check the input value with answer in SRAM
|
btn_handler: ; Check the input value with answer in SRAM
|
||||||
00009b 932f push r18
|
00009b 932f push r18
|
||||||
00009c d0de rcall delay_50ms
|
00009c d11c rcall delay_50ms
|
||||||
00009d d0dd rcall delay_50ms
|
00009d d11b rcall delay_50ms
|
||||||
00009e d0dc rcall delay_50ms
|
00009e d11a rcall delay_50ms
|
||||||
00009f b3a9 in temp_r_c, PINA
|
00009f b3a9 in temp_r_c, PINA
|
||||||
0000a0 2f9a mov r25, temp_r_c
|
0000a0 2f9a mov r25, temp_r_c
|
||||||
0000a1 7fa0 andi temp_r_c, 0xf0
|
0000a1 7fa0 andi temp_r_c, 0xf0
|
||||||
@ -1065,348 +1065,421 @@ firmware.asm(73): Including file 'macros.asm'
|
|||||||
|
|
||||||
0000a9 2d2a mov r18, seq_length_r
|
0000a9 2d2a mov r18, seq_length_r
|
||||||
0000aa 1724 cp r18, poll_step_r
|
0000aa 1724 cp r18, poll_step_r
|
||||||
0000ab f039 breq _btn_handler_exit_state
|
0000ab f051 breq _btn_handler_exit_state
|
||||||
|
|
||||||
0000ac 9543 inc poll_step_r
|
0000ac 9543 inc poll_step_r
|
||||||
|
|
||||||
0000ad c016 rjmp _btn_handler_exit
|
0000ad c010 rjmp _btn_handler_exit
|
||||||
|
|
||||||
_game_over:
|
_game_over:
|
||||||
0000ae d07e rcall effect_1
|
0000ae 912f pop r18
|
||||||
0000af ef3f ldi delay_counter_r, 0xff
|
0000af d087 rcall effect_1
|
||||||
0000b0 e0a2 ldi temp_r_c, SEQ_LENGTH
|
0000b0 ef3f ldi delay_counter_r, 0xff
|
||||||
0000b1 95aa dec temp_r_c
|
0000b1 e0a2 ldi temp_r_c, SEQ_LENGTH
|
||||||
0000b2 2eaa mov seq_length_r, temp_r_c
|
0000b2 95aa dec temp_r_c
|
||||||
|
0000b3 2eaa mov seq_length_r, temp_r_c
|
||||||
|
0000b4 d00c rcall reset_game
|
||||||
|
0000b5 9508 ret
|
||||||
|
|
||||||
_btn_handler_exit_state:
|
_btn_handler_exit_state:
|
||||||
0000b3 912f pop r18
|
0000b6 912f pop r18
|
||||||
0000b4 27ff clr ZH
|
0000b7 ef00 ldi temp_r, 0xf0
|
||||||
0000b5 e8e0 ldi ZL, $80
|
0000b8 bb0b out LED_PORT, temp_r
|
||||||
0000b6 98ba cbi BUZZ_DIR, BUZZ_PIN
|
0000b9 98ba cbi BUZZ_DIR, BUZZ_PIN
|
||||||
0000b7 ef00 ldi temp_r, 0xf0
|
0000ba d0fe rcall delay_50ms
|
||||||
0000b8 bb0b out LED_PORT, temp_r
|
0000bb d0a4 rcall effect_2
|
||||||
0000b9 d0cd rcall delay_1s
|
0000bc d004 rcall reset_game
|
||||||
0000ba 9310 0061
|
0000bd 9508 ret
|
||||||
0000bc 930f
|
|
||||||
0000bd e002
|
|
||||||
0000be 9300 0060
|
|
||||||
0000c0 910f set_state SHOWING_STATE
|
|
||||||
0000c1 e041 ldi poll_step_r, 1
|
|
||||||
0000c2 94a3 inc seq_length_r
|
|
||||||
0000c3 9508 ret
|
|
||||||
_btn_handler_exit:
|
_btn_handler_exit:
|
||||||
0000c4 912f pop r18
|
0000be 912f pop r18
|
||||||
0000c5 9508 ret
|
0000bf 9508 ret
|
||||||
0000c6 9508 ret
|
0000c0 9508 ret
|
||||||
|
|
||||||
|
reset_game:
|
||||||
|
0000c1 27ff clr ZH
|
||||||
|
0000c2 e8e0 ldi ZL, $80
|
||||||
|
0000c3 98ba cbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
0000c4 ef00 ldi temp_r, 0xf0
|
||||||
|
0000c5 bb0b out LED_PORT, temp_r
|
||||||
|
0000c6 d0fe rcall delay_1s
|
||||||
|
0000c7 9310 0061
|
||||||
|
0000c9 930f
|
||||||
|
0000ca e002
|
||||||
|
0000cb 9300 0060
|
||||||
|
0000cd 910f set_state SHOWING_STATE
|
||||||
|
0000ce e041 ldi poll_step_r, 1
|
||||||
|
0000cf 94a3 inc seq_length_r
|
||||||
|
0000d0 9508 ret
|
||||||
|
|
||||||
gen_ran_seq: ; Generate random sequence of bytes for leds and save answer to SRAM
|
gen_ran_seq: ; Generate random sequence of bytes for leds and save answer to SRAM
|
||||||
0000c7 2d7a mov temp_r_b, seq_length_r
|
0000d1 2d7a mov temp_r_b, seq_length_r
|
||||||
0000c8 27dd clr YH
|
0000d2 27dd clr YH
|
||||||
0000c9 e8c0 ldi YL, $80
|
0000d3 e8c0 ldi YL, $80
|
||||||
_gen_ran_loop:
|
_gen_ran_loop:
|
||||||
0000ca d0b0 rcall delay_50ms ; Delay is required!
|
0000d4 d0e4 rcall delay_50ms ; Delay is required!
|
||||||
0000cb 2f65 mov r22, r21
|
0000d5 2f65 mov r22, r21
|
||||||
|
|
||||||
0000cc 3466 cpi r22, 70
|
0000d6 3466 cpi r22, 70
|
||||||
0000cd f030 brlo _gen_answ_1
|
0000d7 f030 brlo _gen_answ_1
|
||||||
|
|
||||||
0000ce 386c cpi r22, 140
|
0000d8 386c cpi r22, 140
|
||||||
0000cf f030 brlo _gen_answ_2
|
0000d9 f030 brlo _gen_answ_2
|
||||||
|
|
||||||
0000d0 3c68 cpi r22, 200
|
0000da 3c68 cpi r22, 200
|
||||||
0000d1 f030 brlo _gen_answ_3
|
0000db f030 brlo _gen_answ_3
|
||||||
|
|
||||||
0000d2 3f6f cpi r22, 255
|
0000dc 3f6f cpi r22, 255
|
||||||
0000d3 f030 brlo _gen_answ_4
|
0000dd f030 brlo _gen_answ_4
|
||||||
|
|
||||||
_gen_answ_1:
|
_gen_answ_1:
|
||||||
0000d4 e0a1 ldi temp_r_c, 0x01
|
0000de e0a1 ldi temp_r_c, 0x01
|
||||||
0000d5 c005 rjmp _gen_ran_write
|
0000df c005 rjmp _gen_ran_write
|
||||||
_gen_answ_2:
|
_gen_answ_2:
|
||||||
0000d6 e0a2 ldi temp_r_c, 0x02
|
0000e0 e0a2 ldi temp_r_c, 0x02
|
||||||
0000d7 c003 rjmp _gen_ran_write
|
0000e1 c003 rjmp _gen_ran_write
|
||||||
_gen_answ_3:
|
_gen_answ_3:
|
||||||
0000d8 e0a4 ldi temp_r_c, 0x04
|
0000e2 e0a4 ldi temp_r_c, 0x04
|
||||||
0000d9 c001 rjmp _gen_ran_write
|
0000e3 c001 rjmp _gen_ran_write
|
||||||
_gen_answ_4:
|
_gen_answ_4:
|
||||||
0000da e0a8 ldi temp_r_c, 0x08
|
0000e4 e0a8 ldi temp_r_c, 0x08
|
||||||
_gen_ran_write:
|
_gen_ran_write:
|
||||||
0000db 93a9 st Y+, temp_r_c
|
0000e5 93a9 st Y+, temp_r_c
|
||||||
0000dc 957a dec temp_r_b
|
0000e6 957a dec temp_r_b
|
||||||
0000dd 3070 cpi temp_r_b, 0
|
0000e7 3070 cpi temp_r_b, 0
|
||||||
0000de f759 brne _gen_ran_loop
|
0000e8 f759 brne _gen_ran_loop
|
||||||
0000df 0000 nop
|
0000e9 0000 nop
|
||||||
0000e0 9508 ret
|
0000ea 9508 ret
|
||||||
|
|
||||||
show_sequence:
|
show_sequence:
|
||||||
0000e1 dfe5 rcall gen_ran_seq ; Answer stored in SRAM in addr $80:{SEQ_LENGTH}
|
0000eb dfe5 rcall gen_ran_seq ; Answer stored in SRAM in addr $80:{SEQ_LENGTH}
|
||||||
show_start:
|
show_start:
|
||||||
0000e2 2d7a mov temp_r_b, seq_length_r
|
0000ec 2d7a mov temp_r_b, seq_length_r
|
||||||
|
|
||||||
0000e3 27dd clr YH
|
0000ed 27dd clr YH
|
||||||
0000e4 e8c0 ldi YL, $80
|
0000ee e8c0 ldi YL, $80
|
||||||
|
|
||||||
_sequence_loop:
|
_sequence_loop:
|
||||||
0000e5 3070 cpi temp_r_b, 0
|
0000ef 3070 cpi temp_r_b, 0
|
||||||
0000e6 f1c1 breq _seq_quit
|
0000f0 f1c1 breq _seq_quit
|
||||||
|
|
||||||
0000e7 91a9 ld temp_r_c, Y+
|
0000f1 91a9 ld temp_r_c, Y+
|
||||||
0000e8 30a1 cpi temp_r_c, 0x01
|
0000f2 30a1 cpi temp_r_c, 0x01
|
||||||
0000e9 f031 breq beep_1
|
0000f3 f031 breq beep_1
|
||||||
|
|
||||||
0000ea 30a2 cpi temp_r_c, 0x02
|
0000f4 30a2 cpi temp_r_c, 0x02
|
||||||
0000eb f079 breq beep_2
|
0000f5 f079 breq beep_2
|
||||||
|
|
||||||
0000ec 30a4 cpi temp_r_c, 0x04
|
0000f6 30a4 cpi temp_r_c, 0x04
|
||||||
0000ed f0c1 breq beep_3
|
0000f7 f0c1 breq beep_3
|
||||||
|
|
||||||
0000ee 30a8 cpi temp_r_c, 0x08
|
0000f8 30a8 cpi temp_r_c, 0x08
|
||||||
0000ef f109 breq beep_4
|
0000f9 f109 breq beep_4
|
||||||
|
|
||||||
beep_1:
|
beep_1:
|
||||||
0000f0 930f
|
0000fa 930f
|
||||||
0000f1 e80e
|
0000fb e80e
|
||||||
0000f2 bf06
|
0000fc bf06
|
||||||
0000f3 910f
|
0000fd 910f
|
||||||
0000f4 9ad8
|
0000fe 9ad8
|
||||||
0000f5 9aba
|
0000ff 9aba
|
||||||
0000f6 d076
|
000100 d09f
|
||||||
0000f7 98d8
|
000101 98d8
|
||||||
0000f8 98ba beep_led_1
|
000102 98ba beep_led_1
|
||||||
0000f9 d028 rcall OCR0A_reset
|
000103 d028 rcall OCR0A_reset
|
||||||
0000fa c020 rjmp beep_quit
|
000104 c020 rjmp beep_quit
|
||||||
beep_2:
|
beep_2:
|
||||||
0000fb 930f
|
000105 930f
|
||||||
0000fc e407
|
000106 e407
|
||||||
0000fd bf06
|
000107 bf06
|
||||||
0000fe 910f
|
000108 910f
|
||||||
0000ff 9ad9
|
000109 9ad9
|
||||||
000100 9aba
|
00010a 9aba
|
||||||
000101 d06b
|
00010b d094
|
||||||
000102 98d9
|
00010c 98d9
|
||||||
000103 98ba beep_led_2
|
00010d 98ba beep_led_2
|
||||||
000104 d01d rcall OCR0A_reset
|
00010e d01d rcall OCR0A_reset
|
||||||
000105 c015 rjmp beep_quit
|
00010f c015 rjmp beep_quit
|
||||||
beep_3:
|
beep_3:
|
||||||
000106 930f
|
000110 930f
|
||||||
000107 e609
|
000111 e609
|
||||||
000108 bf06
|
000112 bf06
|
||||||
000109 910f
|
000113 910f
|
||||||
00010a 9ada
|
000114 9ada
|
||||||
00010b 9aba
|
000115 9aba
|
||||||
00010c d060
|
000116 d089
|
||||||
00010d 98da
|
000117 98da
|
||||||
00010e 98ba beep_led_3
|
000118 98ba beep_led_3
|
||||||
00010f d012 rcall OCR0A_reset
|
000119 d012 rcall OCR0A_reset
|
||||||
000110 c00a rjmp beep_quit
|
00011a c00a rjmp beep_quit
|
||||||
beep_4:
|
beep_4:
|
||||||
000111 930f
|
00011b 930f
|
||||||
000112 e500
|
00011c e500
|
||||||
000113 bf06
|
00011d bf06
|
||||||
000114 910f
|
00011e 910f
|
||||||
000115 9adb
|
00011f 9adb
|
||||||
000116 9aba
|
000120 9aba
|
||||||
000117 d055
|
000121 d07e
|
||||||
000118 98db
|
000122 98db
|
||||||
000119 98ba beep_led_4
|
000123 98ba beep_led_4
|
||||||
00011a d007 rcall OCR0A_reset
|
000124 d007 rcall OCR0A_reset
|
||||||
beep_quit:
|
beep_quit:
|
||||||
00011b d051 rcall delay
|
000125 d07a rcall delay
|
||||||
00011c 957a dec temp_r_b
|
000126 957a dec temp_r_b
|
||||||
00011d 3070 cpi temp_r_b, 0
|
000127 3070 cpi temp_r_b, 0
|
||||||
00011e f631 brne _sequence_loop
|
000128 f631 brne _sequence_loop
|
||||||
|
|
||||||
_seq_quit:
|
_seq_quit:
|
||||||
00011f d007 rcall dec_delay_counter
|
000129 d007 rcall dec_delay_counter
|
||||||
000120 d05a rcall delay_50ms
|
00012a d08e rcall delay_50ms
|
||||||
000121 9508 ret
|
00012b 9508 ret
|
||||||
|
|
||||||
OCR0A_reset: ; This function need to set the OCR0A register to 0xff for overflow interrupt
|
OCR0A_reset: ; This function need to set the OCR0A register to 0xff for overflow interrupt
|
||||||
000122 937f push temp_r_b
|
00012c 937f push temp_r_b
|
||||||
000123 ef7f ldi temp_r_b, 0xff
|
00012d ef7f ldi temp_r_b, 0xff
|
||||||
000124 bf76 out OCR0A, temp_r_b
|
00012e bf76 out OCR0A, temp_r_b
|
||||||
000125 917f pop temp_r_b
|
00012f 917f pop temp_r_b
|
||||||
000126 9508 ret
|
000130 9508 ret
|
||||||
|
|
||||||
dec_delay_counter:
|
dec_delay_counter:
|
||||||
000127 503a subi delay_counter_r, 10
|
000131 503a subi delay_counter_r, 10
|
||||||
000128 3238 cpi delay_counter_r, 40
|
000132 3238 cpi delay_counter_r, 40
|
||||||
000129 f008 brlo _reset_counter
|
000133 f008 brlo _reset_counter
|
||||||
00012a 9508 ret
|
000134 9508 ret
|
||||||
_reset_counter:
|
_reset_counter:
|
||||||
00012b ef3f ldi delay_counter_r, 0xff
|
000135 ef3f ldi delay_counter_r, 0xff
|
||||||
00012c 9508 ret
|
000136 9508 ret
|
||||||
|
|
||||||
effect_1: ; Shift bits of an leds in port every 50ms
|
effect_1: ; Shift bits of an leds in port every 50ms
|
||||||
00012d 931f push r17
|
000137 931f push r17
|
||||||
00012e 932f push r18
|
000138 932f push r18
|
||||||
00012f 933f push r19
|
000139 933f push r19
|
||||||
000130 934f push r20
|
00013a 934f push r20
|
||||||
000131 94f8 cli
|
00013b 94f8 cli
|
||||||
000132 b34b in r20, LED_PORT
|
00013c b34b in r20, LED_PORT
|
||||||
|
|
||||||
000133 930f
|
00013d 930f
|
||||||
000134 ef01
|
00013e ef01
|
||||||
000135 bb0b
|
00013f bb0b
|
||||||
000136 910f outi LED_PORT, 0xf1
|
000140 910f outi LED_PORT, 0xf1
|
||||||
000137 d043 rcall delay_50ms
|
000141 d077 rcall delay_50ms
|
||||||
000138 e011 ldi r17, 0x01
|
000142 e011 ldi r17, 0x01
|
||||||
000139 e033 ldi r19, 3
|
000143 e033 ldi r19, 3
|
||||||
_eff_1_shift_l: ; Shift bits to left loop
|
_eff_1_shift_l: ; Shift bits to left loop
|
||||||
00013a ef20 ldi r18, 0xf0
|
000144 ef20 ldi r18, 0xf0
|
||||||
00013b 0f11 lsl r17
|
000145 0f11 lsl r17
|
||||||
00013c 0f21 add r18, r17
|
000146 0f21 add r18, r17
|
||||||
00013d bb2b out LED_PORT, r18
|
000147 bb2b out LED_PORT, r18
|
||||||
00013e d03c rcall delay_50ms
|
000148 d070 rcall delay_50ms
|
||||||
00013f 953a dec r19
|
000149 953a dec r19
|
||||||
000140 f7c9 brne _eff_1_shift_l
|
00014a f7c9 brne _eff_1_shift_l
|
||||||
|
|
||||||
000141 930f
|
00014b 930f
|
||||||
000142 ef08
|
00014c ef08
|
||||||
000143 bb0b
|
00014d bb0b
|
||||||
000144 910f outi LED_PORT, 0xf8
|
00014e 910f outi LED_PORT, 0xf8
|
||||||
000145 d035 rcall delay_50ms
|
00014f d069 rcall delay_50ms
|
||||||
000146 e018 ldi r17, 0x08
|
000150 e018 ldi r17, 0x08
|
||||||
000147 e033 ldi r19, 3
|
000151 e033 ldi r19, 3
|
||||||
_eff_1_shift_r: ; Shift bits to right loop
|
_eff_1_shift_r: ; Shift bits to right loop
|
||||||
000148 ef20 ldi r18, 0xf0
|
000152 ef20 ldi r18, 0xf0
|
||||||
000149 9516 lsr r17
|
000153 9516 lsr r17
|
||||||
00014a 0f21 add r18, r17
|
000154 0f21 add r18, r17
|
||||||
00014b bb2b out LED_PORT, r18
|
000155 bb2b out LED_PORT, r18
|
||||||
00014c d02e rcall delay_50ms
|
000156 d062 rcall delay_50ms
|
||||||
00014d 953a dec r19
|
000157 953a dec r19
|
||||||
00014e f7c9 brne _eff_1_shift_r
|
000158 f7c9 brne _eff_1_shift_r
|
||||||
|
|
||||||
00014f 9478 sei
|
000159 9478 sei
|
||||||
; Out saved PORT values
|
; Out saved PORT values
|
||||||
000150 bb4b out LED_PORT, r20
|
00015a bb4b out LED_PORT, r20
|
||||||
000151 914f pop r20
|
00015b 914f pop r20
|
||||||
000152 913f pop r19
|
00015c 913f pop r19
|
||||||
000153 912f pop r18
|
00015d 912f pop r18
|
||||||
000154 911f pop r17
|
00015e 911f pop r17
|
||||||
000155 9508 ret
|
00015f 9508 ret
|
||||||
|
|
||||||
|
effect_2:
|
||||||
|
000160 930f
|
||||||
|
000161 e80e
|
||||||
|
000162 bf06
|
||||||
|
000163 910f outi OCR0A, 142
|
||||||
|
000164 9ad8 sbi LED_PORT, 0
|
||||||
|
000165 9aba sbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
000166 d052 rcall delay_50ms
|
||||||
|
000167 d051 rcall delay_50ms
|
||||||
|
000168 98d8 cbi LED_PORT, 0
|
||||||
|
000169 98ba cbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
|
||||||
|
00016a 930f
|
||||||
|
00016b e609
|
||||||
|
00016c bf06
|
||||||
|
00016d 910f outi OCR0A, 105
|
||||||
|
00016e 9ad9 sbi LED_PORT, 1
|
||||||
|
00016f 9aba sbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
000170 d048 rcall delay_50ms
|
||||||
|
000171 d047 rcall delay_50ms
|
||||||
|
000172 98d9 cbi LED_PORT, 1
|
||||||
|
000173 98ba cbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
|
||||||
|
000174 930f
|
||||||
|
000175 e500
|
||||||
|
000176 bf06
|
||||||
|
000177 910f outi OCR0A, 80
|
||||||
|
000178 9ada sbi LED_PORT, 2
|
||||||
|
000179 9aba sbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
00017a d03e rcall delay_50ms
|
||||||
|
00017b d03d rcall delay_50ms
|
||||||
|
00017c 98da cbi LED_PORT, 2
|
||||||
|
00017d 98ba cbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
|
||||||
|
00017e 930f
|
||||||
|
00017f e407
|
||||||
|
000180 bf06
|
||||||
|
000181 910f outi OCR0A, 71
|
||||||
|
000182 9adb sbi LED_PORT, 3
|
||||||
|
000183 9aba sbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
000184 d034 rcall delay_50ms
|
||||||
|
000185 d033 rcall delay_50ms
|
||||||
|
000186 98db cbi LED_PORT, 3
|
||||||
|
000187 98ba cbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
000188 9508 ret
|
||||||
|
|
||||||
init_interrupts:
|
init_interrupts:
|
||||||
;
|
;
|
||||||
; Enable Port Change Interrupt
|
; Enable Port Change Interrupt
|
||||||
000156 e100 ldi temp_r, (1<<PCIE0)
|
000189 e100 ldi temp_r, (1<<PCIE0)
|
||||||
000157 bf0b out GIMSK, temp_r
|
00018a bf0b out GIMSK, temp_r
|
||||||
|
|
||||||
;
|
;
|
||||||
; Set Pin Change Mask Register
|
; Set Pin Change Mask Register
|
||||||
000158 ef00 ldi temp_r, (1<<PCINT4) | (1<<PCINT5)| (1<<PCINT6) | (1<<PCINT7)
|
00018b ef00 ldi temp_r, (1<<PCINT4) | (1<<PCINT5)| (1<<PCINT6) | (1<<PCINT7)
|
||||||
000159 bb02 out PCMSK0, temp_r
|
00018c bb02 out PCMSK0, temp_r
|
||||||
|
|
||||||
00015a 2700 clr temp_r
|
00018d 2700 clr temp_r
|
||||||
00015b 9508 ret
|
00018e 9508 ret
|
||||||
|
|
||||||
init_buzzer:
|
init_buzzer:
|
||||||
00015c 98ba cbi BUZZ_DIR, BUZZ_PIN
|
00018f 98ba cbi BUZZ_DIR, BUZZ_PIN
|
||||||
|
|
||||||
; Setup timer
|
; Setup timer
|
||||||
00015d e402 ldi temp_r, (1<<COM0A0) | (1<<WGM01) ; Set CTC timer mode and toggle OC0A pin on Compare Match
|
000190 e402 ldi temp_r, (1<<COM0A0) | (1<<WGM01) ; Set CTC timer mode and toggle OC0A pin on Compare Match
|
||||||
00015e bf00 out TCCR0A, temp_r
|
000191 bf00 out TCCR0A, temp_r
|
||||||
|
|
||||||
00015f ef0f ldi temp_r, 255
|
000192 ef0f ldi temp_r, 255
|
||||||
000160 bf06 out OCR0A, temp_r
|
000193 bf06 out OCR0A, temp_r
|
||||||
|
|
||||||
000161 e002 ldi temp_r, (1<<CS01) ; Prescale on 8
|
000194 e002 ldi temp_r, (1<<CS01) ; Prescale on 8
|
||||||
000162 bf03 out TCCR0B, temp_r
|
000195 bf03 out TCCR0B, temp_r
|
||||||
|
|
||||||
000163 e001 ldi temp_r, (1<<TOIE0) ; Enable Timer/Counter0 Overflow Interrupt
|
000196 e001 ldi temp_r, (1<<TOIE0) ; Enable Timer/Counter0 Overflow Interrupt
|
||||||
000164 bf09 out TIMSK0, temp_r
|
000197 bf09 out TIMSK0, temp_r
|
||||||
000165 9508 ret
|
000198 9508 ret
|
||||||
|
|
||||||
init_ports: ; Init MCU ports
|
init_ports: ; Init MCU ports
|
||||||
000166 e00f ldi temp_r, 0x0f ; Setup PORTA
|
000199 e00f ldi temp_r, 0x0f ; Setup PORTA
|
||||||
000167 bb0a out DDRA, temp_r ; Set directions of leds and buttons
|
00019a bb0a out DDRA, temp_r ; Set directions of leds and buttons
|
||||||
000168 9502 swap temp_r
|
00019b 9502 swap temp_r
|
||||||
000169 bb0b out PORTA, temp_r ; Set low signal on leds and pull-up on buttons
|
00019c bb0b out PORTA, temp_r ; Set low signal on leds and pull-up on buttons
|
||||||
|
|
||||||
; Setup PORTB
|
; Setup PORTB
|
||||||
00016a 9aba sbi DDRB, BUZZ_PIN ; Set direction of buzzer pin to output
|
00019d 9aba sbi DDRB, BUZZ_PIN ; Set direction of buzzer pin to output
|
||||||
00016b 98c2 cbi PORTB, BUZZ_PIN ; Set low signal on buzzer
|
00019e 98c2 cbi PORTB, BUZZ_PIN ; Set low signal on buzzer
|
||||||
00016c 9508 ret
|
00019f 9508 ret
|
||||||
|
|
||||||
delay: ; For 1MHz frequency
|
delay: ; For 1MHz frequency
|
||||||
00016d 932f push r18
|
0001a0 932f push r18
|
||||||
00016e 934f push r20
|
0001a1 934f push r20
|
||||||
00016f ef2f ldi r18, 255
|
0001a2 ef2f ldi r18, 255
|
||||||
000170 2f43 mov r20, delay_counter_r
|
0001a3 2f43 mov r20, delay_counter_r
|
||||||
_delay_loop:
|
_delay_loop:
|
||||||
000171 0000 nop
|
0001a4 0000 nop
|
||||||
000172 952a dec r18
|
0001a5 952a dec r18
|
||||||
000173 f7e9 brne _delay_loop
|
0001a6 f7e9 brne _delay_loop
|
||||||
000174 0000 nop
|
0001a7 0000 nop
|
||||||
000175 954a dec r20
|
0001a8 954a dec r20
|
||||||
000176 f7d1 brne _delay_loop
|
0001a9 f7d1 brne _delay_loop
|
||||||
000177 0000 nop
|
0001aa 0000 nop
|
||||||
000178 914f pop r20
|
0001ab 914f pop r20
|
||||||
000179 912f pop r18
|
0001ac 912f pop r18
|
||||||
00017a 9508 ret
|
0001ad 9508 ret
|
||||||
|
|
||||||
|
delay_20ms:
|
||||||
|
0001ae 932f push r18
|
||||||
|
0001af 933f push r19
|
||||||
|
|
||||||
|
0001b0 e12a ldi r18, 26
|
||||||
|
0001b1 ef39 ldi r19, 249
|
||||||
|
_loop_d_20ms:
|
||||||
|
0001b2 953a dec r19
|
||||||
|
0001b3 f7f1 brne _loop_d_20ms
|
||||||
|
0001b4 952a dec r18
|
||||||
|
0001b5 f7e1 brne _loop_d_20ms
|
||||||
|
0001b6 913f pop r19
|
||||||
|
0001b7 912f pop r18
|
||||||
|
0001b8 9508 ret
|
||||||
|
|
||||||
delay_50ms: ; For 1MHz frequency
|
delay_50ms: ; For 1MHz frequency
|
||||||
00017b 932f push r18
|
0001b9 932f push r18
|
||||||
00017c 933f push r19
|
0001ba 933f push r19
|
||||||
|
|
||||||
00017d e421 ldi r18, 65
|
0001bb e421 ldi r18, 65
|
||||||
00017e ee3f ldi r19, 239
|
0001bc ee3f ldi r19, 239
|
||||||
_loop_d_50ms:
|
_loop_d_50ms:
|
||||||
00017f 953a dec r19
|
0001bd 953a dec r19
|
||||||
000180 f7f1 brne _loop_d_50ms
|
0001be f7f1 brne _loop_d_50ms
|
||||||
000181 952a dec r18
|
0001bf 952a dec r18
|
||||||
000182 f7e1 brne _loop_d_50ms
|
0001c0 f7e1 brne _loop_d_50ms
|
||||||
000183 0000 nop
|
0001c1 0000 nop
|
||||||
000184 913f pop r19
|
0001c2 913f pop r19
|
||||||
000185 912f pop r18
|
0001c3 912f pop r18
|
||||||
000186 9508 ret
|
0001c4 9508 ret
|
||||||
|
|
||||||
|
|
||||||
delay_1s: ; For 1MHz frequency
|
delay_1s: ; For 1MHz frequency
|
||||||
000187 938f push r24
|
0001c5 938f push r24
|
||||||
000188 939f push r25
|
0001c6 939f push r25
|
||||||
.equ outer_count = 100
|
.equ outer_count = 100
|
||||||
.equ inner_count = 2499
|
.equ inner_count = 2499
|
||||||
|
|
||||||
000189 e624 ldi r18, outer_count
|
0001c7 e624 ldi r18, outer_count
|
||||||
_reset:
|
_reset:
|
||||||
00018a ec83 ldi r24, low(inner_count)
|
0001c8 ec83 ldi r24, low(inner_count)
|
||||||
00018b e099 ldi r25, high(inner_count)
|
0001c9 e099 ldi r25, high(inner_count)
|
||||||
_loop:
|
_loop:
|
||||||
00018c 9701 sbiw r24, 1
|
0001ca 9701 sbiw r24, 1
|
||||||
00018d f7f1 brne _loop
|
0001cb f7f1 brne _loop
|
||||||
00018e 952a dec r18
|
0001cc 952a dec r18
|
||||||
00018f f7d1 brne _reset
|
0001cd f7d1 brne _reset
|
||||||
000190 e624 ldi r18, outer_count
|
0001ce e624 ldi r18, outer_count
|
||||||
000191 919f pop r25
|
0001cf 919f pop r25
|
||||||
000192 918f pop r24
|
0001d0 918f pop r24
|
||||||
000193 9508 ret
|
0001d1 9508 ret
|
||||||
|
|
||||||
000194 654d
|
0001d2 654d
|
||||||
000195 6f6d
|
0001d3 6f6d
|
||||||
000196 7972
|
0001d4 7972
|
||||||
000197 6c20
|
0001d5 6c20
|
||||||
000198 6465
|
0001d6 6465
|
||||||
000199 6720
|
0001d7 6720
|
||||||
00019a 6d61
|
0001d8 6d61
|
||||||
00019b 2e65
|
0001d9 2e65
|
||||||
00019c 5720
|
0001da 5720
|
||||||
00019d 6972
|
0001db 6972
|
||||||
00019e 7474
|
0001dc 7474
|
||||||
00019f 6e65
|
0001dd 6e65
|
||||||
0001a0 6220
|
0001de 6220
|
||||||
0001a1 2079
|
0001df 2079
|
||||||
0001a2 6553
|
0001e0 6553
|
||||||
0001a3 6772
|
0001e1 6772
|
||||||
0001a4 7965
|
0001e2 7965
|
||||||
0001a5 5920
|
0001e3 5920
|
||||||
0001a6 7261
|
0001e4 7261
|
||||||
0001a7 6f6b
|
0001e5 6f6b
|
||||||
0001a8 2076
|
0001e6 2076
|
||||||
0001a9 3732
|
0001e7 3732
|
||||||
0001aa 302e
|
0001e8 302e
|
||||||
0001ab 2e39
|
0001e9 2e39
|
||||||
0001ac 3032
|
0001ea 3032
|
||||||
|
|
||||||
|
|
||||||
RESOURCE USE INFORMATION
|
RESOURCE USE INFORMATION
|
||||||
@ -1426,7 +1499,7 @@ counted separately from r26..r31 here.
|
|||||||
"ATtiny24A" register use summary:
|
"ATtiny24A" register use summary:
|
||||||
x : 0 y : 2 z : 1 r0 : 0 r1 : 0 r2 : 0 r3 : 0 r4 : 0
|
x : 0 y : 2 z : 1 r0 : 0 r1 : 0 r2 : 0 r3 : 0 r4 : 0
|
||||||
r5 : 0 r6 : 0 r7 : 0 r8 : 0 r9 : 0 r10: 6 r11: 0 r12: 0
|
r5 : 0 r6 : 0 r7 : 0 r8 : 0 r9 : 0 r10: 6 r11: 0 r12: 0
|
||||||
r13: 0 r14: 0 r15: 0 r16: 82 r17: 23 r18: 36 r19: 16 r20: 12
|
r13: 0 r14: 0 r15: 0 r16: 100 r17: 23 r18: 41 r19: 20 r20: 12
|
||||||
r21: 4 r22: 5 r23: 18 r24: 6 r25: 6 r26: 20 r27: 0 r28: 2
|
r21: 4 r22: 5 r23: 18 r24: 6 r25: 6 r26: 20 r27: 0 r28: 2
|
||||||
r29: 2 r30: 2 r31: 2
|
r29: 2 r30: 2 r31: 2
|
||||||
Registers used: 18 out of 35 (51.4%)
|
Registers used: 18 out of 35 (51.4%)
|
||||||
@ -1436,16 +1509,16 @@ Registers used: 18 out of 35 (51.4%)
|
|||||||
andi : 3 asr : 0 bclr : 0 bld : 0 brbc : 0 brbs : 0
|
andi : 3 asr : 0 bclr : 0 bld : 0 brbc : 0 brbs : 0
|
||||||
brcc : 0 brcs : 0 break : 0 breq : 6 brge : 0 brhc : 0
|
brcc : 0 brcs : 0 break : 0 breq : 6 brge : 0 brhc : 0
|
||||||
brhs : 0 brid : 0 brie : 0 brlo : 5 brlt : 0 brmi : 0
|
brhs : 0 brid : 0 brie : 0 brlo : 5 brlt : 0 brmi : 0
|
||||||
brne : 20 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
|
brne : 22 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
|
||||||
brvs : 0 bset : 0 bst : 0 cbi : 19 cbr : 0 clc : 0
|
brvs : 0 bset : 0 bst : 0 cbi : 28 cbr : 0 clc : 0
|
||||||
clh : 0 cli : 1 cln : 0 clr : 8 cls : 0 clt : 0
|
clh : 0 cli : 1 cln : 0 clr : 8 cls : 0 clt : 0
|
||||||
clv : 0 clz : 0 com : 0 cp : 2 cpc : 0 cpi : 20
|
clv : 0 clz : 0 com : 0 cp : 2 cpc : 0 cpi : 20
|
||||||
cpse : 0 dec : 11 eor : 1 icall : 0 ijmp : 0 in : 6
|
cpse : 0 dec : 13 eor : 1 icall : 0 ijmp : 0 in : 6
|
||||||
inc : 2 ld : 2 ldd : 0 ldi : 54 lds : 6 lpm : 0
|
inc : 2 ld : 2 ldd : 0 ldi : 61 lds : 6 lpm : 0
|
||||||
lsl : 1 lsr : 1 mov : 8 movw : 0 neg : 0 nop : 5
|
lsl : 1 lsr : 1 mov : 8 movw : 0 neg : 0 nop : 5
|
||||||
or : 0 ori : 0 out : 26 pop : 30 push : 29 rcall : 36
|
or : 0 ori : 0 out : 31 pop : 37 push : 35 rcall : 48
|
||||||
ret : 17 reti : 16 rjmp : 16 rol : 0 ror : 0 sbc : 0
|
ret : 21 reti : 16 rjmp : 16 rol : 0 ror : 0 sbc : 0
|
||||||
sbci : 0 sbi : 17 sbic : 0 sbis : 0 sbiw : 1 sbr : 0
|
sbci : 0 sbi : 25 sbic : 0 sbis : 0 sbiw : 1 sbr : 0
|
||||||
sbrc : 0 sbrs : 0 sec : 0 seh : 0 sei : 2 sen : 0
|
sbrc : 0 sbrs : 0 sec : 0 seh : 0 sei : 2 sen : 0
|
||||||
ser : 0 ses : 0 set : 0 sev : 0 sez : 0 sleep : 0
|
ser : 0 ses : 0 set : 0 sev : 0 sez : 0 sleep : 0
|
||||||
spm : 0 st : 1 std : 0 sts : 10 sub : 0 subi : 1
|
spm : 0 st : 1 std : 0 sts : 10 sub : 0 subi : 1
|
||||||
@ -1455,7 +1528,7 @@ Instructions used: 35 out of 105 (33.3%)
|
|||||||
"ATtiny24A" memory use summary [bytes]:
|
"ATtiny24A" memory use summary [bytes]:
|
||||||
Segment Begin End Code Data Used Size Use%
|
Segment Begin End Code Data Used Size Use%
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
[.cseg] 0x000000 0x00035c 808 52 860 2048 42.0%
|
[.cseg] 0x000000 0x0003d8 932 52 984 2048 48.0%
|
||||||
[.dseg] 0x000060 0x000063 0 3 3 128 2.3%
|
[.dseg] 0x000060 0x000063 0 3 3 128 2.3%
|
||||||
[.eseg] 0x000000 0x000000 0 0 0 128 0.0%
|
[.eseg] 0x000000 0x000000 0 0 0 128 0.0%
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user