diff --git a/Timer-Zeit.xlsx b/Timer-Zeit.xlsx index f041011..d3d29f4 100644 Binary files a/Timer-Zeit.xlsx and b/Timer-Zeit.xlsx differ diff --git a/Timer/Timer.c b/Timer/Timer.c index 79369ef..1a63fd7 100644 --- a/Timer/Timer.c +++ b/Timer/Timer.c @@ -47,6 +47,8 @@ volatile uint8_t segs[] = { // 14,14,18,18,19,19,20,20}; volatile uint8_t frame[7] = {14,14, 14,14, 14,14,0}; uint8_t timer_delay = 0; +uint8_t type = 0; +uint8_t running = 0; void display(uint8_t z, uint8_t p) { uint8_t ddr = (segs[z]<<1); @@ -77,7 +79,9 @@ void beeb() { PORTD &= ~(1<< PD0); DDRA |= (1 << PA0); //PA0+ PORTA |= (1 << PA0); + //display(0,6); _delay_us(100); + //display(14,6); PORTA &= ~(1 << PA0); } @@ -86,40 +90,12 @@ void render() { display(frame[f],(5-f)+2); _delay_us(50); } + PORTB = 0; if(frame[6] == 1) { beeb(); } } -void timerdown(uint8_t min) { - frame[2] = min/10; - frame[3] = min%10; - frame[4] = 0; - frame[5] = 0; - cli(); - TCCR0A |= (1<254 Zählen - TIMSK |= (1<254 Zählen + TIMSK |= (1<254 Zählen + TIMSK |= (1<254 Zählen + TIMSK |= (1< 0) { + frame[5] = frame[5]--; } else { - frame[0] = 14; - frame[2] = 14; - frame[3] = 14; - frame[4] = 14; - frame[5] = 14; + frame[5] = 9; + if(frame[4] > 0) { + frame[4] = frame[4]--; + } else { + frame[4] = 5; + if(frame[3] > 0) { + frame[3] = frame[3]--; + } else { + frame[3] = 9; + if(frame[2] > 0) { + frame[2] = frame[2]--; + } else { + frame[2] = 9; + } + } + } } + frame[0] = (frame[0]==14)?11:14; + } else { + timer_delay++; } - render(); + break; } - frame[2] = 14; - frame[3] = 14; - frame[4] = 14; - frame[5] = 14; - for(uint8_t k=0;k<5+j;k++) { - render(); + case 2: { + if (timer_delay == 14) { //wenn Zustand mindestens 30x32,512ms = 0,97536sec. andauert + OCR0A = 82; //Restliche Sekunde abwarten + } + if(timer_delay == 15) { //wenn Zustand 1,00006400s gedauert hat ... 64µs Fehler! + timer_delay = 0; + OCR0A = 254; + running++; + } else { + timer_delay++; + } + if(timer_delay%3 == 2) + if(timer_delay%4 == 2) + frame[6] = (frame[6]==1)?0:1; + if(timer_delay%3 == 0) + if(timer_delay%4 == 0) + frame[6] = (frame[6]==1)?0:1; + break; + } + case 3: { + if (timer_delay == 29) { //wenn Zustand mindestens 30x32,512ms = 0,97536sec. andauert + OCR0A = 163; //Restliche Sekunde abwarten + } + if(timer_delay == 30) { //wenn Zustand 1,00006400s gedauert hat ... 64µs Fehler! + timer_delay = 0; + OCR0A = 254; + if(frame[5] < 9) { + frame[5] = frame[5]++; + } else { + frame[5] = 0; + if(frame[4] < 5) { + frame[4] = frame[4]++; + } else { + frame[4] = 0; + if(frame[3] < 9) { + frame[3] = frame[3]++; + } else { + frame[3] = 0; + if(frame[2] < 5) { + frame[2] = frame[2]++; + } else { + frame[2] = 0; + if(frame[1] < 9) { + frame[1] = frame[1]++; + } else { + frame[1] = 0; + } + } + } + } + } + frame[0] = (frame[0]==14)?11:14; + } else { + timer_delay++; + } + break; } } } -void weihnachten() { + + +int main(void) { + DDRB = 0; + + while(1){ + //Warten bis Startknopf + start(); + //Timer 20 nach unten + timerdown(30); + while(1) { + render(); + if(frame[2] == 0 && frame[3] == 0 && frame[4] == 0 && frame[5] == 0) { + TIMSK = 0; + break; + } + } + //Piepsen + endeblink(); + while(1) { + render(); + if(running >= 20) { + TIMSK = 0; + frame[6] = 0; + break; + } + } + //Timer UP 0,1 Min Start + timerup(0,10); + while(1) { + render(); + } + } +} + + +/*void weihnachten() { uint8_t text1[] = {18,19,20,21,15,14, //Frohe 22,23,15,24,21,16,25,26,21,27,15,16,14}; //Weihnachten frame[0] = 14; @@ -245,9 +305,9 @@ void weihnachten() { render(); } } -} +}*/ -void blink2013() { +/*void blink2013() { frame[0] = 14; frame[1] = 14; for(uint8_t i=0;i<30;i++) { @@ -266,86 +326,61 @@ void blink2013() { render(); } } -} +}*/ -ISR(TIMER0_COMPA_vect) -{ - if (timer_delay == 30) { //wenn Zustand mindestens 30x32,512ms = 0,97536sec. andauert - OCR0A = 193; //Restliche Sekunde abwarten - } - if(timer_delay == 31) { //wenn Zustand 1,00006400s gedauert hat ... 64µs Fehler! - timer_delay = 0; - OCR0A = 254; - if(frame[5] > 0) { - frame[5] = frame[5]--; - } else { - frame[5] = 9; - if(frame[4] > 0) { - frame[4] = frame[4]--; - } else { - frame[4] = 5; - if(frame[3] > 0) { - frame[3] = frame[3]--; - } else { - frame[3] = 9; - if(frame[2] > 0) { - frame[2] = frame[2]--; - } else { - frame[2] = 9; - } - } - } - } - frame[0] = (frame[0]==14)?11:14; - /*frame[2] = (uint8_t)((MIN-j)/10); - frame[3] = (uint8_t)((MIN-j)%10); - frame[4] = (uint8_t)((59-i)/10); - frame[5] = (uint8_t)((59-i)%10); - frame[0] = (i%2==0)?11:14;*/ - } else { - timer_delay++; - } - if(timer_delay%3 == 0) - frame[6] = (frame[6]==0)?1:0; -} - - - -int main(void) { - DDRB = 0; - - while(1){ - //Warten bis Startknopf - start(); - //Timer 20 nach unten - timerdown(1); - while(1) { - render(); - if(frame[2] == 0 && frame[3] == 0 && frame[4] == 0 && frame[5] == 0) { - TIMSK = 0; - break; - } - } - /*for(int i=0;i<5;i++) { - weihnachten(); - } - blink2013();*/ - //Lauflicht 10s; - //endelauflicht(); - //Lauflicht Rand 10s - //enderand(); - //Blinklicht - endeblink(); - frame[0] = 10; +/*void endelauflicht() { + frame[0] = 10; + for(uint8_t j=0;j<41;j++) { frame[2] = 15; - frame[3] = 16; - frame[4] = 17; - frame[5] = 15; - while(1) { - render(); + frame[3] = 14; + frame[4] = 14; + frame[5] = 14; + for(uint8_t k=0;k<5;k++) { + render(); + } + frame[2] = 14; + frame[3] = 16; + for(uint8_t k=0;k<5;k++) { + render(); + } + frame[3] = 14; + frame[4] = 17; + for(uint8_t k=0;k<5;k++) { + render(); + } + frame[4] = 14; + frame[5] = 15; + for(uint8_t k=0;k<5;k++) { + render(); } - //Timer UP 1Min Start - timerup(2);//*/ } -} +}*/ + +/*void enderand() { + frame[0] = 10; + for(uint8_t j=0;j<41;j++) { + frame[2] = 14; + frame[3] = 14; + frame[4] = 14; + frame[5] = 15; + for(uint8_t k=0;k<5;k++) { + render(); + } + frame[5] = 14; + frame[3] = 16; + for(uint8_t k=0;k<5;k++) { + render(); + } + frame[3] = 14; + frame[4] = 17; + for(uint8_t k=0;k<5;k++) { + render(); + } + frame[2] = 15; + frame[4] = 14; + for(uint8_t k=0;k<5;k++) { + render(); + } + } +}*/ diff --git a/Timer/default/Timer.eep b/Timer/default/Timer.eep index 295202a..44142d1 100644 --- a/Timer/default/Timer.eep +++ b/Timer/default/Timer.eep @@ -1,2 +1,2 @@ -:04000003000001FEFA +:040000030000016E8A :00000001FF diff --git a/Timer/default/Timer.elf b/Timer/default/Timer.elf index 9e3b810..cf9e5b6 100644 Binary files a/Timer/default/Timer.elf and b/Timer/default/Timer.elf differ diff --git a/Timer/default/Timer.hex b/Timer/default/Timer.hex index a1748b7..d3c9462 100644 --- a/Timer/default/Timer.hex +++ b/Timer/default/Timer.hex @@ -1,9 +1,9 @@ :1000000012C02AC029C028C027C026C025C024C0CD -:1000100023C022C021C020C01FC086C21DC01CC07A +:1000100023C022C021C020C01FC011C11DC01CC0F0 :100020001BC01AC019C011241FBECFEDCDBF10E0F8 -:10003000A0E6B0E0E6E7F6E002C005900D92A83930 -:10004000B107D9F710E0A8E9B0E001C01D92A939C5 -:10005000B107E1F7DBD20DC3D3CFE82FF0E0E05AD0 +:10003000A0E6B0E0E8E8F4E002C005900D92A63832 +:10004000B107D9F710E0A6E8B0E001C01D92A938C9 +:10005000B107E1F7E7D116C2D3CFE82FF0E0E05ABD :10006000FF4FA081AA0F7081770FE1E041E050E0DF :100070001FC08E2F90E02A2F30E00E2E02C0359543 :1000800027950A94E2F7019720FF08C09A0102C061 @@ -19,92 +19,60 @@ :10012000D89A87EC90E00197F1F700C00000D898CA :1001300008951F93CF93DF9317E0C0E0D0E0FE0156 :10014000E258FF4F8081612F88DF85E88A95F1F7BB -:10015000000021961150113091F780918400813078 -:1001600009F4DBDFDF91CF911F9108956AE075D22A -:1001700080938000909381001092820010928300FF -:10018000F89480B7826080BF83B7856083BF8EEFAD -:1001900086BF89B7816089BF78940895EF92FF92F6 -:1001A0000F931F939AE090937E00082F9AE0F92E08 -:1001B0001FC0802F6F2D51D28093800090938100BB -:1001C00010E0812F6F2D49D280938200909383009D -:1001D00010FF02C08EE001C08AE080937E0082E5BD -:1001E000E82EA7DFEA94E9F71F5F1C3351F70F5F92 -:1001F0000436F8F21F910F91FF90EF9008958C9ABA -:100200009498959A8FEF94E3ACE081509040A04091 -:10021000E1F700C000008599FECF0895DF92EF92CC -:10022000FF920F931F938AE080937E0009E24FE0D4 -:10023000F42E1EE030E1D32E21E1E22EF092800078 -:1002400010938100109382001093830072DF71DF9E -:1002500070DF6FDF6EDF10938000D092810069DF66 -:1002600068DF67DF66DF65DF10938100E092820060 -:1002700060DF5FDF5EDF5DDF5CDF10938200F092A6 -:10028000830057DF56DF55DF54DF53DF0150B1F6EF -:100290001F910F91FF90EF90DF900895DF92EF9202 -:1002A000FF920F931F938AE080937E0009E21EE085 -:1002B0007FE0F72E60E1D62E51E1E52E109380000D -:1002C0001093810010938200F092830032DF31DFBF -:1002D00030DF2FDF2EDF10938300D092810029DFE3 -:1002E00028DF27DF26DF25DF10938100E0928200E0 -:1002F00020DF1FDF1EDF1DDF1CDFF0928000109368 -:10030000820017DF16DF15DF14DF13DF0150B1F6AF -:100310001F910F91FF90EF90DF9008957F928F9241 -:100320009F92AF92BF92CF92DF92EF92FF920F9384 -:100330001F93CF93DF938AE080937E0006E010E066 -:10034000C0E0D0E02FE0C22E90E1A92E81E1B82ECE -:10035000B3E08B2EAEE0DA2EFAE09F2EC092800042 -:10036000A0928100B0928200C0928300EE2420C04F -:100370008E2D682D72D19923C9F4809180008E3022 -:1003800059F490927E00C0928000A0928100B092B9 -:100390008200C09283000AC0D0927E00D09280007A -:1003A000D0928100D0928200D0928300C2DEE3948A -:1003B0008E2D90E080179107DCF2D0928000D092D1 -:1003C0008100D0928200D09283007724E4E0EE2E68 -:1003D000F12CEC0EFD1E02C0ACDE7394872D90E074 -:1003E000E816F906CCF721960E5F1F4FCC32D105E7 -:1003F00009F0B4CFDF91CF911F910F91FF90EF9053 -:10040000DF90CF90BF90AF909F908F907F90089596 -:10041000EF92FF920F931F93DF93CF93CDB7DEB789 -:10042000C451CDBFDE011196E5E8F0E083E1019013 -:100430000D928150E1F78EE080937E0080937F00E3 -:10044000809380008093810080938200809383005A -:100450004CEF5EE0E52E8E010F5F1F4F22C09C0126 -:100460002F5F3F4F533148F4F801E50FF11D6081D4 -:1004700022583F4FF901608304C022583F4FF901D1 -:10048000E08201965F5F8530910549F73EE1F32EEA -:100490004C8B4FDEFA944C89FF20D1F74F5F4431EB -:1004A00021F0542F80E090E0DACFCC5ECDBFCF9129 -:1004B000DF911F910F91FF90EF900895CF92DF92FF -:1004C000EF92FF920F931F938EE080937E008093B4 -:1004D0007F000EE1F2E0CF2EDD24D394E3E0EE2E98 -:1004E0001EE0C092800010928100D0928200E092C3 -:1004F000830074E1F72E1DDEFA94E9F71093800073 -:1005000010938100109382001093830064E1F62E13 -:1005100010DEFA94E9F7015021F71F910F91FF9037 -:10052000EF90DF90CF9008951F920F920FB60F9229 -:1005300011246F937F938F939F93809198008E31B6 -:1005400011F481EC86BF809198008F3109F045C08D -:10055000109298008EEF86BF80918300882341F02F -:1005600080918300809383008150809383002BC00F -:1005700089E08093830090918200992341F08091DB -:100580008200809382008150809382001CC095E09D -:100590009093820090918100992341F08091810095 -:1005A000809381008150809381000DC080938100F1 -:1005B00090918000992329F08091800080938000A1 -:1005C00081508093800080917E008E3011F48BE00A -:1005D00001C08EE080937E0003C08F5F80939800FF -:1005E0008091980063E039D0992339F49091840088 -:1005F00081E0911180E0809384009F918F917F91A1 -:100600006F910F900FBE0F901F90189517BAF7DDDE -:1006100081E0ACDD8EDD809180008823D9F7809168 -:1006200081008823B9F780918200882399F780910F -:100630008300882379F719BE71DE8AE080937E00FB -:100640008FE08093800090E19093810091E19093FE -:100650008200809383006DDDFECF991B79E004C09A -:10066000991F961708F0961B881F7A95C9F78095F1 -:060670000895F894FFCF8D -:100676003F065B4F666D7D077F6F4070467600795B -:10068600375E71315C763C1E067739073E0F0E0EDB -:100696000E0E0E0E00121314150F0E16170F181548 -:0806A60010191A151B0F100EAC -:04000003000001FEFA +:10015000000021961150113091F718BA8091840057 +:10016000813009F4DADFDF91CF911F9108958C9AE5 +:100170009498959A8FEF94E3ACE081509040A04022 +:10018000E1F700C000008599FECF08956AE06ED1C6 +:1001900080938000909381001092820010928300DF +:1001A00081E080938700F89480B7826080BF83B736 +:1001B000856083BF8EEF86BF89B7816089BF7894E1 +:1001C0000895362F2AE0622F51D1809380009093BA +:1001D0008100832F4BD1809382009093830083E032 +:1001E00080938700F89480B7826080BF83B7856072 +:1001F00083BF8EEF86BF89B7816089BF78940895E9 +:100200008FE08093800090E19093810091E1909342 +:1002100082008093830081E08093840082E0809359 +:100220008700F89480B7826080BF83B7856083BF02 +:100230008EEF86BF89B7816089BF789408951F9239 +:100240000F920FB60F9211242F936F937F938F937A +:100250009F9380918700823009F446C0833009F46F +:1002600075C0813009F0D4C0809186008D3111F4C1 +:1002700083EA86BF809186008E3109F0C6C0109255 +:1002800086008EEF86BF80918300882331F08091B5 +:10029000830080938300815071C089E08093830044 +:1002A00090918200992331F08091820080938200A6 +:1002B000815072C095E090938200909181009923C3 +:1002C00031F08091810080938100815073C08093D0 +:1002D000810090918000992309F47AC08091800078 +:1002E00080938000815074C0809186008E3011F41C +:1002F00082E586BF809186008F3051F4109286008F +:100300008EEF86BF809188008F5F8093880003C046 +:100310008F5F8093860020918600822F63E0A6D0B5 +:10032000923029F42370223009F072C006C099235C +:1003300009F06EC0237009F06BC09091840081E0D9 +:10034000913009F480E08093840062C0809186003F +:100350008D3111F483EA86BF809186008E3109F0D9 +:1003600054C0109286008EEF86BF80918300893042 +:1003700040F480918300809383008F5F809383009B +:100380003AC01092830080918200853040F48091C1 +:100390008200809382008F5F809382002CC0109235 +:1003A000820080918100893040F4809181008093A7 +:1003B00081008F5F809381001EC010928100809128 +:1003C0008000853040F480918000809380008F5FB2 +:1003D0008093800010C01092800080917F0089304F +:1003E00040F480917F0080937F008F5F80937F0037 +:1003F00002C010927F0080917E008E3011F48BE05D +:1004000001C08EE080937E0003C08F5F80938600E2 +:100410009F918F917F916F912F910F900FBE0F90B1 +:100420001F90189517BAA3DE8EE1B0DE82DE8091B0 +:1004300080008823D9F7809181008823B9F78091C3 +:100440008200882399F780918300882379F719BE69 +:10045000D7DE6FDE809188008431D8F319BE109208 +:10046000840080E06AE0ADDE64DEFECF991B79E0B7 +:1004700004C0991F961708F0961B881F7A95C9F734 +:0804800080950895F894FFCF68 +:100488003F065B4F666D7D077F6F4070467600794B +:10049800375E71315C763C1E067739073E0F0E0ECB +:0604A8000E0E0E0E000016 +:040000030000016E8A :00000001FF diff --git a/Timer/default/Timer.lss b/Timer/default/Timer.lss index f6ed1ab..a4dd669 100644 --- a/Timer/default/Timer.lss +++ b/Timer/default/Timer.lss @@ -3,35 +3,33 @@ Timer.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .text 00000676 00000000 00000000 00000094 2**1 + 0 .text 00000488 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .data 00000038 00800060 00000676 0000070a 2**0 + 1 .data 00000026 00800060 00000488 0000051c 2**0 CONTENTS, ALLOC, LOAD, DATA - 2 .bss 00000001 00800098 00800098 00000742 2**0 + 2 .bss 00000003 00800086 00800086 00000542 2**0 ALLOC - 3 .stab 000006b4 00000000 00000000 00000744 2**2 + 3 .stab 000006b4 00000000 00000000 00000544 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 00000085 00000000 00000000 00000df8 2**0 + 4 .stabstr 00000085 00000000 00000000 00000bf8 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_aranges 00000020 00000000 00000000 00000e7d 2**0 + 5 .debug_aranges 00000020 00000000 00000000 00000c7d 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_pubnames 000000dd 00000000 00000000 00000e9d 2**0 + 6 .debug_pubnames 000000b5 00000000 00000000 00000c9d 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 000006eb 00000000 00000000 00000f7a 2**0 + 7 .debug_info 00000480 00000000 00000000 00000d52 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 000001f5 00000000 00000000 00001665 2**0 + 8 .debug_abbrev 000001d4 00000000 00000000 000011d2 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 000008d7 00000000 00000000 0000185a 2**0 + 9 .debug_line 0000060f 00000000 00000000 000013a6 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 000000e0 00000000 00000000 00002134 2**2 + 10 .debug_frame 000000a0 00000000 00000000 000019b8 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00000185 00000000 00000000 00002214 2**0 + 11 .debug_str 0000015f 00000000 00000000 00001a58 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 00000503 00000000 00000000 00002399 2**0 + 12 .debug_loc 0000011b 00000000 00000000 00001bb7 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_pubtypes 00000038 00000000 00000000 0000289c 2**0 - CONTENTS, READONLY, DEBUGGING - 14 .debug_ranges 00000018 00000000 00000000 000028d4 2**0 + 13 .debug_pubtypes 00000038 00000000 00000000 00001cd2 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -50,7 +48,7 @@ Disassembly of section .text: 14: 21 c0 rjmp .+66 ; 0x58 <__bad_interrupt> 16: 20 c0 rjmp .+64 ; 0x58 <__bad_interrupt> 18: 1f c0 rjmp .+62 ; 0x58 <__bad_interrupt> - 1a: 86 c2 rjmp .+1292 ; 0x528 <__vector_13> + 1a: 11 c1 rjmp .+546 ; 0x23e <__vector_13> 1c: 1d c0 rjmp .+58 ; 0x58 <__bad_interrupt> 1e: 1c c0 rjmp .+56 ; 0x58 <__bad_interrupt> 20: 1b c0 rjmp .+54 ; 0x58 <__bad_interrupt> @@ -67,18 +65,18 @@ Disassembly of section .text: 2e: 10 e0 ldi r17, 0x00 ; 0 30: a0 e6 ldi r26, 0x60 ; 96 32: b0 e0 ldi r27, 0x00 ; 0 - 34: e6 e7 ldi r30, 0x76 ; 118 - 36: f6 e0 ldi r31, 0x06 ; 6 + 34: e8 e8 ldi r30, 0x88 ; 136 + 36: f4 e0 ldi r31, 0x04 ; 4 38: 02 c0 rjmp .+4 ; 0x3e <__SP_H__> 3a: 05 90 lpm r0, Z+ 3c: 0d 92 st X+, r0 - 3e: a8 39 cpi r26, 0x98 ; 152 + 3e: a6 38 cpi r26, 0x86 ; 134 40: b1 07 cpc r27, r17 42: d9 f7 brne .-10 ; 0x3a <__CCP__+0x6> 00000044 <__do_clear_bss>: 44: 10 e0 ldi r17, 0x00 ; 0 - 46: a8 e9 ldi r26, 0x98 ; 152 + 46: a6 e8 ldi r26, 0x86 ; 134 48: b0 e0 ldi r27, 0x00 ; 0 4a: 01 c0 rjmp .+2 ; 0x4e <.do_clear_bss_start> @@ -86,19 +84,19 @@ Disassembly of section .text: 4c: 1d 92 st X+, r1 0000004e <.do_clear_bss_start>: - 4e: a9 39 cpi r26, 0x99 ; 153 + 4e: a9 38 cpi r26, 0x89 ; 137 50: b1 07 cpc r27, r17 52: e1 f7 brne .-8 ; 0x4c <.do_clear_bss_loop> - 54: db d2 rcall .+1462 ; 0x60c
- 56: 0d c3 rjmp .+1562 ; 0x672 <_exit> + 54: e7 d1 rcall .+974 ; 0x424
+ 56: 16 c2 rjmp .+1068 ; 0x484 <_exit> 00000058 <__bad_interrupt>: 58: d3 cf rjmp .-90 ; 0x0 <__vectors> 0000005a : - // 14,14,18,18,19,19,20,20}; -volatile uint8_t frame[7] = {14,14, 14,14, 14,14,0}; uint8_t timer_delay = 0; +uint8_t type = 0; +uint8_t running = 0; void display(uint8_t z, uint8_t p) { uint8_t ddr = (segs[z]<<1); @@ -119,7 +117,7 @@ void display(uint8_t z, uint8_t p) { ddr &= ~(1<<(i-1)); 6c: 41 e0 ldi r20, 0x01 ; 1 6e: 50 e0 ldi r21, 0x00 ; 0 -uint8_t timer_delay = 0; +uint8_t running = 0; void display(uint8_t z, uint8_t p) { uint8_t ddr = (segs[z]<<1); @@ -160,7 +158,7 @@ void display(uint8_t z, uint8_t p) { a8: c9 01 movw r24, r18 aa: 80 95 com r24 ac: a8 23 and r26, r24 -uint8_t timer_delay = 0; +uint8_t running = 0; void display(uint8_t z, uint8_t p) { uint8_t ddr = (segs[z]<<1); @@ -276,7 +274,9 @@ void beeb() { 128: f1 f7 brne .-4 ; 0x126 12a: 00 c0 rjmp .+0 ; 0x12c 12c: 00 00 nop + //display(0,6); _delay_us(100); + //display(14,6); PORTA &= ~(1 << PA0); 12e: d8 98 cbi 0x1b, 0 ; 27 } @@ -305,7 +305,7 @@ void render() { 150: 00 00 nop 152: 21 96 adiw r28, 0x01 ; 1 154: 11 50 subi r17, 0x01 ; 1 - _delay_us(100); + //display(14,6); PORTA &= ~(1 << PA0); } @@ -316,1057 +316,536 @@ void render() { display(frame[f],(5-f)+2); _delay_us(50); } + PORTB = 0; + 15a: 18 ba out 0x18, r1 ; 24 if(frame[6] == 1) { - 15a: 80 91 84 00 lds r24, 0x0084 - 15e: 81 30 cpi r24, 0x01 ; 1 - 160: 09 f4 brne .+2 ; 0x164 + 15c: 80 91 84 00 lds r24, 0x0084 + 160: 81 30 cpi r24, 0x01 ; 1 + 162: 09 f4 brne .+2 ; 0x166 beeb(); - 162: db df rcall .-74 ; 0x11a + 164: da df rcall .-76 ; 0x11a } } - 164: df 91 pop r29 - 166: cf 91 pop r28 - 168: 1f 91 pop r17 - 16a: 08 95 ret + 166: df 91 pop r29 + 168: cf 91 pop r28 + 16a: 1f 91 pop r17 + 16c: 08 95 ret -0000016c : - -void timerdown(uint8_t min) { - frame[2] = min/10; - 16c: 6a e0 ldi r22, 0x0A ; 10 - 16e: 75 d2 rcall .+1258 ; 0x65a <__udivmodqi4> - 170: 80 93 80 00 sts 0x0080, r24 - frame[3] = min%10; - 174: 90 93 81 00 sts 0x0081, r25 - frame[4] = 0; - 178: 10 92 82 00 sts 0x0082, r1 - frame[5] = 0; - 17c: 10 92 83 00 sts 0x0083, r1 - cli(); - 180: f8 94 cli - TCCR0A |= (1<254 Zählen - 18e: 8e ef ldi r24, 0xFE ; 254 - 190: 86 bf out 0x36, r24 ; 54 - TIMSK |= (1<: - -void timerup(uint8_t min) { - 19c: ef 92 push r14 - 19e: ff 92 push r15 - 1a0: 0f 93 push r16 - 1a2: 1f 93 push r17 - frame[0] = 10; - 1a4: 9a e0 ldi r25, 0x0A ; 10 - 1a6: 90 93 7e 00 sts 0x007E, r25 - for(uint8_t j=min;j<=99;j++) { - 1aa: 08 2f mov r16, r24 - frame[2] = (uint8_t)(j/10); - 1ac: 9a e0 ldi r25, 0x0A ; 10 - 1ae: f9 2e mov r15, r25 - sei(); -} - -void timerup(uint8_t min) { - frame[0] = 10; - for(uint8_t j=min;j<=99;j++) { - 1b0: 1f c0 rjmp .+62 ; 0x1f0 - frame[2] = (uint8_t)(j/10); - 1b2: 80 2f mov r24, r16 - 1b4: 6f 2d mov r22, r15 - 1b6: 51 d2 rcall .+1186 ; 0x65a <__udivmodqi4> - 1b8: 80 93 80 00 sts 0x0080, r24 - frame[3] = (uint8_t)(j%10); - 1bc: 90 93 81 00 sts 0x0081, r25 - for(uint8_t i=0;i<=59;i++) { - 1c0: 10 e0 ldi r17, 0x00 ; 0 - frame[4] = (uint8_t)(i/10); - 1c2: 81 2f mov r24, r17 - 1c4: 6f 2d mov r22, r15 - 1c6: 49 d2 rcall .+1170 ; 0x65a <__udivmodqi4> - 1c8: 80 93 82 00 sts 0x0082, r24 - frame[5] = (uint8_t)(i%10); - 1cc: 90 93 83 00 sts 0x0083, r25 - frame[0] = (i%2==0)?10:14; - 1d0: 10 ff sbrs r17, 0 - 1d2: 02 c0 rjmp .+4 ; 0x1d8 - 1d4: 8e e0 ldi r24, 0x0E ; 14 - 1d6: 01 c0 rjmp .+2 ; 0x1da - 1d8: 8a e0 ldi r24, 0x0A ; 10 - 1da: 80 93 7e 00 sts 0x007E, r24 - 1de: 82 e5 ldi r24, 0x52 ; 82 - 1e0: e8 2e mov r14, r24 - for(uint8_t k=0;k<82;k++) { - render(); - 1e2: a7 df rcall .-178 ; 0x132 - 1e4: ea 94 dec r14 - frame[3] = (uint8_t)(j%10); - for(uint8_t i=0;i<=59;i++) { - frame[4] = (uint8_t)(i/10); - frame[5] = (uint8_t)(i%10); - frame[0] = (i%2==0)?10:14; - for(uint8_t k=0;k<82;k++) { - 1e6: e9 f7 brne .-6 ; 0x1e2 -void timerup(uint8_t min) { - frame[0] = 10; - for(uint8_t j=min;j<=99;j++) { - frame[2] = (uint8_t)(j/10); - frame[3] = (uint8_t)(j%10); - for(uint8_t i=0;i<=59;i++) { - 1e8: 1f 5f subi r17, 0xFF ; 255 - 1ea: 1c 33 cpi r17, 0x3C ; 60 - 1ec: 51 f7 brne .-44 ; 0x1c2 - sei(); -} - -void timerup(uint8_t min) { - frame[0] = 10; - for(uint8_t j=min;j<=99;j++) { - 1ee: 0f 5f subi r16, 0xFF ; 255 - 1f0: 04 36 cpi r16, 0x64 ; 100 - 1f2: f8 f2 brcs .-66 ; 0x1b2 - for(uint8_t k=0;k<82;k++) { - render(); - } - } - } -} - 1f4: 1f 91 pop r17 - 1f6: 0f 91 pop r16 - 1f8: ff 90 pop r15 - 1fa: ef 90 pop r14 - 1fc: 08 95 ret - -000001fe : +0000016e : void start() { DDRD |= (1< - 212: 00 c0 rjmp .+0 ; 0x214 - 214: 00 00 nop + 174: 8f ef ldi r24, 0xFF ; 255 + 176: 94 e3 ldi r25, 0x34 ; 52 + 178: ac e0 ldi r26, 0x0C ; 12 + 17a: 81 50 subi r24, 0x01 ; 1 + 17c: 90 40 sbci r25, 0x00 ; 0 + 17e: a0 40 sbci r26, 0x00 ; 0 + 180: e1 f7 brne .-8 ; 0x17a + 182: 00 c0 rjmp .+0 ; 0x184 + 184: 00 00 nop _delay_ms(500); while(1) { if (!(PIND & (1< + 186: 85 99 sbic 0x10, 5 ; 16 + 188: fe cf rjmp .-4 ; 0x186 break; } } } - 21a: 08 95 ret + 18a: 08 95 ret -0000021c : +0000018c : -void endelauflicht() { - 21c: df 92 push r13 - 21e: ef 92 push r14 - 220: ff 92 push r15 - 222: 0f 93 push r16 - 224: 1f 93 push r17 - frame[0] = 10; - 226: 8a e0 ldi r24, 0x0A ; 10 - 228: 80 93 7e 00 sts 0x007E, r24 - 22c: 09 e2 ldi r16, 0x29 ; 41 - for(uint8_t j=0;j<41;j++) { - frame[2] = 15; - 22e: 4f e0 ldi r20, 0x0F ; 15 - 230: f4 2e mov r15, r20 - frame[3] = 14; - 232: 1e e0 ldi r17, 0x0E ; 14 - frame[5] = 14; - for(uint8_t k=0;k<5;k++) { - render(); - } - frame[2] = 14; - frame[3] = 16; - 234: 30 e1 ldi r19, 0x10 ; 16 - 236: d3 2e mov r13, r19 - for(uint8_t k=0;k<5;k++) { - render(); - } - frame[3] = 14; - frame[4] = 17; - 238: 21 e1 ldi r18, 0x11 ; 17 - 23a: e2 2e mov r14, r18 +void timerdown(uint8_t min) { + frame[2] = min/10; + 18c: 6a e0 ldi r22, 0x0A ; 10 + 18e: 6e d1 rcall .+732 ; 0x46c <__udivmodqi4> + 190: 80 93 80 00 sts 0x0080, r24 + frame[3] = min%10; + 194: 90 93 81 00 sts 0x0081, r25 + frame[4] = 0; + 198: 10 92 82 00 sts 0x0082, r1 + frame[5] = 0; + 19c: 10 92 83 00 sts 0x0083, r1 + type = 1; + 1a0: 81 e0 ldi r24, 0x01 ; 1 + 1a2: 80 93 87 00 sts 0x0087, r24 + cli(); + 1a6: f8 94 cli + TCCR0A |= (1<254 Zählen + 1b4: 8e ef ldi r24, 0xFE ; 254 + 1b6: 86 bf out 0x36, r24 ; 54 + TIMSK |= (1< - 24e: 71 df rcall .-286 ; 0x132 - 250: 70 df rcall .-288 ; 0x132 - 252: 6f df rcall .-290 ; 0x132 - 254: 6e df rcall .-292 ; 0x132 - } - frame[2] = 14; - 256: 10 93 80 00 sts 0x0080, r17 - frame[3] = 16; - 25a: d0 92 81 00 sts 0x0081, r13 - for(uint8_t k=0;k<5;k++) { - render(); - 25e: 69 df rcall .-302 ; 0x132 - 260: 68 df rcall .-304 ; 0x132 - 262: 67 df rcall .-306 ; 0x132 - 264: 66 df rcall .-308 ; 0x132 - 266: 65 df rcall .-310 ; 0x132 - } - frame[3] = 14; - 268: 10 93 81 00 sts 0x0081, r17 - frame[4] = 17; - 26c: e0 92 82 00 sts 0x0082, r14 - for(uint8_t k=0;k<5;k++) { - render(); - 270: 60 df rcall .-320 ; 0x132 - 272: 5f df rcall .-322 ; 0x132 - 274: 5e df rcall .-324 ; 0x132 - 276: 5d df rcall .-326 ; 0x132 - 278: 5c df rcall .-328 ; 0x132 - } - frame[4] = 14; - 27a: 10 93 82 00 sts 0x0082, r17 - frame[5] = 15; - 27e: f0 92 83 00 sts 0x0083, r15 - for(uint8_t k=0;k<5;k++) { - render(); - 282: 57 df rcall .-338 ; 0x132 - 284: 56 df rcall .-340 ; 0x132 - 286: 55 df rcall .-342 ; 0x132 - 288: 54 df rcall .-344 ; 0x132 - 28a: 53 df rcall .-346 ; 0x132 - 28c: 01 50 subi r16, 0x01 ; 1 - } +000001c2 : + +void timerup(uint8_t min, uint8_t sec) { + 1c2: 36 2f mov r19, r22 + frame[2] = min/10; + 1c4: 2a e0 ldi r18, 0x0A ; 10 + 1c6: 62 2f mov r22, r18 + 1c8: 51 d1 rcall .+674 ; 0x46c <__udivmodqi4> + 1ca: 80 93 80 00 sts 0x0080, r24 + frame[3] = min%10; + 1ce: 90 93 81 00 sts 0x0081, r25 + frame[4] = sec/10; + 1d2: 83 2f mov r24, r19 + 1d4: 4b d1 rcall .+662 ; 0x46c <__udivmodqi4> + 1d6: 80 93 82 00 sts 0x0082, r24 + frame[5] = sec%10; + 1da: 90 93 83 00 sts 0x0083, r25 + type = 3; + 1de: 83 e0 ldi r24, 0x03 ; 3 + 1e0: 80 93 87 00 sts 0x0087, r24 + cli(); + 1e4: f8 94 cli + TCCR0A |= (1<254 Zählen + 1f2: 8e ef ldi r24, 0xFE ; 254 + 1f4: 86 bf out 0x36, r24 ; 54 + TIMSK |= (1< - frame[5] = 15; - for(uint8_t k=0;k<5;k++) { - render(); - } - } -} - 290: 1f 91 pop r17 - 292: 0f 91 pop r16 - 294: ff 90 pop r15 - 296: ef 90 pop r14 - 298: df 90 pop r13 - 29a: 08 95 ret - -0000029c : - -void enderand() { - 29c: df 92 push r13 - 29e: ef 92 push r14 - 2a0: ff 92 push r15 - 2a2: 0f 93 push r16 - 2a4: 1f 93 push r17 - frame[0] = 10; - 2a6: 8a e0 ldi r24, 0x0A ; 10 - 2a8: 80 93 7e 00 sts 0x007E, r24 - 2ac: 09 e2 ldi r16, 0x29 ; 41 - for(uint8_t j=0;j<41;j++) { - frame[2] = 14; - 2ae: 1e e0 ldi r17, 0x0E ; 14 - frame[3] = 14; - frame[4] = 14; - frame[5] = 15; - 2b0: 7f e0 ldi r23, 0x0F ; 15 - 2b2: f7 2e mov r15, r23 - for(uint8_t k=0;k<5;k++) { - render(); - } - frame[5] = 14; - frame[3] = 16; - 2b4: 60 e1 ldi r22, 0x10 ; 16 - 2b6: d6 2e mov r13, r22 - for(uint8_t k=0;k<5;k++) { - render(); - } - frame[3] = 14; - frame[4] = 17; - 2b8: 51 e1 ldi r21, 0x11 ; 17 - 2ba: e5 2e mov r14, r21 -} - -void enderand() { - frame[0] = 10; - for(uint8_t j=0;j<41;j++) { - frame[2] = 14; - 2bc: 10 93 80 00 sts 0x0080, r17 - frame[3] = 14; - 2c0: 10 93 81 00 sts 0x0081, r17 - frame[4] = 14; - 2c4: 10 93 82 00 sts 0x0082, r17 - frame[5] = 15; - 2c8: f0 92 83 00 sts 0x0083, r15 - for(uint8_t k=0;k<5;k++) { - render(); - 2cc: 32 df rcall .-412 ; 0x132 - 2ce: 31 df rcall .-414 ; 0x132 - 2d0: 30 df rcall .-416 ; 0x132 - 2d2: 2f df rcall .-418 ; 0x132 - 2d4: 2e df rcall .-420 ; 0x132 - } - frame[5] = 14; - 2d6: 10 93 83 00 sts 0x0083, r17 - frame[3] = 16; - 2da: d0 92 81 00 sts 0x0081, r13 - for(uint8_t k=0;k<5;k++) { - render(); - 2de: 29 df rcall .-430 ; 0x132 - 2e0: 28 df rcall .-432 ; 0x132 - 2e2: 27 df rcall .-434 ; 0x132 - 2e4: 26 df rcall .-436 ; 0x132 - 2e6: 25 df rcall .-438 ; 0x132 - } - frame[3] = 14; - 2e8: 10 93 81 00 sts 0x0081, r17 - frame[4] = 17; - 2ec: e0 92 82 00 sts 0x0082, r14 - for(uint8_t k=0;k<5;k++) { - render(); - 2f0: 20 df rcall .-448 ; 0x132 - 2f2: 1f df rcall .-450 ; 0x132 - 2f4: 1e df rcall .-452 ; 0x132 - 2f6: 1d df rcall .-454 ; 0x132 - 2f8: 1c df rcall .-456 ; 0x132 - } - frame[2] = 15; - 2fa: f0 92 80 00 sts 0x0080, r15 - frame[4] = 14; - 2fe: 10 93 82 00 sts 0x0082, r17 - for(uint8_t k=0;k<5;k++) { - render(); - 302: 17 df rcall .-466 ; 0x132 - 304: 16 df rcall .-468 ; 0x132 - 306: 15 df rcall .-470 ; 0x132 - 308: 14 df rcall .-472 ; 0x132 - 30a: 13 df rcall .-474 ; 0x132 - 30c: 01 50 subi r16, 0x01 ; 1 - } -} - -void enderand() { - frame[0] = 10; - for(uint8_t j=0;j<41;j++) { - 30e: b1 f6 brne .-84 ; 0x2bc - frame[4] = 14; - for(uint8_t k=0;k<5;k++) { - render(); - } - } -} - 310: 1f 91 pop r17 - 312: 0f 91 pop r16 - 314: ff 90 pop r15 - 316: ef 90 pop r14 - 318: df 90 pop r13 - 31a: 08 95 ret - -0000031c : +00000200 : void endeblink() { - 31c: 7f 92 push r7 - 31e: 8f 92 push r8 - 320: 9f 92 push r9 - 322: af 92 push r10 - 324: bf 92 push r11 - 326: cf 92 push r12 - 328: df 92 push r13 - 32a: ef 92 push r14 - 32c: ff 92 push r15 - 32e: 0f 93 push r16 - 330: 1f 93 push r17 - 332: cf 93 push r28 - 334: df 93 push r29 - frame[0] = 10; - 336: 8a e0 ldi r24, 0x0A ; 10 - 338: 80 93 7e 00 sts 0x007E, r24 - 33c: 06 e0 ldi r16, 0x06 ; 6 - 33e: 10 e0 ldi r17, 0x00 ; 0 - 340: c0 e0 ldi r28, 0x00 ; 0 - 342: d0 e0 ldi r29, 0x00 ; 0 - for(uint8_t j=0;j<44;j++) { - frame[2] = 15; - 344: 2f e0 ldi r18, 0x0F ; 15 - 346: c2 2e mov r12, r18 - frame[3] = 16; - 348: 90 e1 ldi r25, 0x10 ; 16 - 34a: a9 2e mov r10, r25 - frame[4] = 17; - 34c: 81 e1 ldi r24, 0x11 ; 17 - 34e: b8 2e mov r11, r24 - frame[5] = 15; - for(uint8_t k=0;k<6+(j*2);k++) { - if(k%3==0) { - 350: b3 e0 ldi r27, 0x03 ; 3 - 352: 8b 2e mov r8, r27 - frame[2] = 15; - frame[3] = 16; - frame[4] = 17; - frame[5] = 15; - } else { - frame[0] = 14; - 354: ae e0 ldi r26, 0x0E ; 14 - 356: da 2e mov r13, r26 - frame[4] = 17; - frame[5] = 15; - for(uint8_t k=0;k<6+(j*2);k++) { - if(k%3==0) { - if(frame[2] == 14) { - frame[0] = 10; - 358: fa e0 ldi r31, 0x0A ; 10 - 35a: 9f 2e mov r9, r31 + frame[2] = 15; + 200: 8f e0 ldi r24, 0x0F ; 15 + 202: 80 93 80 00 sts 0x0080, r24 + frame[3] = 16; + 206: 90 e1 ldi r25, 0x10 ; 16 + 208: 90 93 81 00 sts 0x0081, r25 + frame[4] = 17; + 20c: 91 e1 ldi r25, 0x11 ; 17 + 20e: 90 93 82 00 sts 0x0082, r25 + frame[5] = 15; + 212: 80 93 83 00 sts 0x0083, r24 + frame[6] = 1; + 216: 81 e0 ldi r24, 0x01 ; 1 + 218: 80 93 84 00 sts 0x0084, r24 + type = 2; + 21c: 82 e0 ldi r24, 0x02 ; 2 + 21e: 80 93 87 00 sts 0x0087, r24 + cli(); + 222: f8 94 cli + TCCR0A |= (1<254 Zählen + 230: 8e ef ldi r24, 0xFE ; 254 + 232: 86 bf out 0x36, r24 ; 54 + TIMSK |= (1< - if(k%3==0) { - 370: 8e 2d mov r24, r14 - 372: 68 2d mov r22, r8 - 374: 72 d1 rcall .+740 ; 0x65a <__udivmodqi4> - 376: 99 23 and r25, r25 - 378: c9 f4 brne .+50 ; 0x3ac - if(frame[2] == 14) { - 37a: 80 91 80 00 lds r24, 0x0080 - 37e: 8e 30 cpi r24, 0x0E ; 14 - 380: 59 f4 brne .+22 ; 0x398 - frame[0] = 10; - 382: 90 92 7e 00 sts 0x007E, r9 - frame[2] = 15; - 386: c0 92 80 00 sts 0x0080, r12 - frame[3] = 16; - 38a: a0 92 81 00 sts 0x0081, r10 - frame[4] = 17; - 38e: b0 92 82 00 sts 0x0082, r11 - frame[5] = 15; - 392: c0 92 83 00 sts 0x0083, r12 - 396: 0a c0 rjmp .+20 ; 0x3ac - } else { - frame[0] = 14; - 398: d0 92 7e 00 sts 0x007E, r13 - frame[2] = 14; - 39c: d0 92 80 00 sts 0x0080, r13 - frame[3] = 14; - 3a0: d0 92 81 00 sts 0x0081, r13 - frame[4] = 14; - 3a4: d0 92 82 00 sts 0x0082, r13 - frame[5] = 14; - 3a8: d0 92 83 00 sts 0x0083, r13 - } - } - render(); - 3ac: c2 de rcall .-636 ; 0x132 - for(uint8_t j=0;j<44;j++) { - frame[2] = 15; - frame[3] = 16; - frame[4] = 17; - frame[5] = 15; - for(uint8_t k=0;k<6+(j*2);k++) { - 3ae: e3 94 inc r14 - 3b0: 8e 2d mov r24, r14 - 3b2: 90 e0 ldi r25, 0x00 ; 0 - 3b4: 80 17 cp r24, r16 - 3b6: 91 07 cpc r25, r17 - 3b8: dc f2 brlt .-74 ; 0x370 - frame[5] = 14; - } - } - render(); - } - frame[2] = 14; - 3ba: d0 92 80 00 sts 0x0080, r13 - frame[3] = 14; - 3be: d0 92 81 00 sts 0x0081, r13 - frame[4] = 14; - 3c2: d0 92 82 00 sts 0x0082, r13 - frame[5] = 14; - 3c6: d0 92 83 00 sts 0x0083, r13 - for(uint8_t k=0;k<5+j;k++) { - 3ca: 77 24 eor r7, r7 - render(); - } - } -} - -void endeblink() { - 3cc: e4 e0 ldi r30, 0x04 ; 4 - 3ce: ee 2e mov r14, r30 - 3d0: f1 2c mov r15, r1 - 3d2: ec 0e add r14, r28 - 3d4: fd 1e adc r15, r29 - } - frame[2] = 14; - frame[3] = 14; - frame[4] = 14; - frame[5] = 14; - for(uint8_t k=0;k<5+j;k++) { - 3d6: 02 c0 rjmp .+4 ; 0x3dc - render(); - 3d8: ac de rcall .-680 ; 0x132 - } - frame[2] = 14; - frame[3] = 14; - frame[4] = 14; - frame[5] = 14; - for(uint8_t k=0;k<5+j;k++) { - 3da: 73 94 inc r7 - 3dc: 87 2d mov r24, r7 - 3de: 90 e0 ldi r25, 0x00 ; 0 - 3e0: e8 16 cp r14, r24 - 3e2: f9 06 cpc r15, r25 - 3e4: cc f7 brge .-14 ; 0x3d8 - 3e6: 21 96 adiw r28, 0x01 ; 1 - 3e8: 0e 5f subi r16, 0xFE ; 254 - 3ea: 1f 4f sbci r17, 0xFF ; 255 - } -} - -void endeblink() { - frame[0] = 10; - for(uint8_t j=0;j<44;j++) { - 3ec: cc 32 cpi r28, 0x2C ; 44 - 3ee: d1 05 cpc r29, r1 - 3f0: 09 f0 breq .+2 ; 0x3f4 - 3f2: b4 cf rjmp .-152 ; 0x35c - frame[5] = 14; - for(uint8_t k=0;k<5+j;k++) { - render(); - } - } -} - 3f4: df 91 pop r29 - 3f6: cf 91 pop r28 - 3f8: 1f 91 pop r17 - 3fa: 0f 91 pop r16 - 3fc: ff 90 pop r15 - 3fe: ef 90 pop r14 - 400: df 90 pop r13 - 402: cf 90 pop r12 - 404: bf 90 pop r11 - 406: af 90 pop r10 - 408: 9f 90 pop r9 - 40a: 8f 90 pop r8 - 40c: 7f 90 pop r7 - 40e: 08 95 ret - -00000410 : - -void weihnachten() { - 410: ef 92 push r14 - 412: ff 92 push r15 - 414: 0f 93 push r16 - 416: 1f 93 push r17 - 418: df 93 push r29 - 41a: cf 93 push r28 - 41c: cd b7 in r28, 0x3d ; 61 - 41e: de b7 in r29, 0x3e ; 62 - 420: c4 51 subi r28, 0x14 ; 20 - 422: cd bf out 0x3d, r28 ; 61 - uint8_t text1[] = {18,19,20,21,15,14, //Frohe - 424: de 01 movw r26, r28 - 426: 11 96 adiw r26, 0x01 ; 1 - 428: e5 e8 ldi r30, 0x85 ; 133 - 42a: f0 e0 ldi r31, 0x00 ; 0 - 42c: 83 e1 ldi r24, 0x13 ; 19 - 42e: 01 90 ld r0, Z+ - 430: 0d 92 st X+, r0 - 432: 81 50 subi r24, 0x01 ; 1 - 434: e1 f7 brne .-8 ; 0x42e - 22,23,15,24,21,16,25,26,21,27,15,16,14}; //Weihnachten - frame[0] = 14; - 436: 8e e0 ldi r24, 0x0E ; 14 - 438: 80 93 7e 00 sts 0x007E, r24 - frame[1] = 14; - 43c: 80 93 7f 00 sts 0x007F, r24 - frame[2] = 14; - 440: 80 93 80 00 sts 0x0080, r24 - frame[3] = 14; - 444: 80 93 81 00 sts 0x0081, r24 - frame[4] = 14; - 448: 80 93 82 00 sts 0x0082, r24 - frame[5] = 14; - 44c: 80 93 83 00 sts 0x0083, r24 - 450: 4c ef ldi r20, 0xFC ; 252 - for(uint8_t j=0;j<5;j++) { - uint8_t z = i+j-4; - if(z>=0 && z < sizeof(text1)) { - frame[j+1] = text1[z]; - } else { - frame[j+1] = 14; - 452: 5e e0 ldi r21, 0x0E ; 14 - 454: e5 2e mov r14, r21 - frame[5] = 14; - for(uint8_t i=0;i=0 && z < sizeof(text1)) { - frame[j+1] = text1[z]; - 456: 8e 01 movw r16, r28 - 458: 0f 5f subi r16, 0xFF ; 255 - 45a: 1f 4f sbci r17, 0xFF ; 255 - 45c: 22 c0 rjmp .+68 ; 0x4a2 - 45e: 9c 01 movw r18, r24 - 460: 2f 5f subi r18, 0xFF ; 255 - 462: 3f 4f sbci r19, 0xFF ; 255 - frame[4] = 14; - frame[5] = 14; - for(uint8_t i=0;i=0 && z < sizeof(text1)) { - 464: 53 31 cpi r21, 0x13 ; 19 - 466: 48 f4 brcc .+18 ; 0x47a - frame[j+1] = text1[z]; - 468: f8 01 movw r30, r16 - 46a: e5 0f add r30, r21 - 46c: f1 1d adc r31, r1 - 46e: 60 81 ld r22, Z - 470: 22 58 subi r18, 0x82 ; 130 - 472: 3f 4f sbci r19, 0xFF ; 255 - 474: f9 01 movw r30, r18 - 476: 60 83 st Z, r22 - 478: 04 c0 rjmp .+8 ; 0x482 - } else { - frame[j+1] = 14; - 47a: 22 58 subi r18, 0x82 ; 130 - 47c: 3f 4f sbci r19, 0xFF ; 255 - 47e: f9 01 movw r30, r18 - 480: e0 82 st Z, r14 - 482: 01 96 adiw r24, 0x01 ; 1 - 484: 5f 5f subi r21, 0xFF ; 255 - frame[2] = 14; - frame[3] = 14; - frame[4] = 14; - frame[5] = 14; - for(uint8_t i=0;i - 48c: 3e e1 ldi r19, 0x1E ; 30 - 48e: f3 2e mov r15, r19 - } else { - frame[j+1] = 14; - } - } - for(uint8_t k=0;k<30;k++) { - render(); - 490: 4c 8b std Y+20, r20 ; 0x14 - 492: 4f de rcall .-866 ; 0x132 - 494: fa 94 dec r15 - frame[j+1] = text1[z]; - } else { - frame[j+1] = 14; - } - } - for(uint8_t k=0;k<30;k++) { - 496: 4c 89 ldd r20, Y+20 ; 0x14 - 498: ff 20 and r15, r15 - 49a: d1 f7 brne .-12 ; 0x490 - 49c: 4f 5f subi r20, 0xFF ; 255 - frame[1] = 14; - frame[2] = 14; - frame[3] = 14; - frame[4] = 14; - frame[5] = 14; - for(uint8_t i=0;i - render(); - } - } -} - -void weihnachten() { - 4a2: 54 2f mov r21, r20 - 4a4: 80 e0 ldi r24, 0x00 ; 0 - 4a6: 90 e0 ldi r25, 0x00 ; 0 - 4a8: da cf rjmp .-76 ; 0x45e - } - for(uint8_t k=0;k<30;k++) { - render(); - } - } -} - 4aa: cc 5e subi r28, 0xEC ; 236 - 4ac: cd bf out 0x3d, r28 ; 61 - 4ae: cf 91 pop r28 - 4b0: df 91 pop r29 - 4b2: 1f 91 pop r17 - 4b4: 0f 91 pop r16 - 4b6: ff 90 pop r15 - 4b8: ef 90 pop r14 - 4ba: 08 95 ret - -000004bc : - -void blink2013() { - 4bc: cf 92 push r12 - 4be: df 92 push r13 - 4c0: ef 92 push r14 - 4c2: ff 92 push r15 - 4c4: 0f 93 push r16 - 4c6: 1f 93 push r17 - frame[0] = 14; - 4c8: 8e e0 ldi r24, 0x0E ; 14 - 4ca: 80 93 7e 00 sts 0x007E, r24 - frame[1] = 14; - 4ce: 80 93 7f 00 sts 0x007F, r24 - 4d2: 0e e1 ldi r16, 0x1E ; 30 - for(uint8_t i=0;i<30;i++) { - frame[2] = 2; - 4d4: f2 e0 ldi r31, 0x02 ; 2 - 4d6: cf 2e mov r12, r31 - frame[3] = 0; - frame[4] = 1; - 4d8: dd 24 eor r13, r13 - 4da: d3 94 inc r13 - frame[5] = 3; - 4dc: e3 e0 ldi r30, 0x03 ; 3 - 4de: ee 2e mov r14, r30 - for(uint8_t k=0;k<20;k++) { - render(); - } - frame[2] = 14; - 4e0: 1e e0 ldi r17, 0x0E ; 14 - -void blink2013() { - frame[0] = 14; - frame[1] = 14; - for(uint8_t i=0;i<30;i++) { - frame[2] = 2; - 4e2: c0 92 80 00 sts 0x0080, r12 - frame[3] = 0; - 4e6: 10 92 81 00 sts 0x0081, r1 - frame[4] = 1; - 4ea: d0 92 82 00 sts 0x0082, r13 - frame[5] = 3; - 4ee: e0 92 83 00 sts 0x0083, r14 - 4f2: 74 e1 ldi r23, 0x14 ; 20 - 4f4: f7 2e mov r15, r23 - for(uint8_t k=0;k<20;k++) { - render(); - 4f6: 1d de rcall .-966 ; 0x132 - 4f8: fa 94 dec r15 - for(uint8_t i=0;i<30;i++) { - frame[2] = 2; - frame[3] = 0; - frame[4] = 1; - frame[5] = 3; - for(uint8_t k=0;k<20;k++) { - 4fa: e9 f7 brne .-6 ; 0x4f6 - render(); - } - frame[2] = 14; - 4fc: 10 93 80 00 sts 0x0080, r17 - frame[3] = 14; - 500: 10 93 81 00 sts 0x0081, r17 - frame[4] = 14; - 504: 10 93 82 00 sts 0x0082, r17 - frame[5] = 14; - 508: 10 93 83 00 sts 0x0083, r17 - 50c: 64 e1 ldi r22, 0x14 ; 20 - 50e: f6 2e mov r15, r22 - for(uint8_t k=0;k<20;k++) { - render(); - 510: 10 de rcall .-992 ; 0x132 - 512: fa 94 dec r15 - } - frame[2] = 14; - frame[3] = 14; - frame[4] = 14; - frame[5] = 14; - for(uint8_t k=0;k<20;k++) { - 514: e9 f7 brne .-6 ; 0x510 - 516: 01 50 subi r16, 0x01 ; 1 -} - -void blink2013() { - frame[0] = 14; - frame[1] = 14; - for(uint8_t i=0;i<30;i++) { - 518: 21 f7 brne .-56 ; 0x4e2 - frame[5] = 14; - for(uint8_t k=0;k<20;k++) { - render(); - } - } -} - 51a: 1f 91 pop r17 - 51c: 0f 91 pop r16 - 51e: ff 90 pop r15 - 520: ef 90 pop r14 - 522: df 90 pop r13 - 524: cf 90 pop r12 - 526: 08 95 ret - -00000528 <__vector_13>: - +0000023e <__vector_13>: ISR(TIMER0_COMPA_vect) { - 528: 1f 92 push r1 - 52a: 0f 92 push r0 - 52c: 0f b6 in r0, 0x3f ; 63 - 52e: 0f 92 push r0 - 530: 11 24 eor r1, r1 - 532: 6f 93 push r22 - 534: 7f 93 push r23 - 536: 8f 93 push r24 - 538: 9f 93 push r25 - if (timer_delay == 30) { //wenn Zustand mindestens 30x32,512ms = 0,97536sec. andauert - 53a: 80 91 98 00 lds r24, 0x0098 - 53e: 8e 31 cpi r24, 0x1E ; 30 - 540: 11 f4 brne .+4 ; 0x546 <__vector_13+0x1e> - OCR0A = 193; //Restliche Sekunde abwarten - 542: 81 ec ldi r24, 0xC1 ; 193 - 544: 86 bf out 0x36, r24 ; 54 - } - if(timer_delay == 31) { //wenn Zustand 1,00006400s gedauert hat ... 64µs Fehler! - 546: 80 91 98 00 lds r24, 0x0098 - 54a: 8f 31 cpi r24, 0x1F ; 31 - 54c: 09 f0 breq .+2 ; 0x550 <__vector_13+0x28> - 54e: 45 c0 rjmp .+138 ; 0x5da <__vector_13+0xb2> - timer_delay = 0; - 550: 10 92 98 00 sts 0x0098, r1 - OCR0A = 254; - 554: 8e ef ldi r24, 0xFE ; 254 - 556: 86 bf out 0x36, r24 ; 54 - if(frame[5] > 0) { - 558: 80 91 83 00 lds r24, 0x0083 - 55c: 88 23 and r24, r24 - 55e: 41 f0 breq .+16 ; 0x570 <__vector_13+0x48> - frame[5] = frame[5]--; - 560: 80 91 83 00 lds r24, 0x0083 - 564: 80 93 83 00 sts 0x0083, r24 - 568: 81 50 subi r24, 0x01 ; 1 - 56a: 80 93 83 00 sts 0x0083, r24 - 56e: 2b c0 rjmp .+86 ; 0x5c6 <__vector_13+0x9e> - } else { - frame[5] = 9; - 570: 89 e0 ldi r24, 0x09 ; 9 - 572: 80 93 83 00 sts 0x0083, r24 - if(frame[4] > 0) { - 576: 90 91 82 00 lds r25, 0x0082 - 57a: 99 23 and r25, r25 - 57c: 41 f0 breq .+16 ; 0x58e <__vector_13+0x66> - frame[4] = frame[4]--; - 57e: 80 91 82 00 lds r24, 0x0082 - 582: 80 93 82 00 sts 0x0082, r24 - 586: 81 50 subi r24, 0x01 ; 1 - 588: 80 93 82 00 sts 0x0082, r24 - 58c: 1c c0 rjmp .+56 ; 0x5c6 <__vector_13+0x9e> - } else { - frame[4] = 5; - 58e: 95 e0 ldi r25, 0x05 ; 5 - 590: 90 93 82 00 sts 0x0082, r25 - if(frame[3] > 0) { - 594: 90 91 81 00 lds r25, 0x0081 - 598: 99 23 and r25, r25 - 59a: 41 f0 breq .+16 ; 0x5ac <__vector_13+0x84> - frame[3] = frame[3]--; - 59c: 80 91 81 00 lds r24, 0x0081 - 5a0: 80 93 81 00 sts 0x0081, r24 - 5a4: 81 50 subi r24, 0x01 ; 1 - 5a6: 80 93 81 00 sts 0x0081, r24 - 5aa: 0d c0 rjmp .+26 ; 0x5c6 <__vector_13+0x9e> + 23e: 1f 92 push r1 + 240: 0f 92 push r0 + 242: 0f b6 in r0, 0x3f ; 63 + 244: 0f 92 push r0 + 246: 11 24 eor r1, r1 + 248: 2f 93 push r18 + 24a: 6f 93 push r22 + 24c: 7f 93 push r23 + 24e: 8f 93 push r24 + 250: 9f 93 push r25 + switch(type) { + 252: 80 91 87 00 lds r24, 0x0087 + 256: 82 30 cpi r24, 0x02 ; 2 + 258: 09 f4 brne .+2 ; 0x25c <__vector_13+0x1e> + 25a: 46 c0 rjmp .+140 ; 0x2e8 <__vector_13+0xaa> + 25c: 83 30 cpi r24, 0x03 ; 3 + 25e: 09 f4 brne .+2 ; 0x262 <__vector_13+0x24> + 260: 75 c0 rjmp .+234 ; 0x34c <__vector_13+0x10e> + 262: 81 30 cpi r24, 0x01 ; 1 + 264: 09 f0 breq .+2 ; 0x268 <__vector_13+0x2a> + 266: d4 c0 rjmp .+424 ; 0x410 <__vector_13+0x1d2> + case 1: { + if (timer_delay == 29) { //wenn Zustand mindestens 30x32,512ms = 0,97536sec. andauert + 268: 80 91 86 00 lds r24, 0x0086 + 26c: 8d 31 cpi r24, 0x1D ; 29 + 26e: 11 f4 brne .+4 ; 0x274 <__vector_13+0x36> + OCR0A = 163; //Restliche Sekunde abwarten + 270: 83 ea ldi r24, 0xA3 ; 163 + 272: 86 bf out 0x36, r24 ; 54 + } + if(timer_delay == 30) { //wenn Zustand 1,00006400s gedauert hat ... 64µs Fehler! + 274: 80 91 86 00 lds r24, 0x0086 + 278: 8e 31 cpi r24, 0x1E ; 30 + 27a: 09 f0 breq .+2 ; 0x27e <__vector_13+0x40> + 27c: c6 c0 rjmp .+396 ; 0x40a <__vector_13+0x1cc> + timer_delay = 0; + 27e: 10 92 86 00 sts 0x0086, r1 + OCR0A = 254; + 282: 8e ef ldi r24, 0xFE ; 254 + 284: 86 bf out 0x36, r24 ; 54 + if(frame[5] > 0) { + 286: 80 91 83 00 lds r24, 0x0083 + 28a: 88 23 and r24, r24 + 28c: 31 f0 breq .+12 ; 0x29a <__vector_13+0x5c> + frame[5] = frame[5]--; + 28e: 80 91 83 00 lds r24, 0x0083 + 292: 80 93 83 00 sts 0x0083, r24 + 296: 81 50 subi r24, 0x01 ; 1 + 298: 71 c0 rjmp .+226 ; 0x37c <__vector_13+0x13e> } else { - frame[3] = 9; - 5ac: 80 93 81 00 sts 0x0081, r24 - if(frame[2] > 0) { - 5b0: 90 91 80 00 lds r25, 0x0080 - 5b4: 99 23 and r25, r25 - 5b6: 29 f0 breq .+10 ; 0x5c2 <__vector_13+0x9a> - frame[2] = frame[2]--; - 5b8: 80 91 80 00 lds r24, 0x0080 - 5bc: 80 93 80 00 sts 0x0080, r24 - 5c0: 81 50 subi r24, 0x01 ; 1 + frame[5] = 9; + 29a: 89 e0 ldi r24, 0x09 ; 9 + 29c: 80 93 83 00 sts 0x0083, r24 + if(frame[4] > 0) { + 2a0: 90 91 82 00 lds r25, 0x0082 + 2a4: 99 23 and r25, r25 + 2a6: 31 f0 breq .+12 ; 0x2b4 <__vector_13+0x76> + frame[4] = frame[4]--; + 2a8: 80 91 82 00 lds r24, 0x0082 + 2ac: 80 93 82 00 sts 0x0082, r24 + 2b0: 81 50 subi r24, 0x01 ; 1 + 2b2: 72 c0 rjmp .+228 ; 0x398 <__vector_13+0x15a> } else { - frame[2] = 9; - 5c2: 80 93 80 00 sts 0x0080, r24 + frame[4] = 5; + 2b4: 95 e0 ldi r25, 0x05 ; 5 + 2b6: 90 93 82 00 sts 0x0082, r25 + if(frame[3] > 0) { + 2ba: 90 91 81 00 lds r25, 0x0081 + 2be: 99 23 and r25, r25 + 2c0: 31 f0 breq .+12 ; 0x2ce <__vector_13+0x90> + frame[3] = frame[3]--; + 2c2: 80 91 81 00 lds r24, 0x0081 + 2c6: 80 93 81 00 sts 0x0081, r24 + 2ca: 81 50 subi r24, 0x01 ; 1 + 2cc: 73 c0 rjmp .+230 ; 0x3b4 <__vector_13+0x176> + } else { + frame[3] = 9; + 2ce: 80 93 81 00 sts 0x0081, r24 + if(frame[2] > 0) { + 2d2: 90 91 80 00 lds r25, 0x0080 + 2d6: 99 23 and r25, r25 + 2d8: 09 f4 brne .+2 ; 0x2dc <__vector_13+0x9e> + 2da: 7a c0 rjmp .+244 ; 0x3d0 <__vector_13+0x192> + frame[2] = frame[2]--; + 2dc: 80 91 80 00 lds r24, 0x0080 + 2e0: 80 93 80 00 sts 0x0080, r24 + 2e4: 81 50 subi r24, 0x01 ; 1 + 2e6: 74 c0 rjmp .+232 ; 0x3d0 <__vector_13+0x192> + timer_delay++; + } + break; + } + case 2: { + if (timer_delay == 14) { //wenn Zustand mindestens 30x32,512ms = 0,97536sec. andauert + 2e8: 80 91 86 00 lds r24, 0x0086 + 2ec: 8e 30 cpi r24, 0x0E ; 14 + 2ee: 11 f4 brne .+4 ; 0x2f4 <__vector_13+0xb6> + OCR0A = 82; //Restliche Sekunde abwarten + 2f0: 82 e5 ldi r24, 0x52 ; 82 + 2f2: 86 bf out 0x36, r24 ; 54 + } + if(timer_delay == 15) { //wenn Zustand 1,00006400s gedauert hat ... 64µs Fehler! + 2f4: 80 91 86 00 lds r24, 0x0086 + 2f8: 8f 30 cpi r24, 0x0F ; 15 + 2fa: 51 f4 brne .+20 ; 0x310 <__vector_13+0xd2> + timer_delay = 0; + 2fc: 10 92 86 00 sts 0x0086, r1 + OCR0A = 254; + 300: 8e ef ldi r24, 0xFE ; 254 + 302: 86 bf out 0x36, r24 ; 54 + running++; + 304: 80 91 88 00 lds r24, 0x0088 + 308: 8f 5f subi r24, 0xFF ; 255 + 30a: 80 93 88 00 sts 0x0088, r24 + 30e: 03 c0 rjmp .+6 ; 0x316 <__vector_13+0xd8> + } else { + timer_delay++; + 310: 8f 5f subi r24, 0xFF ; 255 + 312: 80 93 86 00 sts 0x0086, r24 + } + if(timer_delay%3 == 2) + 316: 20 91 86 00 lds r18, 0x0086 + 31a: 82 2f mov r24, r18 + 31c: 63 e0 ldi r22, 0x03 ; 3 + 31e: a6 d0 rcall .+332 ; 0x46c <__udivmodqi4> + 320: 92 30 cpi r25, 0x02 ; 2 + 322: 29 f4 brne .+10 ; 0x32e <__vector_13+0xf0> + if(timer_delay%4 == 2) + 324: 23 70 andi r18, 0x03 ; 3 + 326: 22 30 cpi r18, 0x02 ; 2 + 328: 09 f0 breq .+2 ; 0x32c <__vector_13+0xee> + 32a: 72 c0 rjmp .+228 ; 0x410 <__vector_13+0x1d2> + 32c: 06 c0 rjmp .+12 ; 0x33a <__vector_13+0xfc> + frame[6] = (frame[6]==1)?0:1; + if(timer_delay%3 == 0) + 32e: 99 23 and r25, r25 + 330: 09 f0 breq .+2 ; 0x334 <__vector_13+0xf6> + 332: 6e c0 rjmp .+220 ; 0x410 <__vector_13+0x1d2> + if(timer_delay%4 == 0) + 334: 23 70 andi r18, 0x03 ; 3 + 336: 09 f0 breq .+2 ; 0x33a <__vector_13+0xfc> + 338: 6b c0 rjmp .+214 ; 0x410 <__vector_13+0x1d2> + frame[6] = (frame[6]==1)?0:1; + 33a: 90 91 84 00 lds r25, 0x0084 + 33e: 81 e0 ldi r24, 0x01 ; 1 + 340: 91 30 cpi r25, 0x01 ; 1 + 342: 09 f4 brne .+2 ; 0x346 <__vector_13+0x108> + 344: 80 e0 ldi r24, 0x00 ; 0 + 346: 80 93 84 00 sts 0x0084, r24 + 34a: 62 c0 rjmp .+196 ; 0x410 <__vector_13+0x1d2> + break; + } + case 3: { + if (timer_delay == 29) { //wenn Zustand mindestens 30x32,512ms = 0,97536sec. andauert + 34c: 80 91 86 00 lds r24, 0x0086 + 350: 8d 31 cpi r24, 0x1D ; 29 + 352: 11 f4 brne .+4 ; 0x358 <__vector_13+0x11a> + OCR0A = 163; //Restliche Sekunde abwarten + 354: 83 ea ldi r24, 0xA3 ; 163 + 356: 86 bf out 0x36, r24 ; 54 + } + if(timer_delay == 30) { //wenn Zustand 1,00006400s gedauert hat ... 64µs Fehler! + 358: 80 91 86 00 lds r24, 0x0086 + 35c: 8e 31 cpi r24, 0x1E ; 30 + 35e: 09 f0 breq .+2 ; 0x362 <__vector_13+0x124> + 360: 54 c0 rjmp .+168 ; 0x40a <__vector_13+0x1cc> + timer_delay = 0; + 362: 10 92 86 00 sts 0x0086, r1 + OCR0A = 254; + 366: 8e ef ldi r24, 0xFE ; 254 + 368: 86 bf out 0x36, r24 ; 54 + if(frame[5] < 9) { + 36a: 80 91 83 00 lds r24, 0x0083 + 36e: 89 30 cpi r24, 0x09 ; 9 + 370: 40 f4 brcc .+16 ; 0x382 <__vector_13+0x144> + frame[5] = frame[5]++; + 372: 80 91 83 00 lds r24, 0x0083 + 376: 80 93 83 00 sts 0x0083, r24 + 37a: 8f 5f subi r24, 0xFF ; 255 + 37c: 80 93 83 00 sts 0x0083, r24 + 380: 3a c0 rjmp .+116 ; 0x3f6 <__vector_13+0x1b8> + } else { + frame[5] = 0; + 382: 10 92 83 00 sts 0x0083, r1 + if(frame[4] < 5) { + 386: 80 91 82 00 lds r24, 0x0082 + 38a: 85 30 cpi r24, 0x05 ; 5 + 38c: 40 f4 brcc .+16 ; 0x39e <__vector_13+0x160> + frame[4] = frame[4]++; + 38e: 80 91 82 00 lds r24, 0x0082 + 392: 80 93 82 00 sts 0x0082, r24 + 396: 8f 5f subi r24, 0xFF ; 255 + 398: 80 93 82 00 sts 0x0082, r24 + 39c: 2c c0 rjmp .+88 ; 0x3f6 <__vector_13+0x1b8> + } else { + frame[4] = 0; + 39e: 10 92 82 00 sts 0x0082, r1 + if(frame[3] < 9) { + 3a2: 80 91 81 00 lds r24, 0x0081 + 3a6: 89 30 cpi r24, 0x09 ; 9 + 3a8: 40 f4 brcc .+16 ; 0x3ba <__vector_13+0x17c> + frame[3] = frame[3]++; + 3aa: 80 91 81 00 lds r24, 0x0081 + 3ae: 80 93 81 00 sts 0x0081, r24 + 3b2: 8f 5f subi r24, 0xFF ; 255 + 3b4: 80 93 81 00 sts 0x0081, r24 + 3b8: 1e c0 rjmp .+60 ; 0x3f6 <__vector_13+0x1b8> + } else { + frame[3] = 0; + 3ba: 10 92 81 00 sts 0x0081, r1 + if(frame[2] < 5) { + 3be: 80 91 80 00 lds r24, 0x0080 + 3c2: 85 30 cpi r24, 0x05 ; 5 + 3c4: 40 f4 brcc .+16 ; 0x3d6 <__vector_13+0x198> + frame[2] = frame[2]++; + 3c6: 80 91 80 00 lds r24, 0x0080 + 3ca: 80 93 80 00 sts 0x0080, r24 + 3ce: 8f 5f subi r24, 0xFF ; 255 + 3d0: 80 93 80 00 sts 0x0080, r24 + 3d4: 10 c0 rjmp .+32 ; 0x3f6 <__vector_13+0x1b8> + } else { + frame[2] = 0; + 3d6: 10 92 80 00 sts 0x0080, r1 + if(frame[1] < 9) { + 3da: 80 91 7f 00 lds r24, 0x007F + 3de: 89 30 cpi r24, 0x09 ; 9 + 3e0: 40 f4 brcc .+16 ; 0x3f2 <__vector_13+0x1b4> + frame[1] = frame[1]++; + 3e2: 80 91 7f 00 lds r24, 0x007F + 3e6: 80 93 7f 00 sts 0x007F, r24 + 3ea: 8f 5f subi r24, 0xFF ; 255 + 3ec: 80 93 7f 00 sts 0x007F, r24 + 3f0: 02 c0 rjmp .+4 ; 0x3f6 <__vector_13+0x1b8> + } else { + frame[1] = 0; + 3f2: 10 92 7f 00 sts 0x007F, r1 + } + } + } } } + frame[0] = (frame[0]==14)?11:14; + 3f6: 80 91 7e 00 lds r24, 0x007E + 3fa: 8e 30 cpi r24, 0x0E ; 14 + 3fc: 11 f4 brne .+4 ; 0x402 <__vector_13+0x1c4> + 3fe: 8b e0 ldi r24, 0x0B ; 11 + 400: 01 c0 rjmp .+2 ; 0x404 <__vector_13+0x1c6> + 402: 8e e0 ldi r24, 0x0E ; 14 + 404: 80 93 7e 00 sts 0x007E, r24 + 408: 03 c0 rjmp .+6 ; 0x410 <__vector_13+0x1d2> + } else { + timer_delay++; + 40a: 8f 5f subi r24, 0xFF ; 255 + 40c: 80 93 86 00 sts 0x0086, r24 } + break; } - frame[0] = (frame[0]==14)?11:14; - 5c6: 80 91 7e 00 lds r24, 0x007E - 5ca: 8e 30 cpi r24, 0x0E ; 14 - 5cc: 11 f4 brne .+4 ; 0x5d2 <__vector_13+0xaa> - 5ce: 8b e0 ldi r24, 0x0B ; 11 - 5d0: 01 c0 rjmp .+2 ; 0x5d4 <__vector_13+0xac> - 5d2: 8e e0 ldi r24, 0x0E ; 14 - 5d4: 80 93 7e 00 sts 0x007E, r24 - 5d8: 03 c0 rjmp .+6 ; 0x5e0 <__vector_13+0xb8> - frame[3] = (uint8_t)((MIN-j)%10); - frame[4] = (uint8_t)((59-i)/10); - frame[5] = (uint8_t)((59-i)%10); - frame[0] = (i%2==0)?11:14;*/ - } else { - timer_delay++; - 5da: 8f 5f subi r24, 0xFF ; 255 - 5dc: 80 93 98 00 sts 0x0098, r24 } - if(timer_delay%3 == 0) - 5e0: 80 91 98 00 lds r24, 0x0098 - 5e4: 63 e0 ldi r22, 0x03 ; 3 - 5e6: 39 d0 rcall .+114 ; 0x65a <__udivmodqi4> - 5e8: 99 23 and r25, r25 - 5ea: 39 f4 brne .+14 ; 0x5fa <__vector_13+0xd2> - frame[6] = (frame[6]==0)?1:0; - 5ec: 90 91 84 00 lds r25, 0x0084 - 5f0: 81 e0 ldi r24, 0x01 ; 1 - 5f2: 91 11 cpse r25, r1 - 5f4: 80 e0 ldi r24, 0x00 ; 0 - 5f6: 80 93 84 00 sts 0x0084, r24 } - 5fa: 9f 91 pop r25 - 5fc: 8f 91 pop r24 - 5fe: 7f 91 pop r23 - 600: 6f 91 pop r22 - 602: 0f 90 pop r0 - 604: 0f be out 0x3f, r0 ; 63 - 606: 0f 90 pop r0 - 608: 1f 90 pop r1 - 60a: 18 95 reti + 410: 9f 91 pop r25 + 412: 8f 91 pop r24 + 414: 7f 91 pop r23 + 416: 6f 91 pop r22 + 418: 2f 91 pop r18 + 41a: 0f 90 pop r0 + 41c: 0f be out 0x3f, r0 ; 63 + 41e: 0f 90 pop r0 + 420: 1f 90 pop r1 + 422: 18 95 reti -0000060c
: +00000424
: int main(void) { DDRB = 0; - 60c: 17 ba out 0x17, r1 ; 23 + 424: 17 ba out 0x17, r1 ; 23 while(1){ //Warten bis Startknopf start(); - 60e: f7 dd rcall .-1042 ; 0x1fe + 426: a3 de rcall .-698 ; 0x16e //Timer 20 nach unten - timerdown(1); - 610: 81 e0 ldi r24, 0x01 ; 1 - 612: ac dd rcall .-1192 ; 0x16c + timerdown(30); + 428: 8e e1 ldi r24, 0x1E ; 30 + 42a: b0 de rcall .-672 ; 0x18c while(1) { render(); - 614: 8e dd rcall .-1252 ; 0x132 + 42c: 82 de rcall .-764 ; 0x132 if(frame[2] == 0 && frame[3] == 0 && frame[4] == 0 && frame[5] == 0) { - 616: 80 91 80 00 lds r24, 0x0080 - 61a: 88 23 and r24, r24 - 61c: d9 f7 brne .-10 ; 0x614 - 61e: 80 91 81 00 lds r24, 0x0081 - 622: 88 23 and r24, r24 - 624: b9 f7 brne .-18 ; 0x614 - 626: 80 91 82 00 lds r24, 0x0082 - 62a: 88 23 and r24, r24 - 62c: 99 f7 brne .-26 ; 0x614 - 62e: 80 91 83 00 lds r24, 0x0083 - 632: 88 23 and r24, r24 - 634: 79 f7 brne .-34 ; 0x614 + 42e: 80 91 80 00 lds r24, 0x0080 + 432: 88 23 and r24, r24 + 434: d9 f7 brne .-10 ; 0x42c + 436: 80 91 81 00 lds r24, 0x0081 + 43a: 88 23 and r24, r24 + 43c: b9 f7 brne .-18 ; 0x42c + 43e: 80 91 82 00 lds r24, 0x0082 + 442: 88 23 and r24, r24 + 444: 99 f7 brne .-26 ; 0x42c + 446: 80 91 83 00 lds r24, 0x0083 + 44a: 88 23 and r24, r24 + 44c: 79 f7 brne .-34 ; 0x42c TIMSK = 0; - 636: 19 be out 0x39, r1 ; 57 - //Lauflicht 10s; - //endelauflicht(); - //Lauflicht Rand 10s - //enderand(); - //Blinklicht + 44e: 19 be out 0x39, r1 ; 57 + break; + } + } + //Piepsen endeblink(); - 638: 71 de rcall .-798 ; 0x31c - frame[0] = 10; - 63a: 8a e0 ldi r24, 0x0A ; 10 - 63c: 80 93 7e 00 sts 0x007E, r24 - frame[2] = 15; - 640: 8f e0 ldi r24, 0x0F ; 15 - 642: 80 93 80 00 sts 0x0080, r24 - frame[3] = 16; - 646: 90 e1 ldi r25, 0x10 ; 16 - 648: 90 93 81 00 sts 0x0081, r25 - frame[4] = 17; - 64c: 91 e1 ldi r25, 0x11 ; 17 - 64e: 90 93 82 00 sts 0x0082, r25 - frame[5] = 15; - 652: 80 93 83 00 sts 0x0083, r24 + 450: d7 de rcall .-594 ; 0x200 + while(1) { + render(); + 452: 6f de rcall .-802 ; 0x132 + if(running >= 20) { + 454: 80 91 88 00 lds r24, 0x0088 + 458: 84 31 cpi r24, 0x14 ; 20 + 45a: d8 f3 brcs .-10 ; 0x452 + TIMSK = 0; + 45c: 19 be out 0x39, r1 ; 57 + frame[6] = 0; + 45e: 10 92 84 00 sts 0x0084, r1 + break; + } + } + //Timer UP 0,1 Min Start + timerup(0,10); + 462: 80 e0 ldi r24, 0x00 ; 0 + 464: 6a e0 ldi r22, 0x0A ; 10 + 466: ad de rcall .-678 ; 0x1c2 while(1) { render(); - 656: 6d dd rcall .-1318 ; 0x132 - 658: fe cf rjmp .-4 ; 0x656 + 468: 64 de rcall .-824 ; 0x132 + 46a: fe cf rjmp .-4 ; 0x468 -0000065a <__udivmodqi4>: - 65a: 99 1b sub r25, r25 - 65c: 79 e0 ldi r23, 0x09 ; 9 - 65e: 04 c0 rjmp .+8 ; 0x668 <__udivmodqi4_ep> +0000046c <__udivmodqi4>: + 46c: 99 1b sub r25, r25 + 46e: 79 e0 ldi r23, 0x09 ; 9 + 470: 04 c0 rjmp .+8 ; 0x47a <__udivmodqi4_ep> -00000660 <__udivmodqi4_loop>: - 660: 99 1f adc r25, r25 - 662: 96 17 cp r25, r22 - 664: 08 f0 brcs .+2 ; 0x668 <__udivmodqi4_ep> - 666: 96 1b sub r25, r22 +00000472 <__udivmodqi4_loop>: + 472: 99 1f adc r25, r25 + 474: 96 17 cp r25, r22 + 476: 08 f0 brcs .+2 ; 0x47a <__udivmodqi4_ep> + 478: 96 1b sub r25, r22 -00000668 <__udivmodqi4_ep>: - 668: 88 1f adc r24, r24 - 66a: 7a 95 dec r23 - 66c: c9 f7 brne .-14 ; 0x660 <__udivmodqi4_loop> - 66e: 80 95 com r24 - 670: 08 95 ret +0000047a <__udivmodqi4_ep>: + 47a: 88 1f adc r24, r24 + 47c: 7a 95 dec r23 + 47e: c9 f7 brne .-14 ; 0x472 <__udivmodqi4_loop> + 480: 80 95 com r24 + 482: 08 95 ret -00000672 <_exit>: - 672: f8 94 cli +00000484 <_exit>: + 484: f8 94 cli -00000674 <__stop_program>: - 674: ff cf rjmp .-2 ; 0x674 <__stop_program> +00000486 <__stop_program>: + 486: ff cf rjmp .-2 ; 0x486 <__stop_program> diff --git a/Timer/default/Timer.map b/Timer/default/Timer.map index aafb1a1..a743d10 100644 --- a/Timer/default/Timer.map +++ b/Timer/default/Timer.map @@ -118,7 +118,7 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a .rela.plt *(.rela.plt) -.text 0x00000000 0x676 +.text 0x00000000 0x488 *(.vectors) .vectors 0x00000000 0x26 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o 0x00000000 __vector_default @@ -192,36 +192,32 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a 0x00000058 __vector_10 0x00000058 __vector_16 0x00000058 __vector_18 - .text 0x0000005a 0x600 Timer.o + .text 0x0000005a 0x412 Timer.o 0x0000005a display 0x0000011a beeb 0x00000132 render - 0x0000016c timerdown - 0x0000019c timerup - 0x000001fe start - 0x0000021c endelauflicht - 0x0000029c enderand - 0x0000031c endeblink - 0x00000410 weihnachten - 0x000004bc blink2013 - 0x00000528 __vector_13 - 0x0000060c main - .text 0x0000065a 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) - .text 0x0000065a 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - .text 0x0000065a 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) - .text 0x0000065a 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) - 0x0000065a . = ALIGN (0x2) + 0x0000016e start + 0x0000018c timerdown + 0x000001c2 timerup + 0x00000200 endeblink + 0x0000023e __vector_13 + 0x00000424 main + .text 0x0000046c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) + .text 0x0000046c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .text 0x0000046c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .text 0x0000046c 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + 0x0000046c . = ALIGN (0x2) *(.text.*) - .text.libgcc 0x0000065a 0x18 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) - 0x0000065a __udivmodqi4 - .text.libgcc 0x00000672 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - .text.libgcc 0x00000672 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) - .text.libgcc 0x00000672 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) - 0x00000672 . = ALIGN (0x2) + .text.libgcc 0x0000046c 0x18 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) + 0x0000046c __udivmodqi4 + .text.libgcc 0x00000484 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .text.libgcc 0x00000484 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .text.libgcc 0x00000484 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + 0x00000484 . = ALIGN (0x2) *(.fini9) - .fini9 0x00000672 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - 0x00000672 _exit - 0x00000672 exit + .fini9 0x00000484 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + 0x00000484 _exit + 0x00000484 exit *(.fini9) *(.fini8) *(.fini8) @@ -240,51 +236,54 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000672 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .fini0 0x00000484 0x4 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) *(.fini0) - 0x00000676 _etext = . + 0x00000488 _etext = . -.data 0x00800060 0x38 load address 0x00000676 +.data 0x00800060 0x26 load address 0x00000488 0x00800060 PROVIDE (__data_start, .) *(.data) .data 0x00800060 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o - .data 0x00800060 0x38 Timer.o + .data 0x00800060 0x25 Timer.o 0x00800060 segs 0x0080007e frame - .data 0x00800098 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) - .data 0x00800098 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - .data 0x00800098 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) - .data 0x00800098 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .data 0x00800085 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) + .data 0x00800085 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .data 0x00800085 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .data 0x00800085 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) *(.data*) *(.rodata) *(.rodata*) *(.gnu.linkonce.d*) - 0x00800098 . = ALIGN (0x2) - 0x00800098 _edata = . - 0x00800098 PROVIDE (__data_end, .) + 0x00800086 . = ALIGN (0x2) + *fill* 0x00800085 0x1 00 + 0x00800086 _edata = . + 0x00800086 PROVIDE (__data_end, .) -.bss 0x00800098 0x1 - 0x00800098 PROVIDE (__bss_start, .) +.bss 0x00800086 0x3 + 0x00800086 PROVIDE (__bss_start, .) *(.bss) - .bss 0x00800098 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o - .bss 0x00800098 0x1 Timer.o - 0x00800098 timer_delay - .bss 0x00800099 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) - .bss 0x00800099 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) - .bss 0x00800099 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) - .bss 0x00800099 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) + .bss 0x00800086 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr25/crttn2313.o + .bss 0x00800086 0x3 Timer.o + 0x00800086 timer_delay + 0x00800087 type + 0x00800088 running + .bss 0x00800089 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_udivmodqi4.o) + .bss 0x00800089 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_exit.o) + .bss 0x00800089 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_copy_data.o) + .bss 0x00800089 0x0 e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a(_clear_bss.o) *(.bss*) *(COMMON) - 0x00800099 PROVIDE (__bss_end, .) - 0x00000676 __data_load_start = LOADADDR (.data) - 0x000006ae __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800089 PROVIDE (__bss_end, .) + 0x00000488 __data_load_start = LOADADDR (.data) + 0x000004ae __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800099 0x0 - 0x00800099 PROVIDE (__noinit_start, .) +.noinit 0x00800089 0x0 + 0x00800089 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800099 PROVIDE (__noinit_end, .) - 0x00800099 _end = . - 0x00800099 PROVIDE (__heap_start, .) + 0x00800089 PROVIDE (__noinit_end, .) + 0x00800089 _end = . + 0x00800089 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -343,36 +342,36 @@ LOAD e:/programme/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr25\libgcc.a 0x00000000 0x20 Timer.o .debug_pubnames - 0x00000000 0xdd + 0x00000000 0xb5 *(.debug_pubnames) .debug_pubnames - 0x00000000 0xdd Timer.o + 0x00000000 0xb5 Timer.o -.debug_info 0x00000000 0x6eb +.debug_info 0x00000000 0x480 *(.debug_info) - .debug_info 0x00000000 0x6eb Timer.o + .debug_info 0x00000000 0x480 Timer.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x1f5 +.debug_abbrev 0x00000000 0x1d4 *(.debug_abbrev) - .debug_abbrev 0x00000000 0x1f5 Timer.o + .debug_abbrev 0x00000000 0x1d4 Timer.o -.debug_line 0x00000000 0x8d7 +.debug_line 0x00000000 0x60f *(.debug_line) - .debug_line 0x00000000 0x8d7 Timer.o + .debug_line 0x00000000 0x60f Timer.o -.debug_frame 0x00000000 0xe0 +.debug_frame 0x00000000 0xa0 *(.debug_frame) - .debug_frame 0x00000000 0xe0 Timer.o + .debug_frame 0x00000000 0xa0 Timer.o -.debug_str 0x00000000 0x185 +.debug_str 0x00000000 0x15f *(.debug_str) - .debug_str 0x00000000 0x185 Timer.o - 0x1b9 (size before relaxing) + .debug_str 0x00000000 0x15f Timer.o + 0x193 (size before relaxing) -.debug_loc 0x00000000 0x503 +.debug_loc 0x00000000 0x11b *(.debug_loc) - .debug_loc 0x00000000 0x503 Timer.o + .debug_loc 0x00000000 0x11b Timer.o .debug_macinfo *(.debug_macinfo) @@ -383,6 +382,3 @@ LOAD linker stubs 0x00000000 0x38 .debug_pubtypes 0x00000000 0x38 Timer.o - -.debug_ranges 0x00000000 0x18 - .debug_ranges 0x00000000 0x18 Timer.o