tried to add some screens but the display is not working correctly
This commit is contained in:
parent
a3dcc424d1
commit
a46a8eb5e9
8 changed files with 511 additions and 288 deletions
Binary file not shown.
Binary file not shown.
|
@ -1,9 +1,9 @@
|
||||||
:1000000014C02CC02BC02AC029C0A7C027C026C03E
|
:1000000014C02CC02BC02AC029C0A7C027C026C03E
|
||||||
:1000100025C024C023C022C021C020C01FC01EC0D4
|
:1000100025C024C023C022C021C020C01FC01EC0D4
|
||||||
:100020001DC01CC01BC01AC019C011241FBECFEDBB
|
:100020001DC01CC01BC01AC019C011241FBECFEDBB
|
||||||
:10003000CDBF10E0A0E6B0E0E6EFF2E002C0059030
|
:10003000CDBF10E0A0E6B0E0E6EEF3E002C0059030
|
||||||
:100040000D92A237B107D9F720E0A2E7B0E001C0D6
|
:100040000D92A43BB107D9F720E0A4EBB0E001C0CA
|
||||||
:100050001D92A837B207E1F7F4D04BC1D1CFCF93AF
|
:100050001D92AC3BB207E1F7F5D0C3C1D1CFCF932E
|
||||||
:10006000C2E362D0C150E9F7CF910895CF93C62F74
|
:10006000C2E362D0C150E9F7CF910895CF93C62F74
|
||||||
:10007000843038F4823048F4882371F0813049F0BC
|
:10007000843038F4823048F4882371F0813049F0BC
|
||||||
:100080000CC0843051F4939808C04F73833009F446
|
:100080000CC0843051F4939808C04F73833009F446
|
||||||
|
@ -26,26 +26,45 @@
|
||||||
:10019000E816F10431F00AC06894EE24E1F8F12C7D
|
:10019000E816F10431F00AC06894EE24E1F8F12C7D
|
||||||
:1001A00005C00F2EF3E0EF2EF12CF02D042F152FAC
|
:1001A00005C00F2EF3E0EF2EF12CF02D042F152FAC
|
||||||
:1001B000C0E0F80161918F016F3519F04C2F8E2D41
|
:1001B000C0E0F80161918F016F3519F04C2F8E2D41
|
||||||
:1001C00055DFCF5FC031A9F7CF911F910F91FF90FD
|
:1001C00055DF4DDFCF5FC031A1F7CF911F910F9168
|
||||||
:1001D000EF90089520B3BC016F5F7F4F409177008F
|
:1001D000FF90EF90089520B3BC016F5F7F4F409177
|
||||||
:1001E000E1E0F0E0DF0102C0AA0FBB1F8A95E2F751
|
:1001E000BB00E1E0F0E0DF0102C0AA0FBB1F8A956F
|
||||||
:1001F000CD01237030E051E02617370709F050E0B9
|
:1001F000E2F7CD01237030E051E02617370709F010
|
||||||
:10020000242F30E028233923E1E0121613060CF0E6
|
:1002000050E0242F30E028233923E1E012161306B2
|
||||||
:10021000E0E05E1799F020B3237030E062177307B7
|
:100210000CF0E0E05E1799F020B3237030E0621735
|
||||||
:1002200031F4842B8093770081E090E008958095ED
|
:10022000730731F4842B8093BB0081E090E0089544
|
||||||
:1002300048234093770080E090E0089580E090E0CC
|
:10023000809548234093BB0080E090E0089580E0E3
|
||||||
:10024000089511BA86EE99EF9DBD8CBD1FBC85E067
|
:1002400090E00895CF93DF93CDB7DD27C054CDBFA5
|
||||||
:100250008EBD80E889BF7894C2E7D0E080917400B9
|
:1002500011BA86EE99EF9DBD8CBD1FBC85E08EBDA9
|
||||||
:10026000882319F0813051F0FBCF109275003DDFEB
|
:1002600080E889BF78940F2EF2E6EF2EF0E0FF2EA3
|
||||||
:1002700081E036DF81E080937400F0CF81E08093ED
|
:10027000F02D06EB10E06894DD24D1F89091B900E0
|
||||||
:10028000750040E650E060E070E080E090E077DFED
|
:100280008091B800981799F08093B90021E030E090
|
||||||
:1002900080E090E09FDF892B51F080917200909177
|
:100290003093B5002093B400309361002093600048
|
||||||
:1002A0007300019690937300809372001DC081E0EB
|
:1002A0008130F1F078F0823009F46DC0E7CF109220
|
||||||
:1002B00090E090DF892B51F0809172009091730053
|
:1002B000B5001092B400913069F020F0923009F44A
|
||||||
:1002C000029690937300809372000EC082E090E0DB
|
:1002C00062C0DCCF12DFCBDE81E00ADF81E0809309
|
||||||
:1002D00081DF892B49F08091720090917300039621
|
:1002D000B800D4CF8091600090916100892B41F1EA
|
||||||
:1002E00090937300809372008881805D809360009A
|
:1002E000BEDE80E1E3E7F0E0DE01D19601900D9201
|
||||||
:0602F000B5CFF894FFCF2A
|
:1002F0008A95E1F7AE014F5C5F4F60E070E080E00F
|
||||||
:1002F6002048616C6C6F5F5F5F5F5F5F5F5F5F5F32
|
:1003000090E03DDFACDE80E1E3E8F0E0DE019196D5
|
||||||
:020306005F0096
|
:1003100001900D928A95E1F7AE014F5D5F4F60E06D
|
||||||
|
:1003200070E081E090E02BDF10926100109260009D
|
||||||
|
:1003300080E090E050DF892B19F0D092B8001DC00A
|
||||||
|
:1003400081E090E048DF892B51F08091B6009091D8
|
||||||
|
:10035000B70002969093B7008093B6000EC082E07B
|
||||||
|
:1003600090E039DF892B49F08091B6009091B70079
|
||||||
|
:1003700003969093B7008093B600F8018081805D6A
|
||||||
|
:10038000F70180837BCF8091600090916100892B81
|
||||||
|
:1003900009F474CF80E1E3E9F0E0DE0151960190C9
|
||||||
|
:1003A0000D928A95E1F7AE014F5E5F4F60E070E01D
|
||||||
|
:1003B00080E090E0E4DE80E1E3EAF0E0DE01119627
|
||||||
|
:1003C00001900D928A95E1F7AE014F5F5F4F60E0BB
|
||||||
|
:1003D00070E081E090E0D3DE109261001092600046
|
||||||
|
:0603E0004DCFF894FFCFA1
|
||||||
|
:1003E60001002048616C6C6F5F5F5F5F5F5F5F5FFE
|
||||||
|
:1003F6005F5F5F5F5F5F5F5F5F74696D655F5F5FD4
|
||||||
|
:100406005F5F5F20202020202074696D65202020FA
|
||||||
|
:1004160020202020205B616C61726D2074696D65FF
|
||||||
|
:100426005D20202020202020616C61726D203E20FE
|
||||||
|
:040436002020200062
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|
|
@ -3,31 +3,31 @@ AtTiny_alarm_clock.elf: file format elf32-avr
|
||||||
|
|
||||||
Sections:
|
Sections:
|
||||||
Idx Name Size VMA LMA File off Algn
|
Idx Name Size VMA LMA File off Algn
|
||||||
0 .text 000002f6 00000000 00000000 00000094 2**1
|
0 .text 000003e6 00000000 00000000 00000094 2**1
|
||||||
CONTENTS, ALLOC, LOAD, READONLY, CODE
|
CONTENTS, ALLOC, LOAD, READONLY, CODE
|
||||||
1 .data 00000012 00800060 000002f6 0000038a 2**0
|
1 .data 00000054 00800060 000003e6 0000047a 2**0
|
||||||
CONTENTS, ALLOC, LOAD, DATA
|
CONTENTS, ALLOC, LOAD, DATA
|
||||||
2 .bss 00000006 00800072 00800072 0000039c 2**0
|
2 .bss 00000008 008000b4 008000b4 000004ce 2**0
|
||||||
ALLOC
|
ALLOC
|
||||||
3 .comment 00000030 00000000 00000000 0000039c 2**0
|
3 .comment 00000030 00000000 00000000 000004ce 2**0
|
||||||
CONTENTS, READONLY
|
CONTENTS, READONLY
|
||||||
4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 000003cc 2**2
|
4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 00000500 2**2
|
||||||
CONTENTS, READONLY
|
CONTENTS, READONLY
|
||||||
5 .debug_aranges 000000a0 00000000 00000000 0000040c 2**0
|
5 .debug_aranges 000000a0 00000000 00000000 00000540 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
6 .debug_info 00000b59 00000000 00000000 000004ac 2**0
|
6 .debug_info 00000c54 00000000 00000000 000005e0 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
7 .debug_abbrev 00000738 00000000 00000000 00001005 2**0
|
7 .debug_abbrev 0000073a 00000000 00000000 00001234 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
8 .debug_line 0000061f 00000000 00000000 0000173d 2**0
|
8 .debug_line 00000689 00000000 00000000 0000196e 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
9 .debug_frame 00000154 00000000 00000000 00001d5c 2**2
|
9 .debug_frame 00000164 00000000 00000000 00001ff8 2**2
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
10 .debug_str 00000470 00000000 00000000 00001eb0 2**0
|
10 .debug_str 00000493 00000000 00000000 0000215c 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
11 .debug_loc 00000428 00000000 00000000 00002320 2**0
|
11 .debug_loc 00000470 00000000 00000000 000025ef 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
12 .debug_ranges 00000088 00000000 00000000 00002748 2**0
|
12 .debug_ranges 00000088 00000000 00000000 00002a5f 2**0
|
||||||
CONTENTS, READONLY, DEBUGGING
|
CONTENTS, READONLY, DEBUGGING
|
||||||
|
|
||||||
Disassembly of section .text:
|
Disassembly of section .text:
|
||||||
|
@ -65,18 +65,18 @@ Disassembly of section .text:
|
||||||
32: 10 e0 ldi r17, 0x00 ; 0
|
32: 10 e0 ldi r17, 0x00 ; 0
|
||||||
34: a0 e6 ldi r26, 0x60 ; 96
|
34: a0 e6 ldi r26, 0x60 ; 96
|
||||||
36: b0 e0 ldi r27, 0x00 ; 0
|
36: b0 e0 ldi r27, 0x00 ; 0
|
||||||
38: e6 ef ldi r30, 0xF6 ; 246
|
38: e6 ee ldi r30, 0xE6 ; 230
|
||||||
3a: f2 e0 ldi r31, 0x02 ; 2
|
3a: f3 e0 ldi r31, 0x03 ; 3
|
||||||
3c: 02 c0 rjmp .+4 ; 0x42 <__SREG__+0x3>
|
3c: 02 c0 rjmp .+4 ; 0x42 <__SREG__+0x3>
|
||||||
3e: 05 90 lpm r0, Z+
|
3e: 05 90 lpm r0, Z+
|
||||||
40: 0d 92 st X+, r0
|
40: 0d 92 st X+, r0
|
||||||
42: a2 37 cpi r26, 0x72 ; 114
|
42: a4 3b cpi r26, 0xB4 ; 180
|
||||||
44: b1 07 cpc r27, r17
|
44: b1 07 cpc r27, r17
|
||||||
46: d9 f7 brne .-10 ; 0x3e <__SP_L__+0x1>
|
46: d9 f7 brne .-10 ; 0x3e <__SP_L__+0x1>
|
||||||
|
|
||||||
00000048 <__do_clear_bss>:
|
00000048 <__do_clear_bss>:
|
||||||
48: 20 e0 ldi r18, 0x00 ; 0
|
48: 20 e0 ldi r18, 0x00 ; 0
|
||||||
4a: a2 e7 ldi r26, 0x72 ; 114
|
4a: a4 eb ldi r26, 0xB4 ; 180
|
||||||
4c: b0 e0 ldi r27, 0x00 ; 0
|
4c: b0 e0 ldi r27, 0x00 ; 0
|
||||||
4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start>
|
4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start>
|
||||||
|
|
||||||
|
@ -84,11 +84,11 @@ Disassembly of section .text:
|
||||||
50: 1d 92 st X+, r1
|
50: 1d 92 st X+, r1
|
||||||
|
|
||||||
00000052 <.do_clear_bss_start>:
|
00000052 <.do_clear_bss_start>:
|
||||||
52: a8 37 cpi r26, 0x78 ; 120
|
52: ac 3b cpi r26, 0xBC ; 188
|
||||||
54: b2 07 cpc r27, r18
|
54: b2 07 cpc r27, r18
|
||||||
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop>
|
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop>
|
||||||
58: f4 d0 rcall .+488 ; 0x242 <main>
|
58: f5 d0 rcall .+490 ; 0x244 <main>
|
||||||
5a: 4b c1 rjmp .+662 ; 0x2f2 <_exit>
|
5a: c3 c1 rjmp .+902 ; 0x3e2 <_exit>
|
||||||
|
|
||||||
0000005c <__bad_interrupt>:
|
0000005c <__bad_interrupt>:
|
||||||
5c: d1 cf rjmp .-94 ; 0x0 <__vectors>
|
5c: d1 cf rjmp .-94 ; 0x0 <__vectors>
|
||||||
|
@ -328,9 +328,9 @@ void wait_100us(void){
|
||||||
158: 08 95 ret
|
158: 08 95 ret
|
||||||
|
|
||||||
0000015a <__vector_5>:
|
0000015a <__vector_5>:
|
||||||
int counter = 0;
|
|
||||||
|
|
||||||
uint8_t flags;
|
int clock_state_changed = 0;
|
||||||
|
int update_display = 1;
|
||||||
|
|
||||||
ISR (TIMER1_OVF_vect) // Timer1 ISR
|
ISR (TIMER1_OVF_vect) // Timer1 ISR
|
||||||
{
|
{
|
||||||
|
@ -361,7 +361,7 @@ ISR (TIMER1_OVF_vect) // Timer1 ISR
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_write_text(int row, int col, uint8_t text[16])
|
void lcd_write_text(int row, int col, uint8_t text[])
|
||||||
{
|
{
|
||||||
17e: ef 92 push r14
|
17e: ef 92 push r14
|
||||||
180: ff 92 push r15
|
180: ff 92 push r15
|
||||||
|
@ -408,233 +408,383 @@ void lcd_write_text(int row, int col, uint8_t text[16])
|
||||||
1bc: 4c 2f mov r20, r28
|
1bc: 4c 2f mov r20, r28
|
||||||
1be: 8e 2d mov r24, r14
|
1be: 8e 2d mov r24, r14
|
||||||
1c0: 55 df rcall .-342 ; 0x6c <lcd_write>
|
1c0: 55 df rcall .-342 ; 0x6c <lcd_write>
|
||||||
1c2: cf 5f subi r28, 0xFF ; 255
|
}
|
||||||
|
lcd_5ms();
|
||||||
|
1c2: 4d df rcall .-358 ; 0x5e <lcd_5ms>
|
||||||
|
1c4: cf 5f subi r28, 0xFF ; 255
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
row = line2;
|
row = line2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
for(int i=0;i<=15;i++){
|
for(int i=0;i<=15;i++){
|
||||||
1c4: c0 31 cpi r28, 0x10 ; 16
|
1c6: c0 31 cpi r28, 0x10 ; 16
|
||||||
1c6: a9 f7 brne .-22 ; 0x1b2 <lcd_write_text+0x34>
|
1c8: a1 f7 brne .-24 ; 0x1b2 <lcd_write_text+0x34>
|
||||||
if(text[i] != 0x5F){
|
if(text[i] != 0x5F){
|
||||||
lcd_write(row, text[i], 0+i);
|
lcd_write(row, text[i], 0+i);
|
||||||
}
|
}
|
||||||
|
lcd_5ms();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
1c8: cf 91 pop r28
|
1ca: cf 91 pop r28
|
||||||
1ca: 1f 91 pop r17
|
1cc: 1f 91 pop r17
|
||||||
1cc: 0f 91 pop r16
|
1ce: 0f 91 pop r16
|
||||||
1ce: ff 90 pop r15
|
1d0: ff 90 pop r15
|
||||||
1d0: ef 90 pop r14
|
1d2: ef 90 pop r14
|
||||||
1d2: 08 95 ret
|
1d4: 08 95 ret
|
||||||
|
|
||||||
000001d4 <button_clicked>:
|
000001d6 <button_clicked>:
|
||||||
|
|
||||||
int button_clicked(int button)
|
int button_clicked(int button)
|
||||||
{
|
{
|
||||||
if(((PIND & 0x03) == button+1) != ((flags & (1<<button))>0)){
|
if(((PIND & 0x03) == button+1) != ((flags & (1<<button))>0)){
|
||||||
1d4: 20 b3 in r18, 0x10 ; 16
|
1d6: 20 b3 in r18, 0x10 ; 16
|
||||||
1d6: bc 01 movw r22, r24
|
1d8: bc 01 movw r22, r24
|
||||||
1d8: 6f 5f subi r22, 0xFF ; 255
|
1da: 6f 5f subi r22, 0xFF ; 255
|
||||||
1da: 7f 4f sbci r23, 0xFF ; 255
|
1dc: 7f 4f sbci r23, 0xFF ; 255
|
||||||
1dc: 40 91 77 00 lds r20, 0x0077 ; 0x800077 <flags>
|
1de: 40 91 bb 00 lds r20, 0x00BB ; 0x8000bb <flags>
|
||||||
1e0: e1 e0 ldi r30, 0x01 ; 1
|
1e2: e1 e0 ldi r30, 0x01 ; 1
|
||||||
1e2: f0 e0 ldi r31, 0x00 ; 0
|
1e4: f0 e0 ldi r31, 0x00 ; 0
|
||||||
1e4: df 01 movw r26, r30
|
1e6: df 01 movw r26, r30
|
||||||
1e6: 02 c0 rjmp .+4 ; 0x1ec <button_clicked+0x18>
|
1e8: 02 c0 rjmp .+4 ; 0x1ee <button_clicked+0x18>
|
||||||
1e8: aa 0f add r26, r26
|
1ea: aa 0f add r26, r26
|
||||||
1ea: bb 1f adc r27, r27
|
1ec: bb 1f adc r27, r27
|
||||||
1ec: 8a 95 dec r24
|
1ee: 8a 95 dec r24
|
||||||
1ee: e2 f7 brpl .-8 ; 0x1e8 <button_clicked+0x14>
|
1f0: e2 f7 brpl .-8 ; 0x1ea <button_clicked+0x14>
|
||||||
1f0: cd 01 movw r24, r26
|
1f2: cd 01 movw r24, r26
|
||||||
1f2: 23 70 andi r18, 0x03 ; 3
|
1f4: 23 70 andi r18, 0x03 ; 3
|
||||||
1f4: 30 e0 ldi r19, 0x00 ; 0
|
1f6: 30 e0 ldi r19, 0x00 ; 0
|
||||||
1f6: 51 e0 ldi r21, 0x01 ; 1
|
1f8: 51 e0 ldi r21, 0x01 ; 1
|
||||||
1f8: 26 17 cp r18, r22
|
1fa: 26 17 cp r18, r22
|
||||||
1fa: 37 07 cpc r19, r23
|
1fc: 37 07 cpc r19, r23
|
||||||
1fc: 09 f0 breq .+2 ; 0x200 <button_clicked+0x2c>
|
1fe: 09 f0 breq .+2 ; 0x202 <button_clicked+0x2c>
|
||||||
1fe: 50 e0 ldi r21, 0x00 ; 0
|
200: 50 e0 ldi r21, 0x00 ; 0
|
||||||
200: 24 2f mov r18, r20
|
202: 24 2f mov r18, r20
|
||||||
202: 30 e0 ldi r19, 0x00 ; 0
|
204: 30 e0 ldi r19, 0x00 ; 0
|
||||||
204: 28 23 and r18, r24
|
206: 28 23 and r18, r24
|
||||||
206: 39 23 and r19, r25
|
208: 39 23 and r19, r25
|
||||||
208: e1 e0 ldi r30, 0x01 ; 1
|
20a: e1 e0 ldi r30, 0x01 ; 1
|
||||||
20a: 12 16 cp r1, r18
|
20c: 12 16 cp r1, r18
|
||||||
20c: 13 06 cpc r1, r19
|
20e: 13 06 cpc r1, r19
|
||||||
20e: 0c f0 brlt .+2 ; 0x212 <button_clicked+0x3e>
|
210: 0c f0 brlt .+2 ; 0x214 <button_clicked+0x3e>
|
||||||
210: e0 e0 ldi r30, 0x00 ; 0
|
212: e0 e0 ldi r30, 0x00 ; 0
|
||||||
212: 5e 17 cp r21, r30
|
214: 5e 17 cp r21, r30
|
||||||
214: 99 f0 breq .+38 ; 0x23c <button_clicked+0x68>
|
216: 99 f0 breq .+38 ; 0x23e <button_clicked+0x68>
|
||||||
//if the pin is not equal to the stored state -> was pressed or released
|
//if the pin is not equal to the stored state -> was pressed or released
|
||||||
//check is the button has been pressed or released
|
//check is the button has been pressed or released
|
||||||
if((PIND & 0x03) == button+1){
|
if((PIND & 0x03) == button+1){
|
||||||
216: 20 b3 in r18, 0x10 ; 16
|
218: 20 b3 in r18, 0x10 ; 16
|
||||||
218: 23 70 andi r18, 0x03 ; 3
|
21a: 23 70 andi r18, 0x03 ; 3
|
||||||
21a: 30 e0 ldi r19, 0x00 ; 0
|
21c: 30 e0 ldi r19, 0x00 ; 0
|
||||||
21c: 62 17 cp r22, r18
|
21e: 62 17 cp r22, r18
|
||||||
21e: 73 07 cpc r23, r19
|
220: 73 07 cpc r23, r19
|
||||||
220: 31 f4 brne .+12 ; 0x22e <button_clicked+0x5a>
|
222: 31 f4 brne .+12 ; 0x230 <button_clicked+0x5a>
|
||||||
//button is high -> pressed
|
//button is high -> pressed
|
||||||
flags |= (1<<button);
|
flags |= (1<<button); //set bit
|
||||||
222: 84 2b or r24, r20
|
224: 84 2b or r24, r20
|
||||||
224: 80 93 77 00 sts 0x0077, r24 ; 0x800077 <flags>
|
226: 80 93 bb 00 sts 0x00BB, r24 ; 0x8000bb <flags>
|
||||||
return(1);
|
return(1);
|
||||||
228: 81 e0 ldi r24, 0x01 ; 1
|
22a: 81 e0 ldi r24, 0x01 ; 1
|
||||||
22a: 90 e0 ldi r25, 0x00 ; 0
|
22c: 90 e0 ldi r25, 0x00 ; 0
|
||||||
22c: 08 95 ret
|
22e: 08 95 ret
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
//button is low -> released
|
//button is low -> released
|
||||||
flags &= ~(1<<button);
|
flags &= ~(1<<button); //delete bit
|
||||||
22e: 80 95 com r24
|
230: 80 95 com r24
|
||||||
230: 48 23 and r20, r24
|
232: 48 23 and r20, r24
|
||||||
232: 40 93 77 00 sts 0x0077, r20 ; 0x800077 <flags>
|
234: 40 93 bb 00 sts 0x00BB, r20 ; 0x8000bb <flags>
|
||||||
return(0);
|
return(0);
|
||||||
236: 80 e0 ldi r24, 0x00 ; 0
|
238: 80 e0 ldi r24, 0x00 ; 0
|
||||||
238: 90 e0 ldi r25, 0x00 ; 0
|
23a: 90 e0 ldi r25, 0x00 ; 0
|
||||||
23a: 08 95 ret
|
23c: 08 95 ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(0);
|
return(0);
|
||||||
23c: 80 e0 ldi r24, 0x00 ; 0
|
23e: 80 e0 ldi r24, 0x00 ; 0
|
||||||
23e: 90 e0 ldi r25, 0x00 ; 0
|
240: 90 e0 ldi r25, 0x00 ; 0
|
||||||
}
|
}
|
||||||
240: 08 95 ret
|
242: 08 95 ret
|
||||||
|
|
||||||
00000242 <main>:
|
00000244 <main>:
|
||||||
|
//counter++;
|
||||||
TCNT1 = 63974;
|
TCNT1 = 63974;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
244: cf 93 push r28
|
||||||
|
246: df 93 push r29
|
||||||
|
248: cd b7 in r28, 0x3d ; 61
|
||||||
|
24a: dd 27 eor r29, r29
|
||||||
|
24c: c0 54 subi r28, 0x40 ; 64
|
||||||
|
24e: cd bf out 0x3d, r28 ; 61
|
||||||
DDRD = 0x00;
|
DDRD = 0x00;
|
||||||
242: 11 ba out 0x11, r1 ; 17
|
250: 11 ba out 0x11, r1 ; 17
|
||||||
|
|
||||||
TCNT1 = 63974; // for 1 sec at 16 MHz
|
TCNT1 = 63974; // for 1 sec at 16 MHz
|
||||||
244: 86 ee ldi r24, 0xE6 ; 230
|
252: 86 ee ldi r24, 0xE6 ; 230
|
||||||
246: 99 ef ldi r25, 0xF9 ; 249
|
254: 99 ef ldi r25, 0xF9 ; 249
|
||||||
248: 9d bd out 0x2d, r25 ; 45
|
256: 9d bd out 0x2d, r25 ; 45
|
||||||
24a: 8c bd out 0x2c, r24 ; 44
|
258: 8c bd out 0x2c, r24 ; 44
|
||||||
|
|
||||||
TCCR1A = 0x00;
|
TCCR1A = 0x00;
|
||||||
24c: 1f bc out 0x2f, r1 ; 47
|
25a: 1f bc out 0x2f, r1 ; 47
|
||||||
TCCR1B = (1<<CS10) | (1<<CS12);; // Timer mode with 1024 prescaler
|
TCCR1B = (1<<CS10) | (1<<CS12);; // Timer mode with 1024 prescaler
|
||||||
24e: 85 e0 ldi r24, 0x05 ; 5
|
25c: 85 e0 ldi r24, 0x05 ; 5
|
||||||
250: 8e bd out 0x2e, r24 ; 46
|
25e: 8e bd out 0x2e, r24 ; 46
|
||||||
TIMSK = (1 << TOIE1) ; // Enable timer1 overflow interrupt(TOIE1)
|
TIMSK = (1 << TOIE1) ; // Enable timer1 overflow interrupt(TOIE1)
|
||||||
252: 80 e8 ldi r24, 0x80 ; 128
|
260: 80 e8 ldi r24, 0x80 ; 128
|
||||||
254: 89 bf out 0x39, r24 ; 57
|
262: 89 bf out 0x39, r24 ; 57
|
||||||
sei(); // Enable global interrupts by setting global interrupt enable bit in SREG
|
sei(); // Enable global interrupts by setting global interrupt enable bit in SREG
|
||||||
256: 78 94 sei
|
264: 78 94 sei
|
||||||
// flags &= ~(1<<butt1);
|
else if(button_clicked(butt3)){
|
||||||
// }
|
counter += 3;
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
t1[0] = counter + 48;
|
t1[0] = counter + 48;
|
||||||
258: c2 e7 ldi r28, 0x72 ; 114
|
266: 0f 2e mov r0, r31
|
||||||
25a: d0 e0 ldi r29, 0x00 ; 0
|
268: f2 e6 ldi r31, 0x62 ; 98
|
||||||
|
26a: ef 2e mov r14, r31
|
||||||
|
26c: f0 e0 ldi r31, 0x00 ; 0
|
||||||
|
26e: ff 2e mov r15, r31
|
||||||
|
270: f0 2d mov r31, r0
|
||||||
|
272: 06 eb ldi r16, 0xB6 ; 182
|
||||||
|
274: 10 e0 ldi r17, 0x00 ; 0
|
||||||
|
lcd_write_text(1,0,(uint8_t []){' ',' ',' ',' ',' ',' ','t','i','m','e',' ',' ',' ',' ',' ',' '});
|
||||||
|
update_display = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(button_clicked(butt1)){
|
||||||
|
clock_new_state = CLOCK_ALARM;
|
||||||
|
276: 68 94 set
|
||||||
|
278: dd 24 eor r13, r13
|
||||||
|
27a: d1 f8 bld r13, 1
|
||||||
|
sei(); // Enable global interrupts by setting global interrupt enable bit in SREG
|
||||||
|
|
||||||
/* Replace with your application code */
|
/* Replace with your application code */
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
clock_state = clock_new_state;
|
if(clock_state != clock_new_state){
|
||||||
25c: 80 91 74 00 lds r24, 0x0074 ; 0x800074 <clock_new_state>
|
27c: 90 91 b9 00 lds r25, 0x00B9 ; 0x8000b9 <clock_state>
|
||||||
|
280: 80 91 b8 00 lds r24, 0x00B8 ; 0x8000b8 <clock_new_state>
|
||||||
|
284: 98 17 cp r25, r24
|
||||||
|
286: 99 f0 breq .+38 ; 0x2ae <main+0x6a>
|
||||||
|
clock_state = clock_new_state;
|
||||||
|
288: 80 93 b9 00 sts 0x00B9, r24 ; 0x8000b9 <clock_state>
|
||||||
|
clock_state_changed = 1;
|
||||||
|
28c: 21 e0 ldi r18, 0x01 ; 1
|
||||||
|
28e: 30 e0 ldi r19, 0x00 ; 0
|
||||||
|
290: 30 93 b5 00 sts 0x00B5, r19 ; 0x8000b5 <__data_end+0x1>
|
||||||
|
294: 20 93 b4 00 sts 0x00B4, r18 ; 0x8000b4 <__data_end>
|
||||||
|
update_display = 1;
|
||||||
|
298: 30 93 61 00 sts 0x0061, r19 ; 0x800061 <__data_start+0x1>
|
||||||
|
29c: 20 93 60 00 sts 0x0060, r18 ; 0x800060 <__data_start>
|
||||||
|
else {
|
||||||
|
clock_state_changed = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
switch(clock_state){
|
switch(clock_state){
|
||||||
260: 88 23 and r24, r24
|
2a0: 81 30 cpi r24, 0x01 ; 1
|
||||||
262: 19 f0 breq .+6 ; 0x26a <main+0x28>
|
2a2: f1 f0 breq .+60 ; 0x2e0 <main+0x9c>
|
||||||
264: 81 30 cpi r24, 0x01 ; 1
|
2a4: 78 f0 brcs .+30 ; 0x2c4 <main+0x80>
|
||||||
266: 51 f0 breq .+20 ; 0x27c <main+0x3a>
|
2a6: 82 30 cpi r24, 0x02 ; 2
|
||||||
268: fb cf rjmp .-10 ; 0x260 <main+0x1e>
|
2a8: 09 f4 brne .+2 ; 0x2ac <main+0x68>
|
||||||
26a: 10 92 75 00 sts 0x0075, r1 ; 0x800075 <clock_state>
|
2aa: 6d c0 rjmp .+218 ; 0x386 <main+0x142>
|
||||||
|
2ac: e7 cf rjmp .-50 ; 0x27c <main+0x38>
|
||||||
|
clock_state = clock_new_state;
|
||||||
|
clock_state_changed = 1;
|
||||||
|
update_display = 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
clock_state_changed = 0;
|
||||||
|
2ae: 10 92 b5 00 sts 0x00B5, r1 ; 0x8000b5 <__data_end+0x1>
|
||||||
|
2b2: 10 92 b4 00 sts 0x00B4, r1 ; 0x8000b4 <__data_end>
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
switch(clock_state){
|
||||||
|
2b6: 91 30 cpi r25, 0x01 ; 1
|
||||||
|
2b8: 69 f0 breq .+26 ; 0x2d4 <main+0x90>
|
||||||
|
2ba: 20 f0 brcs .+8 ; 0x2c4 <main+0x80>
|
||||||
|
2bc: 92 30 cpi r25, 0x02 ; 2
|
||||||
|
2be: 09 f4 brne .+2 ; 0x2c2 <main+0x7e>
|
||||||
|
2c0: 62 c0 rjmp .+196 ; 0x386 <main+0x142>
|
||||||
|
2c2: dc cf rjmp .-72 ; 0x27c <main+0x38>
|
||||||
case CLOCK_INIT:
|
case CLOCK_INIT:
|
||||||
//do some init stuff...
|
//do some init stuff...
|
||||||
lcd_init(); //I know, it's just c but I don't care
|
lcd_init();
|
||||||
26e: 3d df rcall .-390 ; 0xea <lcd_init>
|
2c4: 12 df rcall .-476 ; 0xea <lcd_init>
|
||||||
|
lcd_5ms();
|
||||||
|
2c6: cb de rcall .-618 ; 0x5e <lcd_5ms>
|
||||||
lcd_instruct(lcd_DISPLAY_CLEAR);
|
lcd_instruct(lcd_DISPLAY_CLEAR);
|
||||||
270: 81 e0 ldi r24, 0x01 ; 1
|
2c8: 81 e0 ldi r24, 0x01 ; 1
|
||||||
272: 36 df rcall .-404 ; 0xe0 <lcd_instruct>
|
2ca: 0a df rcall .-492 ; 0xe0 <lcd_instruct>
|
||||||
//INIT done -> change to IDLE
|
//INIT done -> change to IDLE
|
||||||
clock_new_state = CLOCK_IDLE;
|
clock_new_state = CLOCK_IDLE;
|
||||||
274: 81 e0 ldi r24, 0x01 ; 1
|
2cc: 81 e0 ldi r24, 0x01 ; 1
|
||||||
276: 80 93 74 00 sts 0x0074, r24 ; 0x800074 <clock_new_state>
|
2ce: 80 93 b8 00 sts 0x00B8, r24 ; 0x8000b8 <clock_new_state>
|
||||||
|
|
||||||
break;
|
break;
|
||||||
27a: f0 cf rjmp .-32 ; 0x25c <main+0x1a>
|
2d2: d4 cf rjmp .-88 ; 0x27c <main+0x38>
|
||||||
27c: 81 e0 ldi r24, 0x01 ; 1
|
|
||||||
27e: 80 93 75 00 sts 0x0075, r24 ; 0x800075 <clock_state>
|
|
||||||
case CLOCK_IDLE:
|
case CLOCK_IDLE:
|
||||||
//IDLE MODE
|
//IDLE MODE
|
||||||
|
|
||||||
//print the IDLE Screen
|
//print the IDLE Screen
|
||||||
|
|
||||||
lcd_write_text(0,0,t1);
|
if(update_display){
|
||||||
282: 40 e6 ldi r20, 0x60 ; 96
|
2d4: 80 91 60 00 lds r24, 0x0060 ; 0x800060 <__data_start>
|
||||||
284: 50 e0 ldi r21, 0x00 ; 0
|
2d8: 90 91 61 00 lds r25, 0x0061 ; 0x800061 <__data_start+0x1>
|
||||||
286: 60 e0 ldi r22, 0x00 ; 0
|
2dc: 89 2b or r24, r25
|
||||||
288: 70 e0 ldi r23, 0x00 ; 0
|
2de: 41 f1 breq .+80 ; 0x330 <main+0xec>
|
||||||
28a: 80 e0 ldi r24, 0x00 ; 0
|
lcd_5ms();
|
||||||
28c: 90 e0 ldi r25, 0x00 ; 0
|
2e0: be de rcall .-644 ; 0x5e <lcd_5ms>
|
||||||
28e: 77 df rcall .-274 ; 0x17e <lcd_write_text>
|
lcd_write_text(0,0,(uint8_t []){'_','_','_','_','_','_','t','i','m','e','_','_','_','_','_','_'});
|
||||||
|
2e2: 80 e1 ldi r24, 0x10 ; 16
|
||||||
|
2e4: e3 e7 ldi r30, 0x73 ; 115
|
||||||
|
2e6: f0 e0 ldi r31, 0x00 ; 0
|
||||||
|
2e8: de 01 movw r26, r28
|
||||||
|
2ea: d1 96 adiw r26, 0x31 ; 49
|
||||||
|
2ec: 01 90 ld r0, Z+
|
||||||
|
2ee: 0d 92 st X+, r0
|
||||||
|
2f0: 8a 95 dec r24
|
||||||
|
2f2: e1 f7 brne .-8 ; 0x2ec <main+0xa8>
|
||||||
|
2f4: ae 01 movw r20, r28
|
||||||
|
2f6: 4f 5c subi r20, 0xCF ; 207
|
||||||
|
2f8: 5f 4f sbci r21, 0xFF ; 255
|
||||||
|
2fa: 60 e0 ldi r22, 0x00 ; 0
|
||||||
|
2fc: 70 e0 ldi r23, 0x00 ; 0
|
||||||
|
2fe: 80 e0 ldi r24, 0x00 ; 0
|
||||||
|
300: 90 e0 ldi r25, 0x00 ; 0
|
||||||
|
302: 3d df rcall .-390 ; 0x17e <lcd_write_text>
|
||||||
|
lcd_5ms();
|
||||||
|
304: ac de rcall .-680 ; 0x5e <lcd_5ms>
|
||||||
|
lcd_write_text(1,0,(uint8_t []){' ',' ',' ',' ',' ',' ','t','i','m','e',' ',' ',' ',' ',' ',' '});
|
||||||
|
306: 80 e1 ldi r24, 0x10 ; 16
|
||||||
|
308: e3 e8 ldi r30, 0x83 ; 131
|
||||||
|
30a: f0 e0 ldi r31, 0x00 ; 0
|
||||||
|
30c: de 01 movw r26, r28
|
||||||
|
30e: 91 96 adiw r26, 0x21 ; 33
|
||||||
|
310: 01 90 ld r0, Z+
|
||||||
|
312: 0d 92 st X+, r0
|
||||||
|
314: 8a 95 dec r24
|
||||||
|
316: e1 f7 brne .-8 ; 0x310 <main+0xcc>
|
||||||
|
318: ae 01 movw r20, r28
|
||||||
|
31a: 4f 5d subi r20, 0xDF ; 223
|
||||||
|
31c: 5f 4f sbci r21, 0xFF ; 255
|
||||||
|
31e: 60 e0 ldi r22, 0x00 ; 0
|
||||||
|
320: 70 e0 ldi r23, 0x00 ; 0
|
||||||
|
322: 81 e0 ldi r24, 0x01 ; 1
|
||||||
|
324: 90 e0 ldi r25, 0x00 ; 0
|
||||||
|
326: 2b df rcall .-426 ; 0x17e <lcd_write_text>
|
||||||
|
update_display = 0;
|
||||||
|
328: 10 92 61 00 sts 0x0061, r1 ; 0x800061 <__data_start+0x1>
|
||||||
|
32c: 10 92 60 00 sts 0x0060, r1 ; 0x800060 <__data_start>
|
||||||
|
}
|
||||||
|
|
||||||
if(button_clicked(butt1)){
|
if(button_clicked(butt1)){
|
||||||
290: 80 e0 ldi r24, 0x00 ; 0
|
330: 80 e0 ldi r24, 0x00 ; 0
|
||||||
292: 90 e0 ldi r25, 0x00 ; 0
|
332: 90 e0 ldi r25, 0x00 ; 0
|
||||||
294: 9f df rcall .-194 ; 0x1d4 <button_clicked>
|
334: 50 df rcall .-352 ; 0x1d6 <button_clicked>
|
||||||
296: 89 2b or r24, r25
|
336: 89 2b or r24, r25
|
||||||
298: 51 f0 breq .+20 ; 0x2ae <main+0x6c>
|
338: 19 f0 breq .+6 ; 0x340 <main+0xfc>
|
||||||
counter++;
|
clock_new_state = CLOCK_ALARM;
|
||||||
29a: 80 91 72 00 lds r24, 0x0072 ; 0x800072 <__data_end>
|
33a: d0 92 b8 00 sts 0x00B8, r13 ; 0x8000b8 <clock_new_state>
|
||||||
29e: 90 91 73 00 lds r25, 0x0073 ; 0x800073 <__data_end+0x1>
|
33e: 1d c0 rjmp .+58 ; 0x37a <main+0x136>
|
||||||
2a2: 01 96 adiw r24, 0x01 ; 1
|
|
||||||
2a4: 90 93 73 00 sts 0x0073, r25 ; 0x800073 <__data_end+0x1>
|
|
||||||
2a8: 80 93 72 00 sts 0x0072, r24 ; 0x800072 <__data_end>
|
|
||||||
2ac: 1d c0 rjmp .+58 ; 0x2e8 <main+0xa6>
|
|
||||||
}
|
}
|
||||||
else if(button_clicked(butt2)){
|
else if(button_clicked(butt2)){
|
||||||
2ae: 81 e0 ldi r24, 0x01 ; 1
|
340: 81 e0 ldi r24, 0x01 ; 1
|
||||||
2b0: 90 e0 ldi r25, 0x00 ; 0
|
342: 90 e0 ldi r25, 0x00 ; 0
|
||||||
2b2: 90 df rcall .-224 ; 0x1d4 <button_clicked>
|
344: 48 df rcall .-368 ; 0x1d6 <button_clicked>
|
||||||
2b4: 89 2b or r24, r25
|
346: 89 2b or r24, r25
|
||||||
2b6: 51 f0 breq .+20 ; 0x2cc <main+0x8a>
|
348: 51 f0 breq .+20 ; 0x35e <main+0x11a>
|
||||||
counter += 2;
|
counter += 2;
|
||||||
2b8: 80 91 72 00 lds r24, 0x0072 ; 0x800072 <__data_end>
|
34a: 80 91 b6 00 lds r24, 0x00B6 ; 0x8000b6 <counter>
|
||||||
2bc: 90 91 73 00 lds r25, 0x0073 ; 0x800073 <__data_end+0x1>
|
34e: 90 91 b7 00 lds r25, 0x00B7 ; 0x8000b7 <counter+0x1>
|
||||||
2c0: 02 96 adiw r24, 0x02 ; 2
|
352: 02 96 adiw r24, 0x02 ; 2
|
||||||
2c2: 90 93 73 00 sts 0x0073, r25 ; 0x800073 <__data_end+0x1>
|
354: 90 93 b7 00 sts 0x00B7, r25 ; 0x8000b7 <counter+0x1>
|
||||||
2c6: 80 93 72 00 sts 0x0072, r24 ; 0x800072 <__data_end>
|
358: 80 93 b6 00 sts 0x00B6, r24 ; 0x8000b6 <counter>
|
||||||
2ca: 0e c0 rjmp .+28 ; 0x2e8 <main+0xa6>
|
35c: 0e c0 rjmp .+28 ; 0x37a <main+0x136>
|
||||||
}
|
}
|
||||||
else if(button_clicked(butt3)){
|
else if(button_clicked(butt3)){
|
||||||
2cc: 82 e0 ldi r24, 0x02 ; 2
|
35e: 82 e0 ldi r24, 0x02 ; 2
|
||||||
2ce: 90 e0 ldi r25, 0x00 ; 0
|
360: 90 e0 ldi r25, 0x00 ; 0
|
||||||
2d0: 81 df rcall .-254 ; 0x1d4 <button_clicked>
|
362: 39 df rcall .-398 ; 0x1d6 <button_clicked>
|
||||||
2d2: 89 2b or r24, r25
|
364: 89 2b or r24, r25
|
||||||
2d4: 49 f0 breq .+18 ; 0x2e8 <main+0xa6>
|
366: 49 f0 breq .+18 ; 0x37a <main+0x136>
|
||||||
counter += 3;
|
counter += 3;
|
||||||
2d6: 80 91 72 00 lds r24, 0x0072 ; 0x800072 <__data_end>
|
368: 80 91 b6 00 lds r24, 0x00B6 ; 0x8000b6 <counter>
|
||||||
2da: 90 91 73 00 lds r25, 0x0073 ; 0x800073 <__data_end+0x1>
|
36c: 90 91 b7 00 lds r25, 0x00B7 ; 0x8000b7 <counter+0x1>
|
||||||
2de: 03 96 adiw r24, 0x03 ; 3
|
370: 03 96 adiw r24, 0x03 ; 3
|
||||||
2e0: 90 93 73 00 sts 0x0073, r25 ; 0x800073 <__data_end+0x1>
|
372: 90 93 b7 00 sts 0x00B7, r25 ; 0x8000b7 <counter+0x1>
|
||||||
2e4: 80 93 72 00 sts 0x0072, r24 ; 0x800072 <__data_end>
|
376: 80 93 b6 00 sts 0x00B6, r24 ; 0x8000b6 <counter>
|
||||||
// flags &= ~(1<<butt1);
|
}
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
t1[0] = counter + 48;
|
t1[0] = counter + 48;
|
||||||
2e8: 88 81 ld r24, Y
|
37a: f8 01 movw r30, r16
|
||||||
2ea: 80 5d subi r24, 0xD0 ; 208
|
37c: 80 81 ld r24, Z
|
||||||
2ec: 80 93 60 00 sts 0x0060, r24 ; 0x800060 <__data_start>
|
37e: 80 5d subi r24, 0xD0 ; 208
|
||||||
|
380: f7 01 movw r30, r14
|
||||||
|
382: 80 83 st Z, r24
|
||||||
|
|
||||||
break;
|
break;
|
||||||
2f0: b5 cf rjmp .-150 ; 0x25c <main+0x1a>
|
384: 7b cf rjmp .-266 ; 0x27c <main+0x38>
|
||||||
|
|
||||||
|
case CLOCK_ALARM:
|
||||||
|
//ALARM setup Mode
|
||||||
|
//print the ALARM screen
|
||||||
|
if(update_display){
|
||||||
|
386: 80 91 60 00 lds r24, 0x0060 ; 0x800060 <__data_start>
|
||||||
|
38a: 90 91 61 00 lds r25, 0x0061 ; 0x800061 <__data_start+0x1>
|
||||||
|
38e: 89 2b or r24, r25
|
||||||
|
390: 09 f4 brne .+2 ; 0x394 <main+0x150>
|
||||||
|
392: 74 cf rjmp .-280 ; 0x27c <main+0x38>
|
||||||
|
lcd_write_text(0,0,(uint8_t []){' ',' ','[','a','l','a','r','m',' ','t','i','m','e',']',' ',' '});
|
||||||
|
394: 80 e1 ldi r24, 0x10 ; 16
|
||||||
|
396: e3 e9 ldi r30, 0x93 ; 147
|
||||||
|
398: f0 e0 ldi r31, 0x00 ; 0
|
||||||
|
39a: de 01 movw r26, r28
|
||||||
|
39c: 51 96 adiw r26, 0x11 ; 17
|
||||||
|
39e: 01 90 ld r0, Z+
|
||||||
|
3a0: 0d 92 st X+, r0
|
||||||
|
3a2: 8a 95 dec r24
|
||||||
|
3a4: e1 f7 brne .-8 ; 0x39e <main+0x15a>
|
||||||
|
3a6: ae 01 movw r20, r28
|
||||||
|
3a8: 4f 5e subi r20, 0xEF ; 239
|
||||||
|
3aa: 5f 4f sbci r21, 0xFF ; 255
|
||||||
|
3ac: 60 e0 ldi r22, 0x00 ; 0
|
||||||
|
3ae: 70 e0 ldi r23, 0x00 ; 0
|
||||||
|
3b0: 80 e0 ldi r24, 0x00 ; 0
|
||||||
|
3b2: 90 e0 ldi r25, 0x00 ; 0
|
||||||
|
3b4: e4 de rcall .-568 ; 0x17e <lcd_write_text>
|
||||||
|
lcd_write_text(1,0,(uint8_t []){' ',' ',' ',' ',' ','a','l','a','r','m',' ','>',' ',' ',' ',' '});
|
||||||
|
3b6: 80 e1 ldi r24, 0x10 ; 16
|
||||||
|
3b8: e3 ea ldi r30, 0xA3 ; 163
|
||||||
|
3ba: f0 e0 ldi r31, 0x00 ; 0
|
||||||
|
3bc: de 01 movw r26, r28
|
||||||
|
3be: 11 96 adiw r26, 0x01 ; 1
|
||||||
|
3c0: 01 90 ld r0, Z+
|
||||||
|
3c2: 0d 92 st X+, r0
|
||||||
|
3c4: 8a 95 dec r24
|
||||||
|
3c6: e1 f7 brne .-8 ; 0x3c0 <main+0x17c>
|
||||||
|
3c8: ae 01 movw r20, r28
|
||||||
|
3ca: 4f 5f subi r20, 0xFF ; 255
|
||||||
|
3cc: 5f 4f sbci r21, 0xFF ; 255
|
||||||
|
3ce: 60 e0 ldi r22, 0x00 ; 0
|
||||||
|
3d0: 70 e0 ldi r23, 0x00 ; 0
|
||||||
|
3d2: 81 e0 ldi r24, 0x01 ; 1
|
||||||
|
3d4: 90 e0 ldi r25, 0x00 ; 0
|
||||||
|
3d6: d3 de rcall .-602 ; 0x17e <lcd_write_text>
|
||||||
|
update_display = 0;
|
||||||
|
3d8: 10 92 61 00 sts 0x0061, r1 ; 0x800061 <__data_start+0x1>
|
||||||
|
3dc: 10 92 60 00 sts 0x0060, r1 ; 0x800060 <__data_start>
|
||||||
|
3e0: 4d cf rjmp .-358 ; 0x27c <main+0x38>
|
||||||
|
|
||||||
000002f2 <_exit>:
|
000003e2 <_exit>:
|
||||||
2f2: f8 94 cli
|
3e2: f8 94 cli
|
||||||
|
|
||||||
000002f4 <__stop_program>:
|
000003e4 <__stop_program>:
|
||||||
2f4: ff cf rjmp .-2 ; 0x2f4 <__stop_program>
|
3e4: ff cf rjmp .-2 ; 0x3e4 <__stop_program>
|
||||||
|
|
|
@ -203,7 +203,7 @@ END GROUP
|
||||||
.rela.plt
|
.rela.plt
|
||||||
*(.rela.plt)
|
*(.rela.plt)
|
||||||
|
|
||||||
.text 0x00000000 0x2f6
|
.text 0x00000000 0x3e6
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
.vectors 0x00000000 0x2a C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny2313a/avr25/tiny-stack/crtattiny2313a.o
|
.vectors 0x00000000 0x2a C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny2313a/avr25/tiny-stack/crtattiny2313a.o
|
||||||
0x00000000 __vector_default
|
0x00000000 __vector_default
|
||||||
|
@ -302,18 +302,18 @@ END GROUP
|
||||||
0x0000015a 0x24 main.o
|
0x0000015a 0x24 main.o
|
||||||
0x0000015a __vector_5
|
0x0000015a __vector_5
|
||||||
.text.lcd_write_text
|
.text.lcd_write_text
|
||||||
0x0000017e 0x56 main.o
|
0x0000017e 0x58 main.o
|
||||||
0x0000017e lcd_write_text
|
0x0000017e lcd_write_text
|
||||||
.text.button_clicked
|
.text.button_clicked
|
||||||
0x000001d4 0x6e main.o
|
0x000001d6 0x6e main.o
|
||||||
0x000001d4 button_clicked
|
0x000001d6 button_clicked
|
||||||
.text.main 0x00000242 0xb0 main.o
|
.text.main 0x00000244 0x19e main.o
|
||||||
0x00000242 main
|
0x00000244 main
|
||||||
0x000002f2 . = ALIGN (0x2)
|
0x000003e2 . = ALIGN (0x2)
|
||||||
*(.fini9)
|
*(.fini9)
|
||||||
.fini9 0x000002f2 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25/tiny-stack\libgcc.a(_exit.o)
|
.fini9 0x000003e2 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25/tiny-stack\libgcc.a(_exit.o)
|
||||||
0x000002f2 _exit
|
0x000003e2 _exit
|
||||||
0x000002f2 exit
|
0x000003e2 exit
|
||||||
*(.fini9)
|
*(.fini9)
|
||||||
*(.fini8)
|
*(.fini8)
|
||||||
*(.fini8)
|
*(.fini8)
|
||||||
|
@ -332,50 +332,57 @@ END GROUP
|
||||||
*(.fini1)
|
*(.fini1)
|
||||||
*(.fini1)
|
*(.fini1)
|
||||||
*(.fini0)
|
*(.fini0)
|
||||||
.fini0 0x000002f2 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25/tiny-stack\libgcc.a(_exit.o)
|
.fini0 0x000003e2 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25/tiny-stack\libgcc.a(_exit.o)
|
||||||
*(.fini0)
|
*(.fini0)
|
||||||
0x000002f6 _etext = .
|
0x000003e6 _etext = .
|
||||||
|
|
||||||
.data 0x00800060 0x12 load address 0x000002f6
|
.data 0x00800060 0x54 load address 0x000003e6
|
||||||
0x00800060 PROVIDE (__data_start, .)
|
0x00800060 PROVIDE (__data_start, .)
|
||||||
*(.data)
|
*(.data)
|
||||||
*(.data*)
|
*(.data*)
|
||||||
.data.t1 0x00800060 0x11 main.o
|
.data.update_display
|
||||||
0x00800060 t1
|
0x00800060 0x2 main.o
|
||||||
|
0x00800060 update_display
|
||||||
|
.data.t1 0x00800062 0x11 main.o
|
||||||
|
0x00800062 t1
|
||||||
*(.gnu.linkonce.d*)
|
*(.gnu.linkonce.d*)
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
|
.rodata 0x00800073 0x40 main.o
|
||||||
*(.rodata*)
|
*(.rodata*)
|
||||||
*(.gnu.linkonce.r*)
|
*(.gnu.linkonce.r*)
|
||||||
0x00800072 . = ALIGN (0x2)
|
0x008000b4 . = ALIGN (0x2)
|
||||||
*fill* 0x00800071 0x1
|
*fill* 0x008000b3 0x1
|
||||||
0x00800072 _edata = .
|
0x008000b4 _edata = .
|
||||||
0x00800072 PROVIDE (__data_end, .)
|
0x008000b4 PROVIDE (__data_end, .)
|
||||||
|
|
||||||
.bss 0x00800072 0x6
|
.bss 0x008000b4 0x8
|
||||||
0x00800072 PROVIDE (__bss_start, .)
|
0x008000b4 PROVIDE (__bss_start, .)
|
||||||
*(.bss)
|
*(.bss)
|
||||||
*(.bss*)
|
*(.bss*)
|
||||||
.bss.counter 0x00800072 0x2 main.o
|
.bss.clock_state_changed
|
||||||
0x00800072 counter
|
0x008000b4 0x2 main.o
|
||||||
|
0x008000b4 clock_state_changed
|
||||||
|
.bss.counter 0x008000b6 0x2 main.o
|
||||||
|
0x008000b6 counter
|
||||||
.bss.clock_new_state
|
.bss.clock_new_state
|
||||||
0x00800074 0x1 main.o
|
0x008000b8 0x1 main.o
|
||||||
0x00800074 clock_new_state
|
0x008000b8 clock_new_state
|
||||||
.bss.clock_state
|
.bss.clock_state
|
||||||
0x00800075 0x1 main.o
|
0x008000b9 0x1 main.o
|
||||||
0x00800075 clock_state
|
0x008000b9 clock_state
|
||||||
*(COMMON)
|
*(COMMON)
|
||||||
COMMON 0x00800076 0x2 main.o
|
COMMON 0x008000ba 0x2 main.o
|
||||||
0x00800076 clock_old_state
|
0x008000ba clock_old_state
|
||||||
0x00800077 flags
|
0x008000bb flags
|
||||||
0x00800078 PROVIDE (__bss_end, .)
|
0x008000bc PROVIDE (__bss_end, .)
|
||||||
0x000002f6 __data_load_start = LOADADDR (.data)
|
0x000003e6 __data_load_start = LOADADDR (.data)
|
||||||
0x00000308 __data_load_end = (__data_load_start + SIZEOF (.data))
|
0x0000043a __data_load_end = (__data_load_start + SIZEOF (.data))
|
||||||
|
|
||||||
.noinit 0x00800078 0x0
|
.noinit 0x008000bc 0x0
|
||||||
[!provide] PROVIDE (__noinit_start, .)
|
[!provide] PROVIDE (__noinit_start, .)
|
||||||
*(.noinit*)
|
*(.noinit*)
|
||||||
[!provide] PROVIDE (__noinit_end, .)
|
[!provide] PROVIDE (__noinit_end, .)
|
||||||
0x00800078 _end = .
|
0x008000bc _end = .
|
||||||
[!provide] PROVIDE (__heap_start, .)
|
[!provide] PROVIDE (__heap_start, .)
|
||||||
|
|
||||||
.eeprom 0x00810000 0x0
|
.eeprom 0x00810000 0x0
|
||||||
|
@ -454,48 +461,48 @@ END GROUP
|
||||||
.debug_pubnames
|
.debug_pubnames
|
||||||
*(.debug_pubnames)
|
*(.debug_pubnames)
|
||||||
|
|
||||||
.debug_info 0x00000000 0xb59
|
.debug_info 0x00000000 0xc54
|
||||||
*(.debug_info .gnu.linkonce.wi.*)
|
*(.debug_info .gnu.linkonce.wi.*)
|
||||||
.debug_info 0x00000000 0x456 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny2313a/avr25/tiny-stack/crtattiny2313a.o
|
.debug_info 0x00000000 0x456 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny2313a/avr25/tiny-stack/crtattiny2313a.o
|
||||||
.debug_info 0x00000456 0x31d lcd4.o
|
.debug_info 0x00000456 0x31d lcd4.o
|
||||||
.debug_info 0x00000773 0xa3 lcd_wait.o
|
.debug_info 0x00000773 0xa3 lcd_wait.o
|
||||||
.debug_info 0x00000816 0x343 main.o
|
.debug_info 0x00000816 0x43e main.o
|
||||||
|
|
||||||
.debug_abbrev 0x00000000 0x738
|
.debug_abbrev 0x00000000 0x73a
|
||||||
*(.debug_abbrev)
|
*(.debug_abbrev)
|
||||||
.debug_abbrev 0x00000000 0x41b C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny2313a/avr25/tiny-stack/crtattiny2313a.o
|
.debug_abbrev 0x00000000 0x41b C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny2313a/avr25/tiny-stack/crtattiny2313a.o
|
||||||
.debug_abbrev 0x0000041b 0xfe lcd4.o
|
.debug_abbrev 0x0000041b 0xfe lcd4.o
|
||||||
.debug_abbrev 0x00000519 0x72 lcd_wait.o
|
.debug_abbrev 0x00000519 0x72 lcd_wait.o
|
||||||
.debug_abbrev 0x0000058b 0x1ad main.o
|
.debug_abbrev 0x0000058b 0x1af main.o
|
||||||
|
|
||||||
.debug_line 0x00000000 0x61f
|
.debug_line 0x00000000 0x689
|
||||||
*(.debug_line .debug_line.* .debug_line_end)
|
*(.debug_line .debug_line.* .debug_line_end)
|
||||||
.debug_line 0x00000000 0x10c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny2313a/avr25/tiny-stack/crtattiny2313a.o
|
.debug_line 0x00000000 0x10c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny2313a/avr25/tiny-stack/crtattiny2313a.o
|
||||||
.debug_line 0x0000010c 0x291 lcd4.o
|
.debug_line 0x0000010c 0x291 lcd4.o
|
||||||
.debug_line 0x0000039d 0xbd lcd_wait.o
|
.debug_line 0x0000039d 0xbd lcd_wait.o
|
||||||
.debug_line 0x0000045a 0x1c5 main.o
|
.debug_line 0x0000045a 0x22f main.o
|
||||||
|
|
||||||
.debug_frame 0x00000000 0x154
|
.debug_frame 0x00000000 0x164
|
||||||
*(.debug_frame)
|
*(.debug_frame)
|
||||||
.debug_frame 0x00000000 0x9c lcd4.o
|
.debug_frame 0x00000000 0x9c lcd4.o
|
||||||
.debug_frame 0x0000009c 0x34 lcd_wait.o
|
.debug_frame 0x0000009c 0x34 lcd_wait.o
|
||||||
.debug_frame 0x000000d0 0x84 main.o
|
.debug_frame 0x000000d0 0x94 main.o
|
||||||
|
|
||||||
.debug_str 0x00000000 0x470
|
.debug_str 0x00000000 0x493
|
||||||
*(.debug_str)
|
*(.debug_str)
|
||||||
.debug_str 0x00000000 0x17b C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny2313a/avr25/tiny-stack/crtattiny2313a.o
|
.debug_str 0x00000000 0x17b C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny2313a/avr25/tiny-stack/crtattiny2313a.o
|
||||||
.debug_str 0x0000017b 0x1c0 lcd4.o
|
.debug_str 0x0000017b 0x1c0 lcd4.o
|
||||||
0x1fd (size before relaxing)
|
0x1fd (size before relaxing)
|
||||||
.debug_str 0x0000033b 0x10 lcd_wait.o
|
.debug_str 0x0000033b 0x10 lcd_wait.o
|
||||||
0x166 (size before relaxing)
|
0x166 (size before relaxing)
|
||||||
.debug_str 0x0000034b 0x125 main.o
|
.debug_str 0x0000034b 0x148 main.o
|
||||||
0x2d3 (size before relaxing)
|
0x2fe (size before relaxing)
|
||||||
|
|
||||||
.debug_loc 0x00000000 0x428
|
.debug_loc 0x00000000 0x470
|
||||||
*(.debug_loc)
|
*(.debug_loc)
|
||||||
.debug_loc 0x00000000 0x244 lcd4.o
|
.debug_loc 0x00000000 0x244 lcd4.o
|
||||||
.debug_loc 0x00000244 0x48 lcd_wait.o
|
.debug_loc 0x00000244 0x48 lcd_wait.o
|
||||||
.debug_loc 0x0000028c 0x19c main.o
|
.debug_loc 0x0000028c 0x1e4 main.o
|
||||||
|
|
||||||
.debug_macinfo
|
.debug_macinfo
|
||||||
*(.debug_macinfo)
|
*(.debug_macinfo)
|
||||||
|
|
|
@ -2,9 +2,9 @@ S01A0000417454696E795F616C61726D5F636C6F636B2E73726563DA
|
||||||
S113000014C02CC02BC02AC029C0A7C027C026C03A
|
S113000014C02CC02BC02AC029C0A7C027C026C03A
|
||||||
S113001025C024C023C022C021C020C01FC01EC0D0
|
S113001025C024C023C022C021C020C01FC01EC0D0
|
||||||
S11300201DC01CC01BC01AC019C011241FBECFEDB7
|
S11300201DC01CC01BC01AC019C011241FBECFEDB7
|
||||||
S1130030CDBF10E0A0E6B0E0E6EFF2E002C005902C
|
S1130030CDBF10E0A0E6B0E0E6EEF3E002C005902C
|
||||||
S11300400D92A237B107D9F720E0A2E7B0E001C0D2
|
S11300400D92A43BB107D9F720E0A4EBB0E001C0C6
|
||||||
S11300501D92A837B207E1F7F4D04BC1D1CFCF93AB
|
S11300501D92AC3BB207E1F7F5D0C3C1D1CFCF932A
|
||||||
S1130060C2E362D0C150E9F7CF910895CF93C62F70
|
S1130060C2E362D0C150E9F7CF910895CF93C62F70
|
||||||
S1130070843038F4823048F4882371F0813049F0B8
|
S1130070843038F4823048F4882371F0813049F0B8
|
||||||
S11300800CC0843051F4939808C04F73833009F442
|
S11300800CC0843051F4939808C04F73833009F442
|
||||||
|
@ -27,26 +27,45 @@ S1130180FF920F931F93CF937C01892B29F081E079
|
||||||
S1130190E816F10431F00AC06894EE24E1F8F12C79
|
S1130190E816F10431F00AC06894EE24E1F8F12C79
|
||||||
S11301A005C00F2EF3E0EF2EF12CF02D042F152FA8
|
S11301A005C00F2EF3E0EF2EF12CF02D042F152FA8
|
||||||
S11301B0C0E0F80161918F016F3519F04C2F8E2D3D
|
S11301B0C0E0F80161918F016F3519F04C2F8E2D3D
|
||||||
S11301C055DFCF5FC031A9F7CF911F910F91FF90F9
|
S11301C055DF4DDFCF5FC031A1F7CF911F910F9164
|
||||||
S11301D0EF90089520B3BC016F5F7F4F409177008B
|
S11301D0FF90EF90089520B3BC016F5F7F4F409173
|
||||||
S11301E0E1E0F0E0DF0102C0AA0FBB1F8A95E2F74D
|
S11301E0BB00E1E0F0E0DF0102C0AA0FBB1F8A956B
|
||||||
S11301F0CD01237030E051E02617370709F050E0B5
|
S11301F0E2F7CD01237030E051E02617370709F00C
|
||||||
S1130200242F30E028233923E1E0121613060CF0E2
|
S113020050E0242F30E028233923E1E012161306AE
|
||||||
S1130210E0E05E1799F020B3237030E062177307B3
|
S11302100CF0E0E05E1799F020B3237030E0621731
|
||||||
S113022031F4842B8093770081E090E008958095E9
|
S1130220730731F4842B8093BB0081E090E0089540
|
||||||
S113023048234093770080E090E0089580E090E0C8
|
S1130230809548234093BB0080E090E0089580E0DF
|
||||||
S1130240089511BA86EE99EF9DBD8CBD1FBC85E063
|
S113024090E00895CF93DF93CDB7DD27C054CDBFA1
|
||||||
S11302508EBD80E889BF7894C2E7D0E080917400B5
|
S113025011BA86EE99EF9DBD8CBD1FBC85E08EBDA5
|
||||||
S1130260882319F0813051F0FBCF109275003DDFE7
|
S113026080E889BF78940F2EF2E6EF2EF0E0FF2E9F
|
||||||
S113027081E036DF81E080937400F0CF81E08093E9
|
S1130270F02D06EB10E06894DD24D1F89091B900DC
|
||||||
S1130280750040E650E060E070E080E090E077DFE9
|
S11302808091B800981799F08093B90021E030E08C
|
||||||
S113029080E090E09FDF892B51F080917200909173
|
S11302903093B5002093B400309361002093600044
|
||||||
S11302A07300019690937300809372001DC081E0E7
|
S11302A08130F1F078F0823009F46DC0E7CF10921C
|
||||||
S11302B090E090DF892B51F080917200909173004F
|
S11302B0B5001092B400913069F020F0923009F446
|
||||||
S11302C0029690937300809372000EC082E090E0D7
|
S11302C062C0DCCF12DFCBDE81E00ADF81E0809305
|
||||||
S11302D081DF892B49F0809172009091730003961D
|
S11302D0B800D4CF8091600090916100892B41F1E6
|
||||||
S11302E090937300809372008881805D8093600096
|
S11302E0BEDE80E1E3E7F0E0DE01D19601900D92FD
|
||||||
S10902F0B5CFF894FFCF26
|
S11302F08A95E1F7AE014F5C5F4F60E070E080E00B
|
||||||
S11302F62048616C6C6F5F5F5F5F5F5F5F5F5F5F2E
|
S113030090E03DDFACDE80E1E3E8F0E0DE019196D1
|
||||||
S10503065F0092
|
S113031001900D928A95E1F7AE014F5D5F4F60E069
|
||||||
|
S113032070E081E090E02BDF109261001092600099
|
||||||
|
S113033080E090E050DF892B19F0D092B8001DC006
|
||||||
|
S113034081E090E048DF892B51F08091B6009091D4
|
||||||
|
S1130350B70002969093B7008093B6000EC082E077
|
||||||
|
S113036090E039DF892B49F08091B6009091B70075
|
||||||
|
S113037003969093B7008093B600F8018081805D66
|
||||||
|
S1130380F70180837BCF8091600090916100892B7D
|
||||||
|
S113039009F474CF80E1E3E9F0E0DE0151960190C5
|
||||||
|
S11303A00D928A95E1F7AE014F5E5F4F60E070E019
|
||||||
|
S11303B080E090E0E4DE80E1E3EAF0E0DE01119623
|
||||||
|
S11303C001900D928A95E1F7AE014F5F5F4F60E0B7
|
||||||
|
S11303D070E081E090E0D3DE109261001092600042
|
||||||
|
S10903E04DCFF894FFCF9D
|
||||||
|
S11303E601002048616C6C6F5F5F5F5F5F5F5F5FFA
|
||||||
|
S11303F65F5F5F5F5F5F5F5F5F74696D655F5F5FD0
|
||||||
|
S11304065F5F5F20202020202074696D65202020F6
|
||||||
|
S113041620202020205B616C61726D2074696D65FB
|
||||||
|
S11304265D20202020202020616C61726D203E20FA
|
||||||
|
S1070436202020005E
|
||||||
S9030000FC
|
S9030000FC
|
||||||
|
|
BIN
Debug/main.o
BIN
Debug/main.o
Binary file not shown.
52
main.c
52
main.c
|
@ -25,6 +25,9 @@ int counter = 0;
|
||||||
|
|
||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
|
|
||||||
|
int clock_state_changed = 0;
|
||||||
|
int update_display = 1;
|
||||||
|
|
||||||
ISR (TIMER1_OVF_vect) // Timer1 ISR
|
ISR (TIMER1_OVF_vect) // Timer1 ISR
|
||||||
{
|
{
|
||||||
//counter++;
|
//counter++;
|
||||||
|
@ -41,32 +44,46 @@ int main(void)
|
||||||
TCCR1B = (1<<CS10) | (1<<CS12);; // Timer mode with 1024 prescaler
|
TCCR1B = (1<<CS10) | (1<<CS12);; // Timer mode with 1024 prescaler
|
||||||
TIMSK = (1 << TOIE1) ; // Enable timer1 overflow interrupt(TOIE1)
|
TIMSK = (1 << TOIE1) ; // Enable timer1 overflow interrupt(TOIE1)
|
||||||
sei(); // Enable global interrupts by setting global interrupt enable bit in SREG
|
sei(); // Enable global interrupts by setting global interrupt enable bit in SREG
|
||||||
|
|
||||||
|
|
||||||
/* Replace with your application code */
|
/* Replace with your application code */
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
clock_state = clock_new_state;
|
if(clock_state != clock_new_state){
|
||||||
|
clock_state = clock_new_state;
|
||||||
|
clock_state_changed = 1;
|
||||||
|
update_display = 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
clock_state_changed = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
switch(clock_state){
|
switch(clock_state){
|
||||||
case CLOCK_INIT:
|
case CLOCK_INIT:
|
||||||
//do some init stuff...
|
//do some init stuff...
|
||||||
lcd_init(); //I know, it's just c but I don't care
|
lcd_init();
|
||||||
|
lcd_5ms();
|
||||||
lcd_instruct(lcd_DISPLAY_CLEAR);
|
lcd_instruct(lcd_DISPLAY_CLEAR);
|
||||||
//INIT done -> change to IDLE
|
//INIT done -> change to IDLE
|
||||||
clock_new_state = CLOCK_IDLE;
|
clock_new_state = CLOCK_IDLE;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CLOCK_IDLE:
|
case CLOCK_IDLE:
|
||||||
//IDLE MODE
|
//IDLE MODE
|
||||||
|
|
||||||
//print the IDLE Screen
|
//print the IDLE Screen
|
||||||
|
|
||||||
lcd_write_text(0,0,t1);
|
if(update_display){
|
||||||
|
lcd_5ms();
|
||||||
|
lcd_write_text(0,0,(uint8_t []){'_','_','_','_','_','_','t','i','m','e','_','_','_','_','_','_'});
|
||||||
|
lcd_5ms();
|
||||||
|
lcd_write_text(1,0,(uint8_t []){' ',' ',' ',' ',' ',' ','t','i','m','e',' ',' ',' ',' ',' ',' '});
|
||||||
|
update_display = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if(button_clicked(butt1)){
|
if(button_clicked(butt1)){
|
||||||
counter++;
|
clock_new_state = CLOCK_ALARM;
|
||||||
}
|
}
|
||||||
else if(button_clicked(butt2)){
|
else if(button_clicked(butt2)){
|
||||||
counter += 2;
|
counter += 2;
|
||||||
|
@ -79,11 +96,21 @@ int main(void)
|
||||||
t1[0] = counter + 48;
|
t1[0] = counter + 48;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CLOCK_ALARM:
|
||||||
|
//ALARM setup Mode
|
||||||
|
//print the ALARM screen
|
||||||
|
if(update_display){
|
||||||
|
lcd_write_text(0,0,(uint8_t []){' ',' ','[','a','l','a','r','m',' ','t','i','m','e',']',' ',' '});
|
||||||
|
lcd_write_text(1,0,(uint8_t []){' ',' ',' ',' ',' ','a','l','a','r','m',' ','>',' ',' ',' ',' '});
|
||||||
|
update_display = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_write_text(int row, int col, uint8_t text[16])
|
void lcd_write_text(int row, int col, uint8_t text[])
|
||||||
{
|
{
|
||||||
switch(row){
|
switch(row){
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -97,6 +124,7 @@ void lcd_write_text(int row, int col, uint8_t text[16])
|
||||||
if(text[i] != 0x5F){
|
if(text[i] != 0x5F){
|
||||||
lcd_write(row, text[i], 0+i);
|
lcd_write(row, text[i], 0+i);
|
||||||
}
|
}
|
||||||
|
lcd_5ms();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,12 +135,12 @@ int button_clicked(int button)
|
||||||
//check is the button has been pressed or released
|
//check is the button has been pressed or released
|
||||||
if((PIND & 0x03) == button+1){
|
if((PIND & 0x03) == button+1){
|
||||||
//button is high -> pressed
|
//button is high -> pressed
|
||||||
flags |= (1<<button);
|
flags |= (1<<button); //set bit
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
//button is low -> released
|
//button is low -> released
|
||||||
flags &= ~(1<<button);
|
flags &= ~(1<<button); //delete bit
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue