diff --git a/V2/BackupFiles/Fernsteuerung.BK1 b/V2/BackupFiles/Fernsteuerung.BK1 index 03c31a6..76a9f0b 100644 Binary files a/V2/BackupFiles/Fernsteuerung.BK1 and b/V2/BackupFiles/Fernsteuerung.BK1 differ diff --git a/V2/BackupFiles/Fernsteuerung.BK2 b/V2/BackupFiles/Fernsteuerung.BK2 index f081e52..681e5a6 100644 Binary files a/V2/BackupFiles/Fernsteuerung.BK2 and b/V2/BackupFiles/Fernsteuerung.BK2 differ diff --git a/V2/BackupFiles/Fernsteuerung.BK3 b/V2/BackupFiles/Fernsteuerung.BK3 index ad2a306..e7b92d7 100644 Binary files a/V2/BackupFiles/Fernsteuerung.BK3 and b/V2/BackupFiles/Fernsteuerung.BK3 differ diff --git a/V2/BackupFiles/Fernsteuerung.BK4 b/V2/BackupFiles/Fernsteuerung.BK4 index 7a1490f..282d385 100644 Binary files a/V2/BackupFiles/Fernsteuerung.BK4 and b/V2/BackupFiles/Fernsteuerung.BK4 differ diff --git a/V2/BackupFiles/Fernsteuerung.BK5 b/V2/BackupFiles/Fernsteuerung.BK5 index b641b6a..d8a9d48 100644 Binary files a/V2/BackupFiles/Fernsteuerung.BK5 and b/V2/BackupFiles/Fernsteuerung.BK5 differ diff --git a/V2/Fernsteuerung-Bestückung-Oben.pdf b/V2/Fernsteuerung-Bestückung-Oben.pdf index 964d7b9..db6803e 100644 Binary files a/V2/Fernsteuerung-Bestückung-Oben.pdf and b/V2/Fernsteuerung-Bestückung-Oben.pdf differ diff --git a/V2/Fernsteuerung-Bestückung-Unten.pdf b/V2/Fernsteuerung-Bestückung-Unten.pdf index 0405765..56dde17 100644 Binary files a/V2/Fernsteuerung-Bestückung-Unten.pdf and b/V2/Fernsteuerung-Bestückung-Unten.pdf differ diff --git a/V2/Fernsteuerung-Platine-Oben.pdf b/V2/Fernsteuerung-Platine-Oben.pdf index 1a9a232..fd142b6 100644 Binary files a/V2/Fernsteuerung-Platine-Oben.pdf and b/V2/Fernsteuerung-Platine-Oben.pdf differ diff --git a/V2/Fernsteuerung-Platine-Unten.pdf b/V2/Fernsteuerung-Platine-Unten.pdf index ec3279d..d058be9 100644 Binary files a/V2/Fernsteuerung-Platine-Unten.pdf and b/V2/Fernsteuerung-Platine-Unten.pdf differ diff --git a/V2/Fernsteuerung.T3000 b/V2/Fernsteuerung.T3000 index 2db59e6..36a3dfb 100644 Binary files a/V2/Fernsteuerung.T3000 and b/V2/Fernsteuerung.T3000 differ diff --git a/V2/Fernsteuerung.T3000OPEN b/V2/Fernsteuerung.T3000OPEN deleted file mode 100644 index 2644ba9..0000000 --- a/V2/Fernsteuerung.T3000OPEN +++ /dev/null @@ -1 +0,0 @@ -[PHIL], netz diff --git a/V2/Programm/Programm.atsuo b/V2/Programm/Programm.atsuo index cc74cdf..2101dac 100644 Binary files a/V2/Programm/Programm.atsuo and b/V2/Programm/Programm.atsuo differ diff --git a/V2/Programm/Programm/Debug/Programm.d b/V2/Programm/Programm/Debug/Programm.d index a9bc163..3180a03 100644 --- a/V2/Programm/Programm/Debug/Programm.d +++ b/V2/Programm/Programm/Debug/Programm.d @@ -15,11 +15,14 @@ Programm.d Programm.o: .././Programm.cpp .././peripheral.h \ .././io/hardware/portc.hpp .././io/hardware/portd.hpp \ .././io/hardware/portg.hpp .././io/hardware/porth.hpp \ .././io/hardware/portl.hpp .././io/Led.hpp .././io/hardware/pin.hpp \ - .././io/mcp4151.hpp \ + .././io/LedPWM.hpp .././io/mcp4151.hpp \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h \ - .././io/Display.hpp + .././io/Display.hpp \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h .././peripheral.h: @@ -63,6 +66,8 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- .././io/hardware/pin.hpp: +.././io/LedPWM.hpp: + .././io/mcp4151.hpp: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h: @@ -72,3 +77,9 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h: .././io/Display.hpp: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h: diff --git a/V2/Programm/Programm/Debug/Programm.elf b/V2/Programm/Programm/Debug/Programm.elf index adada67..911a9d7 100644 Binary files a/V2/Programm/Programm/Debug/Programm.elf and b/V2/Programm/Programm/Debug/Programm.elf differ diff --git a/V2/Programm/Programm/Debug/Programm.hex b/V2/Programm/Programm/Debug/Programm.hex index 5f8df92..b3cbec9 100644 --- a/V2/Programm/Programm/Debug/Programm.hex +++ b/V2/Programm/Programm/Debug/Programm.hex @@ -1,82 +1,644 @@ -:100000000C9475000C9499000C9499000C94990030 -:100010000C9499000C9499000C9499000C949900FC -:100020000C9499000C9499000C9499000C949900EC -:100030000C9499000C9499000C9499000C949900DC -:100040000C9499000C9499000C9499000C949900CC -:100050000C9499000C9499000C9499000C949900BC -:100060000C9499000C9499000C9499000C949900AC -:100070000C9499000C9499000C9499000C9499009C -:100080000C9499000C9499000C9499000C9499008C -:100090000C9499000C9499000C9499000C9499007C -:1000A0000C9499000C9499000C9499000C9499006C -:1000B0000C9499000C9499000C9499000C9499005C -:1000C0000C9499000C9499000C9499000C9499004C -:1000D0000C9499000C9499000C9499000C9499003C -:1000E0000C9499000C946702670211241FBECFEF95 -:1000F000D1E2DEBFCDBF00E00CBF22E0A0E0B2E065 -:1001000001C01D92A530B207E1F710E0CAEED0E0C1 -:1001100000E006C022970109FE010BBF0E947E028B -:10012000C83ED10780E00807A9F70E949B000C9405 -:1001300082020C940000409888E0A098989AA19AB6 -:10014000999A00C000C00000A198999A8150A9F71F -:1001500098E08DEC88231CF4A09A989A02C0A0988D -:10016000989AA19A999A880F00C000C00000A1989F -:10017000999A915079F7409AEBE0F1E0808188609C -:10018000808380818F7B80838081806280831BB8A5 -:100190008081806880838FE99FE00197F1F700C03C -:1001A000000080818F7780830F2EF0E5FF2EF02DE9 -:1001B00005E61EE6D9E6C3E76894EE24E5F874E4A4 -:1001C00065E753E541E633E60F2EFBE6DF2EF02D23 -:1001D000A2E0B1E090819F7B9083908190629083B8 -:1001E000FBB89081906890838FE99FE00197F1F7C9 -:1001F00000C0000090819F77908390819F7B9083C7 -:100200009081906290830BB99081906890838FE980 -:100210009FE00197F1F700C0000090819F779083E5 -:1002200090819F7B90839081906290831BB9908195 -:10023000906890838FE99FE00197F1F700C000007C -:1002400090819F77908390819F7B90839081906233 -:100250009083DBB99081906890838FE99FE001974C -:10026000F1F700C0000090819F77908390819F7B81 -:100270009083908190629083CBB9908190689083B5 -:100280008FE99FE00197F1F700C0000090819F7710 -:10029000908390819F7B9083908190629083EBB854 -:1002A0009081906890838FE99FE00197F1F700C0FB -:1002B000000090819F77908390819F7B90839081B5 -:1002C000906290837BB99081906890838FE99FE0E2 -:1002D0000197F1F700C0000090819F779083908193 -:1002E0009F7B90839081906290836BB9908190689E -:1002F00090838FE99FE00197F1F700C000009081A3 -:100300009F77908390819F7B908390819062908370 -:10031000EBB89081906890838FE99FE00197F1F7A7 -:1003200000C0000090819F77908390819F7B908395 -:100330009081906290835BB99081906890838FE9FF -:100340009FE00197F1F700C0000090819F779083B4 -:1003500090819F7B90839081906290834BB9908134 -:10036000906890838FE99FE00197F1F700C000004B -:1003700090819F77908390819F7B90839081906202 -:1003800090833BB99081906890838FE99FE00197BB -:10039000F1F700C0000090819F77908390819F7B50 -:1003A0009083908190629083DBB890819068908375 -:1003B0008FE99FE00197F1F700C0000090819F77DF -:1003C0009083289A9FEF27EA81E691502040804051 -:1003D000E1F700C0000028989C9190649C939FEFE7 -:1003E00023ED80E3915020408040E1F700C0000001 -:1003F0009C919F7B9C939C9190629C939FEF27EA9A -:1004000081E6915020408040E1F700C000009C91BF -:1004100090649C939FEF23ED80E3915020408040B7 -:10042000E1F700C000009C919F7B9C939C919F7D75 -:100430009C93D0CEA198999A409A389AA098989A6D -:10044000AAE0B1E08C9188608C93EBE0F1E08081D0 -:10045000877F80838C9180688C938C9180648C934F -:100460008C9180628C938FEF8AB92FEF81EE94E0AC -:10047000215080409040E1F700C0000080818F7BD8 -:10048000808380818F7D80838CE08BB980818068C0 -:1004900080838FE99FE00197F1F700C00000808121 -:1004A0008F77808380818F7B808380818F7D808325 -:1004B00081E08BB98081806880838FE99FE001971C -:1004C000F1F700C0000080818F7780830895A1E05C -:1004D000B1E08C9180628C93E2E0F1E080818F7DCD -:1004E0008083209A28988C9180648C9380818F7B64 -:1004F000808380E092E00E941A0208950790F691AE -:08050000E02D1994F894FFCFDF +:100000000C9475000C94A6000C94A6000C94A60009 +:100010000C94A6000C94A6000C94A6000C94A600C8 +:100020000C94A6000C94A6000C94A6000C94A600B8 +:100030000C94A6000C94A6000C94A6000C94A600A8 +:100040000C94A6000C94A6000C94A6000C94A60098 +:100050000C94A6000C94A6000C94A6000C94A60088 +:100060000C94A6000C94A6000C94A6000C94A60078 +:100070000C94A6000C94A6000C94A6000C94A60068 +:100080000C94A6000C94A6000C94A6000C94A60058 +:100090000C94A6000C94A6000C94A6000C94A60048 +:1000A0000C94A6000C94A6000C94A6000C94A60038 +:1000B0000C94A6000C94A6000C94A6000C94A60028 +:1000C0000C94A6000C94A6000C94A6000C94A60018 +:1000D0000C94A6000C94A6000C94A6000C94A60008 +:1000E0000C94A6000C941B111B1111241FBECFEF02 +:1000F000D1E2DEBFCDBF00E00CBF12E0A0E0B2E075 +:10010000E4EFF7E200E00BBF02C007900D92A033CE +:10011000B107D9F722E0A0E3B2E001C01D92A233FB +:10012000B207E1F710E0CAEED0E000E006C0229787 +:100130000109FE010BBF0E942011C83ED10780E0DB +:100140000807A9F70E94C8010C94F8130C9400004A +:10015000A198999A409A389AA098989AEAE0F1E082 +:1001600080818860808381E88093200189E080938A +:100170002101A8E2B1E01C921C92808180688083FA +:100180008081806480838081806280838FEF8AB9E0 +:100190008FEF99EF0197F1F700C00000EBE0F1E07D +:1001A00080818F7B808380818F7D808388E38BB982 +:1001B000808180688083A3EDB0E01197F1F700C0E3 +:1001C000000080818F7780838FE19EE40197F1F7B3 +:1001D00000C00000808180688083A3EDB0E01197AB +:1001E000F1F700C0000080818F7780838FED91E070 +:1001F0000197F1F700C00000808180688083A3ED43 +:10020000B0E01197F1F700C0000080818F77808304 +:100210008FED91E00197F1F700C0000080818068C8 +:100220008083A3EDB0E01197F1F700C0000080815A +:100230008F7780838FED91E00197F1F700C0000088 +:1002400080818F7B808380818F7D80831BB88081BC +:1002500080688083A3EDB0E01197F1F700C0000043 +:1002600080818F7780838FE39FE10197F1F700C052 +:10027000000080818F7B808380818F7D808381E0FF +:100280008BB9908190689083A3EDB0E01197F1F75E +:1002900000C0000090819F779083AFE3BFE111978A +:1002A000F1F700C0000090819F7B908390819F7D3B +:1002B000908394E09BB9908190689083A3EDB0E027 +:1002C0001197F1F700C0000090819F779083BFEFF6 +:1002D00021EE34E0B15020403040E1F700C0000092 +:1002E00090819F7B908390819F7D90839CE09BB9C0 +:1002F000908190689083A3EDB0E01197F1F700C072 +:10030000000090819F779083AFE3BFE11197F1F7F1 +:1003100000C0000090819F7B908390819F7D90839F +:100320008BB980818068808383ED90E00197F1F73D +:1003300000C0000080818F778083AFE3BFE1119719 +:10034000F1F700C00000409898E081E088231CF499 +:10035000A09A989A02C0A098989AA19A999A880F00 +:1003600000C000C00000A198999A915079F788E0E8 +:10037000A098989AA19A999A00C000C00000A198EC +:10038000999A8150A9F7409A8FEF80932801089598 +:10039000CF93DF93CDB7DEB76D970FB6F894DEBF7E +:1003A0000FBECDBF0BE011E00F2EF8E2AF2EBB2445 +:1003B000B394F02D0F2EFAEF6F2EF02D262C9924EA +:1003C0009A946894772477F80F2EF0ED8F2EF02D05 +:1003D0006E0125E1C20ED11C3C2C4D2CEE24E39481 +:1003E000F12CEC0EFD1E5E2CFD8ED8018C918F7BC6 +:1003F0008C938C918F7D8C9381E08BB98C918068EC +:100400008C93E3EDF0E03197F1F700C000008C91A0 +:100410008F778C93EFE3FFE13197F1F700C0000095 +:10042000D5012C92409888E0A098989AA19A999A20 +:1004300000C000C00000A198999A8150A9F798E0E7 +:100440008DEE88231CF4A09A989A02C0A098989ADE +:10045000A19A999A880F00C000C00000A198999AAB +:10046000915079F7409AE0E0F2E060E940EC22EE4A +:1004700075EF5FEE31EEA3C3843E09F09EC0D80154 +:100480008C9180648C938C918F7D8C931BB81AB85F +:100490008C9180688C9383ED90E00197F1F700C018 +:1004A00000008C918F778C9389B19AB88F30D1F4FA +:1004B0008C918F7B8C938C918F7D8C934BB98C918D +:1004C00080688C9383ED90E00197F1F700C0000005 +:1004D0008C918F778C938FE99FE00197F1F700C0A3 +:1004E000000056C08F34D9F4D8018C918F7B8C9347 +:1004F0008C918F7D8C936BB98C9180688C9383EDFC +:1005000090E00197F1F700C000008C918F778C93F9 +:100510008FE99FE00197F1F700C0000039C08F31EB +:10052000D9F4D8018C918F7B8C938C918F7D8C9397 +:100530008BB88C9180688C9383ED90E00197F1F7F4 +:1005400000C000008C918F778C938FE99FE001971A +:10055000F1F700C000001CC08F35D1F4D8018C9198 +:100560008F7B8C938C918F7D8C937BB88C918068E2 +:100570008C9383ED90E00197F1F700C000008C911F +:100580008F778C938FE99FE00197F1F700C000000F +:10059000D8018C918F7B8C938C9180628C933BB92A +:1005A0008C9180688C9383ED90E00197F1F700C007 +:1005B00000008C918F778C9302C3863F09F09EC018 +:1005C000D8018C9180648C938C918F7D8C931BB817 +:1005D0001AB88C9180688C9383ED90E00197F1F7C5 +:1005E00000C000008C918F778C9389B19AB88F30BE +:1005F000D1F48C918F7B8C938C918F7D8C934BB9A4 +:100600008C9180688C9383ED90E00197F1F700C0A6 +:1006100000008C918F778C938FE99FE00197F1F721 +:1006200000C0000056C08F34D9F4D8018C918F7B64 +:100630008C938C918F7D8C936BB98C9180688C930B +:1006400083ED90E00197F1F700C000008C918F7767 +:100650008C938FE99FE00197F1F700C0000039C04B +:100660008F31D9F4D8018C918F7B8C938C918F7DB5 +:100670008C938BB88C9180688C9383ED90E001977C +:10068000F1F700C000008C918F778C938FE99FE089 +:100690000197F1F700C000001CC08F35D1F4D801DC +:1006A0008C918F7B8C938C918F7D8C937BB88C916C +:1006B00080688C9383ED90E00197F1F700C0000013 +:1006C0008C918F778C938FE99FE00197F1F700C0B1 +:1006D0000000D8018C918F7B8C938C9180628C93DD +:1006E0005BB98C9180688C9383ED90E00197F1F772 +:1006F00000C000008C918F778C9361C28C3F09F011 +:100700009EC0D8018C9180648C938C918F7D8C934A +:100710001BB81AB88C9180688C9383ED90E0019798 +:10072000F1F700C000008C918F778C9389B19AB853 +:100730008F30D1F48C918F7B8C938C918F7D8C93A7 +:100740004BB98C9180688C9383ED90E00197F1F721 +:1007500000C000008C918F778C938FE99FE0019708 +:10076000F1F700C0000056C08F34D9F4D8018C9145 +:100770008F7B8C938C918F7D8C936BB98C918068DF +:100780008C9383ED90E00197F1F700C000008C910D +:100790008F778C938FE99FE00197F1F700C00000FD +:1007A00039C08F31D9F4D8018C918F7B8C938C9187 +:1007B0008F7D8C938BB88C9180688C9383ED90E0C7 +:1007C0000197F1F700C000008C918F778C938FE92F +:1007D0009FE00197F1F700C000001CC08F35D1F4F5 +:1007E000D8018C918F7B8C938C918F7D8C937BB86F +:1007F0008C9180688C9383ED90E00197F1F700C0B5 +:1008000000008C918F778C938FE99FE00197F1F72F +:1008100000C00000D8018C918F7B8C938C918062FA +:100820008C937BB98C9180688C9383ED90E00197D9 +:10083000F1F700C000008C918F778C93C0C18F3D81 +:1008400009F09EC0D8018C9180648C938C918F7D2F +:100850008C931BB81AB88C9180688C9383ED90E0D0 +:100860000197F1F700C000008C918F778C9389B1CC +:100870009AB88F30D1F48C918F7B8C938C918F7D33 +:100880008C934BB98C9180688C9383ED90E00197A9 +:10089000F1F700C000008C918F778C938FE99FE077 +:1008A0000197F1F700C0000056C08F34D9F4D80189 +:1008B0008C918F7B8C938C918F7D8C936BB98C9169 +:1008C00080688C9383ED90E00197F1F700C0000001 +:1008D0008C918F778C938FE99FE00197F1F700C09F +:1008E000000039C08F31D9F4D8018C918F7B8C9363 +:1008F0008C918F7D8C938BB88C9180688C9383EDD9 +:1009000090E00197F1F700C000008C918F778C93F5 +:100910008FE99FE00197F1F700C000001CC08F3500 +:10092000D1F4D8018C918F7B8C938C918F7D8C939B +:100930007BB88C9180688C9383ED90E00197F1F700 +:1009400000C000008C918F778C938FE99FE0019716 +:10095000F1F700C00000D8018C918F7B8C938C91B3 +:1009600080628C932BB98C9180688C9383ED90E09E +:100970000197F1F700C000008C918F778C931FC115 +:10098000D8019C9190649C939C919F7D9C931BB8F3 +:100990001AB89C9190689C93A3EDB0E01197F1F781 +:1009A00000C00000D8019C919F779C9399B19AB8A0 +:1009B0008A3009F079C0892F80558031D0F48C912C +:1009C0008F7B8C938C918F7D8C937BB88C9180687E +:1009D0008C9383ED90E00197F1F700C000008C91BB +:1009E0008F778C938FE99FE00197F1F700C00000AB +:1009F000E6C09031D8F4D8018C918F7B8C938C9188 +:100A00008F7D8C934BB98C9180688C9383ED90E0B3 +:100A10000197F1F700C000008C918F778C938FE9DC +:100A20009FE00197F1F700C00000C9C0892F8054F2 +:100A30008031D8F4D8018C918F7B8C938C918F7DF1 +:100A40008C936BB98C9180688C9383ED90E00197C7 +:100A5000F1F700C000008C918F778C938FE99FE0B5 +:100A60000197F1F700C00000AAC09051903108F042 +:100A7000A6C0D8018C918F7B8C938C918F7D8C93A9 +:100A80008BB88C9180688C9383ED90E00197F1F79F +:100A900000C000008C918F778C938FE99FE00197C5 +:100AA000F1F700C000008BC09F30E1F4D8019C91A9 +:100AB0009F7B9C939C919F7D9C934BB99C9190684C +:100AC0009C93A3EDB0E01197F1F700C00000D801AE +:100AD0009C919F779C93AFE9BFE01197F1F700C01D +:100AE000000059C09F34E1F4D8019C919F7B9C93F6 +:100AF0009C919F7D9C936BB99C9190689C93A3ED76 +:100B0000B0E01197F1F700C00000D8019C919F77E9 +:100B10009C93AFE9BFE01197F1F700C000003BC024 +:100B20009F31E1F4D8019C919F7B9C939C919F7D88 +:100B30009C938BB89C9190689C93A3EDB0E0119727 +:100B4000F1F700C00000D8019C919F779C93AFE91A +:100B5000BFE01197F1F700C000001DC09F35D9F428 +:100B6000D8019C919F7B9C939C919F7D9C937BB88B +:100B70009C9190689C93A3EDB0E01197F1F700C0B1 +:100B80000000D8019C919F779C93AFE9BFE011973B +:100B9000F1F700C00000D8019C919F7B9C939C9131 +:100BA00090629C938BB98C9180688C9383ED90E0DC +:100BB0000197F1F700C000008C918F778C938191A1 +:100BC00081115ACC1F926F9282E192E09F938F9392 +:100BD000DF92CF920E9424110F900F900F900F90F0 +:100BE0000F900F90E32DF42D60E940EC22EE75EFAD +:100BF0005FEE31EEA3C3843E09F09EC0D8018C9114 +:100C000080648C938C918F7D8C931BB81AB88C91D7 +:100C100080688C9383ED90E00197F1F700C00000AD +:100C20008C918F778C9389B19AB88F30D1F48C9155 +:100C30008F7B8C938C918F7D8C934BB98C9180683A +:100C40008C9383ED90E00197F1F700C000008C9148 +:100C50008F778C938FE99FE00197F1F700C0000038 +:100C600056C08F34D9F4D8018C918F7B8C938C91A2 +:100C70008F7D8C936BB98C9180688C9383ED90E021 +:100C80000197F1F700C000008C918F778C938FE96A +:100C90009FE00197F1F700C0000039C08F31D9F40F +:100CA000D8018C918F7B8C938C918F7D8C938BB89A +:100CB0008C9180688C9383ED90E00197F1F700C0F0 +:100CC00000008C918F778C938FE99FE00197F1F76B +:100CD00000C000001CC08F35D1F4D8018C918F7BEF +:100CE0008C938C918F7D8C937BB88C9180688C9346 +:100CF00083ED90E00197F1F700C000008C918F77B1 +:100D00008C938FE99FE00197F1F700C00000D801B4 +:100D10008C918F7B8C938C9180628C933BB98C915E +:100D200080688C9383ED90E00197F1F700C000009C +:100D30008C918F778C9302C3863F09F09EC0D801B7 +:100D40008C9180648C938C918F7D8C931BB81AB896 +:100D50008C9180688C9383ED90E00197F1F700C04F +:100D600000008C918F778C9389B19AB88F30D1F431 +:100D70008C918F7B8C938C918F7D8C934BB98C91C4 +:100D800080688C9383ED90E00197F1F700C000003C +:100D90008C918F778C938FE99FE00197F1F700C0DA +:100DA000000056C08F34D9F4D8018C918F7B8C937E +:100DB0008C918F7D8C936BB98C9180688C9383ED33 +:100DC00090E00197F1F700C000008C918F778C9331 +:100DD0008FE99FE00197F1F700C0000039C08F3123 +:100DE000D9F4D8018C918F7B8C938C918F7D8C93CF +:100DF0008BB88C9180688C9383ED90E00197F1F72C +:100E000000C000008C918F778C938FE99FE0019751 +:100E1000F1F700C000001CC08F35D1F4D8018C91CF +:100E20008F7B8C938C918F7D8C937BB88C91806819 +:100E30008C9383ED90E00197F1F700C000008C9156 +:100E40008F778C938FE99FE00197F1F700C0000046 +:100E5000D8018C918F7B8C938C9180628C935BB941 +:100E60008C9180688C9383ED90E00197F1F700C03E +:100E700000008C918F778C9361C28C3F09F09EC0EB +:100E8000D8018C9180648C938C918F7D8C931BB84E +:100E90001AB88C9180688C9383ED90E00197F1F7FC +:100EA00000C000008C918F778C9389B19AB88F30F5 +:100EB000D1F48C918F7B8C938C918F7D8C934BB9DB +:100EC0008C9180688C9383ED90E00197F1F700C0DE +:100ED00000008C918F778C938FE99FE00197F1F759 +:100EE00000C0000056C08F34D9F4D8018C918F7B9C +:100EF0008C938C918F7D8C936BB98C9180688C9343 +:100F000083ED90E00197F1F700C000008C918F779E +:100F10008C938FE99FE00197F1F700C0000039C082 +:100F20008F31D9F4D8018C918F7B8C938C918F7DEC +:100F30008C938BB88C9180688C9383ED90E00197B3 +:100F4000F1F700C000008C918F778C938FE99FE0C0 +:100F50000197F1F700C000001CC08F35D1F4D80113 +:100F60008C918F7B8C938C918F7D8C937BB88C91A3 +:100F700080688C9383ED90E00197F1F700C000004A +:100F80008C918F778C938FE99FE00197F1F700C0E8 +:100F90000000D8018C918F7B8C938C9180628C9314 +:100FA0007BB98C9180688C9383ED90E00197F1F789 +:100FB00000C000008C918F778C93C0C18F3D09F0E9 +:100FC0009EC0D8018C9180648C938C918F7D8C9382 +:100FD0001BB81AB88C9180688C9383ED90E00197D0 +:100FE000F1F700C000008C918F778C9389B19AB88B +:100FF0008F30D1F48C918F7B8C938C918F7D8C93DF +:101000004BB98C9180688C9383ED90E00197F1F758 +:1010100000C000008C918F778C938FE99FE001973F +:10102000F1F700C0000056C08F34D9F4D8018C917C +:101030008F7B8C938C918F7D8C936BB98C91806816 +:101040008C9383ED90E00197F1F700C000008C9144 +:101050008F778C938FE99FE00197F1F700C0000034 +:1010600039C08F31D9F4D8018C918F7B8C938C91BE +:101070008F7D8C938BB88C9180688C9383ED90E0FE +:101080000197F1F700C000008C918F778C938FE966 +:101090009FE00197F1F700C000001CC08F35D1F42C +:1010A000D8018C918F7B8C938C918F7D8C937BB8A6 +:1010B0008C9180688C9383ED90E00197F1F700C0EC +:1010C00000008C918F778C938FE99FE00197F1F767 +:1010D00000C00000D8018C918F7B8C938C91806232 +:1010E0008C932BB98C9180688C9383ED90E0019761 +:1010F000F1F700C000008C918F778C931FC1D8014D +:101100009C9190649C939C919F7D9C931BB81AB872 +:101110009C9190689C93A3EDB0E01197F1F700C00B +:101120000000D8019C919F779C9399B19AB88A301E +:1011300009F079C0892F80558031D0F48C918F7B54 +:101140008C938C918F7D8C937BB88C9180688C93E1 +:1011500083ED90E00197F1F700C000008C918F774C +:101160008C938FE99FE00197F1F700C00000E6C083 +:101170009031D8F4D8018C918F7B8C938C918F7D9A +:101180008C934BB98C9180688C9383ED90E00197A0 +:10119000F1F700C000008C918F778C938FE99FE06E +:1011A0000197F1F700C00000C9C0892F8054803139 +:1011B000D8F4D8018C918F7B8C938C918F7D8C93FC +:1011C0006BB98C9180688C9383ED90E00197F1F777 +:1011D00000C000008C918F778C938FE99FE001977E +:1011E000F1F700C00000AAC09051903108F0A6C0ED +:1011F000D8018C918F7B8C938C918F7D8C938BB845 +:101200008C9180688C9383ED90E00197F1F700C09A +:1012100000008C918F778C938FE99FE00197F1F715 +:1012200000C000008BC09F30E1F4D8019C919F7BEF +:101230009C939C919F7D9C934BB99C9190689C93AF +:10124000A3EDB0E01197F1F700C00000D8019C9128 +:101250009F779C93AFE9BFE01197F1F700C00000C2 +:1012600059C09F34E1F4D8019C919F7B9C939C9141 +:101270009F7D9C936BB99C9190689C93A3EDB0E08B +:101280001197F1F700C00000D8019C919F779C93C3 +:10129000AFE9BFE01197F1F700C000003BC09F31FC +:1012A000E1F4D8019C919F7B9C939C919F7D9C93A2 +:1012B0008BB89C9190689C93A3EDB0E01197F1F7E7 +:1012C00000C00000D8019C919F779C93AFE9BFE0DC +:1012D0001197F1F700C000001DC09F35D9F4D80167 +:1012E0009C919F7B9C939C919F7D9C937BB89C91B0 +:1012F00090689C93A3EDB0E01197F1F700C0000057 +:10130000D8019C919F779C93AFE9BFE01197F1F7CB +:1013100000C00000D8019C919F7B9C939C9190629F +:101320009C938BB98C9180688C9383ED90E00197AE +:10133000F1F700C000008C918F778C93819181111F +:101340005ACC1F9286E98F9389E192E09F938F9305 +:10135000FF92EF920E9424110F900F900F900F9028 +:101360000F900F90E52DFD8D60E940EC22EE75EFBA +:101370005FEE31EEA3C3843E09F09EC0D8018C918C +:1013800080648C938C918F7D8C931BB81AB88C9150 +:1013900080688C9383ED90E00197F1F700C0000026 +:1013A0008C918F778C9389B19AB88F30D1F48C91CE +:1013B0008F7B8C938C918F7D8C934BB98C918068B3 +:1013C0008C9383ED90E00197F1F700C000008C91C1 +:1013D0008F778C938FE99FE00197F1F700C00000B1 +:1013E00056C08F34D9F4D8018C918F7B8C938C911B +:1013F0008F7D8C936BB98C9180688C9383ED90E09A +:101400000197F1F700C000008C918F778C938FE9E2 +:101410009FE00197F1F700C0000039C08F31D9F487 +:10142000D8018C918F7B8C938C918F7D8C938BB812 +:101430008C9180688C9383ED90E00197F1F700C068 +:1014400000008C918F778C938FE99FE00197F1F7E3 +:1014500000C000001CC08F35D1F4D8018C918F7B67 +:101460008C938C918F7D8C937BB88C9180688C93BE +:1014700083ED90E00197F1F700C000008C918F7729 +:101480008C938FE99FE00197F1F700C00000D8012D +:101490008C918F7B8C938C9180628C933BB98C91D7 +:1014A00080688C9383ED90E00197F1F700C0000015 +:1014B0008C918F778C9302C3863F09F09EC0D80130 +:1014C0008C9180648C938C918F7D8C931BB81AB80F +:1014D0008C9180688C9383ED90E00197F1F700C0C8 +:1014E00000008C918F778C9389B19AB88F30D1F4AA +:1014F0008C918F7B8C938C918F7D8C934BB98C913D +:1015000080688C9383ED90E00197F1F700C00000B4 +:101510008C918F778C938FE99FE00197F1F700C052 +:10152000000056C08F34D9F4D8018C918F7B8C93F6 +:101530008C918F7D8C936BB98C9180688C9383EDAB +:1015400090E00197F1F700C000008C918F778C93A9 +:101550008FE99FE00197F1F700C0000039C08F319B +:10156000D9F4D8018C918F7B8C938C918F7D8C9347 +:101570008BB88C9180688C9383ED90E00197F1F7A4 +:1015800000C000008C918F778C938FE99FE00197CA +:10159000F1F700C000001CC08F35D1F4D8018C9148 +:1015A0008F7B8C938C918F7D8C937BB88C91806892 +:1015B0008C9383ED90E00197F1F700C000008C91CF +:1015C0008F778C938FE99FE00197F1F700C00000BF +:1015D000D8018C918F7B8C938C9180628C935BB9BA +:1015E0008C9180688C9383ED90E00197F1F700C0B7 +:1015F00000008C918F778C9361C28C3F09F09EC064 +:10160000D8018C9180648C938C918F7D8C931BB8C6 +:101610001AB88C9180688C9383ED90E00197F1F774 +:1016200000C000008C918F778C9389B19AB88F306D +:10163000D1F48C918F7B8C938C918F7D8C934BB953 +:101640008C9180688C9383ED90E00197F1F700C056 +:1016500000008C918F778C938FE99FE00197F1F7D1 +:1016600000C0000056C08F34D9F4D8018C918F7B14 +:101670008C938C918F7D8C936BB98C9180688C93BB +:1016800083ED90E00197F1F700C000008C918F7717 +:101690008C938FE99FE00197F1F700C0000039C0FB +:1016A0008F31D9F4D8018C918F7B8C938C918F7D65 +:1016B0008C938BB88C9180688C9383ED90E001972C +:1016C000F1F700C000008C918F778C938FE99FE039 +:1016D0000197F1F700C000001CC08F35D1F4D8018C +:1016E0008C918F7B8C938C918F7D8C937BB88C911C +:1016F00080688C9383ED90E00197F1F700C00000C3 +:101700008C918F778C938FE99FE00197F1F700C060 +:101710000000D8018C918F7B8C938C9180628C938C +:101720007BB98C9180688C9383ED90E00197F1F701 +:1017300000C000008C918F778C93C0C18F3D09F061 +:101740009EC0D8018C9180648C938C918F7D8C93FA +:101750001BB81AB88C9180688C9383ED90E0019748 +:10176000F1F700C000008C918F778C9389B19AB803 +:101770008F30D1F48C918F7B8C938C918F7D8C9357 +:101780004BB98C9180688C9383ED90E00197F1F7D1 +:1017900000C000008C918F778C938FE99FE00197B8 +:1017A000F1F700C0000056C08F34D9F4D8018C91F5 +:1017B0008F7B8C938C918F7D8C936BB98C9180688F +:1017C0008C9383ED90E00197F1F700C000008C91BD +:1017D0008F778C938FE99FE00197F1F700C00000AD +:1017E00039C08F31D9F4D8018C918F7B8C938C9137 +:1017F0008F7D8C938BB88C9180688C9383ED90E077 +:101800000197F1F700C000008C918F778C938FE9DE +:101810009FE00197F1F700C000001CC08F35D1F4A4 +:10182000D8018C918F7B8C938C918F7D8C937BB81E +:101830008C9180688C9383ED90E00197F1F700C064 +:1018400000008C918F778C938FE99FE00197F1F7DF +:1018500000C00000D8018C918F7B8C938C918062AA +:101860008C932BB98C9180688C9383ED90E00197D9 +:10187000F1F700C000008C918F778C931FC1D801C5 +:101880009C9190649C939C919F7D9C931BB81AB8EB +:101890009C9190689C93A3EDB0E01197F1F700C084 +:1018A0000000D8019C919F779C9399B19AB88A3097 +:1018B00009F079C0892F80558031D0F48C918F7BCD +:1018C0008C938C918F7D8C937BB88C9180688C935A +:1018D00083ED90E00197F1F700C000008C918F77C5 +:1018E0008C938FE99FE00197F1F700C00000E6C0FC +:1018F0009031D8F4D8018C918F7B8C938C918F7D13 +:101900008C934BB98C9180688C9383ED90E0019718 +:10191000F1F700C000008C918F778C938FE99FE0E6 +:101920000197F1F700C00000C9C0892F80548031B1 +:10193000D8F4D8018C918F7B8C938C918F7D8C9374 +:101940006BB98C9180688C9383ED90E00197F1F7EF +:1019500000C000008C918F778C938FE99FE00197F6 +:10196000F1F700C00000AAC09051903108F0A6C065 +:10197000D8018C918F7B8C938C918F7D8C938BB8BD +:101980008C9180688C9383ED90E00197F1F700C013 +:1019900000008C918F778C938FE99FE00197F1F78E +:1019A00000C000008BC09F30E1F4D8019C919F7B68 +:1019B0009C939C919F7D9C934BB99C9190689C9328 +:1019C000A3EDB0E01197F1F700C00000D8019C91A1 +:1019D0009F779C93AFE9BFE01197F1F700C000003B +:1019E00059C09F34E1F4D8019C919F7B9C939C91BA +:1019F0009F7D9C936BB99C9190689C93A3EDB0E004 +:101A00001197F1F700C00000D8019C919F779C933B +:101A1000AFE9BFE01197F1F700C000003BC09F3174 +:101A2000E1F4D8019C919F7B9C939C919F7D9C931A +:101A30008BB89C9190689C93A3EDB0E01197F1F75F +:101A400000C00000D8019C919F779C93AFE9BFE054 +:101A50001197F1F700C000001DC09F35D9F4D801DF +:101A60009C919F7B9C939C919F7D9C937BB89C9128 +:101A700090689C93A3EDB0E01197F1F700C00000CF +:101A8000D8019C919F779C93AFE9BFE01197F1F744 +:101A900000C00000D8019C919F7B9C939C91906218 +:101AA0009C938BB98C9180688C9383ED90E0019727 +:101AB000F1F700C000008C918F778C938191811198 +:101AC0005ACCE2E0F2E060E940EC22EE75EF5FEE26 +:101AD00031EEA3C3843E09F09EC0D8018C9180648E +:101AE0008C938C918F7D8C931BB81AB88C918068E5 +:101AF0008C9383ED90E00197F1F700C000008C918A +:101B00008F778C9389B19AB88F30D1F48C918F7B79 +:101B10008C938C918F7D8C934BB98C9180688C9336 +:101B200083ED90E00197F1F700C000008C918F7772 +:101B30008C938FE99FE00197F1F700C0000056C039 +:101B40008F34D9F4D8018C918F7B8C938C918F7DBD +:101B50008C936BB98C9180688C9383ED90E00197A6 +:101B6000F1F700C000008C918F778C938FE99FE094 +:101B70000197F1F700C0000039C08F31D9F4D801C6 +:101B80008C918F7B8C938C918F7D8C938BB88C9167 +:101B900080688C9383ED90E00197F1F700C000001E +:101BA0008C918F778C938FE99FE00197F1F700C0BC +:101BB00000001CC08F35D1F4D8018C918F7B8C93A1 +:101BC0008C918F7D8C937BB88C9180688C9383ED06 +:101BD00090E00197F1F700C000008C918F778C9313 +:101BE0008FE99FE00197F1F700C00000D8018C91C8 +:101BF0008F7B8C938C9180628C933BB98C918068A5 +:101C00008C9383ED90E00197F1F700C000008C9178 +:101C10008F778C9302C3863F09F09EC0D8018C91C8 +:101C200080648C938C918F7D8C931BB81AB88C91A7 +:101C300080688C9383ED90E00197F1F700C000007D +:101C40008C918F778C9389B19AB88F30D1F48C9125 +:101C50008F7B8C938C918F7D8C934BB98C9180680A +:101C60008C9383ED90E00197F1F700C000008C9118 +:101C70008F778C938FE99FE00197F1F700C0000008 +:101C800056C08F34D9F4D8018C918F7B8C938C9172 +:101C90008F7D8C936BB98C9180688C9383ED90E0F1 +:101CA0000197F1F700C000008C918F778C938FE93A +:101CB0009FE00197F1F700C0000039C08F31D9F4DF +:101CC000D8018C918F7B8C938C918F7D8C938BB86A +:101CD0008C9180688C9383ED90E00197F1F700C0C0 +:101CE00000008C918F778C938FE99FE00197F1F73B +:101CF00000C000001CC08F35D1F4D8018C918F7BBF +:101D00008C938C918F7D8C937BB88C9180688C9315 +:101D100083ED90E00197F1F700C000008C918F7780 +:101D20008C938FE99FE00197F1F700C00000D80184 +:101D30008C918F7B8C938C9180628C935BB98C910E +:101D400080688C9383ED90E00197F1F700C000006C +:101D50008C918F778C9361C28C3F09F09EC0D80123 +:101D60008C9180648C938C918F7D8C931BB81AB866 +:101D70008C9180688C9383ED90E00197F1F700C01F +:101D800000008C918F778C9389B19AB88F30D1F401 +:101D90008C918F7B8C938C918F7D8C934BB98C9194 +:101DA00080688C9383ED90E00197F1F700C000000C +:101DB0008C918F778C938FE99FE00197F1F700C0AA +:101DC000000056C08F34D9F4D8018C918F7B8C934E +:101DD0008C918F7D8C936BB98C9180688C9383ED03 +:101DE00090E00197F1F700C000008C918F778C9301 +:101DF0008FE99FE00197F1F700C0000039C08F31F3 +:101E0000D9F4D8018C918F7B8C938C918F7D8C939E +:101E10008BB88C9180688C9383ED90E00197F1F7FB +:101E200000C000008C918F778C938FE99FE0019721 +:101E3000F1F700C000001CC08F35D1F4D8018C919F +:101E40008F7B8C938C918F7D8C937BB88C918068E9 +:101E50008C9383ED90E00197F1F700C000008C9126 +:101E60008F778C938FE99FE00197F1F700C0000016 +:101E7000D8018C918F7B8C938C9180628C937BB9F1 +:101E80008C9180688C9383ED90E00197F1F700C00E +:101E900000008C918F778C93C0C18F3D09F09EC05C +:101EA000D8018C9180648C938C918F7D8C931BB81E +:101EB0001AB88C9180688C9383ED90E00197F1F7CC +:101EC00000C000008C918F778C9389B19AB88F30C5 +:101ED000D1F48C918F7B8C938C918F7D8C934BB9AB +:101EE0008C9180688C9383ED90E00197F1F700C0AE +:101EF00000008C918F778C938FE99FE00197F1F729 +:101F000000C0000056C08F34D9F4D8018C918F7B6B +:101F10008C938C918F7D8C936BB98C9180688C9312 +:101F200083ED90E00197F1F700C000008C918F776E +:101F30008C938FE99FE00197F1F700C0000039C052 +:101F40008F31D9F4D8018C918F7B8C938C918F7DBC +:101F50008C938BB88C9180688C9383ED90E0019783 +:101F6000F1F700C000008C918F778C938FE99FE090 +:101F70000197F1F700C000001CC08F35D1F4D801E3 +:101F80008C918F7B8C938C918F7D8C937BB88C9173 +:101F900080688C9383ED90E00197F1F700C000001A +:101FA0008C918F778C938FE99FE00197F1F700C0B8 +:101FB0000000D8018C918F7B8C938C9180628C93E4 +:101FC0002BB98C9180688C9383ED90E00197F1F7A9 +:101FD00000C000008C918F778C931FC1D8019C9119 +:101FE00090649C939C919F7D9C931BB81AB89C9184 +:101FF00090689C93A3EDB0E01197F1F700C000004A +:10200000D8019C919F779C9399B19AB88A3009F036 +:1020100079C0892F80558031D0F48C918F7B8C933F +:102020008C918F7D8C937BB88C9180688C9383EDA1 +:1020300090E00197F1F700C000008C918F778C93AE +:102040008FE99FE00197F1F700C00000E6C09031F2 +:10205000D8F4D8018C918F7B8C938C918F7D8C934D +:102060004BB98C9180688C9383ED90E00197F1F7E8 +:1020700000C000008C918F778C938FE99FE00197CF +:10208000F1F700C00000C9C0892F80548031D8F416 +:10209000D8018C918F7B8C938C918F7D8C936BB9B5 +:1020A0008C9180688C9383ED90E00197F1F700C0EC +:1020B00000008C918F778C938FE99FE00197F1F767 +:1020C00000C00000AAC09051903108F0A6C0D8010D +:1020D0008C918F7B8C938C918F7D8C938BB88C9112 +:1020E00080688C9383ED90E00197F1F700C00000C9 +:1020F0008C918F778C938FE99FE00197F1F700C067 +:1021000000008BC09F30E1F4D8019C919F7B9C9391 +:102110009C919F7D9C934BB99C9190689C93A3ED5F +:10212000B0E01197F1F700C00000D8019C919F77B3 +:102130009C93AFE9BFE01197F1F700C0000059C0D0 +:102140009F34E1F4D8019C919F7B9C939C919F7D4F +:102150009C936BB99C9190689C93A3EDB0E0119710 +:10216000F1F700C00000D8019C919F779C93AFE9E4 +:10217000BFE01197F1F700C000003BC09F31E1F4D0 +:10218000D8019C919F7B9C939C919F7D9C938BB845 +:102190009C9190689C93A3EDB0E01197F1F700C07B +:1021A0000000D8019C919F779C93AFE9BFE0119705 +:1021B000F1F700C000001DC09F35D9F4D8019C91F3 +:1021C0009F7B9C939C919F7D9C937BB89C919068F6 +:1021D0009C93A3EDB0E01197F1F700C00000D80187 +:1021E0009C919F779C93AFE9BFE01197F1F700C0F6 +:1021F0000000D8019C919F7B9C939C9190629C9342 +:102200008BB98C9180688C9383ED90E00197F1F706 +:1022100000C000008C918F778C93819181115ACCF2 +:10222000BFEFE3EDF0E3B150E040F040E1F700C074 +:1022300000000C94F50180E392E00E94A80008954C +:102240000790F691E02D19940F931F93CF93DF938E +:10225000CDB7DEB72E970FB6F894DEBF0FBECDBF59 +:102260000E891F8986E08C831A8309838FEF9FE78D +:102270009E838D83CE014A96AC01688D798DCE0107 +:1022800001960E945311EF81F885E00FF11F108233 +:102290002E960FB6F894DEBF0FBECDBFDF91CF9163 +:1022A0001F910F9108952F923F924F925F926F92DC +:1022B0007F928F929F92AF92BF92CF92DF92EF92D6 +:1022C000FF920F931F93CF93DF93CDB7DEB72C9779 +:1022D0000FB6F894DEBF0FBECDBF7C016B018A0143 +:1022E000FC0117821682838181FFC6C188248394F2 +:1022F000912C8C0E9D1EF7019381F60193FD859123 +:1023000093FF81916F01882309F4B2C1853239F4BA +:1023100093FD859193FF81916F01853229F4B70177 +:1023200090E00E946E13E7CF512C312C20E0203238 +:10233000A8F48B3261F028F4803251F0833271F4CA +:102340000BC08D3239F0803349F4216028C02260FF +:10235000246025C0286023C0206121C027FD27C03C +:10236000382F30533A3078F426FF06C0FAE05F9EEB +:10237000300D1124532E13C08AE0389E300D1124E5 +:10238000332E20620CC08E3221F426FD71C12064F0 +:1023900006C08C3611F4206802C0883641F4F6017C +:1023A00093FD859193FF81916F018111C0CF982F8B +:1023B0009554933018F09052933028F40C5F1F4FCF +:1023C000FFE3F9830DC0833631F0833771F0833535 +:1023D00009F05EC023C0F801808189830E5F1F4F22 +:1023E00044244394512C540115C03801F2E06F0E7F +:1023F000711CF801A080B18026FF03C0652D70E03C +:1024000002C06FEF7FEFC5012C870E9463132C0180 +:1024100083012C856FE7262E222218C03801F2E0B6 +:102420006F0E711CF801A080B18026FF03C0652DDE +:1024300070E002C06FEF7FEFC5012C870E94581338 +:102440002C012C8550E8252E222A830123FC1CC058 +:1024500006C0B70180E290E00E946E133A94832D8B +:1024600090E048165906A8F30FC0F50127FC8591A6 +:1024700027FE81915F01B70190E00E946E13311039 +:102480003A94F1E04F1A51084114510471F7EDC02C +:10249000843611F0893641F5F80127FF07C06081C5 +:1024A0007181828193810C5F1F4F08C060817181AF +:1024B000882777FD8095982F0E5F1F4F4FE6B42E2B +:1024C000B22297FF09C090958095709561957F4FD6 +:1024D0008F4F9F4FF0E8BF2A2AE030E0A4010E940E +:1024E0009A13A82EA81843C0853731F43FEEB32EB7 +:1024F000B2222AE030E024C099EFB92EB2228F3602 +:10250000B9F020F4883509F0B3C00DC0803721F050 +:10251000883709F0ADC002C020E1B22AB4FE0BC07A +:1025200084E0B82A08C024FF09C0E6E0BE2A06C03D +:1025300028E030E005C020E130E002C020E132E0D8 +:10254000F801B7FE07C060817181828193810C5FC1 +:102550001F4F06C06081718180E090E00E5F1F4FC9 +:10256000A4010E949A13A82EA818FFE7BF22B6FE66 +:102570000BC02B2D2E7FA51450F4B4FE0AC0B2FC64 +:1025800008C02B2D2E7E05C07A2C2B2D03C07A2C53 +:1025900001C0752C24FF0DC0FE01EA0DF11D8081E4 +:1025A000803311F4297E09C022FF06C0739473940E +:1025B00004C0822F867809F0739423FD14C020FF95 +:1025C0000FC05A2C731460F4530C5718732C08C0A6 +:1025D000B70180E290E02C870E946E1373942C85E3 +:1025E0007314B0F304C0731410F4371801C0312C05 +:1025F00024FF12C0B70180E390E02C870E946E1385 +:102600002C8522FF1EC021FF03C088E590E002C098 +:1026100088E790E0B7010CC0822F867891F021FD09 +:1026200002C080E201C08BE227FD8DE2B70190E09D +:102630000E946E1306C0B70180E390E00E946E1303 +:102640005A94A514C0F3AA94F401EA0DF11DB70140 +:10265000808190E00E946E13A110F5CF06C0B701F3 +:1026600080E290E00E946E133A943110F8CF43CE8E +:10267000F7012681378102C02FEF3FEFC9012C9669 +:102680000FB6F894DEBF0FBECDBFDF91CF911F9183 +:102690000F91FF90EF90DF90CF90BF90AF909F9001 +:1026A0008F907F906F905F904F903F902F90089504 +:1026B000FC010590615070400110D8F7809590950D +:1026C0008E0F9F1F0895FC01615070400190011012 +:1026D000D8F7809590958E0F9F1F08950F931F93A5 +:1026E000CF93DF938C01EB018B8181FD03C00FEF52 +:1026F0001FEF1AC082FF0DC02E813F818C819D810A +:102700002817390764F4E881F9810193F983E88394 +:1027100006C0E885F985802F1995892B41F78E81B0 +:102720009F8101969F838E83C801DF91CF911F9176 +:102730000F910895FA01AA27283051F1203181F133 +:10274000E8946F936E7F6E5F7F4F8F4F9F4FAF4FB9 +:10275000B1E03ED0B4E03CD0670F781F891F9A1FCC +:10276000A11D680F791F8A1F911DA11D6A0F711D80 +:10277000811D911DA11D20D009F468943F912AE08C +:10278000269F11243019305D3193DEF6CF01089574 +:10279000462F4770405D4193B3E00FD0C9F7F6CFA5 +:1027A000462F4F70405D4A3318F0495D31FD40526D +:1027B000419302D0A9F7EACFB4E0A6959795879503 +:1027C00077956795BA95C9F70097610571050895E2 +:1027D0009B01AC010A2E069457954795379527958E +:1027E000BA95C9F7620F731F841F951FA01D089526 +:0427F000F894FFCF8B +:1027F40020000A2048616C6C6F2048616E6E61682D +:10280400210030782530345800204C65640A20308B +:102814007825303258204B6F6E74726173740000E7 :00000001FF diff --git a/V2/Programm/Programm/Debug/Programm.lss b/V2/Programm/Programm/Debug/Programm.lss index a9076cb..fe96689 100644 --- a/V2/Programm/Programm/Debug/Programm.lss +++ b/V2/Programm/Programm/Debug/Programm.lss @@ -3,1594 +3,12960 @@ Programm.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000000 00800200 00000508 0000059c 2**0 + 0 .data 00000030 00800200 000027f4 00002888 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00000508 00000000 00000000 00000094 2**1 + 1 .text 000027f4 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000005 00800200 00800200 0000059c 2**0 + 2 .bss 00000002 00800230 00800230 000028b8 2**0 ALLOC - 3 .stab 000006e4 00000000 00000000 0000059c 2**2 + 3 .stab 00000c9c 00000000 00000000 000028b8 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 00000082 00000000 00000000 00000c80 2**0 + 4 .stabstr 000001aa 00000000 00000000 00003554 2**0 CONTENTS, READONLY, DEBUGGING - 5 .comment 0000002f 00000000 00000000 00000d02 2**0 + 5 .comment 0000002f 00000000 00000000 000036fe 2**0 CONTENTS, READONLY - 6 .debug_aranges 00000030 00000000 00000000 00000d31 2**0 + 6 .debug_aranges 000000a8 00000000 00000000 0000372d 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 00004170 00000000 00000000 00000d61 2**0 + 7 .debug_info 00017fac 00000000 00000000 000037d5 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 000003c6 00000000 00000000 00004ed1 2**0 + 8 .debug_abbrev 0000080c 00000000 00000000 0001b781 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 00000977 00000000 00000000 00005297 2**0 + 9 .debug_line 00002bc7 00000000 00000000 0001bf8d 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 00000044 00000000 00000000 00005c10 2**2 + 10 .debug_frame 00000180 00000000 00000000 0001eb54 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00001866 00000000 00000000 00005c54 2**0 + 11 .debug_str 00001cb8 00000000 00000000 0001ecd4 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 0000090d 00000000 00000000 000074ba 2**0 + 12 .debug_loc 0000a922 00000000 00000000 0002098c 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 000002a8 00000000 00000000 00007dc7 2**0 + 13 .debug_ranges 00000df8 00000000 00000000 0002b2ae 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: - 0: 0c 94 75 00 jmp 0xea ; 0xea <__ctors_end> - 4: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 8: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - c: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 10: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 14: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 18: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 1c: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 20: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 24: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 28: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 2c: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 30: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 34: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 38: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 3c: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 40: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 44: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 48: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 4c: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 50: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 54: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 58: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 5c: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 60: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 64: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 68: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 6c: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 70: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 74: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 78: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 7c: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 80: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 84: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 88: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 8c: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 90: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 94: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 98: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - 9c: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - a0: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - a4: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - a8: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - ac: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - b0: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - b4: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - b8: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - bc: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - c0: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - c4: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - c8: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - cc: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - d0: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - d4: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - d8: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - dc: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> - e0: 0c 94 99 00 jmp 0x132 ; 0x132 <__bad_interrupt> + 0: 0c 94 75 00 jmp 0xea ; 0xea <__ctors_end> + 4: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 8: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 10: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 14: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 18: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 1c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 20: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 24: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 28: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 2c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 30: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 34: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 38: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 3c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 40: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 44: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 48: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 4c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 50: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 54: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 58: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 5c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 60: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 64: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 68: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 6c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 70: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 74: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 78: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 7c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 80: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 84: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 88: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 8c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 90: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 94: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 98: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + 9c: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + a0: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + a4: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + a8: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + ac: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + b0: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + b4: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + b8: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + bc: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + c0: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + c4: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + c8: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + cc: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + d0: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + d4: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + d8: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + dc: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> + e0: 0c 94 a6 00 jmp 0x14c ; 0x14c <__bad_interrupt> 000000e4 <__trampolines_start>: - e4: 0c 94 67 02 jmp 0x4ce ; 0x4ce <_GLOBAL__sub_I_rot> + e4: 0c 94 1b 11 jmp 0x2236 ; 0x2236 <_GLOBAL__sub_I_d> 000000e8 <__ctors_start>: - e8: 67 02 muls r22, r23 + e8: 1b 11 cpse r17, r11 000000ea <__ctors_end>: - ea: 11 24 eor r1, r1 - ec: 1f be out 0x3f, r1 ; 63 - ee: cf ef ldi r28, 0xFF ; 255 - f0: d1 e2 ldi r29, 0x21 ; 33 - f2: de bf out 0x3e, r29 ; 62 - f4: cd bf out 0x3d, r28 ; 61 - f6: 00 e0 ldi r16, 0x00 ; 0 - f8: 0c bf out 0x3c, r16 ; 60 + ea: 11 24 eor r1, r1 + ec: 1f be out 0x3f, r1 ; 63 + ee: cf ef ldi r28, 0xFF ; 255 + f0: d1 e2 ldi r29, 0x21 ; 33 + f2: de bf out 0x3e, r29 ; 62 + f4: cd bf out 0x3d, r28 ; 61 + f6: 00 e0 ldi r16, 0x00 ; 0 + f8: 0c bf out 0x3c, r16 ; 60 -000000fa <__do_clear_bss>: - fa: 22 e0 ldi r18, 0x02 ; 2 - fc: a0 e0 ldi r26, 0x00 ; 0 - fe: b2 e0 ldi r27, 0x02 ; 2 - 100: 01 c0 rjmp .+2 ; 0x104 <.do_clear_bss_start> +000000fa <__do_copy_data>: + fa: 12 e0 ldi r17, 0x02 ; 2 + fc: a0 e0 ldi r26, 0x00 ; 0 + fe: b2 e0 ldi r27, 0x02 ; 2 + 100: e4 ef ldi r30, 0xF4 ; 244 + 102: f7 e2 ldi r31, 0x27 ; 39 + 104: 00 e0 ldi r16, 0x00 ; 0 + 106: 0b bf out 0x3b, r16 ; 59 + 108: 02 c0 rjmp .+4 ; 0x10e <__do_copy_data+0x14> + 10a: 07 90 elpm r0, Z+ + 10c: 0d 92 st X+, r0 + 10e: a0 33 cpi r26, 0x30 ; 48 + 110: b1 07 cpc r27, r17 + 112: d9 f7 brne .-10 ; 0x10a <__do_copy_data+0x10> -00000102 <.do_clear_bss_loop>: - 102: 1d 92 st X+, r1 +00000114 <__do_clear_bss>: + 114: 22 e0 ldi r18, 0x02 ; 2 + 116: a0 e3 ldi r26, 0x30 ; 48 + 118: b2 e0 ldi r27, 0x02 ; 2 + 11a: 01 c0 rjmp .+2 ; 0x11e <.do_clear_bss_start> -00000104 <.do_clear_bss_start>: - 104: a5 30 cpi r26, 0x05 ; 5 - 106: b2 07 cpc r27, r18 - 108: e1 f7 brne .-8 ; 0x102 <.do_clear_bss_loop> +0000011c <.do_clear_bss_loop>: + 11c: 1d 92 st X+, r1 -0000010a <__do_global_ctors>: - 10a: 10 e0 ldi r17, 0x00 ; 0 - 10c: ca ee ldi r28, 0xEA ; 234 - 10e: d0 e0 ldi r29, 0x00 ; 0 - 110: 00 e0 ldi r16, 0x00 ; 0 - 112: 06 c0 rjmp .+12 ; 0x120 <__do_global_ctors+0x16> - 114: 22 97 sbiw r28, 0x02 ; 2 - 116: 01 09 sbc r16, r1 - 118: fe 01 movw r30, r28 - 11a: 0b bf out 0x3b, r16 ; 59 - 11c: 0e 94 7e 02 call 0x4fc ; 0x4fc <__tablejump_elpm__> - 120: c8 3e cpi r28, 0xE8 ; 232 - 122: d1 07 cpc r29, r17 - 124: 80 e0 ldi r24, 0x00 ; 0 - 126: 08 07 cpc r16, r24 - 128: a9 f7 brne .-22 ; 0x114 <__do_global_ctors+0xa> - 12a: 0e 94 9b 00 call 0x136 ; 0x136
- 12e: 0c 94 82 02 jmp 0x504 ; 0x504 <_exit> +0000011e <.do_clear_bss_start>: + 11e: a2 33 cpi r26, 0x32 ; 50 + 120: b2 07 cpc r27, r18 + 122: e1 f7 brne .-8 ; 0x11c <.do_clear_bss_loop> -00000132 <__bad_interrupt>: - 132: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> +00000124 <__do_global_ctors>: + 124: 10 e0 ldi r17, 0x00 ; 0 + 126: ca ee ldi r28, 0xEA ; 234 + 128: d0 e0 ldi r29, 0x00 ; 0 + 12a: 00 e0 ldi r16, 0x00 ; 0 + 12c: 06 c0 rjmp .+12 ; 0x13a <__do_global_ctors+0x16> + 12e: 22 97 sbiw r28, 0x02 ; 2 + 130: 01 09 sbc r16, r1 + 132: fe 01 movw r30, r28 + 134: 0b bf out 0x3b, r16 ; 59 + 136: 0e 94 20 11 call 0x2240 ; 0x2240 <__tablejump_elpm__> + 13a: c8 3e cpi r28, 0xE8 ; 232 + 13c: d1 07 cpc r29, r17 + 13e: 80 e0 ldi r24, 0x00 ; 0 + 140: 08 07 cpc r16, r24 + 142: a9 f7 brne .-22 ; 0x12e <__do_global_ctors+0xa> + 144: 0e 94 c8 01 call 0x390 ; 0x390
+ 148: 0c 94 f8 13 jmp 0x27f0 ; 0x27f0 <_exit> -00000136
: +0000014c <__bad_interrupt>: + 14c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +00000150 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev>: +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 150: a1 98 cbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 152: 99 9a sbi 0x13, 1 ; 19 namespace avrlib { struct portc { static uint8_t port() { return PORTC; } static void port(uint8_t v) { PORTC = v; } - 136: 40 98 cbi 0x08, 0 ; 8 - 138: 88 e0 ldi r24, 0x08 ; 8 -namespace avrlib { - - struct portg - { - static uint8_t port() { return PORTG; } - static void port(uint8_t v) { PORTG = v; } - 13a: a0 98 cbi 0x14, 0 ; 20 - - static uint8_t pin() { return PING; } - static void pin(uint8_t v) { PING = v; } - - static uint8_t dir() { return DDRG; } - static void dir(uint8_t v) { DDRG = v; } - 13c: 98 9a sbi 0x13, 0 ; 19 -namespace avrlib { - - struct portg - { - static uint8_t port() { return PORTG; } - static void port(uint8_t v) { PORTG = v; } - 13e: a1 9a sbi 0x14, 1 ; 20 - - static uint8_t pin() { return PING; } - static void pin(uint8_t v) { PING = v; } - - static uint8_t dir() { return DDRG; } - static void dir(uint8_t v) { DDRG = v; } - 140: 99 9a sbi 0x13, 1 ; 19 - #else - //round up by default - __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); - #endif - - __builtin_avr_delay_cycles(__ticks_dc); - 142: 00 c0 rjmp .+0 ; 0x144 - 144: 00 c0 rjmp .+0 ; 0x146 - 146: 00 00 nop -namespace avrlib { - - struct portg - { - static uint8_t port() { return PORTG; } - static void port(uint8_t v) { PORTG = v; } - 148: a1 98 cbi 0x14, 1 ; 20 - - static uint8_t pin() { return PING; } - static void pin(uint8_t v) { PING = v; } - - static uint8_t dir() { return DDRG; } - static void dir(uint8_t v) { DDRG = v; } - 14a: 99 9a sbi 0x13, 1 ; 19 - 14c: 81 50 subi r24, 0x01 ; 1 - sck::make_low(); //output und low; - cs::make_high(); //output und low; - sdi::make_low(); //output und low; - } - void send_soft(uint8_t data) { - for (uint8_t i=0; i<8; i++) - 14e: a9 f7 brne .-22 ; 0x13a - 150: 98 e0 ldi r25, 0x08 ; 8 - 152: 8d ec ldi r24, 0xCD ; 205 - { - if (data & 0x80) { - 154: 88 23 and r24, r24 - 156: 1c f4 brge .+6 ; 0x15e -namespace avrlib { - - struct portg - { - static uint8_t port() { return PORTG; } - static void port(uint8_t v) { PORTG = v; } - 158: a0 9a sbi 0x14, 0 ; 20 - - static uint8_t pin() { return PING; } - static void pin(uint8_t v) { PING = v; } - - static uint8_t dir() { return DDRG; } - static void dir(uint8_t v) { DDRG = v; } - 15a: 98 9a sbi 0x13, 0 ; 19 - 15c: 02 c0 rjmp .+4 ; 0x162 -namespace avrlib { - - struct portg - { - static uint8_t port() { return PORTG; } - static void port(uint8_t v) { PORTG = v; } - 15e: a0 98 cbi 0x14, 0 ; 20 - - static uint8_t pin() { return PING; } - static void pin(uint8_t v) { PING = v; } - - static uint8_t dir() { return DDRG; } - static void dir(uint8_t v) { DDRG = v; } - 160: 98 9a sbi 0x13, 0 ; 19 -namespace avrlib { - - struct portg - { - static uint8_t port() { return PORTG; } - static void port(uint8_t v) { PORTG = v; } - 162: a1 9a sbi 0x14, 1 ; 20 - - static uint8_t pin() { return PING; } - static void pin(uint8_t v) { PING = v; } - - static uint8_t dir() { return DDRG; } - static void dir(uint8_t v) { DDRG = v; } - 164: 99 9a sbi 0x13, 1 ; 19 - } - else { - sdi::make_low(); - } - sck::make_high(); - data<<=1; - 166: 88 0f add r24, r24 - 168: 00 c0 rjmp .+0 ; 0x16a - 16a: 00 c0 rjmp .+0 ; 0x16c - 16c: 00 00 nop -namespace avrlib { - - struct portg - { - static uint8_t port() { return PORTG; } - static void port(uint8_t v) { PORTG = v; } - 16e: a1 98 cbi 0x14, 1 ; 20 - - static uint8_t pin() { return PING; } - static void pin(uint8_t v) { PING = v; } - - static uint8_t dir() { return DDRG; } - static void dir(uint8_t v) { DDRG = v; } - 170: 99 9a sbi 0x13, 1 ; 19 - 172: 91 50 subi r25, 0x01 ; 1 - sck::make_low(); //output und low; - cs::make_high(); //output und low; - sdi::make_low(); //output und low; - } - void send_soft(uint8_t data) { - for (uint8_t i=0; i<8; i++) - 174: 79 f7 brne .-34 ; 0x154 - 176: 40 9a sbi 0x08, 0 ; 8 - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 178: eb e0 ldi r30, 0x0B ; 11 - 17a: f1 e0 ldi r31, 0x01 ; 1 - 17c: 80 81 ld r24, Z - struct pin - { - static void set(bool value = true) - { - if (value) - Port::port(Port::port() | (1< - 19e: 00 c0 rjmp .+0 ; 0x1a0 - 1a0: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 1a2: 80 81 ld r24, Z - else - Port::port(Port::port() & ~(1< - 1f0: 00 c0 rjmp .+0 ; 0x1f2 - 1f2: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 1f4: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 216: 00 c0 rjmp .+0 ; 0x218 - 218: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 21a: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 23c: 00 c0 rjmp .+0 ; 0x23e - 23e: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 240: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 262: 00 c0 rjmp .+0 ; 0x264 - 264: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 266: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 288: 00 c0 rjmp .+0 ; 0x28a - 28a: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 28c: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 2ae: 00 c0 rjmp .+0 ; 0x2b0 - 2b0: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 2b2: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 2d4: 00 c0 rjmp .+0 ; 0x2d6 - 2d6: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 2d8: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 2fa: 00 c0 rjmp .+0 ; 0x2fc - 2fc: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 2fe: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 320: 00 c0 rjmp .+0 ; 0x322 - 322: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 324: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 346: 00 c0 rjmp .+0 ; 0x348 - 348: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 34a: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 36c: 00 c0 rjmp .+0 ; 0x36e - 36e: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 370: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 392: 00 c0 rjmp .+0 ; 0x394 - 394: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 396: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 3b8: 00 c0 rjmp .+0 ; 0x3ba - 3ba: 00 00 nop - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 3bc: 90 81 ld r25, Z - else - Port::port(Port::port() & ~(1< - 3d2: 00 c0 rjmp .+0 ; 0x3d4 - 3d4: 00 00 nop - 3d6: 28 98 cbi 0x05, 0 ; 5 - 3d8: 9c 91 ld r25, X - struct pin - { - static void set(bool value = true) - { - if (value) - Port::port(Port::port() | (1< - 3ec: 00 c0 rjmp .+0 ; 0x3ee - 3ee: 00 00 nop - -namespace avrlib { - - struct porth - { - static uint8_t port() { return PORTH; } - 3f0: 9c 91 ld r25, X - else - Port::port(Port::port() & ~(1< - 40a: 00 c0 rjmp .+0 ; 0x40c - 40c: 00 00 nop - -namespace avrlib { - - struct porth - { - static uint8_t port() { return PORTH; } - 40e: 9c 91 ld r25, X - 410: 90 64 ori r25, 0x40 ; 64 - static void port(uint8_t v) { PORTH = v; } - 412: 9c 93 st X, r25 - 414: 9f ef ldi r25, 0xFF ; 255 - 416: 23 ed ldi r18, 0xD3 ; 211 - 418: 80 e3 ldi r24, 0x30 ; 48 - 41a: 91 50 subi r25, 0x01 ; 1 - 41c: 20 40 sbci r18, 0x00 ; 0 - 41e: 80 40 sbci r24, 0x00 ; 0 - 420: e1 f7 brne .-8 ; 0x41a - 422: 00 c0 rjmp .+0 ; 0x424 - 424: 00 00 nop - -namespace avrlib { - - struct porth - { - static uint8_t port() { return PORTH; } - 426: 9c 91 ld r25, X - else - Port::port(Port::port() & ~(1< - -00000434 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev>: -namespace avrlib { - - struct portg - { - static uint8_t port() { return PORTG; } - static void port(uint8_t v) { PORTG = v; } - 434: a1 98 cbi 0x14, 1 ; 20 - - static uint8_t pin() { return PING; } - static void pin(uint8_t v) { PING = v; } - - static uint8_t dir() { return DDRG; } - static void dir(uint8_t v) { DDRG = v; } - 436: 99 9a sbi 0x13, 1 ; 19 - 438: 40 9a sbi 0x08, 0 ; 8 + 154: 40 9a sbi 0x08, 0 ; 8 static uint8_t pin() { return PINC; } static void pin(uint8_t v) { PINC = v; } static uint8_t dir() { return DDRC; } static void dir(uint8_t v) { DDRC = v; } - 43a: 38 9a sbi 0x07, 0 ; 7 + 156: 38 9a sbi 0x07, 0 ; 7 namespace avrlib { struct portg { static uint8_t port() { return PORTG; } static void port(uint8_t v) { PORTG = v; } - 43c: a0 98 cbi 0x14, 0 ; 20 + 158: a0 98 cbi 0x14, 0 ; 20 static uint8_t pin() { return PING; } static void pin(uint8_t v) { PING = v; } static uint8_t dir() { return DDRG; } static void dir(uint8_t v) { DDRG = v; } - 43e: 98 9a sbi 0x13, 0 ; 19 + 15a: 98 9a sbi 0x13, 0 ; 19 + static void port(uint8_t v) { PORTL = v; } static uint8_t pin() { return PINL; } static void pin(uint8_t v) { PINL = v; } static uint8_t dir() { return DDRL; } - 440: aa e0 ldi r26, 0x0A ; 10 - 442: b1 e0 ldi r27, 0x01 ; 1 - 444: 8c 91 ld r24, X + 15c: ea e0 ldi r30, 0x0A ; 10 + 15e: f1 e0 ldi r31, 0x01 ; 1 + 160: 80 81 ld r24, Z static bool value() { return (Port::pin() & (1<setValue(0); + } + void setValue(uint8_t wert) { + OCR5AL = wert; + 178: 1c 92 st X, r1 static void port(uint8_t v) { PORTL = v; } static uint8_t pin() { return PINL; } static void pin(uint8_t v) { PINL = v; } static uint8_t dir() { return DDRL; } - 45a: 8c 91 ld r24, X - 45c: 80 64 ori r24, 0x40 ; 64 + 17a: 80 81 ld r24, Z + 17c: 80 68 ori r24, 0x80 ; 128 static void dir(uint8_t v) { DDRL = v; } - 45e: 8c 93 st X, r24 + 17e: 80 83 st Z, r24 static void port(uint8_t v) { PORTL = v; } static uint8_t pin() { return PINL; } static void pin(uint8_t v) { PINL = v; } static uint8_t dir() { return DDRL; } - 460: 8c 91 ld r24, X - 462: 80 62 ori r24, 0x20 ; 32 + 180: 80 81 ld r24, Z + 182: 80 64 ori r24, 0x40 ; 64 static void dir(uint8_t v) { DDRL = v; } - 464: 8c 93 st X, r24 + 184: 80 83 st Z, r24 + static void port(uint8_t v) { PORTL = v; } + + static uint8_t pin() { return PINL; } + static void pin(uint8_t v) { PINL = v; } + + static uint8_t dir() { return DDRL; } + 186: 80 81 ld r24, Z + 188: 80 62 ori r24, 0x20 ; 32 + static void dir(uint8_t v) { DDRL = v; } + 18a: 80 83 st Z, r24 static uint8_t pin() { return PIND; } static void pin(uint8_t v) { PIND = v; } static uint8_t dir() { return DDRD; } static void dir(uint8_t v) { DDRD = v; } - 466: 8f ef ldi r24, 0xFF ; 255 - 468: 8a b9 out 0x0a, r24 ; 10 - 46a: 2f ef ldi r18, 0xFF ; 255 - 46c: 81 ee ldi r24, 0xE1 ; 225 - 46e: 94 e0 ldi r25, 0x04 ; 4 - 470: 21 50 subi r18, 0x01 ; 1 - 472: 80 40 sbci r24, 0x00 ; 0 - 474: 90 40 sbci r25, 0x00 ; 0 - 476: e1 f7 brne .-8 ; 0x470 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x3c> - 478: 00 c0 rjmp .+0 ; 0x47a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x46> - 47a: 00 00 nop + 18c: 8f ef ldi r24, 0xFF ; 255 + 18e: 8a b9 out 0x0a, r24 ; 10 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 190: 8f ef ldi r24, 0xFF ; 255 + 192: 99 ef ldi r25, 0xF9 ; 249 + 194: 01 97 sbiw r24, 0x01 ; 1 + 196: f1 f7 brne .-4 ; 0x194 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x44> + 198: 00 c0 rjmp .+0 ; 0x19a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x4a> + 19a: 00 00 nop namespace avrlib { struct portl { static uint8_t port() { return PORTL; } - 47c: 80 81 ld r24, Z + 19c: eb e0 ldi r30, 0x0B ; 11 + 19e: f1 e0 ldi r31, 0x01 ; 1 + 1a0: 80 81 ld r24, Z static void set(bool value = true) { if (value) Port::port(Port::port() | (1< - 49a: 00 c0 rjmp .+0 ; 0x49c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x68> - 49c: 00 00 nop + 1b4: 80 83 st Z, r24 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 1b6: a3 ed ldi r26, 0xD3 ; 211 + 1b8: b0 e0 ldi r27, 0x00 ; 0 + 1ba: 11 97 sbiw r26, 0x01 ; 1 + 1bc: f1 f7 brne .-4 ; 0x1ba <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x6a> + 1be: 00 c0 rjmp .+0 ; 0x1c0 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x70> + 1c0: 00 00 nop namespace avrlib { struct portl { static uint8_t port() { return PORTL; } - 49e: 80 81 ld r24, Z + 1c2: 80 81 ld r24, Z else Port::port(Port::port() & ~(1< + 1d0: 00 c0 rjmp .+0 ; 0x1d2 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x82> + 1d2: 00 00 nop namespace avrlib { struct portl { static uint8_t port() { return PORTL; } - 4a4: 80 81 ld r24, Z - 4a6: 8f 7b andi r24, 0xBF ; 191 - static void port(uint8_t v) { PORTL = v; } - 4a8: 80 83 st Z, r24 - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 4aa: 80 81 ld r24, Z - 4ac: 8f 7d andi r24, 0xDF ; 223 - static void port(uint8_t v) { PORTL = v; } - 4ae: 80 83 st Z, r24 - 4b0: 81 e0 ldi r24, 0x01 ; 1 - 4b2: 8b b9 out 0x0b, r24 ; 11 - -namespace avrlib { - - struct portl - { - static uint8_t port() { return PORTL; } - 4b4: 80 81 ld r24, Z + 1d4: 80 81 ld r24, Z struct pin { static void set(bool value = true) { if (value) Port::port(Port::port() | (1< - 4c2: 00 c0 rjmp .+0 ; 0x4c4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x90> - 4c4: 00 00 nop + 1d8: 80 83 st Z, r24 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 1da: a3 ed ldi r26, 0xD3 ; 211 + 1dc: b0 e0 ldi r27, 0x00 ; 0 + 1de: 11 97 sbiw r26, 0x01 ; 1 + 1e0: f1 f7 brne .-4 ; 0x1de <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x8e> + 1e2: 00 c0 rjmp .+0 ; 0x1e4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x94> + 1e4: 00 00 nop namespace avrlib { struct portl { static uint8_t port() { return PORTL; } - 4c6: 80 81 ld r24, Z + 1e6: 80 81 ld r24, Z else Port::port(Port::port() & ~(1<: - - static uint8_t pin() { return PINH; } - static void pin(uint8_t v) { PINH = v; } - - static uint8_t dir() { return DDRH; } - 4ce: a1 e0 ldi r26, 0x01 ; 1 - 4d0: b1 e0 ldi r27, 0x01 ; 1 - 4d2: 8c 91 ld r24, X - static bool value() { return (Port::pin() & (1< + 1f4: 00 c0 rjmp .+0 ; 0x1f6 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0xa6> + 1f6: 00 00 nop namespace avrlib { - struct porth + struct portl + { + static uint8_t port() { return PORTL; } + 1f8: 80 81 ld r24, Z + struct pin { - static uint8_t port() { return PORTH; } - 4d8: e2 e0 ldi r30, 0x02 ; 2 - 4da: f1 e0 ldi r31, 0x01 ; 1 - 4dc: 80 81 ld r24, Z static void set(bool value = true) { if (value) Port::port(Port::port() | (1< + 206: 00 c0 rjmp .+0 ; 0x208 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0xb8> + 208: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 20a: 80 81 ld r24, Z else Port::port(Port::port() & ~(1< + 218: 00 c0 rjmp .+0 ; 0x21a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0xca> + 21a: 00 00 nop namespace avrlib { - struct porth + struct portl + { + static uint8_t port() { return PORTL; } + 21c: 80 81 ld r24, Z + struct pin { - static uint8_t port() { return PORTH; } - 4ec: 80 81 ld r24, Z static void set(bool value = true) { if (value) Port::port(Port::port() | (1< + 22a: 00 c0 rjmp .+0 ; 0x22c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0xdc> + 22c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 22e: 80 81 ld r24, Z else Port::port(Port::port() & ~(1< + 230: 8f 77 andi r24, 0x7F ; 127 + static void port(uint8_t v) { PORTL = v; } + 232: 80 83 st Z, r24 + 234: 8f ed ldi r24, 0xDF ; 223 + 236: 91 e0 ldi r25, 0x01 ; 1 + 238: 01 97 sbiw r24, 0x01 ; 1 + 23a: f1 f7 brne .-4 ; 0x238 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0xe8> + 23c: 00 c0 rjmp .+0 ; 0x23e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0xee> + 23e: 00 00 nop -ledrotclass rot; +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 240: 80 81 ld r24, Z + 242: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 244: 80 83 st Z, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 246: 80 81 ld r24, Z + 248: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 24a: 80 83 st Z, r24 + 24c: 1b b8 out 0x0b, r1 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 24e: 80 81 ld r24, Z + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 25c: 00 c0 rjmp .+0 ; 0x25e <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x10e> + 25e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 260: 80 81 ld r24, Z + else + Port::port(Port::port() & ~(1< + 26e: 00 c0 rjmp .+0 ; 0x270 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x120> + 270: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 272: 80 81 ld r24, Z + 274: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 276: 80 83 st Z, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 278: 80 81 ld r24, Z + 27a: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 27c: 80 83 st Z, r24 + 27e: 81 e0 ldi r24, 0x01 ; 1 + 280: 8b b9 out 0x0b, r24 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 282: 90 81 ld r25, Z + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 290: 00 c0 rjmp .+0 ; 0x292 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x142> + 292: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 294: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 2a2: 00 c0 rjmp .+0 ; 0x2a4 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x154> + 2a4: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2a6: 90 81 ld r25, Z + 2a8: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 2aa: 90 83 st Z, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2ac: 90 81 ld r25, Z + 2ae: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 2b0: 90 83 st Z, r25 + 2b2: 94 e0 ldi r25, 0x04 ; 4 + 2b4: 9b b9 out 0x0b, r25 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2b6: 90 81 ld r25, Z + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 2c4: 00 c0 rjmp .+0 ; 0x2c6 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x176> + 2c6: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2c8: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 2dc: 00 c0 rjmp .+0 ; 0x2de <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x18e> + 2de: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2e0: 90 81 ld r25, Z + 2e2: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 2e4: 90 83 st Z, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2e6: 90 81 ld r25, Z + 2e8: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 2ea: 90 83 st Z, r25 + 2ec: 9c e0 ldi r25, 0x0C ; 12 + 2ee: 9b b9 out 0x0b, r25 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2f0: 90 81 ld r25, Z + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 2fe: 00 c0 rjmp .+0 ; 0x300 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x1b0> + 300: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 302: 90 81 ld r25, Z + else + Port::port(Port::port() & ~(1< + 310: 00 c0 rjmp .+0 ; 0x312 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x1c2> + 312: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 314: 90 81 ld r25, Z + 316: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 318: 90 83 st Z, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 31a: 90 81 ld r25, Z + 31c: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 31e: 90 83 st Z, r25 + 320: 8b b9 out 0x0b, r24 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 322: 80 81 ld r24, Z + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 330: 00 c0 rjmp .+0 ; 0x332 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x1e2> + 332: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 334: 80 81 ld r24, Z + else + Port::port(Port::port() & ~(1< + 342: 00 c0 rjmp .+0 ; 0x344 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x1f4> + 344: 00 00 nop +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 346: 40 98 cbi 0x08, 0 ; 8 + 348: 98 e0 ldi r25, 0x08 ; 8 + 34a: 81 e0 ldi r24, 0x01 ; 1 + sdi::make_low(); //output und low; + } + void send_soft(uint8_t data) { + for (uint8_t i=0; i<8; i++) + { + if (data & 0x80) { + 34c: 88 23 and r24, r24 + 34e: 1c f4 brge .+6 ; 0x356 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x206> +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 350: a0 9a sbi 0x14, 0 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 352: 98 9a sbi 0x13, 0 ; 19 + 354: 02 c0 rjmp .+4 ; 0x35a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x20a> +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 356: a0 98 cbi 0x14, 0 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 358: 98 9a sbi 0x13, 0 ; 19 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 35a: a1 9a sbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 35c: 99 9a sbi 0x13, 1 ; 19 + } + else { + sdi::make_low(); + } + sck::make_high(); + data<<=1; + 35e: 88 0f add r24, r24 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 360: 00 c0 rjmp .+0 ; 0x362 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x212> + 362: 00 c0 rjmp .+0 ; 0x364 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x214> + 364: 00 00 nop +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 366: a1 98 cbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 368: 99 9a sbi 0x13, 1 ; 19 + 36a: 91 50 subi r25, 0x01 ; 1 + sck::make_low(); //output und low; + cs::make_high(); //output und low; + sdi::make_low(); //output und low; + } + void send_soft(uint8_t data) { + for (uint8_t i=0; i<8; i++) + 36c: 79 f7 brne .-34 ; 0x34c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x1fc> + 36e: 88 e0 ldi r24, 0x08 ; 8 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 370: a0 98 cbi 0x14, 0 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 372: 98 9a sbi 0x13, 0 ; 19 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 374: a1 9a sbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 376: 99 9a sbi 0x13, 1 ; 19 + 378: 00 c0 rjmp .+0 ; 0x37a <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x22a> + 37a: 00 c0 rjmp .+0 ; 0x37c <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x22c> + 37c: 00 00 nop +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 37e: a1 98 cbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 380: 99 9a sbi 0x13, 1 ; 19 + 382: 81 50 subi r24, 0x01 ; 1 + 384: a9 f7 brne .-22 ; 0x370 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev+0x220> + 386: 40 9a sbi 0x08, 0 ; 8 + 388: 8f ef ldi r24, 0xFF ; 255 + 38a: 80 93 28 01 sts 0x0128, r24 + 38e: 08 95 ret + +00000390
: ledgruenclass gruen; -ledgelbclass gelb; +ledgelbclass gelb;*/ displayclass d; - 4f2: 80 e0 ldi r24, 0x00 ; 0 - 4f4: 92 e0 ldi r25, 0x02 ; 2 - 4f6: 0e 94 1a 02 call 0x434 ; 0x434 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev> - 4fa: 08 95 ret -000004fc <__tablejump_elpm__>: - 4fc: 07 90 elpm r0, Z+ - 4fe: f6 91 elpm r31, Z - 500: e0 2d mov r30, r0 - 502: 19 94 eijmp +int main(void) +{ + 390: cf 93 push r28 + 392: df 93 push r29 + 394: cd b7 in r28, 0x3d ; 61 + 396: de b7 in r29, 0x3e ; 62 + 398: 6d 97 sbiw r28, 0x1d ; 29 + 39a: 0f b6 in r0, 0x3f ; 63 + 39c: f8 94 cli + 39e: de bf out 0x3e, r29 ; 62 + 3a0: 0f be out 0x3f, r0 ; 63 + 3a2: cd bf out 0x3d, r28 ; 61 -00000504 <_exit>: - 504: f8 94 cli +namespace avrlib { -00000506 <__stop_program>: - 506: ff cf rjmp .-2 ; 0x506 <__stop_program> + struct portl + { + static uint8_t port() { return PORTL; } + 3a4: 0b e0 ldi r16, 0x0B ; 11 + 3a6: 11 e0 ldi r17, 0x01 ; 1 + 3a8: 0f 2e mov r0, r31 + 3aa: f8 e2 ldi r31, 0x28 ; 40 + 3ac: af 2e mov r10, r31 + 3ae: bb 24 eor r11, r11 + 3b0: b3 94 inc r11 + 3b2: f0 2d mov r31, r0 + 3b4: 0f 2e mov r0, r31 + 3b6: fa ef ldi r31, 0xFA ; 250 + 3b8: 6f 2e mov r6, r31 + 3ba: f0 2d mov r31, r0 + 3bc: 26 2c mov r2, r6 + + static uint8_t pin() { return PIND; } + static void pin(uint8_t v) { PIND = v; } + + static uint8_t dir() { return DDRD; } + static void dir(uint8_t v) { DDRD = v; } + 3be: 99 24 eor r9, r9 + 3c0: 9a 94 dec r9 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 3c2: 68 94 set + 3c4: 77 24 eor r7, r7 + 3c6: 77 f8 bld r7, 7 + 3c8: 0f 2e mov r0, r31 + 3ca: f0 ed ldi r31, 0xD0 ; 208 + 3cc: 8f 2e mov r8, r31 + 3ce: f0 2d mov r31, r0 + _delay_ms(2); + } + + void printHex(uint16_t d) { + char t[8]; + sprintf(t, "0x%04X", d); + 3d0: 6e 01 movw r12, r28 + 3d2: 25 e1 ldi r18, 0x15 ; 21 + 3d4: c2 0e add r12, r18 + 3d6: d1 1c adc r13, r1 + 3d8: 3c 2c mov r3, r12 + 3da: 4d 2c mov r4, r13 + d.clear(); + d.setBacklight(led); + d.setContrast(cont); + d.lputs(" "); + d.printHex(led); + sprintf(t, " Led\n 0x%02X Kontrast", cont); + 3dc: ee 24 eor r14, r14 + 3de: e3 94 inc r14 + 3e0: f1 2c mov r15, r1 + 3e2: ec 0e add r14, r28 + 3e4: fd 1e adc r15, r29 + 3e6: 5e 2c mov r5, r14 + 3e8: fd 8e std Y+29, r15 ; 0x1d + 3ea: d8 01 movw r26, r16 + 3ec: 8c 91 ld r24, X + 3ee: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 3f0: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 3f2: 8c 91 ld r24, X + 3f4: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 3f6: 8c 93 st X, r24 + 3f8: 81 e0 ldi r24, 0x01 ; 1 + 3fa: 8b b9 out 0x0b, r24 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 3fc: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 40a: 00 c0 rjmp .+0 ; 0x40c + 40c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 40e: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 41c: 00 c0 rjmp .+0 ; 0x41e + 41e: 00 00 nop + 420: d5 01 movw r26, r10 + 422: 2c 92 st X, r2 + 424: 40 98 cbi 0x08, 0 ; 8 + 426: 88 e0 ldi r24, 0x08 ; 8 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 428: a0 98 cbi 0x14, 0 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 42a: 98 9a sbi 0x13, 0 ; 19 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 42c: a1 9a sbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 42e: 99 9a sbi 0x13, 1 ; 19 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 430: 00 c0 rjmp .+0 ; 0x432 + 432: 00 c0 rjmp .+0 ; 0x434 + 434: 00 00 nop +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 436: a1 98 cbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 438: 99 9a sbi 0x13, 1 ; 19 + 43a: 81 50 subi r24, 0x01 ; 1 + 43c: a9 f7 brne .-22 ; 0x428 + 43e: 98 e0 ldi r25, 0x08 ; 8 + 440: 8d ee ldi r24, 0xED ; 237 + { + if (data & 0x80) { + 442: 88 23 and r24, r24 + 444: 1c f4 brge .+6 ; 0x44c +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 446: a0 9a sbi 0x14, 0 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 448: 98 9a sbi 0x13, 0 ; 19 + 44a: 02 c0 rjmp .+4 ; 0x450 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 44c: a0 98 cbi 0x14, 0 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 44e: 98 9a sbi 0x13, 0 ; 19 +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 450: a1 9a sbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 452: 99 9a sbi 0x13, 1 ; 19 + } + else { + sdi::make_low(); + } + sck::make_high(); + data<<=1; + 454: 88 0f add r24, r24 + 456: 00 c0 rjmp .+0 ; 0x458 + 458: 00 c0 rjmp .+0 ; 0x45a + 45a: 00 00 nop +namespace avrlib { + + struct portg + { + static uint8_t port() { return PORTG; } + static void port(uint8_t v) { PORTG = v; } + 45c: a1 98 cbi 0x14, 1 ; 20 + + static uint8_t pin() { return PING; } + static void pin(uint8_t v) { PING = v; } + + static uint8_t dir() { return DDRG; } + static void dir(uint8_t v) { DDRG = v; } + 45e: 99 9a sbi 0x13, 1 ; 19 + 460: 91 50 subi r25, 0x01 ; 1 + sck::make_low(); //output und low; + cs::make_high(); //output und low; + sdi::make_low(); //output und low; + } + void send_soft(uint8_t data) { + for (uint8_t i=0; i<8; i++) + 462: 79 f7 brne .-34 ; 0x442 + 464: 40 9a sbi 0x08, 0 ; 8 + 466: e0 e0 ldi r30, 0x00 ; 0 + 468: f2 e0 ldi r31, 0x02 ; 2 + 46a: 60 e9 ldi r22, 0x90 ; 144 + 46c: 40 ec ldi r20, 0xC0 ; 192 + 46e: 22 ee ldi r18, 0xE2 ; 226 + 470: 75 ef ldi r23, 0xF5 ; 245 + 472: 5f ee ldi r21, 0xEF ; 239 + 474: 31 ee ldi r19, 0xE1 ; 225 + 476: a3 c3 rjmp .+1862 ; 0xbbe + } + + void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ + register char c; + while ( (c = *s++) ) { + if(c == 0xE4) { //ä + 478: 84 3e cpi r24, 0xE4 ; 228 + 47a: 09 f0 breq .+2 ; 0x47e + 47c: 9e c0 rjmp .+316 ; 0x5ba + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 47e: d8 01 movw r26, r16 + 480: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 49e: 00 c0 rjmp .+0 ; 0x4a0 + 4a0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 4a2: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 4ac: 8f 30 cpi r24, 0x0F ; 15 + 4ae: d1 f4 brne .+52 ; 0x4e4 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 4b0: 8c 91 ld r24, X + 4b2: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 4b4: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 4b6: 8c 91 ld r24, X + 4b8: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 4ba: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 4bc: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 4be: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 4cc: 00 c0 rjmp .+0 ; 0x4ce + 4ce: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 4d0: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 4de: 00 c0 rjmp .+0 ; 0x4e0 + 4e0: 00 00 nop + 4e2: 56 c0 rjmp .+172 ; 0x590 + this->setLine(2); + } else if ( pos == 0x4F ) { + 4e4: 8f 34 cpi r24, 0x4F ; 79 + 4e6: d9 f4 brne .+54 ; 0x51e + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 4e8: d8 01 movw r26, r16 + 4ea: 8c 91 ld r24, X + 4ec: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 4ee: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 4f0: 8c 91 ld r24, X + 4f2: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 4f4: 8c 93 st X, r24 + 4f6: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 4f8: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 506: 00 c0 rjmp .+0 ; 0x508 + 508: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 50a: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 518: 00 c0 rjmp .+0 ; 0x51a + 51a: 00 00 nop + 51c: 39 c0 rjmp .+114 ; 0x590 + this->setLine(3); + } else if ( pos == 0x1F ) { + 51e: 8f 31 cpi r24, 0x1F ; 31 + 520: d9 f4 brne .+54 ; 0x558 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 522: d8 01 movw r26, r16 + 524: 8c 91 ld r24, X + 526: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 528: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 52a: 8c 91 ld r24, X + 52c: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 52e: 8c 93 st X, r24 + 530: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 532: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 540: 00 c0 rjmp .+0 ; 0x542 + 542: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 544: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 552: 00 c0 rjmp .+0 ; 0x554 + 554: 00 00 nop + 556: 1c c0 rjmp .+56 ; 0x590 + this->setLine(4); + } else if ( pos == 0x5F ) { + 558: 8f 35 cpi r24, 0x5F ; 95 + 55a: d1 f4 brne .+52 ; 0x590 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 55c: d8 01 movw r26, r16 + 55e: 8c 91 ld r24, X + 560: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 562: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 564: 8c 91 ld r24, X + 566: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 568: 8c 93 st X, r24 + 56a: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 56c: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 57a: 00 c0 rjmp .+0 ; 0x57c + 57c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 57e: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 58c: 00 c0 rjmp .+0 ; 0x58e + 58e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 590: d8 01 movw r26, r16 + 592: 8c 91 ld r24, X + 594: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 596: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 598: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 5ae: 00 c0 rjmp .+0 ; 0x5b0 + 5b0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 5b2: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ + register char c; + while ( (c = *s++) ) { + if(c == 0xE4) { //ä + lputc(0xE1); + } else if(c == 0xF6) { //ö + 5ba: 86 3f cpi r24, 0xF6 ; 246 + 5bc: 09 f0 breq .+2 ; 0x5c0 + 5be: 9e c0 rjmp .+316 ; 0x6fc + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 5c0: d8 01 movw r26, r16 + 5c2: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 5e0: 00 c0 rjmp .+0 ; 0x5e2 + 5e2: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 5e4: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 5ee: 8f 30 cpi r24, 0x0F ; 15 + 5f0: d1 f4 brne .+52 ; 0x626 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 5f2: 8c 91 ld r24, X + 5f4: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 5f6: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 5f8: 8c 91 ld r24, X + 5fa: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 5fc: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 5fe: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 600: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 60e: 00 c0 rjmp .+0 ; 0x610 + 610: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 612: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 620: 00 c0 rjmp .+0 ; 0x622 + 622: 00 00 nop + 624: 56 c0 rjmp .+172 ; 0x6d2 + this->setLine(2); + } else if ( pos == 0x4F ) { + 626: 8f 34 cpi r24, 0x4F ; 79 + 628: d9 f4 brne .+54 ; 0x660 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 62a: d8 01 movw r26, r16 + 62c: 8c 91 ld r24, X + 62e: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 630: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 632: 8c 91 ld r24, X + 634: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 636: 8c 93 st X, r24 + 638: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 63a: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 648: 00 c0 rjmp .+0 ; 0x64a + 64a: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 64c: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 65a: 00 c0 rjmp .+0 ; 0x65c + 65c: 00 00 nop + 65e: 39 c0 rjmp .+114 ; 0x6d2 + this->setLine(3); + } else if ( pos == 0x1F ) { + 660: 8f 31 cpi r24, 0x1F ; 31 + 662: d9 f4 brne .+54 ; 0x69a + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 664: d8 01 movw r26, r16 + 666: 8c 91 ld r24, X + 668: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 66a: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 66c: 8c 91 ld r24, X + 66e: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 670: 8c 93 st X, r24 + 672: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 674: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 682: 00 c0 rjmp .+0 ; 0x684 + 684: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 686: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 694: 00 c0 rjmp .+0 ; 0x696 + 696: 00 00 nop + 698: 1c c0 rjmp .+56 ; 0x6d2 + this->setLine(4); + } else if ( pos == 0x5F ) { + 69a: 8f 35 cpi r24, 0x5F ; 95 + 69c: d1 f4 brne .+52 ; 0x6d2 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 69e: d8 01 movw r26, r16 + 6a0: 8c 91 ld r24, X + 6a2: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 6a4: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 6a6: 8c 91 ld r24, X + 6a8: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 6aa: 8c 93 st X, r24 + 6ac: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 6ae: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 6bc: 00 c0 rjmp .+0 ; 0x6be + 6be: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 6c0: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 6ce: 00 c0 rjmp .+0 ; 0x6d0 + 6d0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 6d2: d8 01 movw r26, r16 + 6d4: 8c 91 ld r24, X + 6d6: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 6d8: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 6da: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 6f0: 00 c0 rjmp .+0 ; 0x6f2 + 6f2: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 6f4: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + while ( (c = *s++) ) { + if(c == 0xE4) { //ä + lputc(0xE1); + } else if(c == 0xF6) { //ö + lputc(0xEF); + } else if(c == 0xFC) { //ü + 6fc: 8c 3f cpi r24, 0xFC ; 252 + 6fe: 09 f0 breq .+2 ; 0x702 + 700: 9e c0 rjmp .+316 ; 0x83e + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 702: d8 01 movw r26, r16 + 704: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 722: 00 c0 rjmp .+0 ; 0x724 + 724: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 726: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 730: 8f 30 cpi r24, 0x0F ; 15 + 732: d1 f4 brne .+52 ; 0x768 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 734: 8c 91 ld r24, X + 736: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 738: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 73a: 8c 91 ld r24, X + 73c: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 73e: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 740: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 742: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 750: 00 c0 rjmp .+0 ; 0x752 + 752: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 754: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 762: 00 c0 rjmp .+0 ; 0x764 + 764: 00 00 nop + 766: 56 c0 rjmp .+172 ; 0x814 + this->setLine(2); + } else if ( pos == 0x4F ) { + 768: 8f 34 cpi r24, 0x4F ; 79 + 76a: d9 f4 brne .+54 ; 0x7a2 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 76c: d8 01 movw r26, r16 + 76e: 8c 91 ld r24, X + 770: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 772: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 774: 8c 91 ld r24, X + 776: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 778: 8c 93 st X, r24 + 77a: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 77c: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 78a: 00 c0 rjmp .+0 ; 0x78c + 78c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 78e: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 79c: 00 c0 rjmp .+0 ; 0x79e + 79e: 00 00 nop + 7a0: 39 c0 rjmp .+114 ; 0x814 + this->setLine(3); + } else if ( pos == 0x1F ) { + 7a2: 8f 31 cpi r24, 0x1F ; 31 + 7a4: d9 f4 brne .+54 ; 0x7dc + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 7a6: d8 01 movw r26, r16 + 7a8: 8c 91 ld r24, X + 7aa: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 7ac: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 7ae: 8c 91 ld r24, X + 7b0: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 7b2: 8c 93 st X, r24 + 7b4: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 7b6: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 7c4: 00 c0 rjmp .+0 ; 0x7c6 + 7c6: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 7c8: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 7d6: 00 c0 rjmp .+0 ; 0x7d8 + 7d8: 00 00 nop + 7da: 1c c0 rjmp .+56 ; 0x814 + this->setLine(4); + } else if ( pos == 0x5F ) { + 7dc: 8f 35 cpi r24, 0x5F ; 95 + 7de: d1 f4 brne .+52 ; 0x814 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 7e0: d8 01 movw r26, r16 + 7e2: 8c 91 ld r24, X + 7e4: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 7e6: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 7e8: 8c 91 ld r24, X + 7ea: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 7ec: 8c 93 st X, r24 + 7ee: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 7f0: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 7fe: 00 c0 rjmp .+0 ; 0x800 + 800: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 802: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 810: 00 c0 rjmp .+0 ; 0x812 + 812: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 814: d8 01 movw r26, r16 + 816: 8c 91 ld r24, X + 818: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 81a: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 81c: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 832: 00 c0 rjmp .+0 ; 0x834 + 834: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 836: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + lputc(0xE1); + } else if(c == 0xF6) { //ö + lputc(0xEF); + } else if(c == 0xFC) { //ü + lputc(0xF5); + } else if(c == 0xDF) { //ü + 83e: 8f 3d cpi r24, 0xDF ; 223 + 840: 09 f0 breq .+2 ; 0x844 + 842: 9e c0 rjmp .+316 ; 0x980 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 844: d8 01 movw r26, r16 + 846: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 864: 00 c0 rjmp .+0 ; 0x866 + 866: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 868: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 872: 8f 30 cpi r24, 0x0F ; 15 + 874: d1 f4 brne .+52 ; 0x8aa + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 876: 8c 91 ld r24, X + 878: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 87a: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 87c: 8c 91 ld r24, X + 87e: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 880: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 882: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 884: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 892: 00 c0 rjmp .+0 ; 0x894 + 894: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 896: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 8a4: 00 c0 rjmp .+0 ; 0x8a6 + 8a6: 00 00 nop + 8a8: 56 c0 rjmp .+172 ; 0x956 + this->setLine(2); + } else if ( pos == 0x4F ) { + 8aa: 8f 34 cpi r24, 0x4F ; 79 + 8ac: d9 f4 brne .+54 ; 0x8e4 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 8ae: d8 01 movw r26, r16 + 8b0: 8c 91 ld r24, X + 8b2: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 8b4: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 8b6: 8c 91 ld r24, X + 8b8: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 8ba: 8c 93 st X, r24 + 8bc: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 8be: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 8cc: 00 c0 rjmp .+0 ; 0x8ce + 8ce: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 8d0: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 8de: 00 c0 rjmp .+0 ; 0x8e0 + 8e0: 00 00 nop + 8e2: 39 c0 rjmp .+114 ; 0x956 + this->setLine(3); + } else if ( pos == 0x1F ) { + 8e4: 8f 31 cpi r24, 0x1F ; 31 + 8e6: d9 f4 brne .+54 ; 0x91e + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 8e8: d8 01 movw r26, r16 + 8ea: 8c 91 ld r24, X + 8ec: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 8ee: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 8f0: 8c 91 ld r24, X + 8f2: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 8f4: 8c 93 st X, r24 + 8f6: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 8f8: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 906: 00 c0 rjmp .+0 ; 0x908 + 908: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 90a: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 918: 00 c0 rjmp .+0 ; 0x91a + 91a: 00 00 nop + 91c: 1c c0 rjmp .+56 ; 0x956 + this->setLine(4); + } else if ( pos == 0x5F ) { + 91e: 8f 35 cpi r24, 0x5F ; 95 + 920: d1 f4 brne .+52 ; 0x956 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 922: d8 01 movw r26, r16 + 924: 8c 91 ld r24, X + 926: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 928: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 92a: 8c 91 ld r24, X + 92c: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 92e: 8c 93 st X, r24 + 930: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 932: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 940: 00 c0 rjmp .+0 ; 0x942 + 942: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 944: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 952: 00 c0 rjmp .+0 ; 0x954 + 954: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 956: d8 01 movw r26, r16 + 958: 8c 91 ld r24, X + 95a: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 95c: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 95e: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 974: 00 c0 rjmp .+0 ; 0x976 + 976: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 978: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 980: d8 01 movw r26, r16 + 982: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 9a0: 00 c0 rjmp .+0 ; 0x9a2 + 9a2: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 9a4: d8 01 movw r26, r16 + 9a6: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + 9b0: 8a 30 cpi r24, 0x0A ; 10 + 9b2: 09 f0 breq .+2 ; 0x9b6 + 9b4: 79 c0 rjmp .+242 ; 0xaa8 + _delay_us(53); + pen::clear(); + } + + void newline(uint8_t pos) { + if ( pos >= 0x50 && pos <= 0x5F ) { + 9b6: 89 2f mov r24, r25 + 9b8: 80 55 subi r24, 0x50 ; 80 + 9ba: 80 31 cpi r24, 0x10 ; 16 + 9bc: d0 f4 brcc .+52 ; 0x9f2 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 9be: 8c 91 ld r24, X + 9c0: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 9c2: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 9c4: 8c 91 ld r24, X + 9c6: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 9c8: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 9ca: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 9cc: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 9da: 00 c0 rjmp .+0 ; 0x9dc + 9dc: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 9de: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 9ec: 00 c0 rjmp .+0 ; 0x9ee + 9ee: 00 00 nop + 9f0: e6 c0 rjmp .+460 ; 0xbbe + return this->setLine(1); + } + if ( pos >= 0x00 && pos <= 0x0F) { + 9f2: 90 31 cpi r25, 0x10 ; 16 + 9f4: d8 f4 brcc .+54 ; 0xa2c + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 9f6: d8 01 movw r26, r16 + 9f8: 8c 91 ld r24, X + 9fa: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 9fc: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 9fe: 8c 91 ld r24, X + a00: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + a02: 8c 93 st X, r24 + a04: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + a06: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + a14: 00 c0 rjmp .+0 ; 0xa16 + a16: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + a18: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + a26: 00 c0 rjmp .+0 ; 0xa28 + a28: 00 00 nop + a2a: c9 c0 rjmp .+402 ; 0xbbe + return this->setLine(2); + } + if ( pos >= 0x40 && pos <= 0x4F) { + a2c: 89 2f mov r24, r25 + a2e: 80 54 subi r24, 0x40 ; 64 + a30: 80 31 cpi r24, 0x10 ; 16 + a32: d8 f4 brcc .+54 ; 0xa6a + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + a34: d8 01 movw r26, r16 + a36: 8c 91 ld r24, X + a38: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + a3a: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + a3c: 8c 91 ld r24, X + a3e: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + a40: 8c 93 st X, r24 + a42: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + a44: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + a52: 00 c0 rjmp .+0 ; 0xa54 + a54: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + a56: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + a64: 00 c0 rjmp .+0 ; 0xa66 + a66: 00 00 nop + a68: aa c0 rjmp .+340 ; 0xbbe + return this->setLine(3); + } + if ( pos >= 0x10 && pos <= 0x1F) { + a6a: 90 51 subi r25, 0x10 ; 16 + a6c: 90 31 cpi r25, 0x10 ; 16 + a6e: 08 f0 brcs .+2 ; 0xa72 + a70: a6 c0 rjmp .+332 ; 0xbbe + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + a72: d8 01 movw r26, r16 + a74: 8c 91 ld r24, X + a76: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + a78: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + a7a: 8c 91 ld r24, X + a7c: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + a7e: 8c 93 st X, r24 + a80: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + a82: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + a90: 00 c0 rjmp .+0 ; 0xa92 + a92: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + a94: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + aa2: 00 c0 rjmp .+0 ; 0xaa4 + aa4: 00 00 nop + aa6: 8b c0 rjmp .+278 ; 0xbbe + void lputc(uint8_t c) { + uint8_t pos = this->getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + aa8: 9f 30 cpi r25, 0x0F ; 15 + aaa: e1 f4 brne .+56 ; 0xae4 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + aac: d8 01 movw r26, r16 + aae: 9c 91 ld r25, X + ab0: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + ab2: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ab4: 9c 91 ld r25, X + ab6: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + ab8: 9c 93 st X, r25 + aba: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + abc: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + aca: 00 c0 rjmp .+0 ; 0xacc + acc: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ace: d8 01 movw r26, r16 + ad0: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + ade: 00 c0 rjmp .+0 ; 0xae0 + ae0: 00 00 nop + ae2: 59 c0 rjmp .+178 ; 0xb96 + this->setLine(2); + } else if ( pos == 0x4F ) { + ae4: 9f 34 cpi r25, 0x4F ; 79 + ae6: e1 f4 brne .+56 ; 0xb20 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ae8: d8 01 movw r26, r16 + aea: 9c 91 ld r25, X + aec: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + aee: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + af0: 9c 91 ld r25, X + af2: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + af4: 9c 93 st X, r25 + af6: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + af8: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + b06: 00 c0 rjmp .+0 ; 0xb08 + b08: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + b0a: d8 01 movw r26, r16 + b0c: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + b1a: 00 c0 rjmp .+0 ; 0xb1c + b1c: 00 00 nop + b1e: 3b c0 rjmp .+118 ; 0xb96 + this->setLine(3); + } else if ( pos == 0x1F ) { + b20: 9f 31 cpi r25, 0x1F ; 31 + b22: e1 f4 brne .+56 ; 0xb5c + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + b24: d8 01 movw r26, r16 + b26: 9c 91 ld r25, X + b28: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + b2a: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + b2c: 9c 91 ld r25, X + b2e: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + b30: 9c 93 st X, r25 + b32: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + b34: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + b42: 00 c0 rjmp .+0 ; 0xb44 + b44: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + b46: d8 01 movw r26, r16 + b48: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + b56: 00 c0 rjmp .+0 ; 0xb58 + b58: 00 00 nop + b5a: 1d c0 rjmp .+58 ; 0xb96 + this->setLine(4); + } else if ( pos == 0x5F ) { + b5c: 9f 35 cpi r25, 0x5F ; 95 + b5e: d9 f4 brne .+54 ; 0xb96 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + b60: d8 01 movw r26, r16 + b62: 9c 91 ld r25, X + b64: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + b66: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + b68: 9c 91 ld r25, X + b6a: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + b6c: 9c 93 st X, r25 + b6e: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + b70: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + b7e: 00 c0 rjmp .+0 ; 0xb80 + b80: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + b82: d8 01 movw r26, r16 + b84: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + b92: 00 c0 rjmp .+0 ; 0xb94 + b94: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + b96: d8 01 movw r26, r16 + b98: 9c 91 ld r25, X + b9a: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + b9c: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + b9e: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + bb4: 00 c0 rjmp .+0 ; 0xbb6 + bb6: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + bb8: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<lputs(t); + } + + void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ + register char c; + while ( (c = *s++) ) { + bbe: 81 91 ld r24, Z+ + bc0: 81 11 cpse r24, r1 + bc2: 5a cc rjmp .-1868 ; 0x478 + _delay_ms(2); + } + + void printHex(uint16_t d) { + char t[8]; + sprintf(t, "0x%04X", d); + bc4: 1f 92 push r1 + bc6: 6f 92 push r6 + bc8: 82 e1 ldi r24, 0x12 ; 18 + bca: 92 e0 ldi r25, 0x02 ; 2 + bcc: 9f 93 push r25 + bce: 8f 93 push r24 + bd0: df 92 push r13 + bd2: cf 92 push r12 + bd4: 0e 94 24 11 call 0x2248 ; 0x2248 + bd8: 0f 90 pop r0 + bda: 0f 90 pop r0 + bdc: 0f 90 pop r0 + bde: 0f 90 pop r0 + be0: 0f 90 pop r0 + be2: 0f 90 pop r0 + be4: e3 2d mov r30, r3 + be6: f4 2d mov r31, r4 + be8: 60 e9 ldi r22, 0x90 ; 144 + bea: 40 ec ldi r20, 0xC0 ; 192 + bec: 22 ee ldi r18, 0xE2 ; 226 + bee: 75 ef ldi r23, 0xF5 ; 245 + bf0: 5f ee ldi r21, 0xEF ; 239 + bf2: 31 ee ldi r19, 0xE1 ; 225 + bf4: a3 c3 rjmp .+1862 ; 0x133c + } + + void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ + register char c; + while ( (c = *s++) ) { + if(c == 0xE4) { //ä + bf6: 84 3e cpi r24, 0xE4 ; 228 + bf8: 09 f0 breq .+2 ; 0xbfc + bfa: 9e c0 rjmp .+316 ; 0xd38 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + bfc: d8 01 movw r26, r16 + bfe: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + c1c: 00 c0 rjmp .+0 ; 0xc1e + c1e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + c20: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + c2a: 8f 30 cpi r24, 0x0F ; 15 + c2c: d1 f4 brne .+52 ; 0xc62 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + c2e: 8c 91 ld r24, X + c30: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + c32: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + c34: 8c 91 ld r24, X + c36: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + c38: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + c3a: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + c3c: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + c4a: 00 c0 rjmp .+0 ; 0xc4c + c4c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + c4e: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + c5c: 00 c0 rjmp .+0 ; 0xc5e + c5e: 00 00 nop + c60: 56 c0 rjmp .+172 ; 0xd0e + this->setLine(2); + } else if ( pos == 0x4F ) { + c62: 8f 34 cpi r24, 0x4F ; 79 + c64: d9 f4 brne .+54 ; 0xc9c + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + c66: d8 01 movw r26, r16 + c68: 8c 91 ld r24, X + c6a: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + c6c: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + c6e: 8c 91 ld r24, X + c70: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + c72: 8c 93 st X, r24 + c74: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + c76: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + c84: 00 c0 rjmp .+0 ; 0xc86 + c86: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + c88: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + c96: 00 c0 rjmp .+0 ; 0xc98 + c98: 00 00 nop + c9a: 39 c0 rjmp .+114 ; 0xd0e + this->setLine(3); + } else if ( pos == 0x1F ) { + c9c: 8f 31 cpi r24, 0x1F ; 31 + c9e: d9 f4 brne .+54 ; 0xcd6 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ca0: d8 01 movw r26, r16 + ca2: 8c 91 ld r24, X + ca4: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + ca6: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ca8: 8c 91 ld r24, X + caa: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + cac: 8c 93 st X, r24 + cae: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + cb0: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + cbe: 00 c0 rjmp .+0 ; 0xcc0 + cc0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + cc2: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + cd0: 00 c0 rjmp .+0 ; 0xcd2 + cd2: 00 00 nop + cd4: 1c c0 rjmp .+56 ; 0xd0e + this->setLine(4); + } else if ( pos == 0x5F ) { + cd6: 8f 35 cpi r24, 0x5F ; 95 + cd8: d1 f4 brne .+52 ; 0xd0e + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + cda: d8 01 movw r26, r16 + cdc: 8c 91 ld r24, X + cde: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + ce0: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ce2: 8c 91 ld r24, X + ce4: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + ce6: 8c 93 st X, r24 + ce8: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + cea: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + cf8: 00 c0 rjmp .+0 ; 0xcfa + cfa: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + cfc: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + d0a: 00 c0 rjmp .+0 ; 0xd0c + d0c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + d0e: d8 01 movw r26, r16 + d10: 8c 91 ld r24, X + d12: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + d14: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + d16: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + d2c: 00 c0 rjmp .+0 ; 0xd2e + d2e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + d30: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ + register char c; + while ( (c = *s++) ) { + if(c == 0xE4) { //ä + lputc(0xE1); + } else if(c == 0xF6) { //ö + d38: 86 3f cpi r24, 0xF6 ; 246 + d3a: 09 f0 breq .+2 ; 0xd3e + d3c: 9e c0 rjmp .+316 ; 0xe7a + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + d3e: d8 01 movw r26, r16 + d40: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + d5e: 00 c0 rjmp .+0 ; 0xd60 + d60: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + d62: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + d6c: 8f 30 cpi r24, 0x0F ; 15 + d6e: d1 f4 brne .+52 ; 0xda4 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + d70: 8c 91 ld r24, X + d72: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + d74: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + d76: 8c 91 ld r24, X + d78: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + d7a: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + d7c: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + d7e: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + d8c: 00 c0 rjmp .+0 ; 0xd8e + d8e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + d90: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + d9e: 00 c0 rjmp .+0 ; 0xda0 + da0: 00 00 nop + da2: 56 c0 rjmp .+172 ; 0xe50 + this->setLine(2); + } else if ( pos == 0x4F ) { + da4: 8f 34 cpi r24, 0x4F ; 79 + da6: d9 f4 brne .+54 ; 0xdde + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + da8: d8 01 movw r26, r16 + daa: 8c 91 ld r24, X + dac: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + dae: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + db0: 8c 91 ld r24, X + db2: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + db4: 8c 93 st X, r24 + db6: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + db8: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + dc6: 00 c0 rjmp .+0 ; 0xdc8 + dc8: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + dca: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + dd8: 00 c0 rjmp .+0 ; 0xdda + dda: 00 00 nop + ddc: 39 c0 rjmp .+114 ; 0xe50 + this->setLine(3); + } else if ( pos == 0x1F ) { + dde: 8f 31 cpi r24, 0x1F ; 31 + de0: d9 f4 brne .+54 ; 0xe18 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + de2: d8 01 movw r26, r16 + de4: 8c 91 ld r24, X + de6: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + de8: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + dea: 8c 91 ld r24, X + dec: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + dee: 8c 93 st X, r24 + df0: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + df2: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + e00: 00 c0 rjmp .+0 ; 0xe02 + e02: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + e04: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + e12: 00 c0 rjmp .+0 ; 0xe14 + e14: 00 00 nop + e16: 1c c0 rjmp .+56 ; 0xe50 + this->setLine(4); + } else if ( pos == 0x5F ) { + e18: 8f 35 cpi r24, 0x5F ; 95 + e1a: d1 f4 brne .+52 ; 0xe50 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + e1c: d8 01 movw r26, r16 + e1e: 8c 91 ld r24, X + e20: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + e22: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + e24: 8c 91 ld r24, X + e26: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + e28: 8c 93 st X, r24 + e2a: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + e2c: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + e3a: 00 c0 rjmp .+0 ; 0xe3c + e3c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + e3e: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + e4c: 00 c0 rjmp .+0 ; 0xe4e + e4e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + e50: d8 01 movw r26, r16 + e52: 8c 91 ld r24, X + e54: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + e56: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + e58: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + e6e: 00 c0 rjmp .+0 ; 0xe70 + e70: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + e72: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + while ( (c = *s++) ) { + if(c == 0xE4) { //ä + lputc(0xE1); + } else if(c == 0xF6) { //ö + lputc(0xEF); + } else if(c == 0xFC) { //ü + e7a: 8c 3f cpi r24, 0xFC ; 252 + e7c: 09 f0 breq .+2 ; 0xe80 + e7e: 9e c0 rjmp .+316 ; 0xfbc + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + e80: d8 01 movw r26, r16 + e82: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + ea0: 00 c0 rjmp .+0 ; 0xea2 + ea2: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ea4: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + eae: 8f 30 cpi r24, 0x0F ; 15 + eb0: d1 f4 brne .+52 ; 0xee6 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + eb2: 8c 91 ld r24, X + eb4: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + eb6: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + eb8: 8c 91 ld r24, X + eba: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + ebc: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + ebe: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ec0: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + ece: 00 c0 rjmp .+0 ; 0xed0 + ed0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ed2: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + ee0: 00 c0 rjmp .+0 ; 0xee2 + ee2: 00 00 nop + ee4: 56 c0 rjmp .+172 ; 0xf92 + this->setLine(2); + } else if ( pos == 0x4F ) { + ee6: 8f 34 cpi r24, 0x4F ; 79 + ee8: d9 f4 brne .+54 ; 0xf20 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + eea: d8 01 movw r26, r16 + eec: 8c 91 ld r24, X + eee: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + ef0: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ef2: 8c 91 ld r24, X + ef4: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + ef6: 8c 93 st X, r24 + ef8: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + efa: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + f08: 00 c0 rjmp .+0 ; 0xf0a + f0a: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + f0c: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + f1a: 00 c0 rjmp .+0 ; 0xf1c + f1c: 00 00 nop + f1e: 39 c0 rjmp .+114 ; 0xf92 + this->setLine(3); + } else if ( pos == 0x1F ) { + f20: 8f 31 cpi r24, 0x1F ; 31 + f22: d9 f4 brne .+54 ; 0xf5a + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + f24: d8 01 movw r26, r16 + f26: 8c 91 ld r24, X + f28: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + f2a: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + f2c: 8c 91 ld r24, X + f2e: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + f30: 8c 93 st X, r24 + f32: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + f34: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + f42: 00 c0 rjmp .+0 ; 0xf44 + f44: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + f46: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + f54: 00 c0 rjmp .+0 ; 0xf56 + f56: 00 00 nop + f58: 1c c0 rjmp .+56 ; 0xf92 + this->setLine(4); + } else if ( pos == 0x5F ) { + f5a: 8f 35 cpi r24, 0x5F ; 95 + f5c: d1 f4 brne .+52 ; 0xf92 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + f5e: d8 01 movw r26, r16 + f60: 8c 91 ld r24, X + f62: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + f64: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + f66: 8c 91 ld r24, X + f68: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + f6a: 8c 93 st X, r24 + f6c: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + f6e: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + f7c: 00 c0 rjmp .+0 ; 0xf7e + f7e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + f80: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + f8e: 00 c0 rjmp .+0 ; 0xf90 + f90: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + f92: d8 01 movw r26, r16 + f94: 8c 91 ld r24, X + f96: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + f98: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + f9a: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + fb0: 00 c0 rjmp .+0 ; 0xfb2 + fb2: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + fb4: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + lputc(0xE1); + } else if(c == 0xF6) { //ö + lputc(0xEF); + } else if(c == 0xFC) { //ü + lputc(0xF5); + } else if(c == 0xDF) { //ü + fbc: 8f 3d cpi r24, 0xDF ; 223 + fbe: 09 f0 breq .+2 ; 0xfc2 + fc0: 9e c0 rjmp .+316 ; 0x10fe + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + fc2: d8 01 movw r26, r16 + fc4: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + fe2: 00 c0 rjmp .+0 ; 0xfe4 + fe4: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + fe6: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + ff0: 8f 30 cpi r24, 0x0F ; 15 + ff2: d1 f4 brne .+52 ; 0x1028 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ff4: 8c 91 ld r24, X + ff6: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + ff8: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + ffa: 8c 91 ld r24, X + ffc: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + ffe: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 1000: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1002: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1010: 00 c0 rjmp .+0 ; 0x1012 + 1012: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1014: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1022: 00 c0 rjmp .+0 ; 0x1024 + 1024: 00 00 nop + 1026: 56 c0 rjmp .+172 ; 0x10d4 + this->setLine(2); + } else if ( pos == 0x4F ) { + 1028: 8f 34 cpi r24, 0x4F ; 79 + 102a: d9 f4 brne .+54 ; 0x1062 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 102c: d8 01 movw r26, r16 + 102e: 8c 91 ld r24, X + 1030: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1032: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1034: 8c 91 ld r24, X + 1036: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1038: 8c 93 st X, r24 + 103a: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 103c: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 104a: 00 c0 rjmp .+0 ; 0x104c + 104c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 104e: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 105c: 00 c0 rjmp .+0 ; 0x105e + 105e: 00 00 nop + 1060: 39 c0 rjmp .+114 ; 0x10d4 + this->setLine(3); + } else if ( pos == 0x1F ) { + 1062: 8f 31 cpi r24, 0x1F ; 31 + 1064: d9 f4 brne .+54 ; 0x109c + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1066: d8 01 movw r26, r16 + 1068: 8c 91 ld r24, X + 106a: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 106c: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 106e: 8c 91 ld r24, X + 1070: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1072: 8c 93 st X, r24 + 1074: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1076: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1084: 00 c0 rjmp .+0 ; 0x1086 + 1086: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1088: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1096: 00 c0 rjmp .+0 ; 0x1098 + 1098: 00 00 nop + 109a: 1c c0 rjmp .+56 ; 0x10d4 + this->setLine(4); + } else if ( pos == 0x5F ) { + 109c: 8f 35 cpi r24, 0x5F ; 95 + 109e: d1 f4 brne .+52 ; 0x10d4 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 10a0: d8 01 movw r26, r16 + 10a2: 8c 91 ld r24, X + 10a4: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 10a6: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 10a8: 8c 91 ld r24, X + 10aa: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 10ac: 8c 93 st X, r24 + 10ae: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 10b0: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 10be: 00 c0 rjmp .+0 ; 0x10c0 + 10c0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 10c2: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 10d0: 00 c0 rjmp .+0 ; 0x10d2 + 10d2: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 10d4: d8 01 movw r26, r16 + 10d6: 8c 91 ld r24, X + 10d8: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 10da: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 10dc: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 10f2: 00 c0 rjmp .+0 ; 0x10f4 + 10f4: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 10f6: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 10fe: d8 01 movw r26, r16 + 1100: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 111e: 00 c0 rjmp .+0 ; 0x1120 + 1120: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1122: d8 01 movw r26, r16 + 1124: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + 112e: 8a 30 cpi r24, 0x0A ; 10 + 1130: 09 f0 breq .+2 ; 0x1134 + 1132: 79 c0 rjmp .+242 ; 0x1226 + _delay_us(53); + pen::clear(); + } + + void newline(uint8_t pos) { + if ( pos >= 0x50 && pos <= 0x5F ) { + 1134: 89 2f mov r24, r25 + 1136: 80 55 subi r24, 0x50 ; 80 + 1138: 80 31 cpi r24, 0x10 ; 16 + 113a: d0 f4 brcc .+52 ; 0x1170 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 113c: 8c 91 ld r24, X + 113e: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1140: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1142: 8c 91 ld r24, X + 1144: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1146: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 1148: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 114a: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1158: 00 c0 rjmp .+0 ; 0x115a + 115a: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 115c: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 116a: 00 c0 rjmp .+0 ; 0x116c + 116c: 00 00 nop + 116e: e6 c0 rjmp .+460 ; 0x133c + return this->setLine(1); + } + if ( pos >= 0x00 && pos <= 0x0F) { + 1170: 90 31 cpi r25, 0x10 ; 16 + 1172: d8 f4 brcc .+54 ; 0x11aa + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1174: d8 01 movw r26, r16 + 1176: 8c 91 ld r24, X + 1178: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 117a: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 117c: 8c 91 ld r24, X + 117e: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1180: 8c 93 st X, r24 + 1182: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1184: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1192: 00 c0 rjmp .+0 ; 0x1194 + 1194: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1196: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 11a4: 00 c0 rjmp .+0 ; 0x11a6 + 11a6: 00 00 nop + 11a8: c9 c0 rjmp .+402 ; 0x133c + return this->setLine(2); + } + if ( pos >= 0x40 && pos <= 0x4F) { + 11aa: 89 2f mov r24, r25 + 11ac: 80 54 subi r24, 0x40 ; 64 + 11ae: 80 31 cpi r24, 0x10 ; 16 + 11b0: d8 f4 brcc .+54 ; 0x11e8 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 11b2: d8 01 movw r26, r16 + 11b4: 8c 91 ld r24, X + 11b6: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 11b8: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 11ba: 8c 91 ld r24, X + 11bc: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 11be: 8c 93 st X, r24 + 11c0: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 11c2: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 11d0: 00 c0 rjmp .+0 ; 0x11d2 + 11d2: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 11d4: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 11e2: 00 c0 rjmp .+0 ; 0x11e4 + 11e4: 00 00 nop + 11e6: aa c0 rjmp .+340 ; 0x133c + return this->setLine(3); + } + if ( pos >= 0x10 && pos <= 0x1F) { + 11e8: 90 51 subi r25, 0x10 ; 16 + 11ea: 90 31 cpi r25, 0x10 ; 16 + 11ec: 08 f0 brcs .+2 ; 0x11f0 + 11ee: a6 c0 rjmp .+332 ; 0x133c + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 11f0: d8 01 movw r26, r16 + 11f2: 8c 91 ld r24, X + 11f4: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 11f6: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 11f8: 8c 91 ld r24, X + 11fa: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 11fc: 8c 93 st X, r24 + 11fe: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1200: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 120e: 00 c0 rjmp .+0 ; 0x1210 + 1210: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1212: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1220: 00 c0 rjmp .+0 ; 0x1222 + 1222: 00 00 nop + 1224: 8b c0 rjmp .+278 ; 0x133c + void lputc(uint8_t c) { + uint8_t pos = this->getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 1226: 9f 30 cpi r25, 0x0F ; 15 + 1228: e1 f4 brne .+56 ; 0x1262 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 122a: d8 01 movw r26, r16 + 122c: 9c 91 ld r25, X + 122e: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1230: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1232: 9c 91 ld r25, X + 1234: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1236: 9c 93 st X, r25 + 1238: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 123a: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1248: 00 c0 rjmp .+0 ; 0x124a + 124a: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 124c: d8 01 movw r26, r16 + 124e: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 125c: 00 c0 rjmp .+0 ; 0x125e + 125e: 00 00 nop + 1260: 59 c0 rjmp .+178 ; 0x1314 + this->setLine(2); + } else if ( pos == 0x4F ) { + 1262: 9f 34 cpi r25, 0x4F ; 79 + 1264: e1 f4 brne .+56 ; 0x129e + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1266: d8 01 movw r26, r16 + 1268: 9c 91 ld r25, X + 126a: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 126c: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 126e: 9c 91 ld r25, X + 1270: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1272: 9c 93 st X, r25 + 1274: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1276: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1284: 00 c0 rjmp .+0 ; 0x1286 + 1286: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1288: d8 01 movw r26, r16 + 128a: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 1298: 00 c0 rjmp .+0 ; 0x129a + 129a: 00 00 nop + 129c: 3b c0 rjmp .+118 ; 0x1314 + this->setLine(3); + } else if ( pos == 0x1F ) { + 129e: 9f 31 cpi r25, 0x1F ; 31 + 12a0: e1 f4 brne .+56 ; 0x12da + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 12a2: d8 01 movw r26, r16 + 12a4: 9c 91 ld r25, X + 12a6: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 12a8: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 12aa: 9c 91 ld r25, X + 12ac: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 12ae: 9c 93 st X, r25 + 12b0: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 12b2: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 12c0: 00 c0 rjmp .+0 ; 0x12c2 + 12c2: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 12c4: d8 01 movw r26, r16 + 12c6: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 12d4: 00 c0 rjmp .+0 ; 0x12d6 + 12d6: 00 00 nop + 12d8: 1d c0 rjmp .+58 ; 0x1314 + this->setLine(4); + } else if ( pos == 0x5F ) { + 12da: 9f 35 cpi r25, 0x5F ; 95 + 12dc: d9 f4 brne .+54 ; 0x1314 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 12de: d8 01 movw r26, r16 + 12e0: 9c 91 ld r25, X + 12e2: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 12e4: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 12e6: 9c 91 ld r25, X + 12e8: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 12ea: 9c 93 st X, r25 + 12ec: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 12ee: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 12fc: 00 c0 rjmp .+0 ; 0x12fe + 12fe: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1300: d8 01 movw r26, r16 + 1302: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 1310: 00 c0 rjmp .+0 ; 0x1312 + 1312: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1314: d8 01 movw r26, r16 + 1316: 9c 91 ld r25, X + 1318: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 131a: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 131c: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1332: 00 c0 rjmp .+0 ; 0x1334 + 1334: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1336: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<lputs(t); + } + + void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ + register char c; + while ( (c = *s++) ) { + 133c: 81 91 ld r24, Z+ + 133e: 81 11 cpse r24, r1 + 1340: 5a cc rjmp .-1868 ; 0xbf6 + 1342: 1f 92 push r1 + 1344: 86 e9 ldi r24, 0x96 ; 150 + 1346: 8f 93 push r24 + 1348: 89 e1 ldi r24, 0x19 ; 25 + 134a: 92 e0 ldi r25, 0x02 ; 2 + 134c: 9f 93 push r25 + 134e: 8f 93 push r24 + 1350: ff 92 push r15 + 1352: ef 92 push r14 + 1354: 0e 94 24 11 call 0x2248 ; 0x2248 + 1358: 0f 90 pop r0 + 135a: 0f 90 pop r0 + 135c: 0f 90 pop r0 + 135e: 0f 90 pop r0 + 1360: 0f 90 pop r0 + 1362: 0f 90 pop r0 + 1364: e5 2d mov r30, r5 + 1366: fd 8d ldd r31, Y+29 ; 0x1d + 1368: 60 e9 ldi r22, 0x90 ; 144 + 136a: 40 ec ldi r20, 0xC0 ; 192 + 136c: 22 ee ldi r18, 0xE2 ; 226 + 136e: 75 ef ldi r23, 0xF5 ; 245 + 1370: 5f ee ldi r21, 0xEF ; 239 + 1372: 31 ee ldi r19, 0xE1 ; 225 + 1374: a3 c3 rjmp .+1862 ; 0x1abc + if(c == 0xE4) { //ä + 1376: 84 3e cpi r24, 0xE4 ; 228 + 1378: 09 f0 breq .+2 ; 0x137c + 137a: 9e c0 rjmp .+316 ; 0x14b8 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 137c: d8 01 movw r26, r16 + 137e: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 139c: 00 c0 rjmp .+0 ; 0x139e + 139e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 13a0: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 13aa: 8f 30 cpi r24, 0x0F ; 15 + 13ac: d1 f4 brne .+52 ; 0x13e2 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 13ae: 8c 91 ld r24, X + 13b0: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 13b2: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 13b4: 8c 91 ld r24, X + 13b6: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 13b8: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 13ba: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 13bc: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 13ca: 00 c0 rjmp .+0 ; 0x13cc + 13cc: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 13ce: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 13dc: 00 c0 rjmp .+0 ; 0x13de + 13de: 00 00 nop + 13e0: 56 c0 rjmp .+172 ; 0x148e + this->setLine(2); + } else if ( pos == 0x4F ) { + 13e2: 8f 34 cpi r24, 0x4F ; 79 + 13e4: d9 f4 brne .+54 ; 0x141c + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 13e6: d8 01 movw r26, r16 + 13e8: 8c 91 ld r24, X + 13ea: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 13ec: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 13ee: 8c 91 ld r24, X + 13f0: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 13f2: 8c 93 st X, r24 + 13f4: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 13f6: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1404: 00 c0 rjmp .+0 ; 0x1406 + 1406: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1408: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1416: 00 c0 rjmp .+0 ; 0x1418 + 1418: 00 00 nop + 141a: 39 c0 rjmp .+114 ; 0x148e + this->setLine(3); + } else if ( pos == 0x1F ) { + 141c: 8f 31 cpi r24, 0x1F ; 31 + 141e: d9 f4 brne .+54 ; 0x1456 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1420: d8 01 movw r26, r16 + 1422: 8c 91 ld r24, X + 1424: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1426: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1428: 8c 91 ld r24, X + 142a: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 142c: 8c 93 st X, r24 + 142e: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1430: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 143e: 00 c0 rjmp .+0 ; 0x1440 + 1440: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1442: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1450: 00 c0 rjmp .+0 ; 0x1452 + 1452: 00 00 nop + 1454: 1c c0 rjmp .+56 ; 0x148e + this->setLine(4); + } else if ( pos == 0x5F ) { + 1456: 8f 35 cpi r24, 0x5F ; 95 + 1458: d1 f4 brne .+52 ; 0x148e + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 145a: d8 01 movw r26, r16 + 145c: 8c 91 ld r24, X + 145e: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1460: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1462: 8c 91 ld r24, X + 1464: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1466: 8c 93 st X, r24 + 1468: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 146a: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1478: 00 c0 rjmp .+0 ; 0x147a + 147a: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 147c: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 148a: 00 c0 rjmp .+0 ; 0x148c + 148c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 148e: d8 01 movw r26, r16 + 1490: 8c 91 ld r24, X + 1492: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1494: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1496: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 14ac: 00 c0 rjmp .+0 ; 0x14ae + 14ae: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 14b0: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ + register char c; + while ( (c = *s++) ) { + if(c == 0xE4) { //ä + lputc(0xE1); + } else if(c == 0xF6) { //ö + 14b8: 86 3f cpi r24, 0xF6 ; 246 + 14ba: 09 f0 breq .+2 ; 0x14be + 14bc: 9e c0 rjmp .+316 ; 0x15fa + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 14be: d8 01 movw r26, r16 + 14c0: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 14de: 00 c0 rjmp .+0 ; 0x14e0 + 14e0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 14e2: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 14ec: 8f 30 cpi r24, 0x0F ; 15 + 14ee: d1 f4 brne .+52 ; 0x1524 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 14f0: 8c 91 ld r24, X + 14f2: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 14f4: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 14f6: 8c 91 ld r24, X + 14f8: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 14fa: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 14fc: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 14fe: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 150c: 00 c0 rjmp .+0 ; 0x150e + 150e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1510: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 151e: 00 c0 rjmp .+0 ; 0x1520 + 1520: 00 00 nop + 1522: 56 c0 rjmp .+172 ; 0x15d0 + this->setLine(2); + } else if ( pos == 0x4F ) { + 1524: 8f 34 cpi r24, 0x4F ; 79 + 1526: d9 f4 brne .+54 ; 0x155e + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1528: d8 01 movw r26, r16 + 152a: 8c 91 ld r24, X + 152c: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 152e: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1530: 8c 91 ld r24, X + 1532: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1534: 8c 93 st X, r24 + 1536: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1538: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1546: 00 c0 rjmp .+0 ; 0x1548 + 1548: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 154a: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1558: 00 c0 rjmp .+0 ; 0x155a + 155a: 00 00 nop + 155c: 39 c0 rjmp .+114 ; 0x15d0 + this->setLine(3); + } else if ( pos == 0x1F ) { + 155e: 8f 31 cpi r24, 0x1F ; 31 + 1560: d9 f4 brne .+54 ; 0x1598 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1562: d8 01 movw r26, r16 + 1564: 8c 91 ld r24, X + 1566: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1568: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 156a: 8c 91 ld r24, X + 156c: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 156e: 8c 93 st X, r24 + 1570: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1572: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1580: 00 c0 rjmp .+0 ; 0x1582 + 1582: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1584: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1592: 00 c0 rjmp .+0 ; 0x1594 + 1594: 00 00 nop + 1596: 1c c0 rjmp .+56 ; 0x15d0 + this->setLine(4); + } else if ( pos == 0x5F ) { + 1598: 8f 35 cpi r24, 0x5F ; 95 + 159a: d1 f4 brne .+52 ; 0x15d0 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 159c: d8 01 movw r26, r16 + 159e: 8c 91 ld r24, X + 15a0: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 15a2: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 15a4: 8c 91 ld r24, X + 15a6: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 15a8: 8c 93 st X, r24 + 15aa: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 15ac: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 15ba: 00 c0 rjmp .+0 ; 0x15bc + 15bc: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 15be: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 15cc: 00 c0 rjmp .+0 ; 0x15ce + 15ce: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 15d0: d8 01 movw r26, r16 + 15d2: 8c 91 ld r24, X + 15d4: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 15d6: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 15d8: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 15ee: 00 c0 rjmp .+0 ; 0x15f0 + 15f0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 15f2: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + while ( (c = *s++) ) { + if(c == 0xE4) { //ä + lputc(0xE1); + } else if(c == 0xF6) { //ö + lputc(0xEF); + } else if(c == 0xFC) { //ü + 15fa: 8c 3f cpi r24, 0xFC ; 252 + 15fc: 09 f0 breq .+2 ; 0x1600 + 15fe: 9e c0 rjmp .+316 ; 0x173c + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1600: d8 01 movw r26, r16 + 1602: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1620: 00 c0 rjmp .+0 ; 0x1622 + 1622: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1624: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 162e: 8f 30 cpi r24, 0x0F ; 15 + 1630: d1 f4 brne .+52 ; 0x1666 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1632: 8c 91 ld r24, X + 1634: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1636: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1638: 8c 91 ld r24, X + 163a: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 163c: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 163e: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1640: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 164e: 00 c0 rjmp .+0 ; 0x1650 + 1650: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1652: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1660: 00 c0 rjmp .+0 ; 0x1662 + 1662: 00 00 nop + 1664: 56 c0 rjmp .+172 ; 0x1712 + this->setLine(2); + } else if ( pos == 0x4F ) { + 1666: 8f 34 cpi r24, 0x4F ; 79 + 1668: d9 f4 brne .+54 ; 0x16a0 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 166a: d8 01 movw r26, r16 + 166c: 8c 91 ld r24, X + 166e: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1670: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1672: 8c 91 ld r24, X + 1674: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1676: 8c 93 st X, r24 + 1678: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 167a: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1688: 00 c0 rjmp .+0 ; 0x168a + 168a: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 168c: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 169a: 00 c0 rjmp .+0 ; 0x169c + 169c: 00 00 nop + 169e: 39 c0 rjmp .+114 ; 0x1712 + this->setLine(3); + } else if ( pos == 0x1F ) { + 16a0: 8f 31 cpi r24, 0x1F ; 31 + 16a2: d9 f4 brne .+54 ; 0x16da + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 16a4: d8 01 movw r26, r16 + 16a6: 8c 91 ld r24, X + 16a8: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 16aa: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 16ac: 8c 91 ld r24, X + 16ae: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 16b0: 8c 93 st X, r24 + 16b2: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 16b4: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 16c2: 00 c0 rjmp .+0 ; 0x16c4 + 16c4: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 16c6: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 16d4: 00 c0 rjmp .+0 ; 0x16d6 + 16d6: 00 00 nop + 16d8: 1c c0 rjmp .+56 ; 0x1712 + this->setLine(4); + } else if ( pos == 0x5F ) { + 16da: 8f 35 cpi r24, 0x5F ; 95 + 16dc: d1 f4 brne .+52 ; 0x1712 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 16de: d8 01 movw r26, r16 + 16e0: 8c 91 ld r24, X + 16e2: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 16e4: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 16e6: 8c 91 ld r24, X + 16e8: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 16ea: 8c 93 st X, r24 + 16ec: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 16ee: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 16fc: 00 c0 rjmp .+0 ; 0x16fe + 16fe: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1700: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 170e: 00 c0 rjmp .+0 ; 0x1710 + 1710: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1712: d8 01 movw r26, r16 + 1714: 8c 91 ld r24, X + 1716: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1718: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 171a: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1730: 00 c0 rjmp .+0 ; 0x1732 + 1732: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1734: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + lputc(0xE1); + } else if(c == 0xF6) { //ö + lputc(0xEF); + } else if(c == 0xFC) { //ü + lputc(0xF5); + } else if(c == 0xDF) { //ü + 173c: 8f 3d cpi r24, 0xDF ; 223 + 173e: 09 f0 breq .+2 ; 0x1742 + 1740: 9e c0 rjmp .+316 ; 0x187e + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1742: d8 01 movw r26, r16 + 1744: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1762: 00 c0 rjmp .+0 ; 0x1764 + 1764: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1766: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 1770: 8f 30 cpi r24, 0x0F ; 15 + 1772: d1 f4 brne .+52 ; 0x17a8 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1774: 8c 91 ld r24, X + 1776: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1778: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 177a: 8c 91 ld r24, X + 177c: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 177e: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 1780: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1782: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1790: 00 c0 rjmp .+0 ; 0x1792 + 1792: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1794: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 17a2: 00 c0 rjmp .+0 ; 0x17a4 + 17a4: 00 00 nop + 17a6: 56 c0 rjmp .+172 ; 0x1854 + this->setLine(2); + } else if ( pos == 0x4F ) { + 17a8: 8f 34 cpi r24, 0x4F ; 79 + 17aa: d9 f4 brne .+54 ; 0x17e2 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 17ac: d8 01 movw r26, r16 + 17ae: 8c 91 ld r24, X + 17b0: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 17b2: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 17b4: 8c 91 ld r24, X + 17b6: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 17b8: 8c 93 st X, r24 + 17ba: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 17bc: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 17ca: 00 c0 rjmp .+0 ; 0x17cc + 17cc: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 17ce: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 17dc: 00 c0 rjmp .+0 ; 0x17de + 17de: 00 00 nop + 17e0: 39 c0 rjmp .+114 ; 0x1854 + this->setLine(3); + } else if ( pos == 0x1F ) { + 17e2: 8f 31 cpi r24, 0x1F ; 31 + 17e4: d9 f4 brne .+54 ; 0x181c + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 17e6: d8 01 movw r26, r16 + 17e8: 8c 91 ld r24, X + 17ea: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 17ec: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 17ee: 8c 91 ld r24, X + 17f0: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 17f2: 8c 93 st X, r24 + 17f4: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 17f6: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1804: 00 c0 rjmp .+0 ; 0x1806 + 1806: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1808: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1816: 00 c0 rjmp .+0 ; 0x1818 + 1818: 00 00 nop + 181a: 1c c0 rjmp .+56 ; 0x1854 + this->setLine(4); + } else if ( pos == 0x5F ) { + 181c: 8f 35 cpi r24, 0x5F ; 95 + 181e: d1 f4 brne .+52 ; 0x1854 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1820: d8 01 movw r26, r16 + 1822: 8c 91 ld r24, X + 1824: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1826: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1828: 8c 91 ld r24, X + 182a: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 182c: 8c 93 st X, r24 + 182e: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1830: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 183e: 00 c0 rjmp .+0 ; 0x1840 + 1840: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1842: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1850: 00 c0 rjmp .+0 ; 0x1852 + 1852: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1854: d8 01 movw r26, r16 + 1856: 8c 91 ld r24, X + 1858: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 185a: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 185c: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1872: 00 c0 rjmp .+0 ; 0x1874 + 1874: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1876: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 187e: d8 01 movw r26, r16 + 1880: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 189e: 00 c0 rjmp .+0 ; 0x18a0 + 18a0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 18a2: d8 01 movw r26, r16 + 18a4: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + 18ae: 8a 30 cpi r24, 0x0A ; 10 + 18b0: 09 f0 breq .+2 ; 0x18b4 + 18b2: 79 c0 rjmp .+242 ; 0x19a6 + _delay_us(53); + pen::clear(); + } + + void newline(uint8_t pos) { + if ( pos >= 0x50 && pos <= 0x5F ) { + 18b4: 89 2f mov r24, r25 + 18b6: 80 55 subi r24, 0x50 ; 80 + 18b8: 80 31 cpi r24, 0x10 ; 16 + 18ba: d0 f4 brcc .+52 ; 0x18f0 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 18bc: 8c 91 ld r24, X + 18be: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 18c0: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 18c2: 8c 91 ld r24, X + 18c4: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 18c6: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 18c8: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 18ca: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 18d8: 00 c0 rjmp .+0 ; 0x18da + 18da: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 18dc: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 18ea: 00 c0 rjmp .+0 ; 0x18ec + 18ec: 00 00 nop + 18ee: e6 c0 rjmp .+460 ; 0x1abc + return this->setLine(1); + } + if ( pos >= 0x00 && pos <= 0x0F) { + 18f0: 90 31 cpi r25, 0x10 ; 16 + 18f2: d8 f4 brcc .+54 ; 0x192a + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 18f4: d8 01 movw r26, r16 + 18f6: 8c 91 ld r24, X + 18f8: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 18fa: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 18fc: 8c 91 ld r24, X + 18fe: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1900: 8c 93 st X, r24 + 1902: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1904: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1912: 00 c0 rjmp .+0 ; 0x1914 + 1914: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1916: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1924: 00 c0 rjmp .+0 ; 0x1926 + 1926: 00 00 nop + 1928: c9 c0 rjmp .+402 ; 0x1abc + return this->setLine(2); + } + if ( pos >= 0x40 && pos <= 0x4F) { + 192a: 89 2f mov r24, r25 + 192c: 80 54 subi r24, 0x40 ; 64 + 192e: 80 31 cpi r24, 0x10 ; 16 + 1930: d8 f4 brcc .+54 ; 0x1968 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1932: d8 01 movw r26, r16 + 1934: 8c 91 ld r24, X + 1936: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1938: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 193a: 8c 91 ld r24, X + 193c: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 193e: 8c 93 st X, r24 + 1940: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1942: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1950: 00 c0 rjmp .+0 ; 0x1952 + 1952: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1954: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1962: 00 c0 rjmp .+0 ; 0x1964 + 1964: 00 00 nop + 1966: aa c0 rjmp .+340 ; 0x1abc + return this->setLine(3); + } + if ( pos >= 0x10 && pos <= 0x1F) { + 1968: 90 51 subi r25, 0x10 ; 16 + 196a: 90 31 cpi r25, 0x10 ; 16 + 196c: 08 f0 brcs .+2 ; 0x1970 + 196e: a6 c0 rjmp .+332 ; 0x1abc + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1970: d8 01 movw r26, r16 + 1972: 8c 91 ld r24, X + 1974: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1976: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1978: 8c 91 ld r24, X + 197a: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 197c: 8c 93 st X, r24 + 197e: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1980: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 198e: 00 c0 rjmp .+0 ; 0x1990 + 1990: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1992: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 19a0: 00 c0 rjmp .+0 ; 0x19a2 + 19a2: 00 00 nop + 19a4: 8b c0 rjmp .+278 ; 0x1abc + void lputc(uint8_t c) { + uint8_t pos = this->getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 19a6: 9f 30 cpi r25, 0x0F ; 15 + 19a8: e1 f4 brne .+56 ; 0x19e2 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 19aa: d8 01 movw r26, r16 + 19ac: 9c 91 ld r25, X + 19ae: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 19b0: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 19b2: 9c 91 ld r25, X + 19b4: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 19b6: 9c 93 st X, r25 + 19b8: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 19ba: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 19c8: 00 c0 rjmp .+0 ; 0x19ca + 19ca: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 19cc: d8 01 movw r26, r16 + 19ce: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 19dc: 00 c0 rjmp .+0 ; 0x19de + 19de: 00 00 nop + 19e0: 59 c0 rjmp .+178 ; 0x1a94 + this->setLine(2); + } else if ( pos == 0x4F ) { + 19e2: 9f 34 cpi r25, 0x4F ; 79 + 19e4: e1 f4 brne .+56 ; 0x1a1e + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 19e6: d8 01 movw r26, r16 + 19e8: 9c 91 ld r25, X + 19ea: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 19ec: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 19ee: 9c 91 ld r25, X + 19f0: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 19f2: 9c 93 st X, r25 + 19f4: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 19f6: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1a04: 00 c0 rjmp .+0 ; 0x1a06 + 1a06: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1a08: d8 01 movw r26, r16 + 1a0a: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 1a18: 00 c0 rjmp .+0 ; 0x1a1a + 1a1a: 00 00 nop + 1a1c: 3b c0 rjmp .+118 ; 0x1a94 + this->setLine(3); + } else if ( pos == 0x1F ) { + 1a1e: 9f 31 cpi r25, 0x1F ; 31 + 1a20: e1 f4 brne .+56 ; 0x1a5a + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1a22: d8 01 movw r26, r16 + 1a24: 9c 91 ld r25, X + 1a26: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1a28: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1a2a: 9c 91 ld r25, X + 1a2c: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1a2e: 9c 93 st X, r25 + 1a30: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1a32: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1a40: 00 c0 rjmp .+0 ; 0x1a42 + 1a42: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1a44: d8 01 movw r26, r16 + 1a46: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 1a54: 00 c0 rjmp .+0 ; 0x1a56 + 1a56: 00 00 nop + 1a58: 1d c0 rjmp .+58 ; 0x1a94 + this->setLine(4); + } else if ( pos == 0x5F ) { + 1a5a: 9f 35 cpi r25, 0x5F ; 95 + 1a5c: d9 f4 brne .+54 ; 0x1a94 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1a5e: d8 01 movw r26, r16 + 1a60: 9c 91 ld r25, X + 1a62: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1a64: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1a66: 9c 91 ld r25, X + 1a68: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1a6a: 9c 93 st X, r25 + 1a6c: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1a6e: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1a7c: 00 c0 rjmp .+0 ; 0x1a7e + 1a7e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1a80: d8 01 movw r26, r16 + 1a82: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 1a90: 00 c0 rjmp .+0 ; 0x1a92 + 1a92: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1a94: d8 01 movw r26, r16 + 1a96: 9c 91 ld r25, X + 1a98: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1a9a: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1a9c: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1ab2: 00 c0 rjmp .+0 ; 0x1ab4 + 1ab4: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1ab6: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<lputs(t); + } + + void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ + register char c; + while ( (c = *s++) ) { + 1abc: 81 91 ld r24, Z+ + 1abe: 81 11 cpse r24, r1 + 1ac0: 5a cc rjmp .-1868 ; 0x1376 + 1ac2: e2 e0 ldi r30, 0x02 ; 2 + 1ac4: f2 e0 ldi r31, 0x02 ; 2 + 1ac6: 60 e9 ldi r22, 0x90 ; 144 + 1ac8: 40 ec ldi r20, 0xC0 ; 192 + 1aca: 22 ee ldi r18, 0xE2 ; 226 + 1acc: 75 ef ldi r23, 0xF5 ; 245 + 1ace: 5f ee ldi r21, 0xEF ; 239 + 1ad0: 31 ee ldi r19, 0xE1 ; 225 + 1ad2: a3 c3 rjmp .+1862 ; 0x221a <__stack+0x1b> + if(c == 0xE4) { //ä + 1ad4: 84 3e cpi r24, 0xE4 ; 228 + 1ad6: 09 f0 breq .+2 ; 0x1ada + 1ad8: 9e c0 rjmp .+316 ; 0x1c16 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1ada: d8 01 movw r26, r16 + 1adc: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1afa: 00 c0 rjmp .+0 ; 0x1afc + 1afc: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1afe: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 1b08: 8f 30 cpi r24, 0x0F ; 15 + 1b0a: d1 f4 brne .+52 ; 0x1b40 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1b0c: 8c 91 ld r24, X + 1b0e: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1b10: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1b12: 8c 91 ld r24, X + 1b14: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1b16: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 1b18: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1b1a: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1b28: 00 c0 rjmp .+0 ; 0x1b2a + 1b2a: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1b2c: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1b3a: 00 c0 rjmp .+0 ; 0x1b3c + 1b3c: 00 00 nop + 1b3e: 56 c0 rjmp .+172 ; 0x1bec + this->setLine(2); + } else if ( pos == 0x4F ) { + 1b40: 8f 34 cpi r24, 0x4F ; 79 + 1b42: d9 f4 brne .+54 ; 0x1b7a + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1b44: d8 01 movw r26, r16 + 1b46: 8c 91 ld r24, X + 1b48: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1b4a: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1b4c: 8c 91 ld r24, X + 1b4e: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1b50: 8c 93 st X, r24 + 1b52: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1b54: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1b62: 00 c0 rjmp .+0 ; 0x1b64 + 1b64: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1b66: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1b74: 00 c0 rjmp .+0 ; 0x1b76 + 1b76: 00 00 nop + 1b78: 39 c0 rjmp .+114 ; 0x1bec + this->setLine(3); + } else if ( pos == 0x1F ) { + 1b7a: 8f 31 cpi r24, 0x1F ; 31 + 1b7c: d9 f4 brne .+54 ; 0x1bb4 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1b7e: d8 01 movw r26, r16 + 1b80: 8c 91 ld r24, X + 1b82: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1b84: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1b86: 8c 91 ld r24, X + 1b88: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1b8a: 8c 93 st X, r24 + 1b8c: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1b8e: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1b9c: 00 c0 rjmp .+0 ; 0x1b9e + 1b9e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1ba0: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1bae: 00 c0 rjmp .+0 ; 0x1bb0 + 1bb0: 00 00 nop + 1bb2: 1c c0 rjmp .+56 ; 0x1bec + this->setLine(4); + } else if ( pos == 0x5F ) { + 1bb4: 8f 35 cpi r24, 0x5F ; 95 + 1bb6: d1 f4 brne .+52 ; 0x1bec + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1bb8: d8 01 movw r26, r16 + 1bba: 8c 91 ld r24, X + 1bbc: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1bbe: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1bc0: 8c 91 ld r24, X + 1bc2: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1bc4: 8c 93 st X, r24 + 1bc6: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1bc8: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1bd6: 00 c0 rjmp .+0 ; 0x1bd8 + 1bd8: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1bda: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1be8: 00 c0 rjmp .+0 ; 0x1bea + 1bea: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1bec: d8 01 movw r26, r16 + 1bee: 8c 91 ld r24, X + 1bf0: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1bf2: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1bf4: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1c0a: 00 c0 rjmp .+0 ; 0x1c0c + 1c0c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1c0e: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ + register char c; + while ( (c = *s++) ) { + if(c == 0xE4) { //ä + lputc(0xE1); + } else if(c == 0xF6) { //ö + 1c16: 86 3f cpi r24, 0xF6 ; 246 + 1c18: 09 f0 breq .+2 ; 0x1c1c + 1c1a: 9e c0 rjmp .+316 ; 0x1d58 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1c1c: d8 01 movw r26, r16 + 1c1e: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1c3c: 00 c0 rjmp .+0 ; 0x1c3e + 1c3e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1c40: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 1c4a: 8f 30 cpi r24, 0x0F ; 15 + 1c4c: d1 f4 brne .+52 ; 0x1c82 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1c4e: 8c 91 ld r24, X + 1c50: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1c52: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1c54: 8c 91 ld r24, X + 1c56: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1c58: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 1c5a: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1c5c: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1c6a: 00 c0 rjmp .+0 ; 0x1c6c + 1c6c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1c6e: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1c7c: 00 c0 rjmp .+0 ; 0x1c7e + 1c7e: 00 00 nop + 1c80: 56 c0 rjmp .+172 ; 0x1d2e + this->setLine(2); + } else if ( pos == 0x4F ) { + 1c82: 8f 34 cpi r24, 0x4F ; 79 + 1c84: d9 f4 brne .+54 ; 0x1cbc + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1c86: d8 01 movw r26, r16 + 1c88: 8c 91 ld r24, X + 1c8a: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1c8c: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1c8e: 8c 91 ld r24, X + 1c90: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1c92: 8c 93 st X, r24 + 1c94: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1c96: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1ca4: 00 c0 rjmp .+0 ; 0x1ca6 + 1ca6: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1ca8: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1cb6: 00 c0 rjmp .+0 ; 0x1cb8 + 1cb8: 00 00 nop + 1cba: 39 c0 rjmp .+114 ; 0x1d2e + this->setLine(3); + } else if ( pos == 0x1F ) { + 1cbc: 8f 31 cpi r24, 0x1F ; 31 + 1cbe: d9 f4 brne .+54 ; 0x1cf6 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1cc0: d8 01 movw r26, r16 + 1cc2: 8c 91 ld r24, X + 1cc4: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1cc6: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1cc8: 8c 91 ld r24, X + 1cca: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1ccc: 8c 93 st X, r24 + 1cce: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1cd0: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1cde: 00 c0 rjmp .+0 ; 0x1ce0 + 1ce0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1ce2: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1cf0: 00 c0 rjmp .+0 ; 0x1cf2 + 1cf2: 00 00 nop + 1cf4: 1c c0 rjmp .+56 ; 0x1d2e + this->setLine(4); + } else if ( pos == 0x5F ) { + 1cf6: 8f 35 cpi r24, 0x5F ; 95 + 1cf8: d1 f4 brne .+52 ; 0x1d2e + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1cfa: d8 01 movw r26, r16 + 1cfc: 8c 91 ld r24, X + 1cfe: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1d00: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1d02: 8c 91 ld r24, X + 1d04: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1d06: 8c 93 st X, r24 + 1d08: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1d0a: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1d18: 00 c0 rjmp .+0 ; 0x1d1a + 1d1a: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1d1c: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1d2a: 00 c0 rjmp .+0 ; 0x1d2c + 1d2c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1d2e: d8 01 movw r26, r16 + 1d30: 8c 91 ld r24, X + 1d32: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1d34: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1d36: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1d4c: 00 c0 rjmp .+0 ; 0x1d4e + 1d4e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1d50: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + while ( (c = *s++) ) { + if(c == 0xE4) { //ä + lputc(0xE1); + } else if(c == 0xF6) { //ö + lputc(0xEF); + } else if(c == 0xFC) { //ü + 1d58: 8c 3f cpi r24, 0xFC ; 252 + 1d5a: 09 f0 breq .+2 ; 0x1d5e + 1d5c: 9e c0 rjmp .+316 ; 0x1e9a + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1d5e: d8 01 movw r26, r16 + 1d60: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1d7e: 00 c0 rjmp .+0 ; 0x1d80 + 1d80: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1d82: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 1d8c: 8f 30 cpi r24, 0x0F ; 15 + 1d8e: d1 f4 brne .+52 ; 0x1dc4 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1d90: 8c 91 ld r24, X + 1d92: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1d94: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1d96: 8c 91 ld r24, X + 1d98: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1d9a: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 1d9c: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1d9e: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1dac: 00 c0 rjmp .+0 ; 0x1dae + 1dae: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1db0: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1dbe: 00 c0 rjmp .+0 ; 0x1dc0 + 1dc0: 00 00 nop + 1dc2: 56 c0 rjmp .+172 ; 0x1e70 + this->setLine(2); + } else if ( pos == 0x4F ) { + 1dc4: 8f 34 cpi r24, 0x4F ; 79 + 1dc6: d9 f4 brne .+54 ; 0x1dfe + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1dc8: d8 01 movw r26, r16 + 1dca: 8c 91 ld r24, X + 1dcc: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1dce: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1dd0: 8c 91 ld r24, X + 1dd2: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1dd4: 8c 93 st X, r24 + 1dd6: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1dd8: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1de6: 00 c0 rjmp .+0 ; 0x1de8 + 1de8: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1dea: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1df8: 00 c0 rjmp .+0 ; 0x1dfa + 1dfa: 00 00 nop + 1dfc: 39 c0 rjmp .+114 ; 0x1e70 + this->setLine(3); + } else if ( pos == 0x1F ) { + 1dfe: 8f 31 cpi r24, 0x1F ; 31 + 1e00: d9 f4 brne .+54 ; 0x1e38 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1e02: d8 01 movw r26, r16 + 1e04: 8c 91 ld r24, X + 1e06: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1e08: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1e0a: 8c 91 ld r24, X + 1e0c: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1e0e: 8c 93 st X, r24 + 1e10: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1e12: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1e20: 00 c0 rjmp .+0 ; 0x1e22 + 1e22: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1e24: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1e32: 00 c0 rjmp .+0 ; 0x1e34 + 1e34: 00 00 nop + 1e36: 1c c0 rjmp .+56 ; 0x1e70 + this->setLine(4); + } else if ( pos == 0x5F ) { + 1e38: 8f 35 cpi r24, 0x5F ; 95 + 1e3a: d1 f4 brne .+52 ; 0x1e70 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1e3c: d8 01 movw r26, r16 + 1e3e: 8c 91 ld r24, X + 1e40: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1e42: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1e44: 8c 91 ld r24, X + 1e46: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1e48: 8c 93 st X, r24 + 1e4a: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1e4c: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1e5a: 00 c0 rjmp .+0 ; 0x1e5c + 1e5c: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1e5e: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1e6c: 00 c0 rjmp .+0 ; 0x1e6e + 1e6e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1e70: d8 01 movw r26, r16 + 1e72: 8c 91 ld r24, X + 1e74: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1e76: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1e78: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1e8e: 00 c0 rjmp .+0 ; 0x1e90 + 1e90: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1e92: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + lputc(0xE1); + } else if(c == 0xF6) { //ö + lputc(0xEF); + } else if(c == 0xFC) { //ü + lputc(0xF5); + } else if(c == 0xDF) { //ü + 1e9a: 8f 3d cpi r24, 0xDF ; 223 + 1e9c: 09 f0 breq .+2 ; 0x1ea0 + 1e9e: 9e c0 rjmp .+316 ; 0x1fdc + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1ea0: d8 01 movw r26, r16 + 1ea2: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1ec0: 00 c0 rjmp .+0 ; 0x1ec2 + 1ec2: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1ec4: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 1ece: 8f 30 cpi r24, 0x0F ; 15 + 1ed0: d1 f4 brne .+52 ; 0x1f06 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1ed2: 8c 91 ld r24, X + 1ed4: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1ed6: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1ed8: 8c 91 ld r24, X + 1eda: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1edc: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 1ede: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1ee0: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1eee: 00 c0 rjmp .+0 ; 0x1ef0 + 1ef0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1ef2: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1f00: 00 c0 rjmp .+0 ; 0x1f02 + 1f02: 00 00 nop + 1f04: 56 c0 rjmp .+172 ; 0x1fb2 + this->setLine(2); + } else if ( pos == 0x4F ) { + 1f06: 8f 34 cpi r24, 0x4F ; 79 + 1f08: d9 f4 brne .+54 ; 0x1f40 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f0a: d8 01 movw r26, r16 + 1f0c: 8c 91 ld r24, X + 1f0e: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1f10: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f12: 8c 91 ld r24, X + 1f14: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1f16: 8c 93 st X, r24 + 1f18: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f1a: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1f28: 00 c0 rjmp .+0 ; 0x1f2a + 1f2a: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f2c: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1f3a: 00 c0 rjmp .+0 ; 0x1f3c + 1f3c: 00 00 nop + 1f3e: 39 c0 rjmp .+114 ; 0x1fb2 + this->setLine(3); + } else if ( pos == 0x1F ) { + 1f40: 8f 31 cpi r24, 0x1F ; 31 + 1f42: d9 f4 brne .+54 ; 0x1f7a + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f44: d8 01 movw r26, r16 + 1f46: 8c 91 ld r24, X + 1f48: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1f4a: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f4c: 8c 91 ld r24, X + 1f4e: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1f50: 8c 93 st X, r24 + 1f52: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f54: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1f62: 00 c0 rjmp .+0 ; 0x1f64 + 1f64: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f66: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1f74: 00 c0 rjmp .+0 ; 0x1f76 + 1f76: 00 00 nop + 1f78: 1c c0 rjmp .+56 ; 0x1fb2 + this->setLine(4); + } else if ( pos == 0x5F ) { + 1f7a: 8f 35 cpi r24, 0x5F ; 95 + 1f7c: d1 f4 brne .+52 ; 0x1fb2 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f7e: d8 01 movw r26, r16 + 1f80: 8c 91 ld r24, X + 1f82: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1f84: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f86: 8c 91 ld r24, X + 1f88: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 1f8a: 8c 93 st X, r24 + 1f8c: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1f8e: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1f9c: 00 c0 rjmp .+0 ; 0x1f9e + 1f9e: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1fa0: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 1fae: 00 c0 rjmp .+0 ; 0x1fb0 + 1fb0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1fb2: d8 01 movw r26, r16 + 1fb4: 8c 91 ld r24, X + 1fb6: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 1fb8: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1fba: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1fd0: 00 c0 rjmp .+0 ; 0x1fd2 + 1fd2: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1fd4: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 1fdc: d8 01 movw r26, r16 + 1fde: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 1ffc: 00 c0 rjmp .+0 ; 0x1ffe + 1ffe: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2000: d8 01 movw r26, r16 + 2002: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1<getAddress(); // read busy-flag and address counter + if (c == '\n') { + 200c: 8a 30 cpi r24, 0x0A ; 10 + 200e: 09 f0 breq .+2 ; 0x2012 + 2010: 79 c0 rjmp .+242 ; 0x2104 + _delay_us(53); + pen::clear(); + } + + void newline(uint8_t pos) { + if ( pos >= 0x50 && pos <= 0x5F ) { + 2012: 89 2f mov r24, r25 + 2014: 80 55 subi r24, 0x50 ; 80 + 2016: 80 31 cpi r24, 0x10 ; 16 + 2018: d0 f4 brcc .+52 ; 0x204e + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 201a: 8c 91 ld r24, X + 201c: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 201e: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2020: 8c 91 ld r24, X + 2022: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 2024: 8c 93 st X, r24 +namespace avrlib { + + struct portd + { + static uint8_t port() { return PORTD; } + static void port(uint8_t v) { PORTD = v; } + 2026: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2028: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 2036: 00 c0 rjmp .+0 ; 0x2038 + 2038: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 203a: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 2048: 00 c0 rjmp .+0 ; 0x204a + 204a: 00 00 nop + 204c: e6 c0 rjmp .+460 ; 0x221a <__stack+0x1b> + return this->setLine(1); + } + if ( pos >= 0x00 && pos <= 0x0F) { + 204e: 90 31 cpi r25, 0x10 ; 16 + 2050: d8 f4 brcc .+54 ; 0x2088 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2052: d8 01 movw r26, r16 + 2054: 8c 91 ld r24, X + 2056: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 2058: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 205a: 8c 91 ld r24, X + 205c: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 205e: 8c 93 st X, r24 + 2060: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2062: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 2070: 00 c0 rjmp .+0 ; 0x2072 + 2072: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2074: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 2082: 00 c0 rjmp .+0 ; 0x2084 + 2084: 00 00 nop + 2086: c9 c0 rjmp .+402 ; 0x221a <__stack+0x1b> + return this->setLine(2); + } + if ( pos >= 0x40 && pos <= 0x4F) { + 2088: 89 2f mov r24, r25 + 208a: 80 54 subi r24, 0x40 ; 64 + 208c: 80 31 cpi r24, 0x10 ; 16 + 208e: d8 f4 brcc .+54 ; 0x20c6 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2090: d8 01 movw r26, r16 + 2092: 8c 91 ld r24, X + 2094: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 2096: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2098: 8c 91 ld r24, X + 209a: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 209c: 8c 93 st X, r24 + 209e: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 20a0: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 20ae: 00 c0 rjmp .+0 ; 0x20b0 + 20b0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 20b2: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 20c0: 00 c0 rjmp .+0 ; 0x20c2 + 20c2: 00 00 nop + 20c4: aa c0 rjmp .+340 ; 0x221a <__stack+0x1b> + return this->setLine(3); + } + if ( pos >= 0x10 && pos <= 0x1F) { + 20c6: 90 51 subi r25, 0x10 ; 16 + 20c8: 90 31 cpi r25, 0x10 ; 16 + 20ca: 08 f0 brcs .+2 ; 0x20ce + 20cc: a6 c0 rjmp .+332 ; 0x221a <__stack+0x1b> + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 20ce: d8 01 movw r26, r16 + 20d0: 8c 91 ld r24, X + 20d2: 8f 7b andi r24, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 20d4: 8c 93 st X, r24 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 20d6: 8c 91 ld r24, X + 20d8: 8f 7d andi r24, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 20da: 8c 93 st X, r24 + 20dc: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 20de: 8c 91 ld r24, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 20ec: 00 c0 rjmp .+0 ; 0x20ee + 20ee: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 20f0: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1< + 20fe: 00 c0 rjmp .+0 ; 0x2100 + 2100: 00 00 nop + 2102: 8b c0 rjmp .+278 ; 0x221a <__stack+0x1b> + void lputc(uint8_t c) { + uint8_t pos = this->getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + 2104: 9f 30 cpi r25, 0x0F ; 15 + 2106: e1 f4 brne .+56 ; 0x2140 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2108: d8 01 movw r26, r16 + 210a: 9c 91 ld r25, X + 210c: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 210e: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2110: 9c 91 ld r25, X + 2112: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 2114: 9c 93 st X, r25 + 2116: 4b b9 out 0x0b, r20 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2118: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 2126: 00 c0 rjmp .+0 ; 0x2128 + 2128: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 212a: d8 01 movw r26, r16 + 212c: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 213a: 00 c0 rjmp .+0 ; 0x213c + 213c: 00 00 nop + 213e: 59 c0 rjmp .+178 ; 0x21f2 + this->setLine(2); + } else if ( pos == 0x4F ) { + 2140: 9f 34 cpi r25, 0x4F ; 79 + 2142: e1 f4 brne .+56 ; 0x217c + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2144: d8 01 movw r26, r16 + 2146: 9c 91 ld r25, X + 2148: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 214a: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 214c: 9c 91 ld r25, X + 214e: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 2150: 9c 93 st X, r25 + 2152: 6b b9 out 0x0b, r22 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2154: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 2162: 00 c0 rjmp .+0 ; 0x2164 + 2164: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2166: d8 01 movw r26, r16 + 2168: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 2176: 00 c0 rjmp .+0 ; 0x2178 + 2178: 00 00 nop + 217a: 3b c0 rjmp .+118 ; 0x21f2 + this->setLine(3); + } else if ( pos == 0x1F ) { + 217c: 9f 31 cpi r25, 0x1F ; 31 + 217e: e1 f4 brne .+56 ; 0x21b8 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2180: d8 01 movw r26, r16 + 2182: 9c 91 ld r25, X + 2184: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 2186: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2188: 9c 91 ld r25, X + 218a: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 218c: 9c 93 st X, r25 + 218e: 8b b8 out 0x0b, r8 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2190: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 219e: 00 c0 rjmp .+0 ; 0x21a0 + 21a0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 21a2: d8 01 movw r26, r16 + 21a4: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 21b2: 00 c0 rjmp .+0 ; 0x21b4 + 21b4: 00 00 nop + 21b6: 1d c0 rjmp .+58 ; 0x21f2 + this->setLine(4); + } else if ( pos == 0x5F ) { + 21b8: 9f 35 cpi r25, 0x5F ; 95 + 21ba: d9 f4 brne .+54 ; 0x21f2 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 21bc: d8 01 movw r26, r16 + 21be: 9c 91 ld r25, X + 21c0: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 21c2: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 21c4: 9c 91 ld r25, X + 21c6: 9f 7d andi r25, 0xDF ; 223 + static void port(uint8_t v) { PORTL = v; } + 21c8: 9c 93 st X, r25 + 21ca: 7b b8 out 0x0b, r7 ; 11 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 21cc: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 21da: 00 c0 rjmp .+0 ; 0x21dc + 21dc: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 21de: d8 01 movw r26, r16 + 21e0: 9c 91 ld r25, X + else + Port::port(Port::port() & ~(1< + 21ee: 00 c0 rjmp .+0 ; 0x21f0 + 21f0: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 21f2: d8 01 movw r26, r16 + 21f4: 9c 91 ld r25, X + 21f6: 9f 7b andi r25, 0xBF ; 191 + static void port(uint8_t v) { PORTL = v; } + 21f8: 9c 93 st X, r25 + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 21fa: 9c 91 ld r25, X + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + 2210: 00 c0 rjmp .+0 ; 0x2212 <__stack+0x13> + 2212: 00 00 nop + +namespace avrlib { + + struct portl + { + static uint8_t port() { return PORTL; } + 2214: 8c 91 ld r24, X + else + Port::port(Port::port() & ~(1<lputs(t); + } + + void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ + register char c; + while ( (c = *s++) ) { + 221a: 81 91 ld r24, Z+ + 221c: 81 11 cpse r24, r1 + 221e: 5a cc rjmp .-1868 ; 0x1ad4 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 2220: bf ef ldi r27, 0xFF ; 255 + 2222: e3 ed ldi r30, 0xD3 ; 211 + 2224: f0 e3 ldi r31, 0x30 ; 48 + 2226: b1 50 subi r27, 0x01 ; 1 + 2228: e0 40 sbci r30, 0x00 ; 0 + 222a: f0 40 sbci r31, 0x00 ; 0 + 222c: e1 f7 brne .-8 ; 0x2226 <__stack+0x27> + 222e: 00 c0 rjmp .+0 ; 0x2230 <__stack+0x31> + 2230: 00 00 nop + 2232: 0c 94 f5 01 jmp 0x3ea ; 0x3ea + +00002236 <_GLOBAL__sub_I_d>: + + +/*ledrotclass rot; +ledgruenclass gruen; +ledgelbclass gelb;*/ +displayclass d; + 2236: 80 e3 ldi r24, 0x30 ; 48 + 2238: 92 e0 ldi r25, 0x02 ; 2 + 223a: 0e 94 a8 00 call 0x150 ; 0x150 <_ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev> + 223e: 08 95 ret + +00002240 <__tablejump_elpm__>: + 2240: 07 90 elpm r0, Z+ + 2242: f6 91 elpm r31, Z + 2244: e0 2d mov r30, r0 + 2246: 19 94 eijmp + +00002248 : + 2248: 0f 93 push r16 + 224a: 1f 93 push r17 + 224c: cf 93 push r28 + 224e: df 93 push r29 + 2250: cd b7 in r28, 0x3d ; 61 + 2252: de b7 in r29, 0x3e ; 62 + 2254: 2e 97 sbiw r28, 0x0e ; 14 + 2256: 0f b6 in r0, 0x3f ; 63 + 2258: f8 94 cli + 225a: de bf out 0x3e, r29 ; 62 + 225c: 0f be out 0x3f, r0 ; 63 + 225e: cd bf out 0x3d, r28 ; 61 + 2260: 0e 89 ldd r16, Y+22 ; 0x16 + 2262: 1f 89 ldd r17, Y+23 ; 0x17 + 2264: 86 e0 ldi r24, 0x06 ; 6 + 2266: 8c 83 std Y+4, r24 ; 0x04 + 2268: 1a 83 std Y+2, r17 ; 0x02 + 226a: 09 83 std Y+1, r16 ; 0x01 + 226c: 8f ef ldi r24, 0xFF ; 255 + 226e: 9f e7 ldi r25, 0x7F ; 127 + 2270: 9e 83 std Y+6, r25 ; 0x06 + 2272: 8d 83 std Y+5, r24 ; 0x05 + 2274: ce 01 movw r24, r28 + 2276: 4a 96 adiw r24, 0x1a ; 26 + 2278: ac 01 movw r20, r24 + 227a: 68 8d ldd r22, Y+24 ; 0x18 + 227c: 79 8d ldd r23, Y+25 ; 0x19 + 227e: ce 01 movw r24, r28 + 2280: 01 96 adiw r24, 0x01 ; 1 + 2282: 0e 94 53 11 call 0x22a6 ; 0x22a6 + 2286: ef 81 ldd r30, Y+7 ; 0x07 + 2288: f8 85 ldd r31, Y+8 ; 0x08 + 228a: e0 0f add r30, r16 + 228c: f1 1f adc r31, r17 + 228e: 10 82 st Z, r1 + 2290: 2e 96 adiw r28, 0x0e ; 14 + 2292: 0f b6 in r0, 0x3f ; 63 + 2294: f8 94 cli + 2296: de bf out 0x3e, r29 ; 62 + 2298: 0f be out 0x3f, r0 ; 63 + 229a: cd bf out 0x3d, r28 ; 61 + 229c: df 91 pop r29 + 229e: cf 91 pop r28 + 22a0: 1f 91 pop r17 + 22a2: 0f 91 pop r16 + 22a4: 08 95 ret + +000022a6 : + 22a6: 2f 92 push r2 + 22a8: 3f 92 push r3 + 22aa: 4f 92 push r4 + 22ac: 5f 92 push r5 + 22ae: 6f 92 push r6 + 22b0: 7f 92 push r7 + 22b2: 8f 92 push r8 + 22b4: 9f 92 push r9 + 22b6: af 92 push r10 + 22b8: bf 92 push r11 + 22ba: cf 92 push r12 + 22bc: df 92 push r13 + 22be: ef 92 push r14 + 22c0: ff 92 push r15 + 22c2: 0f 93 push r16 + 22c4: 1f 93 push r17 + 22c6: cf 93 push r28 + 22c8: df 93 push r29 + 22ca: cd b7 in r28, 0x3d ; 61 + 22cc: de b7 in r29, 0x3e ; 62 + 22ce: 2c 97 sbiw r28, 0x0c ; 12 + 22d0: 0f b6 in r0, 0x3f ; 63 + 22d2: f8 94 cli + 22d4: de bf out 0x3e, r29 ; 62 + 22d6: 0f be out 0x3f, r0 ; 63 + 22d8: cd bf out 0x3d, r28 ; 61 + 22da: 7c 01 movw r14, r24 + 22dc: 6b 01 movw r12, r22 + 22de: 8a 01 movw r16, r20 + 22e0: fc 01 movw r30, r24 + 22e2: 17 82 std Z+7, r1 ; 0x07 + 22e4: 16 82 std Z+6, r1 ; 0x06 + 22e6: 83 81 ldd r24, Z+3 ; 0x03 + 22e8: 81 ff sbrs r24, 1 + 22ea: c6 c1 rjmp .+908 ; 0x2678 + 22ec: 88 24 eor r8, r8 + 22ee: 83 94 inc r8 + 22f0: 91 2c mov r9, r1 + 22f2: 8c 0e add r8, r28 + 22f4: 9d 1e adc r9, r29 + 22f6: f7 01 movw r30, r14 + 22f8: 93 81 ldd r25, Z+3 ; 0x03 + 22fa: f6 01 movw r30, r12 + 22fc: 93 fd sbrc r25, 3 + 22fe: 85 91 lpm r24, Z+ + 2300: 93 ff sbrs r25, 3 + 2302: 81 91 ld r24, Z+ + 2304: 6f 01 movw r12, r30 + 2306: 88 23 and r24, r24 + 2308: 09 f4 brne .+2 ; 0x230c + 230a: b2 c1 rjmp .+868 ; 0x2670 + 230c: 85 32 cpi r24, 0x25 ; 37 + 230e: 39 f4 brne .+14 ; 0x231e + 2310: 93 fd sbrc r25, 3 + 2312: 85 91 lpm r24, Z+ + 2314: 93 ff sbrs r25, 3 + 2316: 81 91 ld r24, Z+ + 2318: 6f 01 movw r12, r30 + 231a: 85 32 cpi r24, 0x25 ; 37 + 231c: 29 f4 brne .+10 ; 0x2328 + 231e: b7 01 movw r22, r14 + 2320: 90 e0 ldi r25, 0x00 ; 0 + 2322: 0e 94 6e 13 call 0x26dc ; 0x26dc + 2326: e7 cf rjmp .-50 ; 0x22f6 + 2328: 51 2c mov r5, r1 + 232a: 31 2c mov r3, r1 + 232c: 20 e0 ldi r18, 0x00 ; 0 + 232e: 20 32 cpi r18, 0x20 ; 32 + 2330: a8 f4 brcc .+42 ; 0x235c + 2332: 8b 32 cpi r24, 0x2B ; 43 + 2334: 61 f0 breq .+24 ; 0x234e + 2336: 28 f4 brcc .+10 ; 0x2342 + 2338: 80 32 cpi r24, 0x20 ; 32 + 233a: 51 f0 breq .+20 ; 0x2350 + 233c: 83 32 cpi r24, 0x23 ; 35 + 233e: 71 f4 brne .+28 ; 0x235c + 2340: 0b c0 rjmp .+22 ; 0x2358 + 2342: 8d 32 cpi r24, 0x2D ; 45 + 2344: 39 f0 breq .+14 ; 0x2354 + 2346: 80 33 cpi r24, 0x30 ; 48 + 2348: 49 f4 brne .+18 ; 0x235c + 234a: 21 60 ori r18, 0x01 ; 1 + 234c: 28 c0 rjmp .+80 ; 0x239e + 234e: 22 60 ori r18, 0x02 ; 2 + 2350: 24 60 ori r18, 0x04 ; 4 + 2352: 25 c0 rjmp .+74 ; 0x239e + 2354: 28 60 ori r18, 0x08 ; 8 + 2356: 23 c0 rjmp .+70 ; 0x239e + 2358: 20 61 ori r18, 0x10 ; 16 + 235a: 21 c0 rjmp .+66 ; 0x239e + 235c: 27 fd sbrc r18, 7 + 235e: 27 c0 rjmp .+78 ; 0x23ae + 2360: 38 2f mov r19, r24 + 2362: 30 53 subi r19, 0x30 ; 48 + 2364: 3a 30 cpi r19, 0x0A ; 10 + 2366: 78 f4 brcc .+30 ; 0x2386 + 2368: 26 ff sbrs r18, 6 + 236a: 06 c0 rjmp .+12 ; 0x2378 + 236c: fa e0 ldi r31, 0x0A ; 10 + 236e: 5f 9e mul r5, r31 + 2370: 30 0d add r19, r0 + 2372: 11 24 eor r1, r1 + 2374: 53 2e mov r5, r19 + 2376: 13 c0 rjmp .+38 ; 0x239e + 2378: 8a e0 ldi r24, 0x0A ; 10 + 237a: 38 9e mul r3, r24 + 237c: 30 0d add r19, r0 + 237e: 11 24 eor r1, r1 + 2380: 33 2e mov r3, r19 + 2382: 20 62 ori r18, 0x20 ; 32 + 2384: 0c c0 rjmp .+24 ; 0x239e + 2386: 8e 32 cpi r24, 0x2E ; 46 + 2388: 21 f4 brne .+8 ; 0x2392 + 238a: 26 fd sbrc r18, 6 + 238c: 71 c1 rjmp .+738 ; 0x2670 + 238e: 20 64 ori r18, 0x40 ; 64 + 2390: 06 c0 rjmp .+12 ; 0x239e + 2392: 8c 36 cpi r24, 0x6C ; 108 + 2394: 11 f4 brne .+4 ; 0x239a + 2396: 20 68 ori r18, 0x80 ; 128 + 2398: 02 c0 rjmp .+4 ; 0x239e + 239a: 88 36 cpi r24, 0x68 ; 104 + 239c: 41 f4 brne .+16 ; 0x23ae + 239e: f6 01 movw r30, r12 + 23a0: 93 fd sbrc r25, 3 + 23a2: 85 91 lpm r24, Z+ + 23a4: 93 ff sbrs r25, 3 + 23a6: 81 91 ld r24, Z+ + 23a8: 6f 01 movw r12, r30 + 23aa: 81 11 cpse r24, r1 + 23ac: c0 cf rjmp .-128 ; 0x232e + 23ae: 98 2f mov r25, r24 + 23b0: 95 54 subi r25, 0x45 ; 69 + 23b2: 93 30 cpi r25, 0x03 ; 3 + 23b4: 18 f0 brcs .+6 ; 0x23bc + 23b6: 90 52 subi r25, 0x20 ; 32 + 23b8: 93 30 cpi r25, 0x03 ; 3 + 23ba: 28 f4 brcc .+10 ; 0x23c6 + 23bc: 0c 5f subi r16, 0xFC ; 252 + 23be: 1f 4f sbci r17, 0xFF ; 255 + 23c0: ff e3 ldi r31, 0x3F ; 63 + 23c2: f9 83 std Y+1, r31 ; 0x01 + 23c4: 0d c0 rjmp .+26 ; 0x23e0 + 23c6: 83 36 cpi r24, 0x63 ; 99 + 23c8: 31 f0 breq .+12 ; 0x23d6 + 23ca: 83 37 cpi r24, 0x73 ; 115 + 23cc: 71 f0 breq .+28 ; 0x23ea + 23ce: 83 35 cpi r24, 0x53 ; 83 + 23d0: 09 f0 breq .+2 ; 0x23d4 + 23d2: 5e c0 rjmp .+188 ; 0x2490 + 23d4: 23 c0 rjmp .+70 ; 0x241c + 23d6: f8 01 movw r30, r16 + 23d8: 80 81 ld r24, Z + 23da: 89 83 std Y+1, r24 ; 0x01 + 23dc: 0e 5f subi r16, 0xFE ; 254 + 23de: 1f 4f sbci r17, 0xFF ; 255 + 23e0: 44 24 eor r4, r4 + 23e2: 43 94 inc r4 + 23e4: 51 2c mov r5, r1 + 23e6: 54 01 movw r10, r8 + 23e8: 15 c0 rjmp .+42 ; 0x2414 + 23ea: 38 01 movw r6, r16 + 23ec: f2 e0 ldi r31, 0x02 ; 2 + 23ee: 6f 0e add r6, r31 + 23f0: 71 1c adc r7, r1 + 23f2: f8 01 movw r30, r16 + 23f4: a0 80 ld r10, Z + 23f6: b1 80 ldd r11, Z+1 ; 0x01 + 23f8: 26 ff sbrs r18, 6 + 23fa: 03 c0 rjmp .+6 ; 0x2402 + 23fc: 65 2d mov r22, r5 + 23fe: 70 e0 ldi r23, 0x00 ; 0 + 2400: 02 c0 rjmp .+4 ; 0x2406 + 2402: 6f ef ldi r22, 0xFF ; 255 + 2404: 7f ef ldi r23, 0xFF ; 255 + 2406: c5 01 movw r24, r10 + 2408: 2c 87 std Y+12, r18 ; 0x0c + 240a: 0e 94 63 13 call 0x26c6 ; 0x26c6 + 240e: 2c 01 movw r4, r24 + 2410: 83 01 movw r16, r6 + 2412: 2c 85 ldd r18, Y+12 ; 0x0c + 2414: 6f e7 ldi r22, 0x7F ; 127 + 2416: 26 2e mov r2, r22 + 2418: 22 22 and r2, r18 + 241a: 18 c0 rjmp .+48 ; 0x244c + 241c: 38 01 movw r6, r16 + 241e: f2 e0 ldi r31, 0x02 ; 2 + 2420: 6f 0e add r6, r31 + 2422: 71 1c adc r7, r1 + 2424: f8 01 movw r30, r16 + 2426: a0 80 ld r10, Z + 2428: b1 80 ldd r11, Z+1 ; 0x01 + 242a: 26 ff sbrs r18, 6 + 242c: 03 c0 rjmp .+6 ; 0x2434 + 242e: 65 2d mov r22, r5 + 2430: 70 e0 ldi r23, 0x00 ; 0 + 2432: 02 c0 rjmp .+4 ; 0x2438 + 2434: 6f ef ldi r22, 0xFF ; 255 + 2436: 7f ef ldi r23, 0xFF ; 255 + 2438: c5 01 movw r24, r10 + 243a: 2c 87 std Y+12, r18 ; 0x0c + 243c: 0e 94 58 13 call 0x26b0 ; 0x26b0 + 2440: 2c 01 movw r4, r24 + 2442: 2c 85 ldd r18, Y+12 ; 0x0c + 2444: 50 e8 ldi r21, 0x80 ; 128 + 2446: 25 2e mov r2, r21 + 2448: 22 2a or r2, r18 + 244a: 83 01 movw r16, r6 + 244c: 23 fc sbrc r2, 3 + 244e: 1c c0 rjmp .+56 ; 0x2488 + 2450: 06 c0 rjmp .+12 ; 0x245e + 2452: b7 01 movw r22, r14 + 2454: 80 e2 ldi r24, 0x20 ; 32 + 2456: 90 e0 ldi r25, 0x00 ; 0 + 2458: 0e 94 6e 13 call 0x26dc ; 0x26dc + 245c: 3a 94 dec r3 + 245e: 83 2d mov r24, r3 + 2460: 90 e0 ldi r25, 0x00 ; 0 + 2462: 48 16 cp r4, r24 + 2464: 59 06 cpc r5, r25 + 2466: a8 f3 brcs .-22 ; 0x2452 + 2468: 0f c0 rjmp .+30 ; 0x2488 + 246a: f5 01 movw r30, r10 + 246c: 27 fc sbrc r2, 7 + 246e: 85 91 lpm r24, Z+ + 2470: 27 fe sbrs r2, 7 + 2472: 81 91 ld r24, Z+ + 2474: 5f 01 movw r10, r30 + 2476: b7 01 movw r22, r14 + 2478: 90 e0 ldi r25, 0x00 ; 0 + 247a: 0e 94 6e 13 call 0x26dc ; 0x26dc + 247e: 31 10 cpse r3, r1 + 2480: 3a 94 dec r3 + 2482: f1 e0 ldi r31, 0x01 ; 1 + 2484: 4f 1a sub r4, r31 + 2486: 51 08 sbc r5, r1 + 2488: 41 14 cp r4, r1 + 248a: 51 04 cpc r5, r1 + 248c: 71 f7 brne .-36 ; 0x246a + 248e: ed c0 rjmp .+474 ; 0x266a + 2490: 84 36 cpi r24, 0x64 ; 100 + 2492: 11 f0 breq .+4 ; 0x2498 + 2494: 89 36 cpi r24, 0x69 ; 105 + 2496: 41 f5 brne .+80 ; 0x24e8 + 2498: f8 01 movw r30, r16 + 249a: 27 ff sbrs r18, 7 + 249c: 07 c0 rjmp .+14 ; 0x24ac + 249e: 60 81 ld r22, Z + 24a0: 71 81 ldd r23, Z+1 ; 0x01 + 24a2: 82 81 ldd r24, Z+2 ; 0x02 + 24a4: 93 81 ldd r25, Z+3 ; 0x03 + 24a6: 0c 5f subi r16, 0xFC ; 252 + 24a8: 1f 4f sbci r17, 0xFF ; 255 + 24aa: 08 c0 rjmp .+16 ; 0x24bc + 24ac: 60 81 ld r22, Z + 24ae: 71 81 ldd r23, Z+1 ; 0x01 + 24b0: 88 27 eor r24, r24 + 24b2: 77 fd sbrc r23, 7 + 24b4: 80 95 com r24 + 24b6: 98 2f mov r25, r24 + 24b8: 0e 5f subi r16, 0xFE ; 254 + 24ba: 1f 4f sbci r17, 0xFF ; 255 + 24bc: 4f e6 ldi r20, 0x6F ; 111 + 24be: b4 2e mov r11, r20 + 24c0: b2 22 and r11, r18 + 24c2: 97 ff sbrs r25, 7 + 24c4: 09 c0 rjmp .+18 ; 0x24d8 + 24c6: 90 95 com r25 + 24c8: 80 95 com r24 + 24ca: 70 95 com r23 + 24cc: 61 95 neg r22 + 24ce: 7f 4f sbci r23, 0xFF ; 255 + 24d0: 8f 4f sbci r24, 0xFF ; 255 + 24d2: 9f 4f sbci r25, 0xFF ; 255 + 24d4: f0 e8 ldi r31, 0x80 ; 128 + 24d6: bf 2a or r11, r31 + 24d8: 2a e0 ldi r18, 0x0A ; 10 + 24da: 30 e0 ldi r19, 0x00 ; 0 + 24dc: a4 01 movw r20, r8 + 24de: 0e 94 9a 13 call 0x2734 ; 0x2734 <__ultoa_invert> + 24e2: a8 2e mov r10, r24 + 24e4: a8 18 sub r10, r8 + 24e6: 43 c0 rjmp .+134 ; 0x256e + 24e8: 85 37 cpi r24, 0x75 ; 117 + 24ea: 31 f4 brne .+12 ; 0x24f8 + 24ec: 3f ee ldi r19, 0xEF ; 239 + 24ee: b3 2e mov r11, r19 + 24f0: b2 22 and r11, r18 + 24f2: 2a e0 ldi r18, 0x0A ; 10 + 24f4: 30 e0 ldi r19, 0x00 ; 0 + 24f6: 24 c0 rjmp .+72 ; 0x2540 + 24f8: 99 ef ldi r25, 0xF9 ; 249 + 24fa: b9 2e mov r11, r25 + 24fc: b2 22 and r11, r18 + 24fe: 8f 36 cpi r24, 0x6F ; 111 + 2500: b9 f0 breq .+46 ; 0x2530 + 2502: 20 f4 brcc .+8 ; 0x250c + 2504: 88 35 cpi r24, 0x58 ; 88 + 2506: 09 f0 breq .+2 ; 0x250a + 2508: b3 c0 rjmp .+358 ; 0x2670 + 250a: 0d c0 rjmp .+26 ; 0x2526 + 250c: 80 37 cpi r24, 0x70 ; 112 + 250e: 21 f0 breq .+8 ; 0x2518 + 2510: 88 37 cpi r24, 0x78 ; 120 + 2512: 09 f0 breq .+2 ; 0x2516 + 2514: ad c0 rjmp .+346 ; 0x2670 + 2516: 02 c0 rjmp .+4 ; 0x251c + 2518: 20 e1 ldi r18, 0x10 ; 16 + 251a: b2 2a or r11, r18 + 251c: b4 fe sbrs r11, 4 + 251e: 0b c0 rjmp .+22 ; 0x2536 + 2520: 84 e0 ldi r24, 0x04 ; 4 + 2522: b8 2a or r11, r24 + 2524: 08 c0 rjmp .+16 ; 0x2536 + 2526: 24 ff sbrs r18, 4 + 2528: 09 c0 rjmp .+18 ; 0x253c + 252a: e6 e0 ldi r30, 0x06 ; 6 + 252c: be 2a or r11, r30 + 252e: 06 c0 rjmp .+12 ; 0x253c + 2530: 28 e0 ldi r18, 0x08 ; 8 + 2532: 30 e0 ldi r19, 0x00 ; 0 + 2534: 05 c0 rjmp .+10 ; 0x2540 + 2536: 20 e1 ldi r18, 0x10 ; 16 + 2538: 30 e0 ldi r19, 0x00 ; 0 + 253a: 02 c0 rjmp .+4 ; 0x2540 + 253c: 20 e1 ldi r18, 0x10 ; 16 + 253e: 32 e0 ldi r19, 0x02 ; 2 + 2540: f8 01 movw r30, r16 + 2542: b7 fe sbrs r11, 7 + 2544: 07 c0 rjmp .+14 ; 0x2554 + 2546: 60 81 ld r22, Z + 2548: 71 81 ldd r23, Z+1 ; 0x01 + 254a: 82 81 ldd r24, Z+2 ; 0x02 + 254c: 93 81 ldd r25, Z+3 ; 0x03 + 254e: 0c 5f subi r16, 0xFC ; 252 + 2550: 1f 4f sbci r17, 0xFF ; 255 + 2552: 06 c0 rjmp .+12 ; 0x2560 + 2554: 60 81 ld r22, Z + 2556: 71 81 ldd r23, Z+1 ; 0x01 + 2558: 80 e0 ldi r24, 0x00 ; 0 + 255a: 90 e0 ldi r25, 0x00 ; 0 + 255c: 0e 5f subi r16, 0xFE ; 254 + 255e: 1f 4f sbci r17, 0xFF ; 255 + 2560: a4 01 movw r20, r8 + 2562: 0e 94 9a 13 call 0x2734 ; 0x2734 <__ultoa_invert> + 2566: a8 2e mov r10, r24 + 2568: a8 18 sub r10, r8 + 256a: ff e7 ldi r31, 0x7F ; 127 + 256c: bf 22 and r11, r31 + 256e: b6 fe sbrs r11, 6 + 2570: 0b c0 rjmp .+22 ; 0x2588 + 2572: 2b 2d mov r18, r11 + 2574: 2e 7f andi r18, 0xFE ; 254 + 2576: a5 14 cp r10, r5 + 2578: 50 f4 brcc .+20 ; 0x258e + 257a: b4 fe sbrs r11, 4 + 257c: 0a c0 rjmp .+20 ; 0x2592 + 257e: b2 fc sbrc r11, 2 + 2580: 08 c0 rjmp .+16 ; 0x2592 + 2582: 2b 2d mov r18, r11 + 2584: 2e 7e andi r18, 0xEE ; 238 + 2586: 05 c0 rjmp .+10 ; 0x2592 + 2588: 7a 2c mov r7, r10 + 258a: 2b 2d mov r18, r11 + 258c: 03 c0 rjmp .+6 ; 0x2594 + 258e: 7a 2c mov r7, r10 + 2590: 01 c0 rjmp .+2 ; 0x2594 + 2592: 75 2c mov r7, r5 + 2594: 24 ff sbrs r18, 4 + 2596: 0d c0 rjmp .+26 ; 0x25b2 + 2598: fe 01 movw r30, r28 + 259a: ea 0d add r30, r10 + 259c: f1 1d adc r31, r1 + 259e: 80 81 ld r24, Z + 25a0: 80 33 cpi r24, 0x30 ; 48 + 25a2: 11 f4 brne .+4 ; 0x25a8 + 25a4: 29 7e andi r18, 0xE9 ; 233 + 25a6: 09 c0 rjmp .+18 ; 0x25ba + 25a8: 22 ff sbrs r18, 2 + 25aa: 06 c0 rjmp .+12 ; 0x25b8 + 25ac: 73 94 inc r7 + 25ae: 73 94 inc r7 + 25b0: 04 c0 rjmp .+8 ; 0x25ba + 25b2: 82 2f mov r24, r18 + 25b4: 86 78 andi r24, 0x86 ; 134 + 25b6: 09 f0 breq .+2 ; 0x25ba + 25b8: 73 94 inc r7 + 25ba: 23 fd sbrc r18, 3 + 25bc: 14 c0 rjmp .+40 ; 0x25e6 + 25be: 20 ff sbrs r18, 0 + 25c0: 0f c0 rjmp .+30 ; 0x25e0 + 25c2: 5a 2c mov r5, r10 + 25c4: 73 14 cp r7, r3 + 25c6: 60 f4 brcc .+24 ; 0x25e0 + 25c8: 53 0c add r5, r3 + 25ca: 57 18 sub r5, r7 + 25cc: 73 2c mov r7, r3 + 25ce: 08 c0 rjmp .+16 ; 0x25e0 + 25d0: b7 01 movw r22, r14 + 25d2: 80 e2 ldi r24, 0x20 ; 32 + 25d4: 90 e0 ldi r25, 0x00 ; 0 + 25d6: 2c 87 std Y+12, r18 ; 0x0c + 25d8: 0e 94 6e 13 call 0x26dc ; 0x26dc + 25dc: 73 94 inc r7 + 25de: 2c 85 ldd r18, Y+12 ; 0x0c + 25e0: 73 14 cp r7, r3 + 25e2: b0 f3 brcs .-20 ; 0x25d0 + 25e4: 04 c0 rjmp .+8 ; 0x25ee + 25e6: 73 14 cp r7, r3 + 25e8: 10 f4 brcc .+4 ; 0x25ee + 25ea: 37 18 sub r3, r7 + 25ec: 01 c0 rjmp .+2 ; 0x25f0 + 25ee: 31 2c mov r3, r1 + 25f0: 24 ff sbrs r18, 4 + 25f2: 12 c0 rjmp .+36 ; 0x2618 + 25f4: b7 01 movw r22, r14 + 25f6: 80 e3 ldi r24, 0x30 ; 48 + 25f8: 90 e0 ldi r25, 0x00 ; 0 + 25fa: 2c 87 std Y+12, r18 ; 0x0c + 25fc: 0e 94 6e 13 call 0x26dc ; 0x26dc + 2600: 2c 85 ldd r18, Y+12 ; 0x0c + 2602: 22 ff sbrs r18, 2 + 2604: 1e c0 rjmp .+60 ; 0x2642 + 2606: 21 ff sbrs r18, 1 + 2608: 03 c0 rjmp .+6 ; 0x2610 + 260a: 88 e5 ldi r24, 0x58 ; 88 + 260c: 90 e0 ldi r25, 0x00 ; 0 + 260e: 02 c0 rjmp .+4 ; 0x2614 + 2610: 88 e7 ldi r24, 0x78 ; 120 + 2612: 90 e0 ldi r25, 0x00 ; 0 + 2614: b7 01 movw r22, r14 + 2616: 0c c0 rjmp .+24 ; 0x2630 + 2618: 82 2f mov r24, r18 + 261a: 86 78 andi r24, 0x86 ; 134 + 261c: 91 f0 breq .+36 ; 0x2642 + 261e: 21 fd sbrc r18, 1 + 2620: 02 c0 rjmp .+4 ; 0x2626 + 2622: 80 e2 ldi r24, 0x20 ; 32 + 2624: 01 c0 rjmp .+2 ; 0x2628 + 2626: 8b e2 ldi r24, 0x2B ; 43 + 2628: 27 fd sbrc r18, 7 + 262a: 8d e2 ldi r24, 0x2D ; 45 + 262c: b7 01 movw r22, r14 + 262e: 90 e0 ldi r25, 0x00 ; 0 + 2630: 0e 94 6e 13 call 0x26dc ; 0x26dc + 2634: 06 c0 rjmp .+12 ; 0x2642 + 2636: b7 01 movw r22, r14 + 2638: 80 e3 ldi r24, 0x30 ; 48 + 263a: 90 e0 ldi r25, 0x00 ; 0 + 263c: 0e 94 6e 13 call 0x26dc ; 0x26dc + 2640: 5a 94 dec r5 + 2642: a5 14 cp r10, r5 + 2644: c0 f3 brcs .-16 ; 0x2636 + 2646: aa 94 dec r10 + 2648: f4 01 movw r30, r8 + 264a: ea 0d add r30, r10 + 264c: f1 1d adc r31, r1 + 264e: b7 01 movw r22, r14 + 2650: 80 81 ld r24, Z + 2652: 90 e0 ldi r25, 0x00 ; 0 + 2654: 0e 94 6e 13 call 0x26dc ; 0x26dc + 2658: a1 10 cpse r10, r1 + 265a: f5 cf rjmp .-22 ; 0x2646 + 265c: 06 c0 rjmp .+12 ; 0x266a + 265e: b7 01 movw r22, r14 + 2660: 80 e2 ldi r24, 0x20 ; 32 + 2662: 90 e0 ldi r25, 0x00 ; 0 + 2664: 0e 94 6e 13 call 0x26dc ; 0x26dc + 2668: 3a 94 dec r3 + 266a: 31 10 cpse r3, r1 + 266c: f8 cf rjmp .-16 ; 0x265e + 266e: 43 ce rjmp .-890 ; 0x22f6 + 2670: f7 01 movw r30, r14 + 2672: 26 81 ldd r18, Z+6 ; 0x06 + 2674: 37 81 ldd r19, Z+7 ; 0x07 + 2676: 02 c0 rjmp .+4 ; 0x267c + 2678: 2f ef ldi r18, 0xFF ; 255 + 267a: 3f ef ldi r19, 0xFF ; 255 + 267c: c9 01 movw r24, r18 + 267e: 2c 96 adiw r28, 0x0c ; 12 + 2680: 0f b6 in r0, 0x3f ; 63 + 2682: f8 94 cli + 2684: de bf out 0x3e, r29 ; 62 + 2686: 0f be out 0x3f, r0 ; 63 + 2688: cd bf out 0x3d, r28 ; 61 + 268a: df 91 pop r29 + 268c: cf 91 pop r28 + 268e: 1f 91 pop r17 + 2690: 0f 91 pop r16 + 2692: ff 90 pop r15 + 2694: ef 90 pop r14 + 2696: df 90 pop r13 + 2698: cf 90 pop r12 + 269a: bf 90 pop r11 + 269c: af 90 pop r10 + 269e: 9f 90 pop r9 + 26a0: 8f 90 pop r8 + 26a2: 7f 90 pop r7 + 26a4: 6f 90 pop r6 + 26a6: 5f 90 pop r5 + 26a8: 4f 90 pop r4 + 26aa: 3f 90 pop r3 + 26ac: 2f 90 pop r2 + 26ae: 08 95 ret + +000026b0 : + 26b0: fc 01 movw r30, r24 + 26b2: 05 90 lpm r0, Z+ + 26b4: 61 50 subi r22, 0x01 ; 1 + 26b6: 70 40 sbci r23, 0x00 ; 0 + 26b8: 01 10 cpse r0, r1 + 26ba: d8 f7 brcc .-10 ; 0x26b2 + 26bc: 80 95 com r24 + 26be: 90 95 com r25 + 26c0: 8e 0f add r24, r30 + 26c2: 9f 1f adc r25, r31 + 26c4: 08 95 ret + +000026c6 : + 26c6: fc 01 movw r30, r24 + 26c8: 61 50 subi r22, 0x01 ; 1 + 26ca: 70 40 sbci r23, 0x00 ; 0 + 26cc: 01 90 ld r0, Z+ + 26ce: 01 10 cpse r0, r1 + 26d0: d8 f7 brcc .-10 ; 0x26c8 + 26d2: 80 95 com r24 + 26d4: 90 95 com r25 + 26d6: 8e 0f add r24, r30 + 26d8: 9f 1f adc r25, r31 + 26da: 08 95 ret + +000026dc : + 26dc: 0f 93 push r16 + 26de: 1f 93 push r17 + 26e0: cf 93 push r28 + 26e2: df 93 push r29 + 26e4: 8c 01 movw r16, r24 + 26e6: eb 01 movw r28, r22 + 26e8: 8b 81 ldd r24, Y+3 ; 0x03 + 26ea: 81 fd sbrc r24, 1 + 26ec: 03 c0 rjmp .+6 ; 0x26f4 + 26ee: 0f ef ldi r16, 0xFF ; 255 + 26f0: 1f ef ldi r17, 0xFF ; 255 + 26f2: 1a c0 rjmp .+52 ; 0x2728 + 26f4: 82 ff sbrs r24, 2 + 26f6: 0d c0 rjmp .+26 ; 0x2712 + 26f8: 2e 81 ldd r18, Y+6 ; 0x06 + 26fa: 3f 81 ldd r19, Y+7 ; 0x07 + 26fc: 8c 81 ldd r24, Y+4 ; 0x04 + 26fe: 9d 81 ldd r25, Y+5 ; 0x05 + 2700: 28 17 cp r18, r24 + 2702: 39 07 cpc r19, r25 + 2704: 64 f4 brge .+24 ; 0x271e + 2706: e8 81 ld r30, Y + 2708: f9 81 ldd r31, Y+1 ; 0x01 + 270a: 01 93 st Z+, r16 + 270c: f9 83 std Y+1, r31 ; 0x01 + 270e: e8 83 st Y, r30 + 2710: 06 c0 rjmp .+12 ; 0x271e + 2712: e8 85 ldd r30, Y+8 ; 0x08 + 2714: f9 85 ldd r31, Y+9 ; 0x09 + 2716: 80 2f mov r24, r16 + 2718: 19 95 eicall + 271a: 89 2b or r24, r25 + 271c: 41 f7 brne .-48 ; 0x26ee + 271e: 8e 81 ldd r24, Y+6 ; 0x06 + 2720: 9f 81 ldd r25, Y+7 ; 0x07 + 2722: 01 96 adiw r24, 0x01 ; 1 + 2724: 9f 83 std Y+7, r25 ; 0x07 + 2726: 8e 83 std Y+6, r24 ; 0x06 + 2728: c8 01 movw r24, r16 + 272a: df 91 pop r29 + 272c: cf 91 pop r28 + 272e: 1f 91 pop r17 + 2730: 0f 91 pop r16 + 2732: 08 95 ret + +00002734 <__ultoa_invert>: + 2734: fa 01 movw r30, r20 + 2736: aa 27 eor r26, r26 + 2738: 28 30 cpi r18, 0x08 ; 8 + 273a: 51 f1 breq .+84 ; 0x2790 <__ultoa_invert+0x5c> + 273c: 20 31 cpi r18, 0x10 ; 16 + 273e: 81 f1 breq .+96 ; 0x27a0 <__ultoa_invert+0x6c> + 2740: e8 94 clt + 2742: 6f 93 push r22 + 2744: 6e 7f andi r22, 0xFE ; 254 + 2746: 6e 5f subi r22, 0xFE ; 254 + 2748: 7f 4f sbci r23, 0xFF ; 255 + 274a: 8f 4f sbci r24, 0xFF ; 255 + 274c: 9f 4f sbci r25, 0xFF ; 255 + 274e: af 4f sbci r26, 0xFF ; 255 + 2750: b1 e0 ldi r27, 0x01 ; 1 + 2752: 3e d0 rcall .+124 ; 0x27d0 <__ultoa_invert+0x9c> + 2754: b4 e0 ldi r27, 0x04 ; 4 + 2756: 3c d0 rcall .+120 ; 0x27d0 <__ultoa_invert+0x9c> + 2758: 67 0f add r22, r23 + 275a: 78 1f adc r23, r24 + 275c: 89 1f adc r24, r25 + 275e: 9a 1f adc r25, r26 + 2760: a1 1d adc r26, r1 + 2762: 68 0f add r22, r24 + 2764: 79 1f adc r23, r25 + 2766: 8a 1f adc r24, r26 + 2768: 91 1d adc r25, r1 + 276a: a1 1d adc r26, r1 + 276c: 6a 0f add r22, r26 + 276e: 71 1d adc r23, r1 + 2770: 81 1d adc r24, r1 + 2772: 91 1d adc r25, r1 + 2774: a1 1d adc r26, r1 + 2776: 20 d0 rcall .+64 ; 0x27b8 <__ultoa_invert+0x84> + 2778: 09 f4 brne .+2 ; 0x277c <__ultoa_invert+0x48> + 277a: 68 94 set + 277c: 3f 91 pop r19 + 277e: 2a e0 ldi r18, 0x0A ; 10 + 2780: 26 9f mul r18, r22 + 2782: 11 24 eor r1, r1 + 2784: 30 19 sub r19, r0 + 2786: 30 5d subi r19, 0xD0 ; 208 + 2788: 31 93 st Z+, r19 + 278a: de f6 brtc .-74 ; 0x2742 <__ultoa_invert+0xe> + 278c: cf 01 movw r24, r30 + 278e: 08 95 ret + 2790: 46 2f mov r20, r22 + 2792: 47 70 andi r20, 0x07 ; 7 + 2794: 40 5d subi r20, 0xD0 ; 208 + 2796: 41 93 st Z+, r20 + 2798: b3 e0 ldi r27, 0x03 ; 3 + 279a: 0f d0 rcall .+30 ; 0x27ba <__ultoa_invert+0x86> + 279c: c9 f7 brne .-14 ; 0x2790 <__ultoa_invert+0x5c> + 279e: f6 cf rjmp .-20 ; 0x278c <__ultoa_invert+0x58> + 27a0: 46 2f mov r20, r22 + 27a2: 4f 70 andi r20, 0x0F ; 15 + 27a4: 40 5d subi r20, 0xD0 ; 208 + 27a6: 4a 33 cpi r20, 0x3A ; 58 + 27a8: 18 f0 brcs .+6 ; 0x27b0 <__ultoa_invert+0x7c> + 27aa: 49 5d subi r20, 0xD9 ; 217 + 27ac: 31 fd sbrc r19, 1 + 27ae: 40 52 subi r20, 0x20 ; 32 + 27b0: 41 93 st Z+, r20 + 27b2: 02 d0 rcall .+4 ; 0x27b8 <__ultoa_invert+0x84> + 27b4: a9 f7 brne .-22 ; 0x27a0 <__ultoa_invert+0x6c> + 27b6: ea cf rjmp .-44 ; 0x278c <__ultoa_invert+0x58> + 27b8: b4 e0 ldi r27, 0x04 ; 4 + 27ba: a6 95 lsr r26 + 27bc: 97 95 ror r25 + 27be: 87 95 ror r24 + 27c0: 77 95 ror r23 + 27c2: 67 95 ror r22 + 27c4: ba 95 dec r27 + 27c6: c9 f7 brne .-14 ; 0x27ba <__ultoa_invert+0x86> + 27c8: 00 97 sbiw r24, 0x00 ; 0 + 27ca: 61 05 cpc r22, r1 + 27cc: 71 05 cpc r23, r1 + 27ce: 08 95 ret + 27d0: 9b 01 movw r18, r22 + 27d2: ac 01 movw r20, r24 + 27d4: 0a 2e mov r0, r26 + 27d6: 06 94 lsr r0 + 27d8: 57 95 ror r21 + 27da: 47 95 ror r20 + 27dc: 37 95 ror r19 + 27de: 27 95 ror r18 + 27e0: ba 95 dec r27 + 27e2: c9 f7 brne .-14 ; 0x27d6 <__ultoa_invert+0xa2> + 27e4: 62 0f add r22, r18 + 27e6: 73 1f adc r23, r19 + 27e8: 84 1f adc r24, r20 + 27ea: 95 1f adc r25, r21 + 27ec: a0 1d adc r26, r0 + 27ee: 08 95 ret + +000027f0 <_exit>: + 27f0: f8 94 cli + +000027f2 <__stop_program>: + 27f2: ff cf rjmp .-2 ; 0x27f2 <__stop_program> diff --git a/V2/Programm/Programm/Debug/Programm.map b/V2/Programm/Programm/Debug/Programm.map index 549223e..f726152 100644 --- a/V2/Programm/Programm/Debug/Programm.map +++ b/V2/Programm/Programm/Debug/Programm.map @@ -2,18 +2,41 @@ Archive member included because of file (symbol) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o (exit) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_copy_data.o) + Programm.o (__do_copy_data) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_clear_bss.o) Programm.o (__do_clear_bss) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_ctors.o) Programm.o (__do_global_ctors) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_tablejump_elpm.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_ctors.o) (__tablejump_elpm__) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + Programm.o (sprintf) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) (vfprintf) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen_P.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) (strnlen_P) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) (strnlen) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) (fputc) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(ultoa_invert.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) (__ultoa_invert) Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o .group 0x00000000 0x8 Programm.o + .group 0x00000000 0x8 Programm.o + .group 0x00000000 0x8 Programm.o + .group 0x00000000 0x8 Programm.o .text 0x00000000 0x0 Programm.o + .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE14setInstructionEh + 0x00000000 0x2c Programm.o + .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE5writeEbh + 0x00000000 0x40 Programm.o + .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EE7newlineEh + 0x00000000 0x102 Programm.o .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) .text.libgcc.mul @@ -27,6 +50,19 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) .text.libgcc.fmul 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_copy_data.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_clear_bss.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_clear_bss.o) .text.libgcc.mul @@ -65,6 +101,18 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_tablejump_elpm.o) .text.libgcc.fmul 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_tablejump_elpm.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen_P.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen_P.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(ultoa_invert.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(ultoa_invert.o) Memory Configuration @@ -182,7 +230,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0x508 +.text 0x00000000 0x27f4 *(.vectors) .vectors 0x00000000 0xe4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o 0x00000000 __vector_default @@ -221,98 +269,118 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.init3) *(.init3) *(.init4) - .init4 0x000000fa 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_clear_bss.o) - 0x000000fa __do_clear_bss + .init4 0x000000fa 0x1a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_copy_data.o) + 0x000000fa __do_copy_data + .init4 0x00000114 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_clear_bss.o) + 0x00000114 __do_clear_bss *(.init4) *(.init5) *(.init5) *(.init6) - .init6 0x0000010a 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_ctors.o) - 0x0000010a __do_global_ctors + .init6 0x00000124 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_ctors.o) + 0x00000124 __do_global_ctors *(.init6) *(.init7) *(.init7) *(.init8) *(.init8) *(.init9) - .init9 0x0000012a 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o + .init9 0x00000144 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o *(.init9) *(.text) - .text 0x00000132 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o - 0x00000132 __vector_38 - 0x00000132 __vector_22 - 0x00000132 __vector_28 - 0x00000132 __vector_1 - 0x00000132 __vector_32 - 0x00000132 __vector_34 - 0x00000132 __vector_24 - 0x00000132 __vector_12 - 0x00000132 __vector_55 - 0x00000132 __vector_46 - 0x00000132 __bad_interrupt - 0x00000132 __vector_6 - 0x00000132 __vector_31 - 0x00000132 __vector_35 - 0x00000132 __vector_39 - 0x00000132 __vector_3 - 0x00000132 __vector_23 - 0x00000132 __vector_30 - 0x00000132 __vector_45 - 0x00000132 __vector_25 - 0x00000132 __vector_11 - 0x00000132 __vector_54 - 0x00000132 __vector_13 - 0x00000132 __vector_17 - 0x00000132 __vector_19 - 0x00000132 __vector_56 - 0x00000132 __vector_7 - 0x00000132 __vector_49 - 0x00000132 __vector_41 - 0x00000132 __vector_43 - 0x00000132 __vector_27 - 0x00000132 __vector_5 - 0x00000132 __vector_33 - 0x00000132 __vector_47 - 0x00000132 __vector_52 - 0x00000132 __vector_37 - 0x00000132 __vector_4 - 0x00000132 __vector_44 - 0x00000132 __vector_51 - 0x00000132 __vector_9 - 0x00000132 __vector_2 - 0x00000132 __vector_21 - 0x00000132 __vector_15 - 0x00000132 __vector_36 - 0x00000132 __vector_29 - 0x00000132 __vector_40 - 0x00000132 __vector_8 - 0x00000132 __vector_26 - 0x00000132 __vector_48 - 0x00000132 __vector_14 - 0x00000132 __vector_53 - 0x00000132 __vector_10 - 0x00000132 __vector_50 - 0x00000132 __vector_16 - 0x00000132 __vector_18 - 0x00000132 __vector_20 - 0x00000132 __vector_42 - 0x00000136 . = ALIGN (0x2) + .text 0x0000014c 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o + 0x0000014c __vector_38 + 0x0000014c __vector_22 + 0x0000014c __vector_28 + 0x0000014c __vector_1 + 0x0000014c __vector_32 + 0x0000014c __vector_34 + 0x0000014c __vector_24 + 0x0000014c __vector_12 + 0x0000014c __vector_55 + 0x0000014c __vector_46 + 0x0000014c __bad_interrupt + 0x0000014c __vector_6 + 0x0000014c __vector_31 + 0x0000014c __vector_35 + 0x0000014c __vector_39 + 0x0000014c __vector_3 + 0x0000014c __vector_23 + 0x0000014c __vector_30 + 0x0000014c __vector_45 + 0x0000014c __vector_25 + 0x0000014c __vector_11 + 0x0000014c __vector_54 + 0x0000014c __vector_13 + 0x0000014c __vector_17 + 0x0000014c __vector_19 + 0x0000014c __vector_56 + 0x0000014c __vector_7 + 0x0000014c __vector_49 + 0x0000014c __vector_41 + 0x0000014c __vector_43 + 0x0000014c __vector_27 + 0x0000014c __vector_5 + 0x0000014c __vector_33 + 0x0000014c __vector_47 + 0x0000014c __vector_52 + 0x0000014c __vector_37 + 0x0000014c __vector_4 + 0x0000014c __vector_44 + 0x0000014c __vector_51 + 0x0000014c __vector_9 + 0x0000014c __vector_2 + 0x0000014c __vector_21 + 0x0000014c __vector_15 + 0x0000014c __vector_36 + 0x0000014c __vector_29 + 0x0000014c __vector_40 + 0x0000014c __vector_8 + 0x0000014c __vector_26 + 0x0000014c __vector_48 + 0x0000014c __vector_14 + 0x0000014c __vector_53 + 0x0000014c __vector_10 + 0x0000014c __vector_50 + 0x0000014c __vector_16 + 0x0000014c __vector_18 + 0x0000014c __vector_20 + 0x0000014c __vector_42 + 0x00000150 . = ALIGN (0x2) *(.text.*) - .text.main 0x00000136 0x2fe Programm.o - 0x00000136 main - .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC2Ev - 0x00000434 0x9a Programm.o - 0x00000434 _ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC2Ev - 0x00000434 _ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE3LedINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev - .text._GLOBAL__sub_I_rot - 0x000004ce 0x2e Programm.o - .text.libgcc 0x000004fc 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_tablejump_elpm.o) - 0x000004fc __tablejump_elpm__ - 0x00000504 . = ALIGN (0x2) + .text._ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC2Ev + 0x00000150 0x240 Programm.o + 0x00000150 _ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC1Ev + 0x00000150 _ZN7DisplayI7Mcp4151IN6avrlib5portcELi0ENS1_5portgELi0ES3_Li1EE6LedPWMINS1_5portlELi3EENS1_5portdES6_Li7ELi6ELi5EEC2Ev + .text.main 0x00000390 0x1ea6 Programm.o + 0x00000390 main + .text._GLOBAL__sub_I_d + 0x00002236 0xa Programm.o + .text.libgcc 0x00002240 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_tablejump_elpm.o) + 0x00002240 __tablejump_elpm__ + .text.avr-libc + 0x00002248 0x5e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + 0x00002248 sprintf + .text.avr-libc + 0x000022a6 0x40a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + 0x000022a6 vfprintf + .text.avr-libc + 0x000026b0 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen_P.o) + 0x000026b0 strnlen_P + .text.avr-libc + 0x000026c6 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen.o) + 0x000026c6 strnlen + .text.avr-libc + 0x000026dc 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) + 0x000026dc fputc + .text.avr-libc + 0x00002734 0xbc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(ultoa_invert.o) + 0x00002734 __ultoa_invert + 0x000027f0 . = ALIGN (0x2) *(.fini9) - .fini9 0x00000504 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) - 0x00000504 _exit - 0x00000504 exit + .fini9 0x000027f0 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) + 0x000027f0 _exit + 0x000027f0 exit *(.fini9) *(.fini8) *(.fini8) @@ -331,47 +399,54 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00000504 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) + .fini0 0x000027f0 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) *(.fini0) - 0x00000508 _etext = . + 0x000027f4 _etext = . -.data 0x00800200 0x0 load address 0x00000508 +.data 0x00800200 0x30 load address 0x000027f4 0x00800200 PROVIDE (__data_start, .) *(.data) .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o .data 0x00800200 0x0 Programm.o .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_exit.o) + .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_copy_data.o) .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_clear_bss.o) .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_ctors.o) .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr6\libgcc.a(_tablejump_elpm.o) + .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen_P.o) + .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen.o) + .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) + .data 0x00800200 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(ultoa_invert.o) *(.data*) *(.rodata) *(.rodata*) + .rodata.str1.1 + 0x00800200 0x2f Programm.o *(.gnu.linkonce.d*) - 0x00800200 . = ALIGN (0x2) - 0x00800200 _edata = . - 0x00800200 PROVIDE (__data_end, .) + 0x00800230 . = ALIGN (0x2) + *fill* 0x0080022f 0x1 + 0x00800230 _edata = . + 0x00800230 PROVIDE (__data_end, .) -.bss 0x00800200 0x5 - 0x00800200 PROVIDE (__bss_start, .) +.bss 0x00800230 0x2 + 0x00800230 PROVIDE (__bss_start, .) *(.bss) - .bss 0x00800200 0x5 Programm.o - 0x00800200 d - 0x00800202 gelb - 0x00800203 gruen - 0x00800204 rot + .bss 0x00800230 0x2 Programm.o + 0x00800230 d *(.bss*) *(COMMON) - 0x00800205 PROVIDE (__bss_end, .) - 0x00000508 __data_load_start = LOADADDR (.data) - 0x00000508 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00800232 PROVIDE (__bss_end, .) + 0x000027f4 __data_load_start = LOADADDR (.data) + 0x00002824 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800205 0x0 - 0x00800205 PROVIDE (__noinit_start, .) +.noinit 0x00800232 0x0 + 0x00800232 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800205 PROVIDE (__noinit_end, .) - 0x00800205 _end = . - 0x00800205 PROVIDE (__heap_start, .) + 0x00800232 PROVIDE (__noinit_end, .) + 0x00800232 _end = . + 0x00800232 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -392,13 +467,19 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .user_signatures *(.user_signatures*) -.stab 0x00000000 0x6e4 +.stab 0x00000000 0xc9c *(.stab) .stab 0x00000000 0x6e4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o + .stab 0x000006e4 0x9c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen_P.o) + 0xa8 (size before relaxing) + .stab 0x00000780 0x9c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(strnlen.o) + 0xa8 (size before relaxing) + .stab 0x0000081c 0x480 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(ultoa_invert.o) + 0x48c (size before relaxing) -.stabstr 0x00000000 0x82 +.stabstr 0x00000000 0x1aa *(.stabstr) - .stabstr 0x00000000 0x82 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o + .stabstr 0x00000000 0x1aa c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6/crtm2560.o .stab.excl *(.stab.excl) @@ -416,6 +497,9 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.comment) .comment 0x00000000 0x2f Programm.o 0x30 (size before relaxing) + .comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) .debug *(.debug) @@ -429,39 +513,66 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x30 +.debug_aranges 0x00000000 0xa8 *(.debug_aranges) .debug_aranges - 0x00000000 0x30 Programm.o + 0x00000000 0x48 Programm.o + .debug_aranges + 0x00000048 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .debug_aranges + 0x00000068 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .debug_aranges + 0x00000088 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x4170 +.debug_info 0x00000000 0x17fac *(.debug_info) - .debug_info 0x00000000 0x4170 Programm.o + .debug_info 0x00000000 0x176eb Programm.o + .debug_info 0x000176eb 0x204 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .debug_info 0x000178ef 0x549 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .debug_info 0x00017e38 0x174 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x3c6 +.debug_abbrev 0x00000000 0x80c *(.debug_abbrev) - .debug_abbrev 0x00000000 0x3c6 Programm.o + .debug_abbrev 0x00000000 0x41b Programm.o + .debug_abbrev 0x0000041b 0x12a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .debug_abbrev 0x00000545 0x1d6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .debug_abbrev 0x0000071b 0xf1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) -.debug_line 0x00000000 0x977 +.debug_line 0x00000000 0x2bc7 *(.debug_line) - .debug_line 0x00000000 0x977 Programm.o + .debug_line 0x00000000 0x26a0 Programm.o + .debug_line 0x000026a0 0x14e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .debug_line 0x000027ee 0x2ff c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .debug_line 0x00002aed 0xda c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) -.debug_frame 0x00000000 0x44 +.debug_frame 0x00000000 0x180 *(.debug_frame) - .debug_frame 0x00000000 0x44 Programm.o + .debug_frame 0x00000000 0x84 Programm.o + .debug_frame 0x00000084 0x40 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .debug_frame 0x000000c4 0x84 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .debug_frame 0x00000148 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) -.debug_str 0x00000000 0x1866 +.debug_str 0x00000000 0x1cb8 *(.debug_str) - .debug_str 0x00000000 0x1866 Programm.o - 0x18a6 (size before relaxing) + .debug_str 0x00000000 0x1b09 Programm.o + 0x1b53 (size before relaxing) + .debug_str 0x00001b09 0xa3 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + 0x127 (size before relaxing) + .debug_str 0x00001bac 0xbf c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + 0x198 (size before relaxing) + .debug_str 0x00001c6b 0x4d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) + 0xf8 (size before relaxing) -.debug_loc 0x00000000 0x90d +.debug_loc 0x00000000 0xa922 *(.debug_loc) - .debug_loc 0x00000000 0x90d Programm.o + .debug_loc 0x00000000 0xa1ab Programm.o + .debug_loc 0x0000a1ab 0x61 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .debug_loc 0x0000a20c 0x623 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .debug_loc 0x0000a82f 0xf3 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) .debug_macinfo *(.debug_macinfo) @@ -469,9 +580,12 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x2a8 +.debug_ranges 0x00000000 0xdf8 *(.debug_ranges) - .debug_ranges 0x00000000 0x2a8 Programm.o + .debug_ranges 0x00000000 0xdc8 Programm.o + .debug_ranges 0x00000dc8 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(sprintf.o) + .debug_ranges 0x00000dd8 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(vfprintf_std.o) + .debug_ranges 0x00000de8 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr6\libc.a(fputc.o) .debug_macro *(.debug_macro) diff --git a/V2/Programm/Programm/Debug/Programm.srec b/V2/Programm/Programm/Debug/Programm.srec index 5acbd7a..c6a39b2 100644 --- a/V2/Programm/Programm/Debug/Programm.srec +++ b/V2/Programm/Programm/Debug/Programm.srec @@ -1,83 +1,645 @@ S010000050726F6772616D6D2E73726563CF -S11300000C9475000C9499000C9499000C9499002C -S11300100C9499000C9499000C9499000C949900F8 -S11300200C9499000C9499000C9499000C949900E8 -S11300300C9499000C9499000C9499000C949900D8 -S11300400C9499000C9499000C9499000C949900C8 -S11300500C9499000C9499000C9499000C949900B8 -S11300600C9499000C9499000C9499000C949900A8 -S11300700C9499000C9499000C9499000C94990098 -S11300800C9499000C9499000C9499000C94990088 -S11300900C9499000C9499000C9499000C94990078 -S11300A00C9499000C9499000C9499000C94990068 -S11300B00C9499000C9499000C9499000C94990058 -S11300C00C9499000C9499000C9499000C94990048 -S11300D00C9499000C9499000C9499000C94990038 -S11300E00C9499000C946702670211241FBECFEF91 -S11300F0D1E2DEBFCDBF00E00CBF22E0A0E0B2E061 -S113010001C01D92A530B207E1F710E0CAEED0E0BD -S113011000E006C022970109FE010BBF0E947E0287 -S1130120C83ED10780E00807A9F70E949B000C9401 -S113013082020C940000409888E0A098989AA19AB2 -S1130140999A00C000C00000A198999A8150A9F71B -S113015098E08DEC88231CF4A09A989A02C0A09889 -S1130160989AA19A999A880F00C000C00000A1989B -S1130170999A915079F7409AEBE0F1E08081886098 -S1130180808380818F7B80838081806280831BB8A1 -S11301908081806880838FE99FE00197F1F700C038 -S11301A0000080818F7780830F2EF0E5FF2EF02DE5 -S11301B005E61EE6D9E6C3E76894EE24E5F874E4A0 -S11301C065E753E541E633E60F2EFBE6DF2EF02D1F -S11301D0A2E0B1E090819F7B9083908190629083B4 -S11301E0FBB89081906890838FE99FE00197F1F7C5 -S11301F000C0000090819F77908390819F7B9083C3 -S11302009081906290830BB99081906890838FE97C -S11302109FE00197F1F700C0000090819F779083E1 -S113022090819F7B90839081906290831BB9908191 -S1130230906890838FE99FE00197F1F700C0000078 -S113024090819F77908390819F7B9083908190622F -S11302509083DBB99081906890838FE99FE0019748 -S1130260F1F700C0000090819F77908390819F7B7D -S11302709083908190629083CBB9908190689083B1 -S11302808FE99FE00197F1F700C0000090819F770C -S1130290908390819F7B9083908190629083EBB850 -S11302A09081906890838FE99FE00197F1F700C0F7 -S11302B0000090819F77908390819F7B90839081B1 -S11302C0906290837BB99081906890838FE99FE0DE -S11302D00197F1F700C0000090819F77908390818F -S11302E09F7B90839081906290836BB9908190689A -S11302F090838FE99FE00197F1F700C0000090819F -S11303009F77908390819F7B90839081906290836C -S1130310EBB89081906890838FE99FE00197F1F7A3 -S113032000C0000090819F77908390819F7B908391 -S11303309081906290835BB99081906890838FE9FB -S11303409FE00197F1F700C0000090819F779083B0 -S113035090819F7B90839081906290834BB9908130 -S1130360906890838FE99FE00197F1F700C0000047 -S113037090819F77908390819F7B908390819062FE -S113038090833BB99081906890838FE99FE00197B7 -S1130390F1F700C0000090819F77908390819F7B4C -S11303A09083908190629083DBB890819068908371 -S11303B08FE99FE00197F1F700C0000090819F77DB -S11303C09083289A9FEF27EA81E69150204080404D -S11303D0E1F700C0000028989C9190649C939FEFE3 -S11303E023ED80E3915020408040E1F700C00000FD -S11303F09C919F7B9C939C9190629C939FEF27EA96 -S113040081E6915020408040E1F700C000009C91BB -S113041090649C939FEF23ED80E3915020408040B3 -S1130420E1F700C000009C919F7B9C939C919F7D71 -S11304309C93D0CEA198999A409A389AA098989A69 -S1130440AAE0B1E08C9188608C93EBE0F1E08081CC -S1130450877F80838C9180688C938C9180648C934B -S11304608C9180628C938FEF8AB92FEF81EE94E0A8 -S1130470215080409040E1F700C0000080818F7BD4 -S1130480808380818F7D80838CE08BB980818068BC -S113049080838FE99FE00197F1F700C0000080811D -S11304A08F77808380818F7B808380818F7D808321 -S11304B081E08BB98081806880838FE99FE0019718 -S11304C0F1F700C0000080818F7780830895A1E058 -S11304D0B1E08C9180628C93E2E0F1E080818F7DC9 -S11304E08083209A28988C9180648C9380818F7B60 -S11304F0808380E092E00E941A0208950790F691AA -S10B0500E02D1994F894FFCFDB +S11300000C9475000C94A6000C94A6000C94A60005 +S11300100C94A6000C94A6000C94A6000C94A600C4 +S11300200C94A6000C94A6000C94A6000C94A600B4 +S11300300C94A6000C94A6000C94A6000C94A600A4 +S11300400C94A6000C94A6000C94A6000C94A60094 +S11300500C94A6000C94A6000C94A6000C94A60084 +S11300600C94A6000C94A6000C94A6000C94A60074 +S11300700C94A6000C94A6000C94A6000C94A60064 +S11300800C94A6000C94A6000C94A6000C94A60054 +S11300900C94A6000C94A6000C94A6000C94A60044 +S11300A00C94A6000C94A6000C94A6000C94A60034 +S11300B00C94A6000C94A6000C94A6000C94A60024 +S11300C00C94A6000C94A6000C94A6000C94A60014 +S11300D00C94A6000C94A6000C94A6000C94A60004 +S11300E00C94A6000C941B111B1111241FBECFEFFE +S11300F0D1E2DEBFCDBF00E00CBF12E0A0E0B2E071 +S1130100E4EFF7E200E00BBF02C007900D92A033CA +S1130110B107D9F722E0A0E3B2E001C01D92A233F7 +S1130120B207E1F710E0CAEED0E000E006C0229783 +S11301300109FE010BBF0E942011C83ED10780E0D7 +S11301400807A9F70E94C8010C94F8130C94000046 +S1130150A198999A409A389AA098989AEAE0F1E07E +S113016080818860808381E88093200189E0809386 +S11301702101A8E2B1E01C921C92808180688083F6 +S11301808081806480838081806280838FEF8AB9DC +S11301908FEF99EF0197F1F700C00000EBE0F1E079 +S11301A080818F7B808380818F7D808388E38BB97E +S11301B0808180688083A3EDB0E01197F1F700C0DF +S11301C0000080818F7780838FE19EE40197F1F7AF +S11301D000C00000808180688083A3EDB0E01197A7 +S11301E0F1F700C0000080818F7780838FED91E06C +S11301F00197F1F700C00000808180688083A3ED3F +S1130200B0E01197F1F700C0000080818F77808300 +S11302108FED91E00197F1F700C0000080818068C4 +S11302208083A3EDB0E01197F1F700C00000808156 +S11302308F7780838FED91E00197F1F700C0000084 +S113024080818F7B808380818F7D80831BB88081B8 +S113025080688083A3EDB0E01197F1F700C000003F +S113026080818F7780838FE39FE10197F1F700C04E +S1130270000080818F7B808380818F7D808381E0FB +S11302808BB9908190689083A3EDB0E01197F1F75A +S113029000C0000090819F779083AFE3BFE1119786 +S11302A0F1F700C0000090819F7B908390819F7D37 +S11302B0908394E09BB9908190689083A3EDB0E023 +S11302C01197F1F700C0000090819F779083BFEFF2 +S11302D021EE34E0B15020403040E1F700C000008E +S11302E090819F7B908390819F7D90839CE09BB9BC +S11302F0908190689083A3EDB0E01197F1F700C06E +S1130300000090819F779083AFE3BFE11197F1F7ED +S113031000C0000090819F7B908390819F7D90839B +S11303208BB980818068808383ED90E00197F1F739 +S113033000C0000080818F778083AFE3BFE1119715 +S1130340F1F700C00000409898E081E088231CF495 +S1130350A09A989A02C0A098989AA19A999A880FFC +S113036000C000C00000A198999A915079F788E0E4 +S1130370A098989AA19A999A00C000C00000A198E8 +S1130380999A8150A9F7409A8FEF80932801089594 +S1130390CF93DF93CDB7DEB76D970FB6F894DEBF7A +S11303A00FBECDBF0BE011E00F2EF8E2AF2EBB2441 +S11303B0B394F02D0F2EFAEF6F2EF02D262C9924E6 +S11303C09A946894772477F80F2EF0ED8F2EF02D01 +S11303D06E0125E1C20ED11C3C2C4D2CEE24E3947D +S11303E0F12CEC0EFD1E5E2CFD8ED8018C918F7BC2 +S11303F08C938C918F7D8C9381E08BB98C918068E8 +S11304008C93E3EDF0E03197F1F700C000008C919C +S11304108F778C93EFE3FFE13197F1F700C0000091 +S1130420D5012C92409888E0A098989AA19A999A1C +S113043000C000C00000A198999A8150A9F798E0E3 +S11304408DEE88231CF4A09A989A02C0A098989ADA +S1130450A19A999A880F00C000C00000A198999AA7 +S1130460915079F7409AE0E0F2E060E940EC22EE46 +S113047075EF5FEE31EEA3C3843E09F09EC0D80150 +S11304808C9180648C938C918F7D8C931BB81AB85B +S11304908C9180688C9383ED90E00197F1F700C014 +S11304A000008C918F778C9389B19AB88F30D1F4F6 +S11304B08C918F7B8C938C918F7D8C934BB98C9189 +S11304C080688C9383ED90E00197F1F700C0000001 +S11304D08C918F778C938FE99FE00197F1F700C09F +S11304E0000056C08F34D9F4D8018C918F7B8C9343 +S11304F08C918F7D8C936BB98C9180688C9383EDF8 +S113050090E00197F1F700C000008C918F778C93F5 +S11305108FE99FE00197F1F700C0000039C08F31E7 +S1130520D9F4D8018C918F7B8C938C918F7D8C9393 +S11305308BB88C9180688C9383ED90E00197F1F7F0 +S113054000C000008C918F778C938FE99FE0019716 +S1130550F1F700C000001CC08F35D1F4D8018C9194 +S11305608F7B8C938C918F7D8C937BB88C918068DE +S11305708C9383ED90E00197F1F700C000008C911B +S11305808F778C938FE99FE00197F1F700C000000B +S1130590D8018C918F7B8C938C9180628C933BB926 +S11305A08C9180688C9383ED90E00197F1F700C003 +S11305B000008C918F778C9302C3863F09F09EC014 +S11305C0D8018C9180648C938C918F7D8C931BB813 +S11305D01AB88C9180688C9383ED90E00197F1F7C1 +S11305E000C000008C918F778C9389B19AB88F30BA +S11305F0D1F48C918F7B8C938C918F7D8C934BB9A0 +S11306008C9180688C9383ED90E00197F1F700C0A2 +S113061000008C918F778C938FE99FE00197F1F71D +S113062000C0000056C08F34D9F4D8018C918F7B60 +S11306308C938C918F7D8C936BB98C9180688C9307 +S113064083ED90E00197F1F700C000008C918F7763 +S11306508C938FE99FE00197F1F700C0000039C047 +S11306608F31D9F4D8018C918F7B8C938C918F7DB1 +S11306708C938BB88C9180688C9383ED90E0019778 +S1130680F1F700C000008C918F778C938FE99FE085 +S11306900197F1F700C000001CC08F35D1F4D801D8 +S11306A08C918F7B8C938C918F7D8C937BB88C9168 +S11306B080688C9383ED90E00197F1F700C000000F +S11306C08C918F778C938FE99FE00197F1F700C0AD +S11306D00000D8018C918F7B8C938C9180628C93D9 +S11306E05BB98C9180688C9383ED90E00197F1F76E +S11306F000C000008C918F778C9361C28C3F09F00D +S11307009EC0D8018C9180648C938C918F7D8C9346 +S11307101BB81AB88C9180688C9383ED90E0019794 +S1130720F1F700C000008C918F778C9389B19AB84F +S11307308F30D1F48C918F7B8C938C918F7D8C93A3 +S11307404BB98C9180688C9383ED90E00197F1F71D +S113075000C000008C918F778C938FE99FE0019704 +S1130760F1F700C0000056C08F34D9F4D8018C9141 +S11307708F7B8C938C918F7D8C936BB98C918068DB +S11307808C9383ED90E00197F1F700C000008C9109 +S11307908F778C938FE99FE00197F1F700C00000F9 +S11307A039C08F31D9F4D8018C918F7B8C938C9183 +S11307B08F7D8C938BB88C9180688C9383ED90E0C3 +S11307C00197F1F700C000008C918F778C938FE92B +S11307D09FE00197F1F700C000001CC08F35D1F4F1 +S11307E0D8018C918F7B8C938C918F7D8C937BB86B +S11307F08C9180688C9383ED90E00197F1F700C0B1 +S113080000008C918F778C938FE99FE00197F1F72B +S113081000C00000D8018C918F7B8C938C918062F6 +S11308208C937BB98C9180688C9383ED90E00197D5 +S1130830F1F700C000008C918F778C93C0C18F3D7D +S113084009F09EC0D8018C9180648C938C918F7D2B +S11308508C931BB81AB88C9180688C9383ED90E0CC +S11308600197F1F700C000008C918F778C9389B1C8 +S11308709AB88F30D1F48C918F7B8C938C918F7D2F +S11308808C934BB98C9180688C9383ED90E00197A5 +S1130890F1F700C000008C918F778C938FE99FE073 +S11308A00197F1F700C0000056C08F34D9F4D80185 +S11308B08C918F7B8C938C918F7D8C936BB98C9165 +S11308C080688C9383ED90E00197F1F700C00000FD +S11308D08C918F778C938FE99FE00197F1F700C09B +S11308E0000039C08F31D9F4D8018C918F7B8C935F +S11308F08C918F7D8C938BB88C9180688C9383EDD5 +S113090090E00197F1F700C000008C918F778C93F1 +S11309108FE99FE00197F1F700C000001CC08F35FC +S1130920D1F4D8018C918F7B8C938C918F7D8C9397 +S11309307BB88C9180688C9383ED90E00197F1F7FC +S113094000C000008C918F778C938FE99FE0019712 +S1130950F1F700C00000D8018C918F7B8C938C91AF +S113096080628C932BB98C9180688C9383ED90E09A +S11309700197F1F700C000008C918F778C931FC111 +S1130980D8019C9190649C939C919F7D9C931BB8EF +S11309901AB89C9190689C93A3EDB0E01197F1F77D +S11309A000C00000D8019C919F779C9399B19AB89C +S11309B08A3009F079C0892F80558031D0F48C9128 +S11309C08F7B8C938C918F7D8C937BB88C9180687A +S11309D08C9383ED90E00197F1F700C000008C91B7 +S11309E08F778C938FE99FE00197F1F700C00000A7 +S11309F0E6C09031D8F4D8018C918F7B8C938C9184 +S1130A008F7D8C934BB98C9180688C9383ED90E0AF +S1130A100197F1F700C000008C918F778C938FE9D8 +S1130A209FE00197F1F700C00000C9C0892F8054EE +S1130A308031D8F4D8018C918F7B8C938C918F7DED +S1130A408C936BB98C9180688C9383ED90E00197C3 +S1130A50F1F700C000008C918F778C938FE99FE0B1 +S1130A600197F1F700C00000AAC09051903108F03E +S1130A70A6C0D8018C918F7B8C938C918F7D8C93A5 +S1130A808BB88C9180688C9383ED90E00197F1F79B +S1130A9000C000008C918F778C938FE99FE00197C1 +S1130AA0F1F700C000008BC09F30E1F4D8019C91A5 +S1130AB09F7B9C939C919F7D9C934BB99C91906848 +S1130AC09C93A3EDB0E01197F1F700C00000D801AA +S1130AD09C919F779C93AFE9BFE01197F1F700C019 +S1130AE0000059C09F34E1F4D8019C919F7B9C93F2 +S1130AF09C919F7D9C936BB99C9190689C93A3ED72 +S1130B00B0E01197F1F700C00000D8019C919F77E5 +S1130B109C93AFE9BFE01197F1F700C000003BC020 +S1130B209F31E1F4D8019C919F7B9C939C919F7D84 +S1130B309C938BB89C9190689C93A3EDB0E0119723 +S1130B40F1F700C00000D8019C919F779C93AFE916 +S1130B50BFE01197F1F700C000001DC09F35D9F424 +S1130B60D8019C919F7B9C939C919F7D9C937BB887 +S1130B709C9190689C93A3EDB0E01197F1F700C0AD +S1130B800000D8019C919F779C93AFE9BFE0119737 +S1130B90F1F700C00000D8019C919F7B9C939C912D +S1130BA090629C938BB98C9180688C9383ED90E0D8 +S1130BB00197F1F700C000008C918F778C9381919D +S1130BC081115ACC1F926F9282E192E09F938F938E +S1130BD0DF92CF920E9424110F900F900F900F90EC +S1130BE00F900F90E32DF42D60E940EC22EE75EFA9 +S1130BF05FEE31EEA3C3843E09F09EC0D8018C9110 +S1130C0080648C938C918F7D8C931BB81AB88C91D3 +S1130C1080688C9383ED90E00197F1F700C00000A9 +S1130C208C918F778C9389B19AB88F30D1F48C9151 +S1130C308F7B8C938C918F7D8C934BB98C91806836 +S1130C408C9383ED90E00197F1F700C000008C9144 +S1130C508F778C938FE99FE00197F1F700C0000034 +S1130C6056C08F34D9F4D8018C918F7B8C938C919E +S1130C708F7D8C936BB98C9180688C9383ED90E01D +S1130C800197F1F700C000008C918F778C938FE966 +S1130C909FE00197F1F700C0000039C08F31D9F40B +S1130CA0D8018C918F7B8C938C918F7D8C938BB896 +S1130CB08C9180688C9383ED90E00197F1F700C0EC +S1130CC000008C918F778C938FE99FE00197F1F767 +S1130CD000C000001CC08F35D1F4D8018C918F7BEB +S1130CE08C938C918F7D8C937BB88C9180688C9342 +S1130CF083ED90E00197F1F700C000008C918F77AD +S1130D008C938FE99FE00197F1F700C00000D801B0 +S1130D108C918F7B8C938C9180628C933BB98C915A +S1130D2080688C9383ED90E00197F1F700C0000098 +S1130D308C918F778C9302C3863F09F09EC0D801B3 +S1130D408C9180648C938C918F7D8C931BB81AB892 +S1130D508C9180688C9383ED90E00197F1F700C04B +S1130D6000008C918F778C9389B19AB88F30D1F42D +S1130D708C918F7B8C938C918F7D8C934BB98C91C0 +S1130D8080688C9383ED90E00197F1F700C0000038 +S1130D908C918F778C938FE99FE00197F1F700C0D6 +S1130DA0000056C08F34D9F4D8018C918F7B8C937A +S1130DB08C918F7D8C936BB98C9180688C9383ED2F +S1130DC090E00197F1F700C000008C918F778C932D +S1130DD08FE99FE00197F1F700C0000039C08F311F +S1130DE0D9F4D8018C918F7B8C938C918F7D8C93CB +S1130DF08BB88C9180688C9383ED90E00197F1F728 +S1130E0000C000008C918F778C938FE99FE001974D +S1130E10F1F700C000001CC08F35D1F4D8018C91CB +S1130E208F7B8C938C918F7D8C937BB88C91806815 +S1130E308C9383ED90E00197F1F700C000008C9152 +S1130E408F778C938FE99FE00197F1F700C0000042 +S1130E50D8018C918F7B8C938C9180628C935BB93D +S1130E608C9180688C9383ED90E00197F1F700C03A +S1130E7000008C918F778C9361C28C3F09F09EC0E7 +S1130E80D8018C9180648C938C918F7D8C931BB84A +S1130E901AB88C9180688C9383ED90E00197F1F7F8 +S1130EA000C000008C918F778C9389B19AB88F30F1 +S1130EB0D1F48C918F7B8C938C918F7D8C934BB9D7 +S1130EC08C9180688C9383ED90E00197F1F700C0DA +S1130ED000008C918F778C938FE99FE00197F1F755 +S1130EE000C0000056C08F34D9F4D8018C918F7B98 +S1130EF08C938C918F7D8C936BB98C9180688C933F +S1130F0083ED90E00197F1F700C000008C918F779A +S1130F108C938FE99FE00197F1F700C0000039C07E +S1130F208F31D9F4D8018C918F7B8C938C918F7DE8 +S1130F308C938BB88C9180688C9383ED90E00197AF +S1130F40F1F700C000008C918F778C938FE99FE0BC +S1130F500197F1F700C000001CC08F35D1F4D8010F +S1130F608C918F7B8C938C918F7D8C937BB88C919F +S1130F7080688C9383ED90E00197F1F700C0000046 +S1130F808C918F778C938FE99FE00197F1F700C0E4 +S1130F900000D8018C918F7B8C938C9180628C9310 +S1130FA07BB98C9180688C9383ED90E00197F1F785 +S1130FB000C000008C918F778C93C0C18F3D09F0E5 +S1130FC09EC0D8018C9180648C938C918F7D8C937E +S1130FD01BB81AB88C9180688C9383ED90E00197CC +S1130FE0F1F700C000008C918F778C9389B19AB887 +S1130FF08F30D1F48C918F7B8C938C918F7D8C93DB +S11310004BB98C9180688C9383ED90E00197F1F754 +S113101000C000008C918F778C938FE99FE001973B +S1131020F1F700C0000056C08F34D9F4D8018C9178 +S11310308F7B8C938C918F7D8C936BB98C91806812 +S11310408C9383ED90E00197F1F700C000008C9140 +S11310508F778C938FE99FE00197F1F700C0000030 +S113106039C08F31D9F4D8018C918F7B8C938C91BA +S11310708F7D8C938BB88C9180688C9383ED90E0FA +S11310800197F1F700C000008C918F778C938FE962 +S11310909FE00197F1F700C000001CC08F35D1F428 +S11310A0D8018C918F7B8C938C918F7D8C937BB8A2 +S11310B08C9180688C9383ED90E00197F1F700C0E8 +S11310C000008C918F778C938FE99FE00197F1F763 +S11310D000C00000D8018C918F7B8C938C9180622E +S11310E08C932BB98C9180688C9383ED90E001975D +S11310F0F1F700C000008C918F778C931FC1D80149 +S11311009C9190649C939C919F7D9C931BB81AB86E +S11311109C9190689C93A3EDB0E01197F1F700C007 +S11311200000D8019C919F779C9399B19AB88A301A +S113113009F079C0892F80558031D0F48C918F7B50 +S11311408C938C918F7D8C937BB88C9180688C93DD +S113115083ED90E00197F1F700C000008C918F7748 +S11311608C938FE99FE00197F1F700C00000E6C07F +S11311709031D8F4D8018C918F7B8C938C918F7D96 +S11311808C934BB98C9180688C9383ED90E001979C +S1131190F1F700C000008C918F778C938FE99FE06A +S11311A00197F1F700C00000C9C0892F8054803135 +S11311B0D8F4D8018C918F7B8C938C918F7D8C93F8 +S11311C06BB98C9180688C9383ED90E00197F1F773 +S11311D000C000008C918F778C938FE99FE001977A +S11311E0F1F700C00000AAC09051903108F0A6C0E9 +S11311F0D8018C918F7B8C938C918F7D8C938BB841 +S11312008C9180688C9383ED90E00197F1F700C096 +S113121000008C918F778C938FE99FE00197F1F711 +S113122000C000008BC09F30E1F4D8019C919F7BEB +S11312309C939C919F7D9C934BB99C9190689C93AB +S1131240A3EDB0E01197F1F700C00000D8019C9124 +S11312509F779C93AFE9BFE01197F1F700C00000BE +S113126059C09F34E1F4D8019C919F7B9C939C913D +S11312709F7D9C936BB99C9190689C93A3EDB0E087 +S11312801197F1F700C00000D8019C919F779C93BF +S1131290AFE9BFE01197F1F700C000003BC09F31F8 +S11312A0E1F4D8019C919F7B9C939C919F7D9C939E +S11312B08BB89C9190689C93A3EDB0E01197F1F7E3 +S11312C000C00000D8019C919F779C93AFE9BFE0D8 +S11312D01197F1F700C000001DC09F35D9F4D80163 +S11312E09C919F7B9C939C919F7D9C937BB89C91AC +S11312F090689C93A3EDB0E01197F1F700C0000053 +S1131300D8019C919F779C93AFE9BFE01197F1F7C7 +S113131000C00000D8019C919F7B9C939C9190629B +S11313209C938BB98C9180688C9383ED90E00197AA +S1131330F1F700C000008C918F778C93819181111B +S11313405ACC1F9286E98F9389E192E09F938F9301 +S1131350FF92EF920E9424110F900F900F900F9024 +S11313600F900F90E52DFD8D60E940EC22EE75EFB6 +S11313705FEE31EEA3C3843E09F09EC0D8018C9188 +S113138080648C938C918F7D8C931BB81AB88C914C +S113139080688C9383ED90E00197F1F700C0000022 +S11313A08C918F778C9389B19AB88F30D1F48C91CA +S11313B08F7B8C938C918F7D8C934BB98C918068AF +S11313C08C9383ED90E00197F1F700C000008C91BD +S11313D08F778C938FE99FE00197F1F700C00000AD +S11313E056C08F34D9F4D8018C918F7B8C938C9117 +S11313F08F7D8C936BB98C9180688C9383ED90E096 +S11314000197F1F700C000008C918F778C938FE9DE +S11314109FE00197F1F700C0000039C08F31D9F483 +S1131420D8018C918F7B8C938C918F7D8C938BB80E +S11314308C9180688C9383ED90E00197F1F700C064 +S113144000008C918F778C938FE99FE00197F1F7DF +S113145000C000001CC08F35D1F4D8018C918F7B63 +S11314608C938C918F7D8C937BB88C9180688C93BA +S113147083ED90E00197F1F700C000008C918F7725 +S11314808C938FE99FE00197F1F700C00000D80129 +S11314908C918F7B8C938C9180628C933BB98C91D3 +S11314A080688C9383ED90E00197F1F700C0000011 +S11314B08C918F778C9302C3863F09F09EC0D8012C +S11314C08C9180648C938C918F7D8C931BB81AB80B +S11314D08C9180688C9383ED90E00197F1F700C0C4 +S11314E000008C918F778C9389B19AB88F30D1F4A6 +S11314F08C918F7B8C938C918F7D8C934BB98C9139 +S113150080688C9383ED90E00197F1F700C00000B0 +S11315108C918F778C938FE99FE00197F1F700C04E +S1131520000056C08F34D9F4D8018C918F7B8C93F2 +S11315308C918F7D8C936BB98C9180688C9383EDA7 +S113154090E00197F1F700C000008C918F778C93A5 +S11315508FE99FE00197F1F700C0000039C08F3197 +S1131560D9F4D8018C918F7B8C938C918F7D8C9343 +S11315708BB88C9180688C9383ED90E00197F1F7A0 +S113158000C000008C918F778C938FE99FE00197C6 +S1131590F1F700C000001CC08F35D1F4D8018C9144 +S11315A08F7B8C938C918F7D8C937BB88C9180688E +S11315B08C9383ED90E00197F1F700C000008C91CB +S11315C08F778C938FE99FE00197F1F700C00000BB +S11315D0D8018C918F7B8C938C9180628C935BB9B6 +S11315E08C9180688C9383ED90E00197F1F700C0B3 +S11315F000008C918F778C9361C28C3F09F09EC060 +S1131600D8018C9180648C938C918F7D8C931BB8C2 +S11316101AB88C9180688C9383ED90E00197F1F770 +S113162000C000008C918F778C9389B19AB88F3069 +S1131630D1F48C918F7B8C938C918F7D8C934BB94F +S11316408C9180688C9383ED90E00197F1F700C052 +S113165000008C918F778C938FE99FE00197F1F7CD +S113166000C0000056C08F34D9F4D8018C918F7B10 +S11316708C938C918F7D8C936BB98C9180688C93B7 +S113168083ED90E00197F1F700C000008C918F7713 +S11316908C938FE99FE00197F1F700C0000039C0F7 +S11316A08F31D9F4D8018C918F7B8C938C918F7D61 +S11316B08C938BB88C9180688C9383ED90E0019728 +S11316C0F1F700C000008C918F778C938FE99FE035 +S11316D00197F1F700C000001CC08F35D1F4D80188 +S11316E08C918F7B8C938C918F7D8C937BB88C9118 +S11316F080688C9383ED90E00197F1F700C00000BF +S11317008C918F778C938FE99FE00197F1F700C05C +S11317100000D8018C918F7B8C938C9180628C9388 +S11317207BB98C9180688C9383ED90E00197F1F7FD +S113173000C000008C918F778C93C0C18F3D09F05D +S11317409EC0D8018C9180648C938C918F7D8C93F6 +S11317501BB81AB88C9180688C9383ED90E0019744 +S1131760F1F700C000008C918F778C9389B19AB8FF +S11317708F30D1F48C918F7B8C938C918F7D8C9353 +S11317804BB98C9180688C9383ED90E00197F1F7CD +S113179000C000008C918F778C938FE99FE00197B4 +S11317A0F1F700C0000056C08F34D9F4D8018C91F1 +S11317B08F7B8C938C918F7D8C936BB98C9180688B +S11317C08C9383ED90E00197F1F700C000008C91B9 +S11317D08F778C938FE99FE00197F1F700C00000A9 +S11317E039C08F31D9F4D8018C918F7B8C938C9133 +S11317F08F7D8C938BB88C9180688C9383ED90E073 +S11318000197F1F700C000008C918F778C938FE9DA +S11318109FE00197F1F700C000001CC08F35D1F4A0 +S1131820D8018C918F7B8C938C918F7D8C937BB81A +S11318308C9180688C9383ED90E00197F1F700C060 +S113184000008C918F778C938FE99FE00197F1F7DB +S113185000C00000D8018C918F7B8C938C918062A6 +S11318608C932BB98C9180688C9383ED90E00197D5 +S1131870F1F700C000008C918F778C931FC1D801C1 +S11318809C9190649C939C919F7D9C931BB81AB8E7 +S11318909C9190689C93A3EDB0E01197F1F700C080 +S11318A00000D8019C919F779C9399B19AB88A3093 +S11318B009F079C0892F80558031D0F48C918F7BC9 +S11318C08C938C918F7D8C937BB88C9180688C9356 +S11318D083ED90E00197F1F700C000008C918F77C1 +S11318E08C938FE99FE00197F1F700C00000E6C0F8 +S11318F09031D8F4D8018C918F7B8C938C918F7D0F +S11319008C934BB98C9180688C9383ED90E0019714 +S1131910F1F700C000008C918F778C938FE99FE0E2 +S11319200197F1F700C00000C9C0892F80548031AD +S1131930D8F4D8018C918F7B8C938C918F7D8C9370 +S11319406BB98C9180688C9383ED90E00197F1F7EB +S113195000C000008C918F778C938FE99FE00197F2 +S1131960F1F700C00000AAC09051903108F0A6C061 +S1131970D8018C918F7B8C938C918F7D8C938BB8B9 +S11319808C9180688C9383ED90E00197F1F700C00F +S113199000008C918F778C938FE99FE00197F1F78A +S11319A000C000008BC09F30E1F4D8019C919F7B64 +S11319B09C939C919F7D9C934BB99C9190689C9324 +S11319C0A3EDB0E01197F1F700C00000D8019C919D +S11319D09F779C93AFE9BFE01197F1F700C0000037 +S11319E059C09F34E1F4D8019C919F7B9C939C91B6 +S11319F09F7D9C936BB99C9190689C93A3EDB0E000 +S1131A001197F1F700C00000D8019C919F779C9337 +S1131A10AFE9BFE01197F1F700C000003BC09F3170 +S1131A20E1F4D8019C919F7B9C939C919F7D9C9316 +S1131A308BB89C9190689C93A3EDB0E01197F1F75B +S1131A4000C00000D8019C919F779C93AFE9BFE050 +S1131A501197F1F700C000001DC09F35D9F4D801DB +S1131A609C919F7B9C939C919F7D9C937BB89C9124 +S1131A7090689C93A3EDB0E01197F1F700C00000CB +S1131A80D8019C919F779C93AFE9BFE01197F1F740 +S1131A9000C00000D8019C919F7B9C939C91906214 +S1131AA09C938BB98C9180688C9383ED90E0019723 +S1131AB0F1F700C000008C918F778C938191811194 +S1131AC05ACCE2E0F2E060E940EC22EE75EF5FEE22 +S1131AD031EEA3C3843E09F09EC0D8018C9180648A +S1131AE08C938C918F7D8C931BB81AB88C918068E1 +S1131AF08C9383ED90E00197F1F700C000008C9186 +S1131B008F778C9389B19AB88F30D1F48C918F7B75 +S1131B108C938C918F7D8C934BB98C9180688C9332 +S1131B2083ED90E00197F1F700C000008C918F776E +S1131B308C938FE99FE00197F1F700C0000056C035 +S1131B408F34D9F4D8018C918F7B8C938C918F7DB9 +S1131B508C936BB98C9180688C9383ED90E00197A2 +S1131B60F1F700C000008C918F778C938FE99FE090 +S1131B700197F1F700C0000039C08F31D9F4D801C2 +S1131B808C918F7B8C938C918F7D8C938BB88C9163 +S1131B9080688C9383ED90E00197F1F700C000001A +S1131BA08C918F778C938FE99FE00197F1F700C0B8 +S1131BB000001CC08F35D1F4D8018C918F7B8C939D +S1131BC08C918F7D8C937BB88C9180688C9383ED02 +S1131BD090E00197F1F700C000008C918F778C930F +S1131BE08FE99FE00197F1F700C00000D8018C91C4 +S1131BF08F7B8C938C9180628C933BB98C918068A1 +S1131C008C9383ED90E00197F1F700C000008C9174 +S1131C108F778C9302C3863F09F09EC0D8018C91C4 +S1131C2080648C938C918F7D8C931BB81AB88C91A3 +S1131C3080688C9383ED90E00197F1F700C0000079 +S1131C408C918F778C9389B19AB88F30D1F48C9121 +S1131C508F7B8C938C918F7D8C934BB98C91806806 +S1131C608C9383ED90E00197F1F700C000008C9114 +S1131C708F778C938FE99FE00197F1F700C0000004 +S1131C8056C08F34D9F4D8018C918F7B8C938C916E +S1131C908F7D8C936BB98C9180688C9383ED90E0ED +S1131CA00197F1F700C000008C918F778C938FE936 +S1131CB09FE00197F1F700C0000039C08F31D9F4DB +S1131CC0D8018C918F7B8C938C918F7D8C938BB866 +S1131CD08C9180688C9383ED90E00197F1F700C0BC +S1131CE000008C918F778C938FE99FE00197F1F737 +S1131CF000C000001CC08F35D1F4D8018C918F7BBB +S1131D008C938C918F7D8C937BB88C9180688C9311 +S1131D1083ED90E00197F1F700C000008C918F777C +S1131D208C938FE99FE00197F1F700C00000D80180 +S1131D308C918F7B8C938C9180628C935BB98C910A +S1131D4080688C9383ED90E00197F1F700C0000068 +S1131D508C918F778C9361C28C3F09F09EC0D8011F +S1131D608C9180648C938C918F7D8C931BB81AB862 +S1131D708C9180688C9383ED90E00197F1F700C01B +S1131D8000008C918F778C9389B19AB88F30D1F4FD +S1131D908C918F7B8C938C918F7D8C934BB98C9190 +S1131DA080688C9383ED90E00197F1F700C0000008 +S1131DB08C918F778C938FE99FE00197F1F700C0A6 +S1131DC0000056C08F34D9F4D8018C918F7B8C934A +S1131DD08C918F7D8C936BB98C9180688C9383EDFF +S1131DE090E00197F1F700C000008C918F778C93FD +S1131DF08FE99FE00197F1F700C0000039C08F31EF +S1131E00D9F4D8018C918F7B8C938C918F7D8C939A +S1131E108BB88C9180688C9383ED90E00197F1F7F7 +S1131E2000C000008C918F778C938FE99FE001971D +S1131E30F1F700C000001CC08F35D1F4D8018C919B +S1131E408F7B8C938C918F7D8C937BB88C918068E5 +S1131E508C9383ED90E00197F1F700C000008C9122 +S1131E608F778C938FE99FE00197F1F700C0000012 +S1131E70D8018C918F7B8C938C9180628C937BB9ED +S1131E808C9180688C9383ED90E00197F1F700C00A +S1131E9000008C918F778C93C0C18F3D09F09EC058 +S1131EA0D8018C9180648C938C918F7D8C931BB81A +S1131EB01AB88C9180688C9383ED90E00197F1F7C8 +S1131EC000C000008C918F778C9389B19AB88F30C1 +S1131ED0D1F48C918F7B8C938C918F7D8C934BB9A7 +S1131EE08C9180688C9383ED90E00197F1F700C0AA +S1131EF000008C918F778C938FE99FE00197F1F725 +S1131F0000C0000056C08F34D9F4D8018C918F7B67 +S1131F108C938C918F7D8C936BB98C9180688C930E +S1131F2083ED90E00197F1F700C000008C918F776A +S1131F308C938FE99FE00197F1F700C0000039C04E +S1131F408F31D9F4D8018C918F7B8C938C918F7DB8 +S1131F508C938BB88C9180688C9383ED90E001977F +S1131F60F1F700C000008C918F778C938FE99FE08C +S1131F700197F1F700C000001CC08F35D1F4D801DF +S1131F808C918F7B8C938C918F7D8C937BB88C916F +S1131F9080688C9383ED90E00197F1F700C0000016 +S1131FA08C918F778C938FE99FE00197F1F700C0B4 +S1131FB00000D8018C918F7B8C938C9180628C93E0 +S1131FC02BB98C9180688C9383ED90E00197F1F7A5 +S1131FD000C000008C918F778C931FC1D8019C9115 +S1131FE090649C939C919F7D9C931BB81AB89C9180 +S1131FF090689C93A3EDB0E01197F1F700C0000046 +S1132000D8019C919F779C9399B19AB88A3009F032 +S113201079C0892F80558031D0F48C918F7B8C933B +S11320208C918F7D8C937BB88C9180688C9383ED9D +S113203090E00197F1F700C000008C918F778C93AA +S11320408FE99FE00197F1F700C00000E6C09031EE +S1132050D8F4D8018C918F7B8C938C918F7D8C9349 +S11320604BB98C9180688C9383ED90E00197F1F7E4 +S113207000C000008C918F778C938FE99FE00197CB +S1132080F1F700C00000C9C0892F80548031D8F412 +S1132090D8018C918F7B8C938C918F7D8C936BB9B1 +S11320A08C9180688C9383ED90E00197F1F700C0E8 +S11320B000008C918F778C938FE99FE00197F1F763 +S11320C000C00000AAC09051903108F0A6C0D80109 +S11320D08C918F7B8C938C918F7D8C938BB88C910E +S11320E080688C9383ED90E00197F1F700C00000C5 +S11320F08C918F778C938FE99FE00197F1F700C063 +S113210000008BC09F30E1F4D8019C919F7B9C938D +S11321109C919F7D9C934BB99C9190689C93A3ED5B +S1132120B0E01197F1F700C00000D8019C919F77AF +S11321309C93AFE9BFE01197F1F700C0000059C0CC +S11321409F34E1F4D8019C919F7B9C939C919F7D4B +S11321509C936BB99C9190689C93A3EDB0E011970C +S1132160F1F700C00000D8019C919F779C93AFE9E0 +S1132170BFE01197F1F700C000003BC09F31E1F4CC +S1132180D8019C919F7B9C939C919F7D9C938BB841 +S11321909C9190689C93A3EDB0E01197F1F700C077 +S11321A00000D8019C919F779C93AFE9BFE0119701 +S11321B0F1F700C000001DC09F35D9F4D8019C91EF +S11321C09F7B9C939C919F7D9C937BB89C919068F2 +S11321D09C93A3EDB0E01197F1F700C00000D80183 +S11321E09C919F779C93AFE9BFE01197F1F700C0F2 +S11321F00000D8019C919F7B9C939C9190629C933E +S11322008BB98C9180688C9383ED90E00197F1F702 +S113221000C000008C918F778C93819181115ACCEE +S1132220BFEFE3EDF0E3B150E040F040E1F700C070 +S113223000000C94F50180E392E00E94A800089548 +S11322400790F691E02D19940F931F93CF93DF938A +S1132250CDB7DEB72E970FB6F894DEBF0FBECDBF55 +S11322600E891F8986E08C831A8309838FEF9FE789 +S11322709E838D83CE014A96AC01688D798DCE0103 +S113228001960E945311EF81F885E00FF11F10822F +S11322902E960FB6F894DEBF0FBECDBFDF91CF915F +S11322A01F910F9108952F923F924F925F926F92D8 +S11322B07F928F929F92AF92BF92CF92DF92EF92D2 +S11322C0FF920F931F93CF93DF93CDB7DEB72C9775 +S11322D00FB6F894DEBF0FBECDBF7C016B018A013F +S11322E0FC0117821682838181FFC6C188248394EE +S11322F0912C8C0E9D1EF7019381F60193FD85911F +S113230093FF81916F01882309F4B2C1853239F4B6 +S113231093FD859193FF81916F01853229F4B70173 +S113232090E00E946E13E7CF512C312C20E0203234 +S1132330A8F48B3261F028F4803251F0833271F4C6 +S11323400BC08D3239F0803349F4216028C02260FB +S1132350246025C0286023C0206121C027FD27C038 +S1132360382F30533A3078F426FF06C0FAE05F9EE7 +S1132370300D1124532E13C08AE0389E300D1124E1 +S1132380332E20620CC08E3221F426FD71C12064EC +S113239006C08C3611F4206802C0883641F4F60178 +S11323A093FD859193FF81916F018111C0CF982F87 +S11323B09554933018F09052933028F40C5F1F4FCB +S11323C0FFE3F9830DC0833631F0833771F0833531 +S11323D009F05EC023C0F801808189830E5F1F4F1E +S11323E044244394512C540115C03801F2E06F0E7B +S11323F0711CF801A080B18026FF03C0652D70E038 +S113240002C06FEF7FEFC5012C870E9463132C017C +S113241083012C856FE7262E222218C03801F2E0B2 +S11324206F0E711CF801A080B18026FF03C0652DDA +S113243070E002C06FEF7FEFC5012C870E94581334 +S11324402C012C8550E8252E222A830123FC1CC054 +S113245006C0B70180E290E00E946E133A94832D87 +S113246090E048165906A8F30FC0F50127FC8591A2 +S113247027FE81915F01B70190E00E946E13311035 +S11324803A94F1E04F1A51084114510471F7EDC028 +S1132490843611F0893641F5F80127FF07C06081C1 +S11324A07181828193810C5F1F4F08C060817181AB +S11324B0882777FD8095982F0E5F1F4F4FE6B42E27 +S11324C0B22297FF09C090958095709561957F4FD2 +S11324D08F4F9F4FF0E8BF2A2AE030E0A4010E940A +S11324E09A13A82EA81843C0853731F43FEEB32EB3 +S11324F0B2222AE030E024C099EFB92EB2228F36FE +S1132500B9F020F4883509F0B3C00DC0803721F04C +S1132510883709F0ADC002C020E1B22AB4FE0BC076 +S113252084E0B82A08C024FF09C0E6E0BE2A06C039 +S113253028E030E005C020E130E002C020E132E0D4 +S1132540F801B7FE07C060817181828193810C5FBD +S11325501F4F06C06081718180E090E00E5F1F4FC5 +S1132560A4010E949A13A82EA818FFE7BF22B6FE62 +S11325700BC02B2D2E7FA51450F4B4FE0AC0B2FC60 +S113258008C02B2D2E7E05C07A2C2B2D03C07A2C4F +S113259001C0752C24FF0DC0FE01EA0DF11D8081E0 +S11325A0803311F4297E09C022FF06C0739473940A +S11325B004C0822F867809F0739423FD14C020FF91 +S11325C00FC05A2C731460F4530C5718732C08C0A2 +S11325D0B70180E290E02C870E946E1373942C85DF +S11325E07314B0F304C0731410F4371801C0312C01 +S11325F024FF12C0B70180E390E02C870E946E1381 +S11326002C8522FF1EC021FF03C088E590E002C094 +S113261088E790E0B7010CC0822F867891F021FD05 +S113262002C080E201C08BE227FD8DE2B70190E099 +S11326300E946E1306C0B70180E390E00E946E13FF +S11326405A94A514C0F3AA94F401EA0DF11DB7013C +S1132650808190E00E946E13A110F5CF06C0B701EF +S113266080E290E00E946E133A943110F8CF43CE8A +S1132670F7012681378102C02FEF3FEFC9012C9665 +S11326800FB6F894DEBF0FBECDBFDF91CF911F917F +S11326900F91FF90EF90DF90CF90BF90AF909F90FD +S11326A08F907F906F905F904F903F902F90089500 +S11326B0FC010590615070400110D8F78095909509 +S11326C08E0F9F1F0895FC0161507040019001100E +S11326D0D8F7809590958E0F9F1F08950F931F93A1 +S11326E0CF93DF938C01EB018B8181FD03C00FEF4E +S11326F01FEF1AC082FF0DC02E813F818C819D8106 +S11327002817390764F4E881F9810193F983E88390 +S113271006C0E885F985802F1995892B41F78E81AC +S11327209F8101969F838E83C801DF91CF911F9172 +S11327300F910895FA01AA27283051F1203181F12F +S1132740E8946F936E7F6E5F7F4F8F4F9F4FAF4FB5 +S1132750B1E03ED0B4E03CD0670F781F891F9A1FC8 +S1132760A11D680F791F8A1F911DA11D6A0F711D7C +S1132770811D911DA11D20D009F468943F912AE088 +S1132780269F11243019305D3193DEF6CF01089570 +S1132790462F4770405D4193B3E00FD0C9F7F6CFA1 +S11327A0462F4F70405D4A3318F0495D31FD405269 +S11327B0419302D0A9F7EACFB4E0A69597958795FF +S11327C077956795BA95C9F70097610571050895DE +S11327D09B01AC010A2E069457954795379527958A +S11327E0BA95C9F7620F731F841F951FA01D089522 +S10727F0F894FFCF87 +S11327F420000A2048616C6C6F2048616E6E616829 +S1132804210030782530345800204C65640A203087 +S11328147825303258204B6F6E74726173740000E3 S9030000FC diff --git a/V2/Programm/Programm/Programm.cpp b/V2/Programm/Programm/Programm.cpp index 391facf..49ad87d 100644 --- a/V2/Programm/Programm/Programm.cpp +++ b/V2/Programm/Programm/Programm.cpp @@ -6,49 +6,46 @@ */ #include "peripheral.h" - #include -ledrotclass rot; + +/*ledrotclass rot; ledgruenclass gruen; -ledgelbclass gelb; +ledgelbclass gelb;*/ displayclass d; int main(void) { - d.setContrast(20); - d.setBacklight(true); - d.write_char(0); + char t[20]; + uint8_t led = 0xFA; + uint8_t cont = 150; while(1) - { - d.write_char('P'); - d.write_char('e'); - d.write_char('n'); - d.write_char('i'); - d.write_char('s'); - d.write_char(' '); - d.write_char('D'); - d.write_char('u'); - d.write_char(' '); - d.write_char('S'); - d.write_char('a'); - d.write_char('c'); - d.write_char('k'); + { + d.clear(); + d.setBacklight(led); + d.setContrast(cont); + d.lputs(" "); + d.printHex(led); + sprintf(t, " Led\n 0x%02X Kontrast", cont); + d.lputs(t); + d.lputs("\n Hallo Hannah!"); - gruen.on(); + _delay_ms(1000); + } + /*gruen.on(); _delay_ms(2000); gruen.off(); gelb.on(); _delay_ms(1000); gelb.off(); - + rot.on(); _delay_ms(2000); gelb.on(); _delay_ms(1000); gelb.off(); - rot.off(); - } + rot.off(); */ + } \ No newline at end of file diff --git a/V2/Programm/Programm/Programm.cppproj b/V2/Programm/Programm/Programm.cppproj index 16c031e..1ffaad8 100644 --- a/V2/Programm/Programm/Programm.cppproj +++ b/V2/Programm/Programm/Programm.cppproj @@ -28,14 +28,14 @@ 0 - - - - - - - - + + + + + + + + com.atmel.avrdbg.tool.ispmk2 ISP @@ -67,80 +67,80 @@ - True - True - True - True - True - True - - - NDEBUG - - - Optimize for size (-Os) - True - True - True - True - True - - - NDEBUG - - - Optimize for size (-Os) - True - True - True - - - libm - - - <segmentname>=<address>, for example .boot=0xff - + True + True + True + True + True + True + + + NDEBUG + + + Optimize for size (-Os) + True + True + True + True + True + + + NDEBUG + + + Optimize for size (-Os) + True + True + True + + + libm + + + <segmentname>=<address>, for example .boot=0xff + - True - True - True - True - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - True - True - - - DEBUG - - - Optimize (-O1) - True - True - Default (-g2) - True - - - libm - - - <segmentname>=<address>, for example .boot=0xff - Default (-Wa,-g) - + True + True + True + True + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + <segmentname>=<address>, for example .boot=0xff + Default (-Wa,-g) + @@ -171,6 +171,9 @@ compile + + compile + compile diff --git a/V2/Programm/Programm/io/Display.hpp b/V2/Programm/Programm/io/Display.hpp index c71f9a8..10e5af5 100644 --- a/V2/Programm/Programm/io/Display.hpp +++ b/V2/Programm/Programm/io/Display.hpp @@ -9,52 +9,93 @@ #ifndef DISPLAY_H_ #define DISPLAY_H_ +#include + template class Display { public: Display() { - pen::make_output(); prw::make_output(); prs::make_output(); PortData::dir(0xFF); - _delay_ms(100); - this->on(); - this->clear(); + this->init(); } + void setContrast(uint8_t level) { - poti.set(level); + poti.setValue(level); } - void setBacklight(bool level) { - if(level) { - backlight.on(); - } else { - backlight.off(); + void setContrastMax() { + poti.on(); + } + void setContrastMin() { + poti.off(); + } + + void setBacklightMax() { + backlight.on(); + } + void setBacklightMin() { + backlight.off(); + } + void setBacklight(uint8_t level) { + backlight.setValue(level); + } + + void off() { + this->setInstruction(0b00000000); + _delay_ms(2); + } + + void clear() { + this->setInstruction(0b00000001); + _delay_ms(2); + } + + void on() { + this->setInstruction(0b00001100); + _delay_ms(2); + } + + void printHex(uint16_t d) { + char t[8]; + sprintf(t, "0x%04X", d); + this->lputs(t); + } + + void lputs(const char *s) { /* print string on lcd (no auto linefeed) */ + register char c; + while ( (c = *s++) ) { + if(c == 0xE4) { //ä + lputc(0xE1); + } else if(c == 0xF6) { //ö + lputc(0xEF); + } else if(c == 0xFC) { //ü + lputc(0xF5); + } else if(c == 0xDF) { //ü + lputc(0xE2); + } else { + lputc(c); + } } } - void write_char(uint8_t data) { - prw::clear(); - prs::set(); - PortData::port(data); - pen::set(); - _delay_ms(1); - pen::clear(); - } - void clear() { - prw::clear(); - prs::clear(); - PortData::port(0b00000001); - pen::set(); - _delay_ms(1); - pen::clear(); - } - void on() { - prw::clear(); - prs::clear(); - PortData::port(0b00001100); - pen::set(); - _delay_ms(1); - pen::clear(); + + void lputc(uint8_t c) { + uint8_t pos = this->getAddress(); // read busy-flag and address counter + if (c == '\n') { + this->newline(pos); + } else { + if ( pos == 0x0F ) { + this->setLine(2); + } else if ( pos == 0x4F ) { + this->setLine(3); + } else if ( pos == 0x1F ) { + this->setLine(4); + } else if ( pos == 0x5F ) { + this->setLine(1); + } + this->setChar(c); + } } private: Mcp4151 poti; @@ -62,17 +103,105 @@ class Display { const typedef avrlib::pin pen; const typedef avrlib::pin prw; const typedef avrlib::pin prs; - void ramenablemode() { - prs::set(); + + void init() { + _delay_ms(16); + this->setInstruction(0x38); + _delay_ms(5); + this->toggleE(); + _delay_us(120); + this->toggleE(); + _delay_us(120); + this->toggleE(); + _delay_us(120); + + this->off(); + this->clear(); + this->entrymode(); + + _delay_ms(100); + this->on(); + this->clear(); + + this->setContrastMax(); + this->setBacklightMax(); } - void ramdisablemode() { - prs::clear(); + + void entrymode() { + this->setInstruction(0b00000100); } - void writemode() { + + void setInstruction(uint8_t data) { + this->write(false, data); + } + + void setChar(uint8_t data) { + this->write(true, data); + } + + void write(bool rs, uint8_t data) { prw::clear(); + if(rs) { + prs::set(); + } else { + prs::clear(); + } + PortData::port(data); + this->toggleE(); } - void readmode() { - prw::set(); + + uint8_t getRam() { + return this->read(true); + } + + uint8_t getAddress() { + return this->read(false); + } + + uint8_t read(bool rs) { + prw::set(); /* RW=1 read mode */ + if (rs) { + prs::set(); /* RS=1: read data */ + } else { + prs::clear(); /* RS=0: read busy flag */ + } + PortData::port(0x00); + PortData::dir(0x00); + this->toggleE(); + uint8_t data = PortData::pin(); + PortData::dir(0xFF); + return data; + } + + void setLine(uint8_t l) { + switch(l) { + case 1: this->setInstruction(0b10000000); break; //0x00-0x0F + case 2: this->setInstruction(0b11000000); break; //0x40-0x4F + case 3: this->setInstruction(0b10010000); break; //0x10-0x1F + case 4: this->setInstruction(0b11010000); break; //0x50-0x5F + } + _delay_ms(1); + } + + void toggleE() { + pen::set(); + _delay_us(53); + pen::clear(); + } + + void newline(uint8_t pos) { + if ( pos >= 0x50 && pos <= 0x5F ) { + return this->setLine(1); + } + if ( pos >= 0x00 && pos <= 0x0F) { + return this->setLine(2); + } + if ( pos >= 0x40 && pos <= 0x4F) { + return this->setLine(3); + } + if ( pos >= 0x10 && pos <= 0x1F) { + return this->setLine(4); + } } }; diff --git a/V2/Programm/Programm/io/LedPWM.hpp b/V2/Programm/Programm/io/LedPWM.hpp new file mode 100644 index 0000000..59c3e4b --- /dev/null +++ b/V2/Programm/Programm/io/LedPWM.hpp @@ -0,0 +1,53 @@ +/* + * LedPWM.hpp + * + * Created: 13.05.2014 12:11:42 + * Author: netz + */ + + +#ifndef LEDPWM_H_ +#define LEDPWM_H_ + + +#include "hardware/pin.hpp" + +template +class LedPWM { + public: + LedPWM() { + init(); + } + void on() { + this->setValue(0xFF); + } + void off() { + this->setValue(0); + } + void setValue(uint8_t wert) { + OCR5AL = wert; + } + private: + void init() { + led::make_output(); + this->init_timer(); + off(); + } + void init_timer() { + // Timer/Counter 5 initialization + // Clock source: System Clock + // Clock value: 8000,000 kHz + // Mode: Fast PWM top=0x00FF + // OC5A output: Inverted PWM + // Timer Period: 0,032 ms + // Output Pulse(s): + // OC5A Period: 0,032 ms + TCCR5A=(1< led; +}; + + +#endif /* LEDPWM_H_ */ \ No newline at end of file diff --git a/V2/Programm/Programm/io/mcp4151.hpp b/V2/Programm/Programm/io/mcp4151.hpp index 2e94d0f..2ece43f 100644 --- a/V2/Programm/Programm/io/mcp4151.hpp +++ b/V2/Programm/Programm/io/mcp4151.hpp @@ -16,7 +16,7 @@ template init(); } @@ -32,14 +32,15 @@ class Mcp4151 { this->send_soft(value & 0xff); this->CSOff(); } - void set(uint8_t v) { - this->digitalPotWrite(MIN+v); + void setValue(uint8_t v) { + uint16_t wert = (uint16_t)( this->MIN + (((float)(this->MAX - this->MIN ) / 0xFF) * v)); + this->digitalPotWrite(wert); } - void set_max() { - this->digitalPotWrite(MAX); + void on() { + this->digitalPotWrite(this->MAX); } - void set_min() { - this->digitalPotWrite(MIN); + void off() { + this->digitalPotWrite(this->MIN); } uint8_t read() { sdi::make_input(); diff --git a/V2/Programm/Programm/peripheral.h b/V2/Programm/Programm/peripheral.h index 1929dfc..ee4be77 100644 --- a/V2/Programm/Programm/peripheral.h +++ b/V2/Programm/Programm/peripheral.h @@ -31,7 +31,9 @@ typedef Led< avrlib::porth, //LED an PORTB PINH5 //Rot > ledrotclass; -typedef Led< + +#include "io/LedPWM.hpp" +typedef LedPWM< avrlib::portl, PINL3 > ledlcdclass;