From 7fa07e9e57fe170ee4555daf59a0b1ba09e6f991 Mon Sep 17 00:00:00 2001 From: sergeyyarkov Date: Sat, 5 Aug 2023 17:28:52 +0300 Subject: [PATCH] show negative numbers --- build/default/production/dstemperature.o | Bin 3468 -> 3512 bytes build/default/production/main.o | Bin 4552 -> 4724 bytes .../attiny45v_thermometer.X.production.elf | Bin 8144 -> 8228 bytes .../attiny45v_thermometer.X.production.hex | 173 +- .../attiny45v_thermometer.X.production.lss | 1422 +++++++++-------- .../attiny45v_thermometer.X.production.map | 92 +- dstemperature.c | 14 +- dstemperature.h | 15 +- main.c | 37 +- 9 files changed, 910 insertions(+), 843 deletions(-) diff --git a/build/default/production/dstemperature.o b/build/default/production/dstemperature.o index 77e81a1e3048b7fee7e9da9b81ce5b71b5cc23c4..8d29a79707eb860c1b5cdbee6760719cddb46783 100644 GIT binary patch delta 521 zcmYk0O-lk%6o${$5lhFAg0id_KVkxjj1rOrCn$20BeW?J`U4Ry-RT5DrO?!6f*|M* zv@u(>2%4oUaao&~!ak%$E-WJYIujRZ@!sc|cg{UC1@F066-c7!TOteb+QzLf6_#=m zX@U+=AyC~4n7*y3MnVaWPL7TTIDC$1qV_-0{BS;}soGZdP}~lY2Iz`W$WLntdP$ZO z$Is$j)YwZ2QkZQ9edq`D-Is%U&`?sUB((bYW4^X;jHPmt+Uk5OaT)afol@Eov=Dzu z;pVKpWdIn&Slj@9q=2!aSLm&Mij?UteG@nC<-`hN5(>mQIetiM7U z7<1p9Z zlSyb|{L?lUFsU#x@@<~V;?B&tYw}%oamE9azp`5c*@hhA^(>4G3@Ho@3`_zH3|T;W z36#wN6h8!HGXuqM0O<=*@l!zh5>)&OkiG_Gn*ixsQ1%BP{Q`(VW@fb=^k z8>IdZ1A`e@(KjIHA5?+?XfYEIgDeIqVuP~%fNUNpd)a1DPHrZ~2a^@K{TVeT7Xrze z$p?Ytk;#HQ{)`5b6My4%ueVa=K;tnF&hLqSwTL`0>SFTJ=51C64B>>&cv^`Hi^ z-Jd=LMFdeIL77pBf%m0cWHlmsh{#_cAyRs!QLBjho_R+jI&kjybIv_~?(g2445q8% zmCEJCL#yxcj!Qv@wMzEZB??Gqq$S5VOFiSY(Ia&y3moaLT4#Tvzq3E#V&+xjwlQYB zG$xHXRr++lRl3O$vQdCN07S^dzRJS*f?+bctX-6QNAbE zDU*I~snWentz#B5yJTFR97c>Ta-x8aI@O1><=@>e5`~`LdhCA#eVj6 zA!JQZA1h}+?U=*^FF{?-C=UG-Zx^M7v*Mb&Ow=se>yAd-TiQ+^JKoaTwto23BB#=! zphsECSQWI$=1OP@TqS_5gj0lD!gA;axB}h*-D&e~=q@!L(oi8n?L*YQSlM9}8~S{0=&3Gu7O&xezt?^7skuchNCm zNqCXXFTkosS;k($X>k#n-`Y&eq|NuCAM-c^&dvM*&dpTNLvwB+=LFM3Ptf_@_KnwI zAKkDQ)2F2($}b1!hE{-cLs#e3Zzr~2?`~rBHlw$}<^wbbuF|)LkqCG3I=)71E-tIA z&L*=TP_0?u1_(_dYaDJb-ly<~;_2dgo)XKJ)bnZ4hU-x=f@@s3w0b@v_G|Tu(c7Hd4gf=4dKHiF3>1qQPciy-l(1VI@>cUH(SuZr81k0=0S1E_IRF3v delta 1059 zcmZuvZ%9*76hHSp_s@TCZ_{N_Y;)#7=2Ws00`o&eeaNk%ps*xZpwNFZ3WS;KgPFnG zyRHaCq(uCbgrxWrK@5t z#UZ4MA5}gk1}E#U59@#~5Ni<9y>-UOggT?f)ug(tuB#HY(>P61NZ8eP)1RlOylF4o zCFxT#Lck= zUSN>O#y3L^LH58#QXw|yov-L+x62`AX251Wy-Z<4q;6w_=^EjMAUf}X=mJZzMd^?I zN6E?-c0I+IKh<(0e5Mu>p9WtIO6_)EHV3n<=t+88Cinl(^mIUU*7Lo#AwP+v@Fy9L zhwWi0ysj)ONhPk#C=-e?!Y9I~5uhi;-IK%ON#U3S04z`jNyMC)kt}L~gYfq@5D~c@ zLbpH#7`2#de82ObcqcugUn*&D?+SEYIeR|P(b)*}K*%kaDj%Te=4y6;xeMY$kmHLQ6U*kGX%OxN2(9^j3=@VQB zsLt#YVn%w@+$t;@>6p2OIOqqnOV^EERMB6^RT?2x@I~KQfz$zZ<jpc6s?zo6t4yW&UHOXwspx`;@d671R}n;^w|g1aX_# zyrgJeGTeK;d6n8hSt$%;Y|e^XiP*OfThp!WTZ)JxG&iGk-JIQv4WtgF-n1F?g9qL@ zzwZU-iUqJw(bF1cLvTr~i5(!qc(l67ORTPs7p0 zTafGj(EkxVSBi3aS(15Ks(ql24WXN`dEi%ef}LX1&FPkO^Y?A5>_2RLZPgmX8`aNg z2DY^JkX^@{tmaEQYKy0oLMops=x5+`F2hE#31{k!xDEU944i^*Ehb~PNPJ^45u1VU ztsKX_Wb_maEebInXRIeQ9jU>32@Le{x zDG8rf$&>9L82)9jp|BhC8oqOAGc+i@%N@y?+`nsvex_gNUoF}#OjS=QM&vuz|F2_N zijvy7zZ1T%_T<&HqiOx9FS2|fms9`pl{IU&MPEYm)KedfiF$bkzPfc=rarD3@t3NK za%ld_(v|nWHvG7eTADWeJU@L5FF-iFa@&jd!Z!k&Tbu0Ey+{qbqqOr;PQ(#elp~*vc!WK*+Up8;H?SPdJH!59 zB$zJ&1%L(kS}yLcExw`%yokH`7H%K+th=swSb1Ld$UDD|q&Hbsiw|t8^(j0)o$Qjk zV{!h>aWCh`voLNLVWRSoETVg~2TmYUH4_^9({rZ-OJPUQUzvGceR^}3a^~Uiy%x-e z#h|0YkE(&Y$>kxuHyjCy6;4u}{ejS^+MKw!g=QyDRF~>ZBKbGB4T3=eqKI!`oL6_S zKM+>gkzXhI4Ro!6fj3c}_&Eg44ZGV3TMr<30s^p);IcVL-bC`>&|Wj=+*Jj@<5$NB zdy;5+$txoT!KWlYi+FQc?VOn-K5ORaC}DdMZRw<5s6zWKhbTLZ#x1NVqa$6UvpjEs z0^n_ww=nQ?1g#9^)ghOah2yBl8lZn6#XclkPr;v%sd3Ddshr^;BR?kVjH7Ff49uW> zBSXJQ1K>imt<&@jL9G?}8iI!>du)HuWGA29O*v{%uf4S#PLdF=LF4vTcpA;xJ@5i5 i5T8O#j0b*!x`@x9qr_`SVm!9*YyjAZ+G8WPZP|a(vzKxJ delta 964 zcmZvaZAep57{|}K^G*$GySc4Jy1O|ttF`MY!LW20L4HZ;MT*K%81xFg$S?}rv=`Tk z?)C9%3!%saKLug*0+ox1q|}>65Cz_2*!zpuS{hNTGZQlCT<-rq|NnFD?>ryQCGX=R z(ava@QdSmQtw*R@Dk;+C_Svq4d2Dx(lerRGra8!aqLEJQ>wkm=->%&KY}Z(=kRrn~ zoKbVl9do1RlGs+RAbJYd7lQYQmi#%Lq>Vc#X-GDW`-n3m#>rUbQoHa2wcS0BRV1ip>v^C>Tt(l-7;oNdDIoG6+{w{MLFP)%n8j;)k>qnn=?ZVgO0L*SM&~!p(sMV zc&%FROpO&r=LYkGYlIcTLmY9Y#WqD{`Gh?AjfCsNIW?T-k@LZ+FTkh3r{_zA4<}wm z$YkPWWp;c@R2V+~uJNDzq9VKr4>kOgomC7?t%}1}RNCFqqaRD-meQN_XJK@d7H)W& z&O0h6rB`XXXOh29{Q)qWcIA#(Y4|NE+Xg(cb zw43&_>HZw*jSNQB)Nh8TlvNGiOaj%}W`XsO6E>O)m{A=xnJbuqBp5Zjxq3=6PLO&T zgfbw{!s9|%Z{eA@4EQZ>yc*gpMQjsou7P)!!}thnpK+e6ni$bek35)!&}uMSd0Yi~ zR-U!82u*{H)&lMe?PO2jlWAJs(Pn+Y(wTxbC)=Gsz~ diff --git a/dist/default/production/attiny45v_thermometer.X.production.hex b/dist/default/production/attiny45v_thermometer.X.production.hex index 7323372..45d9225 100644 --- a/dist/default/production/attiny45v_thermometer.X.production.hex +++ b/dist/default/production/attiny45v_thermometer.X.production.hex @@ -1,7 +1,7 @@ :1000000013C01AC019C018C017C016C015C014C03C :1000100013C012C011C010C00FC00EC00DC03F06EB :100020005B4F666D7D077F6F11241FBECFE5D1E06A -:10003000DEBFCDBF30D11EC3E3CFF894C09AC29AC1 +:10003000DEBFCDBF4FD148C3E3CFF894C09AC29A78 :100040008DE08A95F1F70000C0988DE08A95F1F770 :100050000000C29878940895F894C298C0988DE0F2 :100060008A95F1F70000C29A8DE08A95F1F70000B9 @@ -19,87 +19,92 @@ :100120000895CF93DF93C82FD62F80E4D8DF85DFE3 :100130008D2F806CA0DF8C2F9EDF8EDFDF91CF9123 :10014000089562E080E4EDDF61E080E4EADF60E0F2 -:1001500080E4E7DF089521E08A30910550F021E046 -:10016000EAE0F0E0BF015FD2CB012F5F6A3071059A -:10017000C8F7822F0895AF92BF92CF92DF92EF928D -:10018000FF920F931F93CF93DF9300D01F92CDB7B1 -:10019000DEB7B62EF42E009749F461113BC08C01F6 -:1001A000883E93407CF007EE13E00CC08C01883E43 -:1001B00023E0920714F007EE13E099231CF4119545 -:1001C00001951109C801C7DFA82E2AE030E0C80157 -:1001D000B9013DD28B83CB01B90139D28A83C801E1 -:1001E00064E670E034D2CB01B90131D2898331E0C9 -:1001F000A31691F083E0D82EDA1882E08D15A8F1CD -:1002000010E000E0C12C82E090E09C012F19310940 -:10021000790118C08C01D3CFDA2CF2CFE1E0F0E005 -:10022000EC0FFD1FED0DF11DE081F0E0E25EFF4FF0 -:1002300084916C2D76DFD394C3940F5F1F4F82E0BF -:100240008D15A0F0E016F10649F733E0A31631F35F -:10025000E1E0F0E0EC0FFD1FED0DF11DE081F0E0BD -:10026000E25EFF4F84918068E4CFC12CEB2DF0E07B -:10027000E25EFF4F84916C2D54DF0F900F900F9032 -:10028000DF91CF911F910F91FF90EF90DF90CF9072 -:10029000BF90AF900895CF93DF93CDB7DEB764974B -:1002A0000FB6F894DEBF0FBECDBF6BE0CE01019656 -:1002B000E5D028E042E062E080E019DF42DF04E6BA -:1002C00010E001C03EDFCE01019613D18111FACFBB -:1002D000CE01019621D18B899C89B801A4D141E03E -:1002E00089899A8948DFEFCFF894BC9A8FEB93E025 -:1002F0000197F1F700C00000BC989AEB9A95F1F7CE -:1003000000C086B3E3E3F3E03197F1F700C00000EB -:1003100078948295817091E08927089598E00DC0C6 -:10032000BC9A20EA2A95F1F7BC982AE12A95F1F7C0 -:1003300000C078948695915069F0F89480FFF0CFD2 -:10034000BC9A20E12A95F1F7BC982AEA2A95F1F7A0 -:1003500000C0EFCF089598E080E007C022E92A9519 -:10036000F1F700C07894915071F0F8948695BC9A9A -:1003700020E12A95F1F7BC9828E12A95F1F7B49B82 -:10038000EDCF8068EBCF0895AFDF811101C00895F4 -:100390008CECC4DF81E0FBCF0F931F93CF93DF93EF -:1003A0008C01A2DF811105C0DF91CF911F910F91C8 -:1003B000089583E3B3DFE801085F1F4FCCDF899323 -:1003C000C017D107D9F781E0EFCFFC01680F791F83 -:1003D00080E02CE80BC08695915029F080FFFBCF80 -:1003E00086958227F9CFE617F70721F091918927A3 -:1003F00098E0F4CF0895EF92FF920F931F93CF935D -:10040000DF937C01C1DF8EEB89DFE7018701085FA5 -:100410001F4FA1DF8993C017D107D9F768E070E0BB -:10042000C701D3DFC82F97DF91E0C81390E0892F71 -:10043000DF91CF911F910F91FF90EF90089554DFBE -:10044000811101C00895A0DF88E468DF8FE19EE498 -:100450000197F1F700C0000081E0F4CFCF93DF9364 -:10046000EC0192DF8EE45ADF888158DF898156DF04 -:100470008A8154DFE4DFDF91CF910895FF920F93DB -:100480001F93CF93DF9300D01F92CDB7DEB78C01BF -:10049000F62EB1DFF8018281898383818A83FAE0B5 -:1004A000FF16B9F08BE0F81689F0E9E0FE16A1F02E -:1004B0008FE78B83CE010196D1DF0F900F900F90C5 -:1004C000DF91CF911F910F91FF9008958FE58B835E -:1004D000F1CF8FE38B83EECF8FE18B83EBCF04DF04 -:1004E000811101C008958CEC19DF84E417DF81E0ED -:1004F000F9CFCF93DF93EC01F7DE811104C081E0E7 -:10050000DF91CF910895CE01089646DF81E098856E -:100510009832B1F780E0F4CFCF93DF93EC01DFDFC7 -:10052000882309F456C02C81822F90E08095909505 -:1005300080769927892B09F04FC02FE78FE492E14D -:10054000215080409040E1F700C00000CE0153DF11 -:10055000882309F43EC029813881522F432FCA01D4 -:1005600099230CF45BC095958795959587959595FE -:10057000879595958795998B888B287F11F0319574 -:10058000388388818F70282F30E0C901880F991F28 -:1005900082959295907F9827807F9827821B930B56 -:1005A000880F991F880F991F820F931F880F991F1B -:1005B000880F991F880F991F9C0199238CF13595FD -:1005C00027953595279535952795359527953B8B17 -:1005D0002A8BDF91CF91089526FF0AC02FEB87E287 -:1005E00099E0215080409040E1F700C00000AECF7C -:1005F00025FF0AC02FEF86E994E02150804090400B -:10060000E1F700C00000A2CF2FE78BE492E0215079 -:1006100080409040E1F700C0000098CF0F96A3CF34 -:10062000215F3F4FCCCFAA1BBB1B51E107C0AA1FC4 -:10063000BB1FA617B70710F0A61BB70B881F991F83 -:100640005A95A9F780959095BC01CD01089597FB27 -:10065000072E16F4009406D077FD08D0E4DF07FCDF -:1006600005D03EF4909581959F4F089570956195C2 -:080670007F4F0895F894FFCFBD +:1001500080E4E7DF0895992384F021E08A30910557 +:1001600054F021E0EAE0F0E0BF019BD2CB012F5F29 +:100170006A307105CCF7822F089591958195910988 +:10018000ECCF9F92AF92BF92CF92DF92EF92FF920D +:100190000F931F93CF93DF9300D01F92CDB7DEB79D +:1001A000D62EA42EB92EBB1CBB24BB1CB22AE82E13 +:1001B000F92E88EEE81683E0F80634F00F2EF7EEFD +:1001C000EF2EF3E0FF2EF02DBB2009F47BC0F1945D +:1001D000E194F108C701BFDFC82E82E011E0C81228 +:1001E00010E02AE030E0C701B9015BD28B83CB017C +:1001F000B90157D28A83C70164E670E052D2CB01BD +:10020000B9014FD2898381E0C81679F003E00C1957 +:10021000033008F041C082E090E07C01EA18F10868 +:100220006894AA24A7F8912C1AC00C2DF4CF892D1C +:10023000B1102AC08A2D28C0E1E0F0E0EC0FFD1FCC +:10024000E00FF11DE081F0E0E25EFF4F8491612F4D +:1002500068DF1123D9F00F5F1F5F0330E8F41E152C +:100260001F0451F783E0C81639F3E1E0F0E0EC0F2A +:10027000FD1FE00FF11DE081F0E0E25EFF4FE49131 +:1002800082E0C816A1F28A2D8E2BE1CFBB2019F394 +:10029000692D80E446DFDFCFED2DF0E0E25EFF4F19 +:1002A0008491612F3EDF0F900F900F90DF91CF91DF +:1002B0001F910F91FF90EF90DF90CF90BF90AF9084 +:1002C0009F900895C70147DFC82E82E0C81288CFEB +:1002D00010E087CFCF93DF93CDB7DEB765970FB62A +:1002E000F894DEBF0FBECDBF6BE0CE010196E6D025 +:1002F00028E042E062E080E0FADE23DF04E610E07E +:1003000001C01FDFCE01019614D18111FACFCE01B9 +:10031000019622D18B899C89B801AFD12D8941E00A +:1003200089899A892EDFEECFF894BC9A8FEB93E0FF +:100330000197F1F700C00000BC989AEB9A95F1F78D +:1003400000C086B3E3E3F3E03197F1F700C00000AB +:1003500078948295817091E08927089598E00DC086 +:10036000BC9A20EA2A95F1F7BC982AE12A95F1F780 +:1003700000C078948695915069F0F89480FFF0CF92 +:10038000BC9A20E12A95F1F7BC982AEA2A95F1F760 +:1003900000C0EFCF089598E080E007C022E92A95D9 +:1003A000F1F700C07894915071F0F8948695BC9A5A +:1003B00020E12A95F1F7BC9828E12A95F1F7B49B42 +:1003C000EDCF8068EBCF0895AFDF811101C00895B4 +:1003D0008CECC4DF81E0FBCF0F931F93CF93DF93AF +:1003E0008C01A2DF811105C0DF91CF911F910F9188 +:1003F000089583E3B3DFE801085F1F4FCCDF8993E3 +:10040000C017D107D9F781E0EFCFFC01680F791F42 +:1004100080E02CE80BC08695915029F080FFFBCF3F +:1004200086958227F9CFE617F70721F09191892762 +:1004300098E0F4CF0895EF92FF920F931F93CF931C +:10044000DF937C01C1DF8EEB89DFE7018701085F65 +:100450001F4FA1DF8993C017D107D9F768E070E07B +:10046000C701D3DFC82F97DF91E0C81390E0892F31 +:10047000DF91CF911F910F91FF90EF90089554DF7E +:10048000811101C00895A0DF88E468DF8FE19EE458 +:100490000197F1F700C0000081E0F4CFCF93DF9324 +:1004A000EC0192DF8EE45ADF888158DF898156DFC4 +:1004B0008A8154DFE4DFDF91CF910895FF920F939B +:1004C0001F93CF93DF9300D01F92CDB7DEB78C017F +:1004D000F62EB1DFF8018281898383818A83FAE075 +:1004E000FF16B9F08BE0F81689F0E9E0FE16A1F0EE +:1004F0008FE78B83CE010196D1DF0F900F900F9085 +:10050000DF91CF911F910F91FF9008958FE58B831D +:10051000F1CF8FE38B83EECF8FE18B83EBCF04DFC3 +:10052000811101C008958CEC19DF84E417DF81E0AC +:10053000F9CFCF93DF93EC01F7DE811104C081E0A6 +:10054000DF91CF910895CE01089646DF81E098852E +:100550009832B1F780E0F4CFCF93DF93EC01DFDF87 +:10056000882309F45DC02C81822F90E080959095BE +:1005700080769927892B09F056C02FE73FE482E166 +:10058000215030408040E1F700C00000CE0153DF31 +:10059000882309F445C0898190E04881242F382FB1 +:1005A00033230CF462C035952795359527953595FD +:1005B000279535952795398B288B80959095887F41 +:1005C0009927892B09F054C081E08C8B4195488391 +:1005D00088818F70282F30E0C901880F991F82957C +:1005E0009295907F9827807F9827821B930B880F86 +:1005F000991F880F991F820F931F880F991F880FCB +:10060000991F880F991F9C019923A4F1359527956F +:100610003595279535952795359527953B8B2A8BCD +:10062000DF91CF91089526FF0AC09FEB27E239E0C2 +:10063000915020403040E1F700C00000A7CF25FFD7 +:100640000AC08FEF96E924E0815090402040E1F706 +:1006500000C000009BCF3FE78BE492E03150804028 +:100660009040E1F700C0000091CF215F3F4F9BCF4A +:100670001C8AAECF215F3F4FC9CFAA1BBB1B51E1E4 +:1006800007C0AA1FBB1FA617B70710F0A61BB70B02 +:10069000881F991F5A95A9F780959095BC01CD01A7 +:1006A000089597FB072E16F4009406D077FD08D026 +:1006B000E4DF07FC05D03EF4909581959F4F0895A7 +:0C06C000709561957F4F0895F894FFCF6E :00000001FF diff --git a/dist/default/production/attiny45v_thermometer.X.production.lss b/dist/default/production/attiny45v_thermometer.X.production.lss index f2e4d30..4bc8f3d 100644 --- a/dist/default/production/attiny45v_thermometer.X.production.lss +++ b/dist/default/production/attiny45v_thermometer.X.production.lss @@ -3,21 +3,21 @@ dist/default/production/attiny45v_thermometer.X.production.elf: file format Sections: Idx Name Size VMA LMA File off Algn - 0 .text 00000678 00000000 00000000 00000054 2**1 + 0 .text 000006cc 00000000 00000000 00000054 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .data 00000000 00800060 00800060 000006cc 2**0 + 1 .data 00000000 00800060 00800060 00000720 2**0 CONTENTS, ALLOC, LOAD, DATA - 2 .comment 00000030 00000000 00000000 000006cc 2**0 + 2 .comment 00000030 00000000 00000000 00000720 2**0 CONTENTS, READONLY - 3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 000006fc 2**2 + 3 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000750 2**2 CONTENTS, READONLY - 4 .debug_info 00000420 00000000 00000000 00000738 2**0 + 4 .debug_info 00000420 00000000 00000000 0000078c 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_abbrev 000003e8 00000000 00000000 00000b58 2**0 + 5 .debug_abbrev 000003e8 00000000 00000000 00000bac 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_line 000000f2 00000000 00000000 00000f40 2**0 + 6 .debug_line 000000f2 00000000 00000000 00000f94 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_str 00000169 00000000 00000000 00001032 2**0 + 7 .debug_str 00000169 00000000 00000000 00001086 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -53,8 +53,8 @@ Disassembly of section .text: 2e: d1 e0 ldi r29, 0x01 ; 1 30: de bf out 0x3e, r29 ; 62 32: cd bf out 0x3d, r28 ; 61 - 34: 30 d1 rcall .+608 ; 0x296
- 36: 1e c3 rjmp .+1596 ; 0x674 <_exit> + 34: 4f d1 rcall .+670 ; 0x2d4
+ 36: 48 c3 rjmp .+1680 ; 0x6c8 <_exit> 00000038 <__bad_interrupt>: 38: e3 cf rjmp .-58 ; 0x0 <__vectors> @@ -216,708 +216,750 @@ Disassembly of section .text: 154: 08 95 ret 00000156 : - 156: 21 e0 ldi r18, 0x01 ; 1 - 158: 8a 30 cpi r24, 0x0A ; 10 - 15a: 91 05 cpc r25, r1 - 15c: 50 f0 brcs .+20 ; 0x172 <__stack+0x13> - 15e: 21 e0 ldi r18, 0x01 ; 1 - 160: ea e0 ldi r30, 0x0A ; 10 - 162: f0 e0 ldi r31, 0x00 ; 0 - 164: bf 01 movw r22, r30 - 166: 5f d2 rcall .+1214 ; 0x626 <__udivmodhi4> - 168: cb 01 movw r24, r22 - 16a: 2f 5f subi r18, 0xFF ; 255 - 16c: 6a 30 cpi r22, 0x0A ; 10 - 16e: 71 05 cpc r23, r1 - 170: c8 f7 brcc .-14 ; 0x164 <__stack+0x5> - 172: 82 2f mov r24, r18 - 174: 08 95 ret + 156: 99 23 and r25, r25 + 158: 84 f0 brlt .+32 ; 0x17a <__stack+0x1b> + 15a: 21 e0 ldi r18, 0x01 ; 1 + 15c: 8a 30 cpi r24, 0x0A ; 10 + 15e: 91 05 cpc r25, r1 + 160: 54 f0 brlt .+20 ; 0x176 <__stack+0x17> + 162: 21 e0 ldi r18, 0x01 ; 1 + 164: ea e0 ldi r30, 0x0A ; 10 + 166: f0 e0 ldi r31, 0x00 ; 0 + 168: bf 01 movw r22, r30 + 16a: 9b d2 rcall .+1334 ; 0x6a2 <__divmodhi4> + 16c: cb 01 movw r24, r22 + 16e: 2f 5f subi r18, 0xFF ; 255 + 170: 6a 30 cpi r22, 0x0A ; 10 + 172: 71 05 cpc r23, r1 + 174: cc f7 brge .-14 ; 0x168 <__stack+0x9> + 176: 82 2f mov r24, r18 + 178: 08 95 ret + 17a: 91 95 neg r25 + 17c: 81 95 neg r24 + 17e: 91 09 sbc r25, r1 + 180: ec cf rjmp .-40 ; 0x15a -00000176 : - 176: af 92 push r10 - 178: bf 92 push r11 - 17a: cf 92 push r12 - 17c: df 92 push r13 - 17e: ef 92 push r14 - 180: ff 92 push r15 - 182: 0f 93 push r16 - 184: 1f 93 push r17 - 186: cf 93 push r28 - 188: df 93 push r29 - 18a: 00 d0 rcall .+0 ; 0x18c - 18c: 1f 92 push r1 - 18e: cd b7 in r28, 0x3d ; 61 - 190: de b7 in r29, 0x3e ; 62 - 192: b6 2e mov r11, r22 - 194: f4 2e mov r15, r20 - 196: 00 97 sbiw r24, 0x00 ; 0 - 198: 49 f4 brne .+18 ; 0x1ac - 19a: 61 11 cpse r22, r1 - 19c: 3b c0 rjmp .+118 ; 0x214 - 19e: 8c 01 movw r16, r24 - 1a0: 88 3e cpi r24, 0xE8 ; 232 - 1a2: 93 40 sbci r25, 0x03 ; 3 - 1a4: 7c f0 brlt .+30 ; 0x1c4 - 1a6: 07 ee ldi r16, 0xE7 ; 231 - 1a8: 13 e0 ldi r17, 0x03 ; 3 - 1aa: 0c c0 rjmp .+24 ; 0x1c4 - 1ac: 8c 01 movw r16, r24 - 1ae: 88 3e cpi r24, 0xE8 ; 232 - 1b0: 23 e0 ldi r18, 0x03 ; 3 - 1b2: 92 07 cpc r25, r18 - 1b4: 14 f0 brlt .+4 ; 0x1ba - 1b6: 07 ee ldi r16, 0xE7 ; 231 - 1b8: 13 e0 ldi r17, 0x03 ; 3 - 1ba: 99 23 and r25, r25 - 1bc: 1c f4 brge .+6 ; 0x1c4 - 1be: 11 95 neg r17 - 1c0: 01 95 neg r16 - 1c2: 11 09 sbc r17, r1 - 1c4: c8 01 movw r24, r16 - 1c6: c7 df rcall .-114 ; 0x156 - 1c8: a8 2e mov r10, r24 - 1ca: 2a e0 ldi r18, 0x0A ; 10 - 1cc: 30 e0 ldi r19, 0x00 ; 0 - 1ce: c8 01 movw r24, r16 - 1d0: b9 01 movw r22, r18 - 1d2: 3d d2 rcall .+1146 ; 0x64e <__divmodhi4> - 1d4: 8b 83 std Y+3, r24 ; 0x03 - 1d6: cb 01 movw r24, r22 - 1d8: b9 01 movw r22, r18 - 1da: 39 d2 rcall .+1138 ; 0x64e <__divmodhi4> - 1dc: 8a 83 std Y+2, r24 ; 0x02 - 1de: c8 01 movw r24, r16 - 1e0: 64 e6 ldi r22, 0x64 ; 100 - 1e2: 70 e0 ldi r23, 0x00 ; 0 - 1e4: 34 d2 rcall .+1128 ; 0x64e <__divmodhi4> - 1e6: cb 01 movw r24, r22 +00000182 : + 182: 9f 92 push r9 + 184: af 92 push r10 + 186: bf 92 push r11 + 188: cf 92 push r12 + 18a: df 92 push r13 + 18c: ef 92 push r14 + 18e: ff 92 push r15 + 190: 0f 93 push r16 + 192: 1f 93 push r17 + 194: cf 93 push r28 + 196: df 93 push r29 + 198: 00 d0 rcall .+0 ; 0x19a + 19a: 1f 92 push r1 + 19c: cd b7 in r28, 0x3d ; 61 + 19e: de b7 in r29, 0x3e ; 62 + 1a0: d6 2e mov r13, r22 + 1a2: a4 2e mov r10, r20 + 1a4: b9 2e mov r11, r25 + 1a6: bb 1c adc r11, r11 + 1a8: bb 24 eor r11, r11 + 1aa: bb 1c adc r11, r11 + 1ac: b2 2a or r11, r18 + 1ae: e8 2e mov r14, r24 + 1b0: f9 2e mov r15, r25 + 1b2: 88 ee ldi r24, 0xE8 ; 232 + 1b4: e8 16 cp r14, r24 + 1b6: 83 e0 ldi r24, 0x03 ; 3 + 1b8: f8 06 cpc r15, r24 + 1ba: 34 f0 brlt .+12 ; 0x1c8 + 1bc: 0f 2e mov r0, r31 + 1be: f7 ee ldi r31, 0xE7 ; 231 + 1c0: ef 2e mov r14, r31 + 1c2: f3 e0 ldi r31, 0x03 ; 3 + 1c4: ff 2e mov r15, r31 + 1c6: f0 2d mov r31, r0 + 1c8: bb 20 and r11, r11 + 1ca: 09 f4 brne .+2 ; 0x1ce + 1cc: 7b c0 rjmp .+246 ; 0x2c4 + 1ce: f1 94 neg r15 + 1d0: e1 94 neg r14 + 1d2: f1 08 sbc r15, r1 + 1d4: c7 01 movw r24, r14 + 1d6: bf df rcall .-130 ; 0x156 + 1d8: c8 2e mov r12, r24 + 1da: 82 e0 ldi r24, 0x02 ; 2 + 1dc: 11 e0 ldi r17, 0x01 ; 1 + 1de: c8 12 cpse r12, r24 + 1e0: 10 e0 ldi r17, 0x00 ; 0 + 1e2: 2a e0 ldi r18, 0x0A ; 10 + 1e4: 30 e0 ldi r19, 0x00 ; 0 + 1e6: c7 01 movw r24, r14 1e8: b9 01 movw r22, r18 - 1ea: 31 d2 rcall .+1122 ; 0x64e <__divmodhi4> - 1ec: 89 83 std Y+1, r24 ; 0x01 - 1ee: 31 e0 ldi r19, 0x01 ; 1 - 1f0: a3 16 cp r10, r19 - 1f2: 91 f0 breq .+36 ; 0x218 - 1f4: 83 e0 ldi r24, 0x03 ; 3 - 1f6: d8 2e mov r13, r24 - 1f8: da 18 sub r13, r10 - 1fa: 82 e0 ldi r24, 0x02 ; 2 - 1fc: 8d 15 cp r24, r13 - 1fe: a8 f1 brcs .+106 ; 0x26a - 200: 10 e0 ldi r17, 0x00 ; 0 - 202: 00 e0 ldi r16, 0x00 ; 0 - 204: c1 2c mov r12, r1 - 206: 82 e0 ldi r24, 0x02 ; 2 - 208: 90 e0 ldi r25, 0x00 ; 0 - 20a: 9c 01 movw r18, r24 - 20c: 2f 19 sub r18, r15 - 20e: 31 09 sbc r19, r1 - 210: 79 01 movw r14, r18 - 212: 18 c0 rjmp .+48 ; 0x244 - 214: 8c 01 movw r16, r24 - 216: d3 cf rjmp .-90 ; 0x1be - 218: da 2c mov r13, r10 - 21a: f2 cf rjmp .-28 ; 0x200 - 21c: e1 e0 ldi r30, 0x01 ; 1 - 21e: f0 e0 ldi r31, 0x00 ; 0 - 220: ec 0f add r30, r28 - 222: fd 1f adc r31, r29 - 224: ed 0d add r30, r13 - 226: f1 1d adc r31, r1 - 228: e0 81 ld r30, Z - 22a: f0 e0 ldi r31, 0x00 ; 0 - 22c: e2 5e subi r30, 0xE2 ; 226 - 22e: ff 4f sbci r31, 0xFF ; 255 - 230: 84 91 lpm r24, Z - 232: 6c 2d mov r22, r12 - 234: 76 df rcall .-276 ; 0x122 - 236: d3 94 inc r13 - 238: c3 94 inc r12 - 23a: 0f 5f subi r16, 0xFF ; 255 - 23c: 1f 4f sbci r17, 0xFF ; 255 - 23e: 82 e0 ldi r24, 0x02 ; 2 - 240: 8d 15 cp r24, r13 - 242: a0 f0 brcs .+40 ; 0x26c - 244: e0 16 cp r14, r16 - 246: f1 06 cpc r15, r17 - 248: 49 f7 brne .-46 ; 0x21c - 24a: 33 e0 ldi r19, 0x03 ; 3 - 24c: a3 16 cp r10, r19 - 24e: 31 f3 breq .-52 ; 0x21c - 250: e1 e0 ldi r30, 0x01 ; 1 - 252: f0 e0 ldi r31, 0x00 ; 0 - 254: ec 0f add r30, r28 - 256: fd 1f adc r31, r29 - 258: ed 0d add r30, r13 - 25a: f1 1d adc r31, r1 - 25c: e0 81 ld r30, Z - 25e: f0 e0 ldi r31, 0x00 ; 0 - 260: e2 5e subi r30, 0xE2 ; 226 - 262: ff 4f sbci r31, 0xFF ; 255 - 264: 84 91 lpm r24, Z - 266: 80 68 ori r24, 0x80 ; 128 - 268: e4 cf rjmp .-56 ; 0x232 - 26a: c1 2c mov r12, r1 - 26c: eb 2d mov r30, r11 - 26e: f0 e0 ldi r31, 0x00 ; 0 - 270: e2 5e subi r30, 0xE2 ; 226 - 272: ff 4f sbci r31, 0xFF ; 255 - 274: 84 91 lpm r24, Z - 276: 6c 2d mov r22, r12 - 278: 54 df rcall .-344 ; 0x122 - 27a: 0f 90 pop r0 - 27c: 0f 90 pop r0 - 27e: 0f 90 pop r0 - 280: df 91 pop r29 - 282: cf 91 pop r28 - 284: 1f 91 pop r17 - 286: 0f 91 pop r16 - 288: ff 90 pop r15 - 28a: ef 90 pop r14 - 28c: df 90 pop r13 - 28e: cf 90 pop r12 - 290: bf 90 pop r11 - 292: af 90 pop r10 - 294: 08 95 ret + 1ea: 5b d2 rcall .+1206 ; 0x6a2 <__divmodhi4> + 1ec: 8b 83 std Y+3, r24 ; 0x03 + 1ee: cb 01 movw r24, r22 + 1f0: b9 01 movw r22, r18 + 1f2: 57 d2 rcall .+1198 ; 0x6a2 <__divmodhi4> + 1f4: 8a 83 std Y+2, r24 ; 0x02 + 1f6: c7 01 movw r24, r14 + 1f8: 64 e6 ldi r22, 0x64 ; 100 + 1fa: 70 e0 ldi r23, 0x00 ; 0 + 1fc: 52 d2 rcall .+1188 ; 0x6a2 <__divmodhi4> + 1fe: cb 01 movw r24, r22 + 200: b9 01 movw r22, r18 + 202: 4f d2 rcall .+1182 ; 0x6a2 <__divmodhi4> + 204: 89 83 std Y+1, r24 ; 0x01 + 206: 81 e0 ldi r24, 0x01 ; 1 + 208: c8 16 cp r12, r24 + 20a: 79 f0 breq .+30 ; 0x22a + 20c: 03 e0 ldi r16, 0x03 ; 3 + 20e: 0c 19 sub r16, r12 + 210: 03 30 cpi r16, 0x03 ; 3 + 212: 08 f0 brcs .+2 ; 0x216 + 214: 41 c0 rjmp .+130 ; 0x298 + 216: 82 e0 ldi r24, 0x02 ; 2 + 218: 90 e0 ldi r25, 0x00 ; 0 + 21a: 7c 01 movw r14, r24 + 21c: ea 18 sub r14, r10 + 21e: f1 08 sbc r15, r1 + 220: 68 94 set + 222: aa 24 eor r10, r10 + 224: a7 f8 bld r10, 7 + 226: 91 2c mov r9, r1 + 228: 1a c0 rjmp .+52 ; 0x25e + 22a: 0c 2d mov r16, r12 + 22c: f4 cf rjmp .-24 ; 0x216 + 22e: 89 2d mov r24, r9 + 230: b1 10 cpse r11, r1 + 232: 2a c0 rjmp .+84 ; 0x288 + 234: 8a 2d mov r24, r10 + 236: 28 c0 rjmp .+80 ; 0x288 + 238: e1 e0 ldi r30, 0x01 ; 1 + 23a: f0 e0 ldi r31, 0x00 ; 0 + 23c: ec 0f add r30, r28 + 23e: fd 1f adc r31, r29 + 240: e0 0f add r30, r16 + 242: f1 1d adc r31, r1 + 244: e0 81 ld r30, Z + 246: f0 e0 ldi r31, 0x00 ; 0 + 248: e2 5e subi r30, 0xE2 ; 226 + 24a: ff 4f sbci r31, 0xFF ; 255 + 24c: 84 91 lpm r24, Z + 24e: 61 2f mov r22, r17 + 250: 68 df rcall .-304 ; 0x122 + 252: 11 23 and r17, r17 + 254: d9 f0 breq .+54 ; 0x28c + 256: 0f 5f subi r16, 0xFF ; 255 + 258: 1f 5f subi r17, 0xFF ; 255 + 25a: 03 30 cpi r16, 0x03 ; 3 + 25c: e8 f4 brcc .+58 ; 0x298 + 25e: 1e 15 cp r17, r14 + 260: 1f 04 cpc r1, r15 + 262: 51 f7 brne .-44 ; 0x238 + 264: 83 e0 ldi r24, 0x03 ; 3 + 266: c8 16 cp r12, r24 + 268: 39 f3 breq .-50 ; 0x238 + 26a: e1 e0 ldi r30, 0x01 ; 1 + 26c: f0 e0 ldi r31, 0x00 ; 0 + 26e: ec 0f add r30, r28 + 270: fd 1f adc r31, r29 + 272: e0 0f add r30, r16 + 274: f1 1d adc r31, r1 + 276: e0 81 ld r30, Z + 278: f0 e0 ldi r31, 0x00 ; 0 + 27a: e2 5e subi r30, 0xE2 ; 226 + 27c: ff 4f sbci r31, 0xFF ; 255 + 27e: e4 91 lpm r30, Z + 280: 82 e0 ldi r24, 0x02 ; 2 + 282: c8 16 cp r12, r24 + 284: a1 f2 breq .-88 ; 0x22e + 286: 8a 2d mov r24, r10 + 288: 8e 2b or r24, r30 + 28a: e1 cf rjmp .-62 ; 0x24e + 28c: bb 20 and r11, r11 + 28e: 19 f3 breq .-58 ; 0x256 + 290: 69 2d mov r22, r9 + 292: 80 e4 ldi r24, 0x40 ; 64 + 294: 46 df rcall .-372 ; 0x122 + 296: df cf rjmp .-66 ; 0x256 + 298: ed 2d mov r30, r13 + 29a: f0 e0 ldi r31, 0x00 ; 0 + 29c: e2 5e subi r30, 0xE2 ; 226 + 29e: ff 4f sbci r31, 0xFF ; 255 + 2a0: 84 91 lpm r24, Z + 2a2: 61 2f mov r22, r17 + 2a4: 3e df rcall .-388 ; 0x122 + 2a6: 0f 90 pop r0 + 2a8: 0f 90 pop r0 + 2aa: 0f 90 pop r0 + 2ac: df 91 pop r29 + 2ae: cf 91 pop r28 + 2b0: 1f 91 pop r17 + 2b2: 0f 91 pop r16 + 2b4: ff 90 pop r15 + 2b6: ef 90 pop r14 + 2b8: df 90 pop r13 + 2ba: cf 90 pop r12 + 2bc: bf 90 pop r11 + 2be: af 90 pop r10 + 2c0: 9f 90 pop r9 + 2c2: 08 95 ret + 2c4: c7 01 movw r24, r14 + 2c6: 47 df rcall .-370 ; 0x156 + 2c8: c8 2e mov r12, r24 + 2ca: 82 e0 ldi r24, 0x02 ; 2 + 2cc: c8 12 cpse r12, r24 + 2ce: 88 cf rjmp .-240 ; 0x1e0 + 2d0: 10 e0 ldi r17, 0x00 ; 0 + 2d2: 87 cf rjmp .-242 ; 0x1e2 -00000296
: - 296: cf 93 push r28 - 298: df 93 push r29 - 29a: cd b7 in r28, 0x3d ; 61 - 29c: de b7 in r29, 0x3e ; 62 - 29e: 64 97 sbiw r28, 0x14 ; 20 - 2a0: 0f b6 in r0, 0x3f ; 63 - 2a2: f8 94 cli - 2a4: de bf out 0x3e, r29 ; 62 - 2a6: 0f be out 0x3f, r0 ; 63 - 2a8: cd bf out 0x3d, r28 ; 61 - 2aa: 6b e0 ldi r22, 0x0B ; 11 - 2ac: ce 01 movw r24, r28 - 2ae: 01 96 adiw r24, 0x01 ; 1 - 2b0: e5 d0 rcall .+458 ; 0x47c - 2b2: 28 e0 ldi r18, 0x08 ; 8 - 2b4: 42 e0 ldi r20, 0x02 ; 2 - 2b6: 62 e0 ldi r22, 0x02 ; 2 - 2b8: 80 e0 ldi r24, 0x00 ; 0 - 2ba: 19 df rcall .-462 ; 0xee - 2bc: 42 df rcall .-380 ; 0x142 - 2be: 04 e6 ldi r16, 0x64 ; 100 - 2c0: 10 e0 ldi r17, 0x00 ; 0 - 2c2: 01 c0 rjmp .+2 ; 0x2c6 - 2c4: 3e df rcall .-388 ; 0x142 - 2c6: ce 01 movw r24, r28 - 2c8: 01 96 adiw r24, 0x01 ; 1 - 2ca: 13 d1 rcall .+550 ; 0x4f2 - 2cc: 81 11 cpse r24, r1 - 2ce: fa cf rjmp .-12 ; 0x2c4 - 2d0: ce 01 movw r24, r28 - 2d2: 01 96 adiw r24, 0x01 ; 1 - 2d4: 21 d1 rcall .+578 ; 0x518 - 2d6: 8b 89 ldd r24, Y+19 ; 0x13 - 2d8: 9c 89 ldd r25, Y+20 ; 0x14 - 2da: b8 01 movw r22, r16 - 2dc: a4 d1 rcall .+840 ; 0x626 <__udivmodhi4> - 2de: 41 e0 ldi r20, 0x01 ; 1 - 2e0: 89 89 ldd r24, Y+17 ; 0x11 - 2e2: 9a 89 ldd r25, Y+18 ; 0x12 - 2e4: 48 df rcall .-368 ; 0x176 - 2e6: ef cf rjmp .-34 ; 0x2c6 +000002d4
: + 2d4: cf 93 push r28 + 2d6: df 93 push r29 + 2d8: cd b7 in r28, 0x3d ; 61 + 2da: de b7 in r29, 0x3e ; 62 + 2dc: 65 97 sbiw r28, 0x15 ; 21 + 2de: 0f b6 in r0, 0x3f ; 63 + 2e0: f8 94 cli + 2e2: de bf out 0x3e, r29 ; 62 + 2e4: 0f be out 0x3f, r0 ; 63 + 2e6: cd bf out 0x3d, r28 ; 61 + 2e8: 6b e0 ldi r22, 0x0B ; 11 + 2ea: ce 01 movw r24, r28 + 2ec: 01 96 adiw r24, 0x01 ; 1 + 2ee: e6 d0 rcall .+460 ; 0x4bc + 2f0: 28 e0 ldi r18, 0x08 ; 8 + 2f2: 42 e0 ldi r20, 0x02 ; 2 + 2f4: 62 e0 ldi r22, 0x02 ; 2 + 2f6: 80 e0 ldi r24, 0x00 ; 0 + 2f8: fa de rcall .-524 ; 0xee + 2fa: 23 df rcall .-442 ; 0x142 + 2fc: 04 e6 ldi r16, 0x64 ; 100 + 2fe: 10 e0 ldi r17, 0x00 ; 0 + 300: 01 c0 rjmp .+2 ; 0x304 + 302: 1f df rcall .-450 ; 0x142 + 304: ce 01 movw r24, r28 + 306: 01 96 adiw r24, 0x01 ; 1 + 308: 14 d1 rcall .+552 ; 0x532 + 30a: 81 11 cpse r24, r1 + 30c: fa cf rjmp .-12 ; 0x302 + 30e: ce 01 movw r24, r28 + 310: 01 96 adiw r24, 0x01 ; 1 + 312: 22 d1 rcall .+580 ; 0x558 + 314: 8b 89 ldd r24, Y+19 ; 0x13 + 316: 9c 89 ldd r25, Y+20 ; 0x14 + 318: b8 01 movw r22, r16 + 31a: af d1 rcall .+862 ; 0x67a <__udivmodhi4> + 31c: 2d 89 ldd r18, Y+21 ; 0x15 + 31e: 41 e0 ldi r20, 0x01 ; 1 + 320: 89 89 ldd r24, Y+17 ; 0x11 + 322: 9a 89 ldd r25, Y+18 ; 0x12 + 324: 2e df rcall .-420 ; 0x182 + 326: ee cf rjmp .-36 ; 0x304 -000002e8 : - 2e8: f8 94 cli - 2ea: bc 9a sbi 0x17, 4 ; 23 - 2ec: 8f eb ldi r24, 0xBF ; 191 - 2ee: 93 e0 ldi r25, 0x03 ; 3 - 2f0: 01 97 sbiw r24, 0x01 ; 1 - 2f2: f1 f7 brne .-4 ; 0x2f0 - 2f4: 00 c0 rjmp .+0 ; 0x2f6 - 2f6: 00 00 nop - 2f8: bc 98 cbi 0x17, 4 ; 23 - 2fa: 9a eb ldi r25, 0xBA ; 186 - 2fc: 9a 95 dec r25 - 2fe: f1 f7 brne .-4 ; 0x2fc - 300: 00 c0 rjmp .+0 ; 0x302 - 302: 86 b3 in r24, 0x16 ; 22 - 304: e3 e3 ldi r30, 0x33 ; 51 - 306: f3 e0 ldi r31, 0x03 ; 3 - 308: 31 97 sbiw r30, 0x01 ; 1 - 30a: f1 f7 brne .-4 ; 0x308 - 30c: 00 c0 rjmp .+0 ; 0x30e - 30e: 00 00 nop - 310: 78 94 sei - 312: 82 95 swap r24 - 314: 81 70 andi r24, 0x01 ; 1 - 316: 91 e0 ldi r25, 0x01 ; 1 - 318: 89 27 eor r24, r25 - 31a: 08 95 ret +00000328 : + 328: f8 94 cli + 32a: bc 9a sbi 0x17, 4 ; 23 + 32c: 8f eb ldi r24, 0xBF ; 191 + 32e: 93 e0 ldi r25, 0x03 ; 3 + 330: 01 97 sbiw r24, 0x01 ; 1 + 332: f1 f7 brne .-4 ; 0x330 + 334: 00 c0 rjmp .+0 ; 0x336 + 336: 00 00 nop + 338: bc 98 cbi 0x17, 4 ; 23 + 33a: 9a eb ldi r25, 0xBA ; 186 + 33c: 9a 95 dec r25 + 33e: f1 f7 brne .-4 ; 0x33c + 340: 00 c0 rjmp .+0 ; 0x342 + 342: 86 b3 in r24, 0x16 ; 22 + 344: e3 e3 ldi r30, 0x33 ; 51 + 346: f3 e0 ldi r31, 0x03 ; 3 + 348: 31 97 sbiw r30, 0x01 ; 1 + 34a: f1 f7 brne .-4 ; 0x348 + 34c: 00 c0 rjmp .+0 ; 0x34e + 34e: 00 00 nop + 350: 78 94 sei + 352: 82 95 swap r24 + 354: 81 70 andi r24, 0x01 ; 1 + 356: 91 e0 ldi r25, 0x01 ; 1 + 358: 89 27 eor r24, r25 + 35a: 08 95 ret -0000031c : - 31c: 98 e0 ldi r25, 0x08 ; 8 - 31e: 0d c0 rjmp .+26 ; 0x33a - 320: bc 9a sbi 0x17, 4 ; 23 - 322: 20 ea ldi r18, 0xA0 ; 160 - 324: 2a 95 dec r18 - 326: f1 f7 brne .-4 ; 0x324 - 328: bc 98 cbi 0x17, 4 ; 23 - 32a: 2a e1 ldi r18, 0x1A ; 26 - 32c: 2a 95 dec r18 - 32e: f1 f7 brne .-4 ; 0x32c - 330: 00 c0 rjmp .+0 ; 0x332 - 332: 78 94 sei - 334: 86 95 lsr r24 - 336: 91 50 subi r25, 0x01 ; 1 - 338: 69 f0 breq .+26 ; 0x354 - 33a: f8 94 cli - 33c: 80 ff sbrs r24, 0 - 33e: f0 cf rjmp .-32 ; 0x320 - 340: bc 9a sbi 0x17, 4 ; 23 - 342: 20 e1 ldi r18, 0x10 ; 16 - 344: 2a 95 dec r18 - 346: f1 f7 brne .-4 ; 0x344 - 348: bc 98 cbi 0x17, 4 ; 23 - 34a: 2a ea ldi r18, 0xAA ; 170 - 34c: 2a 95 dec r18 - 34e: f1 f7 brne .-4 ; 0x34c - 350: 00 c0 rjmp .+0 ; 0x352 - 352: ef cf rjmp .-34 ; 0x332 - 354: 08 95 ret +0000035c : + 35c: 98 e0 ldi r25, 0x08 ; 8 + 35e: 0d c0 rjmp .+26 ; 0x37a + 360: bc 9a sbi 0x17, 4 ; 23 + 362: 20 ea ldi r18, 0xA0 ; 160 + 364: 2a 95 dec r18 + 366: f1 f7 brne .-4 ; 0x364 + 368: bc 98 cbi 0x17, 4 ; 23 + 36a: 2a e1 ldi r18, 0x1A ; 26 + 36c: 2a 95 dec r18 + 36e: f1 f7 brne .-4 ; 0x36c + 370: 00 c0 rjmp .+0 ; 0x372 + 372: 78 94 sei + 374: 86 95 lsr r24 + 376: 91 50 subi r25, 0x01 ; 1 + 378: 69 f0 breq .+26 ; 0x394 + 37a: f8 94 cli + 37c: 80 ff sbrs r24, 0 + 37e: f0 cf rjmp .-32 ; 0x360 + 380: bc 9a sbi 0x17, 4 ; 23 + 382: 20 e1 ldi r18, 0x10 ; 16 + 384: 2a 95 dec r18 + 386: f1 f7 brne .-4 ; 0x384 + 388: bc 98 cbi 0x17, 4 ; 23 + 38a: 2a ea ldi r18, 0xAA ; 170 + 38c: 2a 95 dec r18 + 38e: f1 f7 brne .-4 ; 0x38c + 390: 00 c0 rjmp .+0 ; 0x392 + 392: ef cf rjmp .-34 ; 0x372 + 394: 08 95 ret -00000356 : - 356: 98 e0 ldi r25, 0x08 ; 8 - 358: 80 e0 ldi r24, 0x00 ; 0 - 35a: 07 c0 rjmp .+14 ; 0x36a - 35c: 22 e9 ldi r18, 0x92 ; 146 - 35e: 2a 95 dec r18 - 360: f1 f7 brne .-4 ; 0x35e - 362: 00 c0 rjmp .+0 ; 0x364 - 364: 78 94 sei - 366: 91 50 subi r25, 0x01 ; 1 - 368: 71 f0 breq .+28 ; 0x386 - 36a: f8 94 cli - 36c: 86 95 lsr r24 - 36e: bc 9a sbi 0x17, 4 ; 23 - 370: 20 e1 ldi r18, 0x10 ; 16 - 372: 2a 95 dec r18 - 374: f1 f7 brne .-4 ; 0x372 - 376: bc 98 cbi 0x17, 4 ; 23 - 378: 28 e1 ldi r18, 0x18 ; 24 - 37a: 2a 95 dec r18 - 37c: f1 f7 brne .-4 ; 0x37a - 37e: b4 9b sbis 0x16, 4 ; 22 - 380: ed cf rjmp .-38 ; 0x35c - 382: 80 68 ori r24, 0x80 ; 128 - 384: eb cf rjmp .-42 ; 0x35c - 386: 08 95 ret +00000396 : + 396: 98 e0 ldi r25, 0x08 ; 8 + 398: 80 e0 ldi r24, 0x00 ; 0 + 39a: 07 c0 rjmp .+14 ; 0x3aa + 39c: 22 e9 ldi r18, 0x92 ; 146 + 39e: 2a 95 dec r18 + 3a0: f1 f7 brne .-4 ; 0x39e + 3a2: 00 c0 rjmp .+0 ; 0x3a4 + 3a4: 78 94 sei + 3a6: 91 50 subi r25, 0x01 ; 1 + 3a8: 71 f0 breq .+28 ; 0x3c6 + 3aa: f8 94 cli + 3ac: 86 95 lsr r24 + 3ae: bc 9a sbi 0x17, 4 ; 23 + 3b0: 20 e1 ldi r18, 0x10 ; 16 + 3b2: 2a 95 dec r18 + 3b4: f1 f7 brne .-4 ; 0x3b2 + 3b6: bc 98 cbi 0x17, 4 ; 23 + 3b8: 28 e1 ldi r18, 0x18 ; 24 + 3ba: 2a 95 dec r18 + 3bc: f1 f7 brne .-4 ; 0x3ba + 3be: b4 9b sbis 0x16, 4 ; 22 + 3c0: ed cf rjmp .-38 ; 0x39c + 3c2: 80 68 ori r24, 0x80 ; 128 + 3c4: eb cf rjmp .-42 ; 0x39c + 3c6: 08 95 ret -00000388 : - 388: af df rcall .-162 ; 0x2e8 - 38a: 81 11 cpse r24, r1 - 38c: 01 c0 rjmp .+2 ; 0x390 - 38e: 08 95 ret - 390: 8c ec ldi r24, 0xCC ; 204 - 392: c4 df rcall .-120 ; 0x31c - 394: 81 e0 ldi r24, 0x01 ; 1 - 396: fb cf rjmp .-10 ; 0x38e +000003c8 : + 3c8: af df rcall .-162 ; 0x328 + 3ca: 81 11 cpse r24, r1 + 3cc: 01 c0 rjmp .+2 ; 0x3d0 + 3ce: 08 95 ret + 3d0: 8c ec ldi r24, 0xCC ; 204 + 3d2: c4 df rcall .-120 ; 0x35c + 3d4: 81 e0 ldi r24, 0x01 ; 1 + 3d6: fb cf rjmp .-10 ; 0x3ce -00000398 : - 398: 0f 93 push r16 - 39a: 1f 93 push r17 - 39c: cf 93 push r28 - 39e: df 93 push r29 - 3a0: 8c 01 movw r16, r24 - 3a2: a2 df rcall .-188 ; 0x2e8 - 3a4: 81 11 cpse r24, r1 - 3a6: 05 c0 rjmp .+10 ; 0x3b2 - 3a8: df 91 pop r29 - 3aa: cf 91 pop r28 - 3ac: 1f 91 pop r17 - 3ae: 0f 91 pop r16 - 3b0: 08 95 ret - 3b2: 83 e3 ldi r24, 0x33 ; 51 - 3b4: b3 df rcall .-154 ; 0x31c - 3b6: e8 01 movw r28, r16 - 3b8: 08 5f subi r16, 0xF8 ; 248 - 3ba: 1f 4f sbci r17, 0xFF ; 255 - 3bc: cc df rcall .-104 ; 0x356 - 3be: 89 93 st Y+, r24 - 3c0: c0 17 cp r28, r16 - 3c2: d1 07 cpc r29, r17 - 3c4: d9 f7 brne .-10 ; 0x3bc - 3c6: 81 e0 ldi r24, 0x01 ; 1 - 3c8: ef cf rjmp .-34 ; 0x3a8 +000003d8 : + 3d8: 0f 93 push r16 + 3da: 1f 93 push r17 + 3dc: cf 93 push r28 + 3de: df 93 push r29 + 3e0: 8c 01 movw r16, r24 + 3e2: a2 df rcall .-188 ; 0x328 + 3e4: 81 11 cpse r24, r1 + 3e6: 05 c0 rjmp .+10 ; 0x3f2 + 3e8: df 91 pop r29 + 3ea: cf 91 pop r28 + 3ec: 1f 91 pop r17 + 3ee: 0f 91 pop r16 + 3f0: 08 95 ret + 3f2: 83 e3 ldi r24, 0x33 ; 51 + 3f4: b3 df rcall .-154 ; 0x35c + 3f6: e8 01 movw r28, r16 + 3f8: 08 5f subi r16, 0xF8 ; 248 + 3fa: 1f 4f sbci r17, 0xFF ; 255 + 3fc: cc df rcall .-104 ; 0x396 + 3fe: 89 93 st Y+, r24 + 400: c0 17 cp r28, r16 + 402: d1 07 cpc r29, r17 + 404: d9 f7 brne .-10 ; 0x3fc + 406: 81 e0 ldi r24, 0x01 ; 1 + 408: ef cf rjmp .-34 ; 0x3e8 -000003ca : - 3ca: fc 01 movw r30, r24 - 3cc: 68 0f add r22, r24 - 3ce: 79 1f adc r23, r25 - 3d0: 80 e0 ldi r24, 0x00 ; 0 - 3d2: 2c e8 ldi r18, 0x8C ; 140 - 3d4: 0b c0 rjmp .+22 ; 0x3ec - 3d6: 86 95 lsr r24 - 3d8: 91 50 subi r25, 0x01 ; 1 - 3da: 29 f0 breq .+10 ; 0x3e6 - 3dc: 80 ff sbrs r24, 0 - 3de: fb cf rjmp .-10 ; 0x3d6 - 3e0: 86 95 lsr r24 - 3e2: 82 27 eor r24, r18 - 3e4: f9 cf rjmp .-14 ; 0x3d8 - 3e6: e6 17 cp r30, r22 - 3e8: f7 07 cpc r31, r23 - 3ea: 21 f0 breq .+8 ; 0x3f4 - 3ec: 91 91 ld r25, Z+ - 3ee: 89 27 eor r24, r25 - 3f0: 98 e0 ldi r25, 0x08 ; 8 - 3f2: f4 cf rjmp .-24 ; 0x3dc - 3f4: 08 95 ret +0000040a : + 40a: fc 01 movw r30, r24 + 40c: 68 0f add r22, r24 + 40e: 79 1f adc r23, r25 + 410: 80 e0 ldi r24, 0x00 ; 0 + 412: 2c e8 ldi r18, 0x8C ; 140 + 414: 0b c0 rjmp .+22 ; 0x42c + 416: 86 95 lsr r24 + 418: 91 50 subi r25, 0x01 ; 1 + 41a: 29 f0 breq .+10 ; 0x426 + 41c: 80 ff sbrs r24, 0 + 41e: fb cf rjmp .-10 ; 0x416 + 420: 86 95 lsr r24 + 422: 82 27 eor r24, r18 + 424: f9 cf rjmp .-14 ; 0x418 + 426: e6 17 cp r30, r22 + 428: f7 07 cpc r31, r23 + 42a: 21 f0 breq .+8 ; 0x434 + 42c: 91 91 ld r25, Z+ + 42e: 89 27 eor r24, r25 + 430: 98 e0 ldi r25, 0x08 ; 8 + 432: f4 cf rjmp .-24 ; 0x41c + 434: 08 95 ret -000003f6 : - 3f6: ef 92 push r14 - 3f8: ff 92 push r15 - 3fa: 0f 93 push r16 - 3fc: 1f 93 push r17 - 3fe: cf 93 push r28 - 400: df 93 push r29 - 402: 7c 01 movw r14, r24 - 404: c1 df rcall .-126 ; 0x388 - 406: 8e eb ldi r24, 0xBE ; 190 - 408: 89 df rcall .-238 ; 0x31c - 40a: e7 01 movw r28, r14 - 40c: 87 01 movw r16, r14 - 40e: 08 5f subi r16, 0xF8 ; 248 - 410: 1f 4f sbci r17, 0xFF ; 255 - 412: a1 df rcall .-190 ; 0x356 - 414: 89 93 st Y+, r24 - 416: c0 17 cp r28, r16 - 418: d1 07 cpc r29, r17 - 41a: d9 f7 brne .-10 ; 0x412 <__LOCK_REGION_LENGTH__+0x12> - 41c: 68 e0 ldi r22, 0x08 ; 8 - 41e: 70 e0 ldi r23, 0x00 ; 0 - 420: c7 01 movw r24, r14 - 422: d3 df rcall .-90 ; 0x3ca - 424: c8 2f mov r28, r24 - 426: 97 df rcall .-210 ; 0x356 - 428: 91 e0 ldi r25, 0x01 ; 1 - 42a: c8 13 cpse r28, r24 - 42c: 90 e0 ldi r25, 0x00 ; 0 - 42e: 89 2f mov r24, r25 - 430: df 91 pop r29 - 432: cf 91 pop r28 - 434: 1f 91 pop r17 - 436: 0f 91 pop r16 - 438: ff 90 pop r15 - 43a: ef 90 pop r14 - 43c: 08 95 ret +00000436 : + 436: ef 92 push r14 + 438: ff 92 push r15 + 43a: 0f 93 push r16 + 43c: 1f 93 push r17 + 43e: cf 93 push r28 + 440: df 93 push r29 + 442: 7c 01 movw r14, r24 + 444: c1 df rcall .-126 ; 0x3c8 + 446: 8e eb ldi r24, 0xBE ; 190 + 448: 89 df rcall .-238 ; 0x35c + 44a: e7 01 movw r28, r14 + 44c: 87 01 movw r16, r14 + 44e: 08 5f subi r16, 0xF8 ; 248 + 450: 1f 4f sbci r17, 0xFF ; 255 + 452: a1 df rcall .-190 ; 0x396 + 454: 89 93 st Y+, r24 + 456: c0 17 cp r28, r16 + 458: d1 07 cpc r29, r17 + 45a: d9 f7 brne .-10 ; 0x452 + 45c: 68 e0 ldi r22, 0x08 ; 8 + 45e: 70 e0 ldi r23, 0x00 ; 0 + 460: c7 01 movw r24, r14 + 462: d3 df rcall .-90 ; 0x40a + 464: c8 2f mov r28, r24 + 466: 97 df rcall .-210 ; 0x396 + 468: 91 e0 ldi r25, 0x01 ; 1 + 46a: c8 13 cpse r28, r24 + 46c: 90 e0 ldi r25, 0x00 ; 0 + 46e: 89 2f mov r24, r25 + 470: df 91 pop r29 + 472: cf 91 pop r28 + 474: 1f 91 pop r17 + 476: 0f 91 pop r16 + 478: ff 90 pop r15 + 47a: ef 90 pop r14 + 47c: 08 95 ret -0000043e : - 43e: 54 df rcall .-344 ; 0x2e8 - 440: 81 11 cpse r24, r1 - 442: 01 c0 rjmp .+2 ; 0x446 - 444: 08 95 ret - 446: a0 df rcall .-192 ; 0x388 - 448: 88 e4 ldi r24, 0x48 ; 72 - 44a: 68 df rcall .-304 ; 0x31c - 44c: 8f e1 ldi r24, 0x1F ; 31 - 44e: 9e e4 ldi r25, 0x4E ; 78 - 450: 01 97 sbiw r24, 0x01 ; 1 - 452: f1 f7 brne .-4 ; 0x450 - 454: 00 c0 rjmp .+0 ; 0x456 - 456: 00 00 nop - 458: 81 e0 ldi r24, 0x01 ; 1 - 45a: f4 cf rjmp .-24 ; 0x444 +0000047e : + 47e: 54 df rcall .-344 ; 0x328 + 480: 81 11 cpse r24, r1 + 482: 01 c0 rjmp .+2 ; 0x486 + 484: 08 95 ret + 486: a0 df rcall .-192 ; 0x3c8 + 488: 88 e4 ldi r24, 0x48 ; 72 + 48a: 68 df rcall .-304 ; 0x35c + 48c: 8f e1 ldi r24, 0x1F ; 31 + 48e: 9e e4 ldi r25, 0x4E ; 78 + 490: 01 97 sbiw r24, 0x01 ; 1 + 492: f1 f7 brne .-4 ; 0x490 + 494: 00 c0 rjmp .+0 ; 0x496 + 496: 00 00 nop + 498: 81 e0 ldi r24, 0x01 ; 1 + 49a: f4 cf rjmp .-24 ; 0x484 -0000045c : - 45c: cf 93 push r28 - 45e: df 93 push r29 - 460: ec 01 movw r28, r24 - 462: 92 df rcall .-220 ; 0x388 - 464: 8e e4 ldi r24, 0x4E ; 78 - 466: 5a df rcall .-332 ; 0x31c - 468: 88 81 ld r24, Y - 46a: 58 df rcall .-336 ; 0x31c - 46c: 89 81 ldd r24, Y+1 ; 0x01 - 46e: 56 df rcall .-340 ; 0x31c - 470: 8a 81 ldd r24, Y+2 ; 0x02 - 472: 54 df rcall .-344 ; 0x31c - 474: e4 df rcall .-56 ; 0x43e - 476: df 91 pop r29 - 478: cf 91 pop r28 - 47a: 08 95 ret +0000049c : + 49c: cf 93 push r28 + 49e: df 93 push r29 + 4a0: ec 01 movw r28, r24 + 4a2: 92 df rcall .-220 ; 0x3c8 + 4a4: 8e e4 ldi r24, 0x4E ; 78 + 4a6: 5a df rcall .-332 ; 0x35c + 4a8: 88 81 ld r24, Y + 4aa: 58 df rcall .-336 ; 0x35c + 4ac: 89 81 ldd r24, Y+1 ; 0x01 + 4ae: 56 df rcall .-340 ; 0x35c + 4b0: 8a 81 ldd r24, Y+2 ; 0x02 + 4b2: 54 df rcall .-344 ; 0x35c + 4b4: e4 df rcall .-56 ; 0x47e + 4b6: df 91 pop r29 + 4b8: cf 91 pop r28 + 4ba: 08 95 ret -0000047c : - 47c: ff 92 push r15 - 47e: 0f 93 push r16 - 480: 1f 93 push r17 - 482: cf 93 push r28 - 484: df 93 push r29 - 486: 00 d0 rcall .+0 ; 0x488 - 488: 1f 92 push r1 - 48a: cd b7 in r28, 0x3d ; 61 - 48c: de b7 in r29, 0x3e ; 62 - 48e: 8c 01 movw r16, r24 - 490: f6 2e mov r15, r22 - 492: b1 df rcall .-158 ; 0x3f6 - 494: f8 01 movw r30, r16 - 496: 82 81 ldd r24, Z+2 ; 0x02 - 498: 89 83 std Y+1, r24 ; 0x01 - 49a: 83 81 ldd r24, Z+3 ; 0x03 - 49c: 8a 83 std Y+2, r24 ; 0x02 - 49e: fa e0 ldi r31, 0x0A ; 10 - 4a0: ff 16 cp r15, r31 - 4a2: b9 f0 breq .+46 ; 0x4d2 - 4a4: 8b e0 ldi r24, 0x0B ; 11 - 4a6: f8 16 cp r15, r24 - 4a8: 89 f0 breq .+34 ; 0x4cc - 4aa: e9 e0 ldi r30, 0x09 ; 9 - 4ac: fe 16 cp r15, r30 - 4ae: a1 f0 breq .+40 ; 0x4d8 - 4b0: 8f e7 ldi r24, 0x7F ; 127 - 4b2: 8b 83 std Y+3, r24 ; 0x03 - 4b4: ce 01 movw r24, r28 - 4b6: 01 96 adiw r24, 0x01 ; 1 - 4b8: d1 df rcall .-94 ; 0x45c - 4ba: 0f 90 pop r0 - 4bc: 0f 90 pop r0 - 4be: 0f 90 pop r0 - 4c0: df 91 pop r29 - 4c2: cf 91 pop r28 - 4c4: 1f 91 pop r17 - 4c6: 0f 91 pop r16 - 4c8: ff 90 pop r15 - 4ca: 08 95 ret - 4cc: 8f e5 ldi r24, 0x5F ; 95 - 4ce: 8b 83 std Y+3, r24 ; 0x03 - 4d0: f1 cf rjmp .-30 ; 0x4b4 - 4d2: 8f e3 ldi r24, 0x3F ; 63 - 4d4: 8b 83 std Y+3, r24 ; 0x03 - 4d6: ee cf rjmp .-36 ; 0x4b4 - 4d8: 8f e1 ldi r24, 0x1F ; 31 - 4da: 8b 83 std Y+3, r24 ; 0x03 - 4dc: eb cf rjmp .-42 ; 0x4b4 - -000004de : - 4de: 04 df rcall .-504 ; 0x2e8 - 4e0: 81 11 cpse r24, r1 - 4e2: 01 c0 rjmp .+2 ; 0x4e6 - 4e4: 08 95 ret - 4e6: 8c ec ldi r24, 0xCC ; 204 - 4e8: 19 df rcall .-462 ; 0x31c - 4ea: 84 e4 ldi r24, 0x44 ; 68 - 4ec: 17 df rcall .-466 ; 0x31c - 4ee: 81 e0 ldi r24, 0x01 ; 1 - 4f0: f9 cf rjmp .-14 ; 0x4e4 - -000004f2 : - 4f2: cf 93 push r28 - 4f4: df 93 push r29 - 4f6: ec 01 movw r28, r24 - 4f8: f7 de rcall .-530 ; 0x2e8 - 4fa: 81 11 cpse r24, r1 - 4fc: 04 c0 rjmp .+8 ; 0x506 - 4fe: 81 e0 ldi r24, 0x01 ; 1 +000004bc : + 4bc: ff 92 push r15 + 4be: 0f 93 push r16 + 4c0: 1f 93 push r17 + 4c2: cf 93 push r28 + 4c4: df 93 push r29 + 4c6: 00 d0 rcall .+0 ; 0x4c8 + 4c8: 1f 92 push r1 + 4ca: cd b7 in r28, 0x3d ; 61 + 4cc: de b7 in r29, 0x3e ; 62 + 4ce: 8c 01 movw r16, r24 + 4d0: f6 2e mov r15, r22 + 4d2: b1 df rcall .-158 ; 0x436 + 4d4: f8 01 movw r30, r16 + 4d6: 82 81 ldd r24, Z+2 ; 0x02 + 4d8: 89 83 std Y+1, r24 ; 0x01 + 4da: 83 81 ldd r24, Z+3 ; 0x03 + 4dc: 8a 83 std Y+2, r24 ; 0x02 + 4de: fa e0 ldi r31, 0x0A ; 10 + 4e0: ff 16 cp r15, r31 + 4e2: b9 f0 breq .+46 ; 0x512 + 4e4: 8b e0 ldi r24, 0x0B ; 11 + 4e6: f8 16 cp r15, r24 + 4e8: 89 f0 breq .+34 ; 0x50c + 4ea: e9 e0 ldi r30, 0x09 ; 9 + 4ec: fe 16 cp r15, r30 + 4ee: a1 f0 breq .+40 ; 0x518 + 4f0: 8f e7 ldi r24, 0x7F ; 127 + 4f2: 8b 83 std Y+3, r24 ; 0x03 + 4f4: ce 01 movw r24, r28 + 4f6: 01 96 adiw r24, 0x01 ; 1 + 4f8: d1 df rcall .-94 ; 0x49c + 4fa: 0f 90 pop r0 + 4fc: 0f 90 pop r0 + 4fe: 0f 90 pop r0 500: df 91 pop r29 502: cf 91 pop r28 - 504: 08 95 ret - 506: ce 01 movw r24, r28 - 508: 08 96 adiw r24, 0x08 ; 8 - 50a: 46 df rcall .-372 ; 0x398 - 50c: 81 e0 ldi r24, 0x01 ; 1 - 50e: 98 85 ldd r25, Y+8 ; 0x08 - 510: 98 32 cpi r25, 0x28 ; 40 - 512: b1 f7 brne .-20 ; 0x500 - 514: 80 e0 ldi r24, 0x00 ; 0 - 516: f4 cf rjmp .-24 ; 0x500 + 504: 1f 91 pop r17 + 506: 0f 91 pop r16 + 508: ff 90 pop r15 + 50a: 08 95 ret + 50c: 8f e5 ldi r24, 0x5F ; 95 + 50e: 8b 83 std Y+3, r24 ; 0x03 + 510: f1 cf rjmp .-30 ; 0x4f4 + 512: 8f e3 ldi r24, 0x3F ; 63 + 514: 8b 83 std Y+3, r24 ; 0x03 + 516: ee cf rjmp .-36 ; 0x4f4 + 518: 8f e1 ldi r24, 0x1F ; 31 + 51a: 8b 83 std Y+3, r24 ; 0x03 + 51c: eb cf rjmp .-42 ; 0x4f4 -00000518 : - 518: cf 93 push r28 - 51a: df 93 push r29 - 51c: ec 01 movw r28, r24 - 51e: df df rcall .-66 ; 0x4de - 520: 88 23 and r24, r24 - 522: 09 f4 brne .+2 ; 0x526 - 524: 56 c0 rjmp .+172 ; 0x5d2 - 526: 2c 81 ldd r18, Y+4 ; 0x04 - 528: 82 2f mov r24, r18 - 52a: 90 e0 ldi r25, 0x00 ; 0 - 52c: 80 95 com r24 - 52e: 90 95 com r25 - 530: 80 76 andi r24, 0x60 ; 96 - 532: 99 27 eor r25, r25 - 534: 89 2b or r24, r25 - 536: 09 f0 breq .+2 ; 0x53a - 538: 4f c0 rjmp .+158 ; 0x5d8 - 53a: 2f e7 ldi r18, 0x7F ; 127 - 53c: 8f e4 ldi r24, 0x4F ; 79 - 53e: 92 e1 ldi r25, 0x12 ; 18 - 540: 21 50 subi r18, 0x01 ; 1 - 542: 80 40 sbci r24, 0x00 ; 0 - 544: 90 40 sbci r25, 0x00 ; 0 - 546: e1 f7 brne .-8 ; 0x540 - 548: 00 c0 rjmp .+0 ; 0x54a - 54a: 00 00 nop - 54c: ce 01 movw r24, r28 - 54e: 53 df rcall .-346 ; 0x3f6 - 550: 88 23 and r24, r24 - 552: 09 f4 brne .+2 ; 0x556 - 554: 3e c0 rjmp .+124 ; 0x5d2 - 556: 29 81 ldd r18, Y+1 ; 0x01 - 558: 38 81 ld r19, Y - 55a: 52 2f mov r21, r18 - 55c: 43 2f mov r20, r19 - 55e: ca 01 movw r24, r20 - 560: 99 23 and r25, r25 - 562: 0c f4 brge .+2 ; 0x566 - 564: 5b c0 rjmp .+182 ; 0x61c - 566: 95 95 asr r25 - 568: 87 95 ror r24 - 56a: 95 95 asr r25 - 56c: 87 95 ror r24 - 56e: 95 95 asr r25 - 570: 87 95 ror r24 - 572: 95 95 asr r25 - 574: 87 95 ror r24 - 576: 99 8b std Y+17, r25 ; 0x11 - 578: 88 8b std Y+16, r24 ; 0x10 - 57a: 28 7f andi r18, 0xF8 ; 248 - 57c: 11 f0 breq .+4 ; 0x582 - 57e: 31 95 neg r19 - 580: 38 83 st Y, r19 - 582: 88 81 ld r24, Y - 584: 8f 70 andi r24, 0x0F ; 15 - 586: 28 2f mov r18, r24 - 588: 30 e0 ldi r19, 0x00 ; 0 - 58a: c9 01 movw r24, r18 - 58c: 88 0f add r24, r24 - 58e: 99 1f adc r25, r25 - 590: 82 95 swap r24 - 592: 92 95 swap r25 - 594: 90 7f andi r25, 0xF0 ; 240 - 596: 98 27 eor r25, r24 - 598: 80 7f andi r24, 0xF0 ; 240 - 59a: 98 27 eor r25, r24 - 59c: 82 1b sub r24, r18 - 59e: 93 0b sbc r25, r19 - 5a0: 88 0f add r24, r24 - 5a2: 99 1f adc r25, r25 - 5a4: 88 0f add r24, r24 - 5a6: 99 1f adc r25, r25 - 5a8: 82 0f add r24, r18 - 5aa: 93 1f adc r25, r19 - 5ac: 88 0f add r24, r24 - 5ae: 99 1f adc r25, r25 - 5b0: 88 0f add r24, r24 - 5b2: 99 1f adc r25, r25 - 5b4: 88 0f add r24, r24 - 5b6: 99 1f adc r25, r25 - 5b8: 9c 01 movw r18, r24 - 5ba: 99 23 and r25, r25 - 5bc: 8c f1 brlt .+98 ; 0x620 - 5be: 35 95 asr r19 - 5c0: 27 95 ror r18 - 5c2: 35 95 asr r19 - 5c4: 27 95 ror r18 - 5c6: 35 95 asr r19 - 5c8: 27 95 ror r18 - 5ca: 35 95 asr r19 - 5cc: 27 95 ror r18 - 5ce: 3b 8b std Y+19, r19 ; 0x13 - 5d0: 2a 8b std Y+18, r18 ; 0x12 - 5d2: df 91 pop r29 - 5d4: cf 91 pop r28 - 5d6: 08 95 ret - 5d8: 26 ff sbrs r18, 6 - 5da: 0a c0 rjmp .+20 ; 0x5f0 - 5dc: 2f eb ldi r18, 0xBF ; 191 - 5de: 87 e2 ldi r24, 0x27 ; 39 - 5e0: 99 e0 ldi r25, 0x09 ; 9 - 5e2: 21 50 subi r18, 0x01 ; 1 - 5e4: 80 40 sbci r24, 0x00 ; 0 - 5e6: 90 40 sbci r25, 0x00 ; 0 - 5e8: e1 f7 brne .-8 ; 0x5e2 - 5ea: 00 c0 rjmp .+0 ; 0x5ec - 5ec: 00 00 nop - 5ee: ae cf rjmp .-164 ; 0x54c - 5f0: 25 ff sbrs r18, 5 - 5f2: 0a c0 rjmp .+20 ; 0x608 - 5f4: 2f ef ldi r18, 0xFF ; 255 - 5f6: 86 e9 ldi r24, 0x96 ; 150 - 5f8: 94 e0 ldi r25, 0x04 ; 4 - 5fa: 21 50 subi r18, 0x01 ; 1 - 5fc: 80 40 sbci r24, 0x00 ; 0 - 5fe: 90 40 sbci r25, 0x00 ; 0 - 600: e1 f7 brne .-8 ; 0x5fa - 602: 00 c0 rjmp .+0 ; 0x604 - 604: 00 00 nop - 606: a2 cf rjmp .-188 ; 0x54c - 608: 2f e7 ldi r18, 0x7F ; 127 - 60a: 8b e4 ldi r24, 0x4B ; 75 - 60c: 92 e0 ldi r25, 0x02 ; 2 - 60e: 21 50 subi r18, 0x01 ; 1 - 610: 80 40 sbci r24, 0x00 ; 0 - 612: 90 40 sbci r25, 0x00 ; 0 - 614: e1 f7 brne .-8 ; 0x60e - 616: 00 c0 rjmp .+0 ; 0x618 - 618: 00 00 nop - 61a: 98 cf rjmp .-208 ; 0x54c - 61c: 0f 96 adiw r24, 0x0f ; 15 - 61e: a3 cf rjmp .-186 ; 0x566 - 620: 21 5f subi r18, 0xF1 ; 241 - 622: 3f 4f sbci r19, 0xFF ; 255 - 624: cc cf rjmp .-104 ; 0x5be +0000051e : + 51e: 04 df rcall .-504 ; 0x328 + 520: 81 11 cpse r24, r1 + 522: 01 c0 rjmp .+2 ; 0x526 + 524: 08 95 ret + 526: 8c ec ldi r24, 0xCC ; 204 + 528: 19 df rcall .-462 ; 0x35c + 52a: 84 e4 ldi r24, 0x44 ; 68 + 52c: 17 df rcall .-466 ; 0x35c + 52e: 81 e0 ldi r24, 0x01 ; 1 + 530: f9 cf rjmp .-14 ; 0x524 -00000626 <__udivmodhi4>: - 626: aa 1b sub r26, r26 - 628: bb 1b sub r27, r27 - 62a: 51 e1 ldi r21, 0x11 ; 17 - 62c: 07 c0 rjmp .+14 ; 0x63c <__udivmodhi4_ep> +00000532 : + 532: cf 93 push r28 + 534: df 93 push r29 + 536: ec 01 movw r28, r24 + 538: f7 de rcall .-530 ; 0x328 + 53a: 81 11 cpse r24, r1 + 53c: 04 c0 rjmp .+8 ; 0x546 + 53e: 81 e0 ldi r24, 0x01 ; 1 + 540: df 91 pop r29 + 542: cf 91 pop r28 + 544: 08 95 ret + 546: ce 01 movw r24, r28 + 548: 08 96 adiw r24, 0x08 ; 8 + 54a: 46 df rcall .-372 ; 0x3d8 + 54c: 81 e0 ldi r24, 0x01 ; 1 + 54e: 98 85 ldd r25, Y+8 ; 0x08 + 550: 98 32 cpi r25, 0x28 ; 40 + 552: b1 f7 brne .-20 ; 0x540 + 554: 80 e0 ldi r24, 0x00 ; 0 + 556: f4 cf rjmp .-24 ; 0x540 -0000062e <__udivmodhi4_loop>: - 62e: aa 1f adc r26, r26 - 630: bb 1f adc r27, r27 - 632: a6 17 cp r26, r22 - 634: b7 07 cpc r27, r23 - 636: 10 f0 brcs .+4 ; 0x63c <__udivmodhi4_ep> - 638: a6 1b sub r26, r22 - 63a: b7 0b sbc r27, r23 +00000558 : + 558: cf 93 push r28 + 55a: df 93 push r29 + 55c: ec 01 movw r28, r24 + 55e: df df rcall .-66 ; 0x51e + 560: 88 23 and r24, r24 + 562: 09 f4 brne .+2 ; 0x566 + 564: 5d c0 rjmp .+186 ; 0x620 + 566: 2c 81 ldd r18, Y+4 ; 0x04 + 568: 82 2f mov r24, r18 + 56a: 90 e0 ldi r25, 0x00 ; 0 + 56c: 80 95 com r24 + 56e: 90 95 com r25 + 570: 80 76 andi r24, 0x60 ; 96 + 572: 99 27 eor r25, r25 + 574: 89 2b or r24, r25 + 576: 09 f0 breq .+2 ; 0x57a + 578: 56 c0 rjmp .+172 ; 0x626 + 57a: 2f e7 ldi r18, 0x7F ; 127 + 57c: 3f e4 ldi r19, 0x4F ; 79 + 57e: 82 e1 ldi r24, 0x12 ; 18 + 580: 21 50 subi r18, 0x01 ; 1 + 582: 30 40 sbci r19, 0x00 ; 0 + 584: 80 40 sbci r24, 0x00 ; 0 + 586: e1 f7 brne .-8 ; 0x580 + 588: 00 c0 rjmp .+0 ; 0x58a + 58a: 00 00 nop + 58c: ce 01 movw r24, r28 + 58e: 53 df rcall .-346 ; 0x436 + 590: 88 23 and r24, r24 + 592: 09 f4 brne .+2 ; 0x596 + 594: 45 c0 rjmp .+138 ; 0x620 + 596: 89 81 ldd r24, Y+1 ; 0x01 + 598: 90 e0 ldi r25, 0x00 ; 0 + 59a: 48 81 ld r20, Y + 59c: 24 2f mov r18, r20 + 59e: 38 2f mov r19, r24 + 5a0: 33 23 and r19, r19 + 5a2: 0c f4 brge .+2 ; 0x5a6 + 5a4: 62 c0 rjmp .+196 ; 0x66a + 5a6: 35 95 asr r19 + 5a8: 27 95 ror r18 + 5aa: 35 95 asr r19 + 5ac: 27 95 ror r18 + 5ae: 35 95 asr r19 + 5b0: 27 95 ror r18 + 5b2: 35 95 asr r19 + 5b4: 27 95 ror r18 + 5b6: 39 8b std Y+17, r19 ; 0x11 + 5b8: 28 8b std Y+16, r18 ; 0x10 + 5ba: 80 95 com r24 + 5bc: 90 95 com r25 + 5be: 88 7f andi r24, 0xF8 ; 248 + 5c0: 99 27 eor r25, r25 + 5c2: 89 2b or r24, r25 + 5c4: 09 f0 breq .+2 ; 0x5c8 + 5c6: 54 c0 rjmp .+168 ; 0x670 + 5c8: 81 e0 ldi r24, 0x01 ; 1 + 5ca: 8c 8b std Y+20, r24 ; 0x14 + 5cc: 41 95 neg r20 + 5ce: 48 83 st Y, r20 + 5d0: 88 81 ld r24, Y + 5d2: 8f 70 andi r24, 0x0F ; 15 + 5d4: 28 2f mov r18, r24 + 5d6: 30 e0 ldi r19, 0x00 ; 0 + 5d8: c9 01 movw r24, r18 + 5da: 88 0f add r24, r24 + 5dc: 99 1f adc r25, r25 + 5de: 82 95 swap r24 + 5e0: 92 95 swap r25 + 5e2: 90 7f andi r25, 0xF0 ; 240 + 5e4: 98 27 eor r25, r24 + 5e6: 80 7f andi r24, 0xF0 ; 240 + 5e8: 98 27 eor r25, r24 + 5ea: 82 1b sub r24, r18 + 5ec: 93 0b sbc r25, r19 + 5ee: 88 0f add r24, r24 + 5f0: 99 1f adc r25, r25 + 5f2: 88 0f add r24, r24 + 5f4: 99 1f adc r25, r25 + 5f6: 82 0f add r24, r18 + 5f8: 93 1f adc r25, r19 + 5fa: 88 0f add r24, r24 + 5fc: 99 1f adc r25, r25 + 5fe: 88 0f add r24, r24 + 600: 99 1f adc r25, r25 + 602: 88 0f add r24, r24 + 604: 99 1f adc r25, r25 + 606: 9c 01 movw r18, r24 + 608: 99 23 and r25, r25 + 60a: a4 f1 brlt .+104 ; 0x674 + 60c: 35 95 asr r19 + 60e: 27 95 ror r18 + 610: 35 95 asr r19 + 612: 27 95 ror r18 + 614: 35 95 asr r19 + 616: 27 95 ror r18 + 618: 35 95 asr r19 + 61a: 27 95 ror r18 + 61c: 3b 8b std Y+19, r19 ; 0x13 + 61e: 2a 8b std Y+18, r18 ; 0x12 + 620: df 91 pop r29 + 622: cf 91 pop r28 + 624: 08 95 ret + 626: 26 ff sbrs r18, 6 + 628: 0a c0 rjmp .+20 ; 0x63e + 62a: 9f eb ldi r25, 0xBF ; 191 + 62c: 27 e2 ldi r18, 0x27 ; 39 + 62e: 39 e0 ldi r19, 0x09 ; 9 + 630: 91 50 subi r25, 0x01 ; 1 + 632: 20 40 sbci r18, 0x00 ; 0 + 634: 30 40 sbci r19, 0x00 ; 0 + 636: e1 f7 brne .-8 ; 0x630 + 638: 00 c0 rjmp .+0 ; 0x63a + 63a: 00 00 nop + 63c: a7 cf rjmp .-178 ; 0x58c + 63e: 25 ff sbrs r18, 5 + 640: 0a c0 rjmp .+20 ; 0x656 + 642: 8f ef ldi r24, 0xFF ; 255 + 644: 96 e9 ldi r25, 0x96 ; 150 + 646: 24 e0 ldi r18, 0x04 ; 4 + 648: 81 50 subi r24, 0x01 ; 1 + 64a: 90 40 sbci r25, 0x00 ; 0 + 64c: 20 40 sbci r18, 0x00 ; 0 + 64e: e1 f7 brne .-8 ; 0x648 + 650: 00 c0 rjmp .+0 ; 0x652 + 652: 00 00 nop + 654: 9b cf rjmp .-202 ; 0x58c + 656: 3f e7 ldi r19, 0x7F ; 127 + 658: 8b e4 ldi r24, 0x4B ; 75 + 65a: 92 e0 ldi r25, 0x02 ; 2 + 65c: 31 50 subi r19, 0x01 ; 1 + 65e: 80 40 sbci r24, 0x00 ; 0 + 660: 90 40 sbci r25, 0x00 ; 0 + 662: e1 f7 brne .-8 ; 0x65c + 664: 00 c0 rjmp .+0 ; 0x666 + 666: 00 00 nop + 668: 91 cf rjmp .-222 ; 0x58c + 66a: 21 5f subi r18, 0xF1 ; 241 + 66c: 3f 4f sbci r19, 0xFF ; 255 + 66e: 9b cf rjmp .-202 ; 0x5a6 + 670: 1c 8a std Y+20, r1 ; 0x14 + 672: ae cf rjmp .-164 ; 0x5d0 + 674: 21 5f subi r18, 0xF1 ; 241 + 676: 3f 4f sbci r19, 0xFF ; 255 + 678: c9 cf rjmp .-110 ; 0x60c -0000063c <__udivmodhi4_ep>: - 63c: 88 1f adc r24, r24 - 63e: 99 1f adc r25, r25 - 640: 5a 95 dec r21 - 642: a9 f7 brne .-22 ; 0x62e <__udivmodhi4_loop> - 644: 80 95 com r24 - 646: 90 95 com r25 - 648: bc 01 movw r22, r24 - 64a: cd 01 movw r24, r26 - 64c: 08 95 ret +0000067a <__udivmodhi4>: + 67a: aa 1b sub r26, r26 + 67c: bb 1b sub r27, r27 + 67e: 51 e1 ldi r21, 0x11 ; 17 + 680: 07 c0 rjmp .+14 ; 0x690 <__udivmodhi4_ep> -0000064e <__divmodhi4>: - 64e: 97 fb bst r25, 7 - 650: 07 2e mov r0, r23 - 652: 16 f4 brtc .+4 ; 0x658 <__divmodhi4+0xa> - 654: 00 94 com r0 - 656: 06 d0 rcall .+12 ; 0x664 <__divmodhi4_neg1> - 658: 77 fd sbrc r23, 7 - 65a: 08 d0 rcall .+16 ; 0x66c <__divmodhi4_neg2> - 65c: e4 df rcall .-56 ; 0x626 <__udivmodhi4> - 65e: 07 fc sbrc r0, 7 - 660: 05 d0 rcall .+10 ; 0x66c <__divmodhi4_neg2> - 662: 3e f4 brtc .+14 ; 0x672 <__divmodhi4_exit> +00000682 <__udivmodhi4_loop>: + 682: aa 1f adc r26, r26 + 684: bb 1f adc r27, r27 + 686: a6 17 cp r26, r22 + 688: b7 07 cpc r27, r23 + 68a: 10 f0 brcs .+4 ; 0x690 <__udivmodhi4_ep> + 68c: a6 1b sub r26, r22 + 68e: b7 0b sbc r27, r23 -00000664 <__divmodhi4_neg1>: - 664: 90 95 com r25 - 666: 81 95 neg r24 - 668: 9f 4f sbci r25, 0xFF ; 255 - 66a: 08 95 ret +00000690 <__udivmodhi4_ep>: + 690: 88 1f adc r24, r24 + 692: 99 1f adc r25, r25 + 694: 5a 95 dec r21 + 696: a9 f7 brne .-22 ; 0x682 <__udivmodhi4_loop> + 698: 80 95 com r24 + 69a: 90 95 com r25 + 69c: bc 01 movw r22, r24 + 69e: cd 01 movw r24, r26 + 6a0: 08 95 ret -0000066c <__divmodhi4_neg2>: - 66c: 70 95 com r23 - 66e: 61 95 neg r22 - 670: 7f 4f sbci r23, 0xFF ; 255 +000006a2 <__divmodhi4>: + 6a2: 97 fb bst r25, 7 + 6a4: 07 2e mov r0, r23 + 6a6: 16 f4 brtc .+4 ; 0x6ac <__divmodhi4+0xa> + 6a8: 00 94 com r0 + 6aa: 06 d0 rcall .+12 ; 0x6b8 <__divmodhi4_neg1> + 6ac: 77 fd sbrc r23, 7 + 6ae: 08 d0 rcall .+16 ; 0x6c0 <__divmodhi4_neg2> + 6b0: e4 df rcall .-56 ; 0x67a <__udivmodhi4> + 6b2: 07 fc sbrc r0, 7 + 6b4: 05 d0 rcall .+10 ; 0x6c0 <__divmodhi4_neg2> + 6b6: 3e f4 brtc .+14 ; 0x6c6 <__divmodhi4_exit> -00000672 <__divmodhi4_exit>: - 672: 08 95 ret +000006b8 <__divmodhi4_neg1>: + 6b8: 90 95 com r25 + 6ba: 81 95 neg r24 + 6bc: 9f 4f sbci r25, 0xFF ; 255 + 6be: 08 95 ret -00000674 <_exit>: - 674: f8 94 cli +000006c0 <__divmodhi4_neg2>: + 6c0: 70 95 com r23 + 6c2: 61 95 neg r22 + 6c4: 7f 4f sbci r23, 0xFF ; 255 -00000676 <__stop_program>: - 676: ff cf rjmp .-2 ; 0x676 <__stop_program> +000006c6 <__divmodhi4_exit>: + 6c6: 08 95 ret + +000006c8 <_exit>: + 6c8: f8 94 cli + +000006ca <__stop_program>: + 6ca: ff cf rjmp .-2 ; 0x6ca <__stop_program> diff --git a/dist/default/production/attiny45v_thermometer.X.production.map b/dist/default/production/attiny45v_thermometer.X.production.map index d79b013..b60df68 100644 --- a/dist/default/production/attiny45v_thermometer.X.production.map +++ b/dist/default/production/attiny45v_thermometer.X.production.map @@ -195,7 +195,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x0000000000000000 0x678 +.text 0x0000000000000000 0x6cc *(.vectors) .vectors 0x0000000000000000 0x1e /home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/gcc/dev/attiny45/avr25/crtattiny45.o 0x0000000000000000 __vectors @@ -291,64 +291,64 @@ END GROUP 0x0000000000000142 0x14 build/default/production/main.o 0x0000000000000142 TM1637_DisplayLine .text.get_int_length - 0x0000000000000156 0x20 build/default/production/main.o + 0x0000000000000156 0x2c build/default/production/main.o 0x0000000000000156 get_int_length .text.TM1637_DisplayFixedNum - 0x0000000000000176 0x120 build/default/production/main.o - 0x0000000000000176 TM1637_DisplayFixedNum - .text.main 0x0000000000000296 0x52 build/default/production/main.o - 0x0000000000000296 main + 0x0000000000000182 0x152 build/default/production/main.o + 0x0000000000000182 TM1637_DisplayFixedNum + .text.main 0x00000000000002d4 0x54 build/default/production/main.o + 0x00000000000002d4 main .text.OneWire_Presence - 0x00000000000002e8 0x34 build/default/production/onewire.o - 0x00000000000002e8 OneWire_Presence + 0x0000000000000328 0x34 build/default/production/onewire.o + 0x0000000000000328 OneWire_Presence .text.OneWire_WriteByte - 0x000000000000031c 0x3a build/default/production/onewire.o - 0x000000000000031c OneWire_WriteByte + 0x000000000000035c 0x3a build/default/production/onewire.o + 0x000000000000035c OneWire_WriteByte .text.OneWire_ReadByte - 0x0000000000000356 0x32 build/default/production/onewire.o - 0x0000000000000356 OneWire_ReadByte + 0x0000000000000396 0x32 build/default/production/onewire.o + 0x0000000000000396 OneWire_ReadByte .text.OneWire_SkipROM - 0x0000000000000388 0x10 build/default/production/onewire.o - 0x0000000000000388 OneWire_SkipROM + 0x00000000000003c8 0x10 build/default/production/onewire.o + 0x00000000000003c8 OneWire_SkipROM .text.OneWire_ReadROM - 0x0000000000000398 0x32 build/default/production/onewire.o - 0x0000000000000398 OneWire_ReadROM + 0x00000000000003d8 0x32 build/default/production/onewire.o + 0x00000000000003d8 OneWire_ReadROM .text.OneWire_CRC8_Update - 0x00000000000003ca 0x2c build/default/production/onewire.o - 0x00000000000003ca OneWire_CRC8_Update + 0x000000000000040a 0x2c build/default/production/onewire.o + 0x000000000000040a OneWire_CRC8_Update .text.DallasTemp_ReadScratchpad - 0x00000000000003f6 0x48 build/default/production/dstemperature.o - 0x00000000000003f6 DallasTemp_ReadScratchpad + 0x0000000000000436 0x48 build/default/production/dstemperature.o + 0x0000000000000436 DallasTemp_ReadScratchpad .text.DallasTemp_CopyScratchpad - 0x000000000000043e 0x1e build/default/production/dstemperature.o - 0x000000000000043e DallasTemp_CopyScratchpad + 0x000000000000047e 0x1e build/default/production/dstemperature.o + 0x000000000000047e DallasTemp_CopyScratchpad .text.DallasTemp_WriteScratchpad - 0x000000000000045c 0x20 build/default/production/dstemperature.o - 0x000000000000045c DallasTemp_WriteScratchpad + 0x000000000000049c 0x20 build/default/production/dstemperature.o + 0x000000000000049c DallasTemp_WriteScratchpad .text.DallasTemp_SetResolution - 0x000000000000047c 0x62 build/default/production/dstemperature.o - 0x000000000000047c DallasTemp_SetResolution + 0x00000000000004bc 0x62 build/default/production/dstemperature.o + 0x00000000000004bc DallasTemp_SetResolution .text.DallasTemp_Convert - 0x00000000000004de 0x14 build/default/production/dstemperature.o - 0x00000000000004de DallasTemp_Convert + 0x000000000000051e 0x14 build/default/production/dstemperature.o + 0x000000000000051e DallasTemp_Convert .text.DallasTemp_CheckError - 0x00000000000004f2 0x26 build/default/production/dstemperature.o - 0x00000000000004f2 DallasTemp_CheckError + 0x0000000000000532 0x26 build/default/production/dstemperature.o + 0x0000000000000532 DallasTemp_CheckError .text.DallasTemp_GetTemperature - 0x0000000000000518 0x10e build/default/production/dstemperature.o - 0x0000000000000518 DallasTemp_GetTemperature + 0x0000000000000558 0x122 build/default/production/dstemperature.o + 0x0000000000000558 DallasTemp_GetTemperature .text.libgcc.div - 0x0000000000000626 0x28 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) - 0x0000000000000626 __udivmodhi4 + 0x000000000000067a 0x28 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o) + 0x000000000000067a __udivmodhi4 .text.libgcc.div - 0x000000000000064e 0x26 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_divmodhi4.o) - 0x000000000000064e __divmodhi4 - 0x000000000000064e _div - 0x0000000000000674 . = ALIGN (0x2) + 0x00000000000006a2 0x26 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_divmodhi4.o) + 0x00000000000006a2 __divmodhi4 + 0x00000000000006a2 _div + 0x00000000000006c8 . = ALIGN (0x2) *(.fini9) - .fini9 0x0000000000000674 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) - 0x0000000000000674 exit - 0x0000000000000674 _exit + .fini9 0x00000000000006c8 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) + 0x00000000000006c8 exit + 0x00000000000006c8 _exit *(.fini9) *(.fini8) *(.fini8) @@ -367,11 +367,11 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x0000000000000674 0x4 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) + .fini0 0x00000000000006c8 0x4 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o) *(.fini0) - 0x0000000000000678 _etext = . + 0x00000000000006cc _etext = . -.data 0x0000000000800060 0x0 load address 0x0000000000000678 +.data 0x0000000000800060 0x0 load address 0x00000000000006cc [!provide] PROVIDE (__data_start, .) *(.data) *(.data*) @@ -389,8 +389,8 @@ END GROUP *(.bss*) *(COMMON) [!provide] PROVIDE (__bss_end, .) - 0x0000000000000678 __data_load_start = LOADADDR (.data) - 0x0000000000000678 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x00000000000006cc __data_load_start = LOADADDR (.data) + 0x00000000000006cc __data_load_end = (__data_load_start + SIZEOF (.data)) .noinit 0x0000000000800060 0x0 [!provide] PROVIDE (__noinit_start, .) diff --git a/dstemperature.c b/dstemperature.c index fb2e680..bfd680e 100644 --- a/dstemperature.c +++ b/dstemperature.c @@ -98,10 +98,20 @@ void DallasTemp_GetTemperature(DallasSensor *Sensor) { * Двойное дополнение для дробной части если минусовая температура: * проверяем что последние пять битов в старшем байте температуры стоят в единице */ - if (Sensor->SCRATCHPAD[1] & 0xf8) Sensor->SCRATCHPAD[0] = -Sensor->SCRATCHPAD[0]; + if (!(~Sensor->SCRATCHPAD[1] & 0xf8)) { + Sensor->T_NEGATIVE = 1; + Sensor->SCRATCHPAD[0] = -Sensor->SCRATCHPAD[0]; + } else { + Sensor->T_NEGATIVE = 0; + } /** * Получаем дробную часть через битовую маску 0x0f, умножаем для получения точности. */ Sensor->TEMPERATURE_FRACTION = ((Sensor->SCRATCHPAD[0] & 0x0f) * 1000) / 16; -} \ No newline at end of file +} + +//float DallasTemp_GetFloatTemperature(DallasSensor *Sensor) { +// DallasTemp_GetTemperature(Sensor); +// return (float)((float)Sensor->TEMPERATURE + ((float)Sensor->TEMPERATURE_FRACTION / 1000)); +//} \ No newline at end of file diff --git a/dstemperature.h b/dstemperature.h index 1f404c8..e2ede35 100644 --- a/dstemperature.h +++ b/dstemperature.h @@ -6,6 +6,11 @@ #define DS18B20_CMD_CPSCRATCHPAD 0x48 #define DS18B20_CONST_FAMILY_CODE 0x28 +#define DS_TEMP_ADC_RESOLUTION_12 12 +#define DS_TEMP_ADC_RESOLUTION_11 11 +#define DS_TEMP_ADC_RESOLUTION_10 10 +#define DS_TEMP_ADC_RESOLUTION_9 9 + #ifndef DSTEMPERATURE_H #define DSTEMPERATURE_H @@ -14,6 +19,7 @@ typedef struct DallasSensor { uint8_t ROM[8]; // ПЗУ (код семейства, серийный код, CRC8) int16_t TEMPERATURE; // Температура в градусах цельсия (целая часть) uint16_t TEMPERATURE_FRACTION; // Дробная часть + uint8_t T_NEGATIVE; } DallasSensor; // TODO сделать чтобы все работало с несколькими датчиками а не с одним (выполнять команду skiprom если один датчик, иначе выбирать к какому датчику обращаться) @@ -56,10 +62,17 @@ void DallasTemp_SetResolution(DallasSensor *Sensor, uint8_t r); /** * Получает оцифрованное значение датчика и конвертирует занчение в читаемый вид. - * @param Sensor - датчика + * @param Sensor - датчик */ void DallasTemp_GetTemperature(DallasSensor *Sensor); +/** + * Преобразует целую и дробную часть в тип числа с плавающей точкой + * @param Sensor - датчик + * @return Возвращает температуру + */ +//float DallasTemp_GetFloatTemperature(DallasSensor *Sensor); + /** * Читает семейный код датчика и проверяет его правильность * @param Sensor - датчик diff --git a/main.c b/main.c index b7290d5..569cdf1 100644 --- a/main.c +++ b/main.c @@ -164,7 +164,7 @@ void TM1637_DisplayInt(int16_t num) { if (is_signed) { tmp = -tmp; - TM1637_DisplaySymbol(0x40, 0); // sign symbol + TM1637_DisplaySymbol(0x40, 0); } do { @@ -174,8 +174,9 @@ void TM1637_DisplayInt(int16_t num) { } while (--i); } -uint8_t get_int_length(uint16_t num) { +uint8_t get_int_length(int16_t num) { uint8_t l = 1; + if (num < 0) num = -num; while (num > 9) { num /= 10; l++; @@ -183,10 +184,8 @@ uint8_t get_int_length(uint16_t num) { return l; } - -// TODO сделать отображение минусовой температуры для этой функции -void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion) { - uint8_t is_signed = (num < 0) | (num == 0 && frac > 0); +void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion, uint8_t sign) { + uint8_t is_signed = (num < 0) | (sign); num = num > 999 ? 999 : num; if (is_signed) { @@ -194,7 +193,8 @@ void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion) { } uint8_t length = get_int_length(num); - uint8_t i = TM1637_DIGITS_COUNT, j = 0; + uint8_t is_overflow = length + 1 == TM1637_DIGITS_COUNT; + uint8_t i = TM1637_DIGITS_COUNT, j = is_overflow && is_signed ? 1 : 0; uint8_t buffer[TM1637_DIGITS_COUNT]; do { @@ -209,19 +209,17 @@ void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion) { } while (i < TM1637_DIGITS_COUNT) { -// if (j == 0) { -//// if (is_signed) { -//// TM1637_DisplaySymbol(0x40, 0); -//// } -// i++; -// j++; -// continue; -// } TM1637_DisplaySymbol( (j == TM1637_DIGITS_COUNT - 1 - presicion && TM1637_DIGITS_COUNT != length) - ? get_symbol(buffer[i]) | 0x80 // точка + ? get_symbol(buffer[i]) | (is_overflow && is_signed ? 0 : 0x80) // точка : get_symbol(buffer[i]), j); + + if (j == 0) { + if (is_signed) { + TM1637_DisplaySymbol(0x40, 0); + } + } i++; j++; } @@ -231,12 +229,11 @@ void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion) { int main(void) { DallasSensor Sensor_01; - - DallasTemp_SetResolution(&Sensor_01, 11); + DallasTemp_SetResolution(&Sensor_01, DS_TEMP_ADC_RESOLUTION_11); TM1637_Init(PORT_TWI_DIO, PORT_TWI_CLK, TM1637_BRIGHTNESS_2, TM1637_DISP_ON); TM1637_DisplayLine(); - + while (1) { /** * Проверка датчика @@ -250,7 +247,7 @@ int main(void) { * Получение температуры и вывод на индикатор */ DallasTemp_GetTemperature(&Sensor_01); - TM1637_DisplayFixedNum(Sensor_01.TEMPERATURE, Sensor_01.TEMPERATURE_FRACTION / 100, 1); + TM1637_DisplayFixedNum(Sensor_01.TEMPERATURE, Sensor_01.TEMPERATURE_FRACTION / 100, 1, Sensor_01.T_NEGATIVE); } return 0; } \ No newline at end of file