diff --git a/dist/default/production/attiny2313a_thermostat.X.production.hex b/dist/default/production/attiny2313a_thermostat.X.production.hex
index 4ecf332..415a9d1 100644
--- a/dist/default/production/attiny2313a_thermostat.X.production.hex
+++ b/dist/default/production/attiny2313a_thermostat.X.production.hex
@@ -7,12 +7,12 @@
:10003A002F933F934F935F935FB74091670045308B
:10004A000CF403C0442740936700403081F493982E
:10005A00949895980EF002C00BE002C000916500DA
-:10006A00002311F0929A01C09298DAD29BD14130C2
+:10006A00002311F0929A01C09298DBD29BD14130C1
:10007A0081F4929894989598009164003091650063
-:10008A00032B11F0939A01C0939800916400C8D28F
+:10008A00032B11F0939A01C0939800916400C9D28E
:10009A0089D1423059F4929893989598949A0091FC
-:1000AA006300BED2002D0F77002E7CD1433041F47D
-:1000BA00929893989498959A00916600B1D272D1C9
+:1000AA006300BFD2002D0F77002E7CD1433041F47C
+:1000BA00929893989498959A00916600B2D272D1C8
:1000CA004395409367005FBF5F914F913F912F9196
:1000DA001F910F9118950FED0DBF0FE701BB01EEB0
:1000EA0007BB0CE108BB02E000BF05E003BF03E267
@@ -22,8 +22,8 @@
:10012A006B0005E000936D0001E000936E0000276C
:10013A00009368000093690000EF00936A000FEFD4
:10014A00009371006624CED000916F00083209F442
-:10015A0005C012E01093600075D201C06CD280E035
-:10016A0090E00091600042D2003051F496982091BC
+:10015A0005C012E01093600076D201C06DD280E033
+:10016A0090E00091600043D2003051F496982091BB
:10017A006A0020936600A7D059D011E019BF38D081
:10018A00013011F4969848D1023059F7969AE9CF7E
:10019A00EE24FF1841E1001F111F4A9509F4089542
@@ -46,67 +46,67 @@
:1002AA00909801C0909A07C040916E00442311F4BF
:1002BA00909A01C090987F915F914F913F912F91B1
:1002CA001F910F9108951F9361D052E135E54DEBCF
-:1002DA00D4D112D010916800812F10916900912F0A
-:1002EA001F9108950F9334D103E3802E46D1AFE6D0
-:1002FA00B0E062D10F9108950F931F932F933F930C
-:10030A004F9326D170FF3CC00CEC802E36D10EEBF9
-:10031A00802E33D1A8E6B0E04FD1A9E6B0E04CD1A7
+:1002DA00D5D112D010916800812F10916900912F09
+:1002EA001F9108950F9335D103E3802E47D1AFE6CE
+:1002FA00B0E063D10F9108950F931F932F933F930B
+:10030A004F9327D170FF3CC00CEC802E37D10EEBF7
+:10031A00802E34D1A8E6B0E050D1A9E6B0E04DD1A4
:10032A0010916800209169002F93287F283F11F0CF
:10033A00E89407C02F916894109520951F5F2F4F5E
:10034A0001C02F91269517952695179526951795ED
:10035A0026951795309168000EF43195432F3F701A
:10036A00432F330F330F330F440F340F369536951F
:10037A0036953695109368002093690030936A0089
-:10038A004F913F912F911F910F9108950F93E0D0B4
-:10039A0070FF06C00CEC802EF0D004E4802EEDD065
+:10038A004F913F912F911F910F9108950F93E1D0B3
+:10039A0070FF06C00CEC802EF1D004E4802EEED063
:1003AA000F9108950F930F920FB800E40EB90BE165
:1003BA000DB9769BFDCFC09AC0980F900F91089502
:1003CA000F93B49B01C01AC000917100002309F475
-:1003DA0015C00027009371003CD16394162D143088
-:1003EA0014F429D10BC010E019BF929893989498ED
-:1003FA009598662427D110E010936000B49901C043
+:1003DA0015C00027009371003DD16394162D143087
+:1003EA0014F42AD10BC010E019BF929893989498EC
+:1003FA009598662428D110E010936000B49901C042
:10040A0009C000917100002309F004C00FEF0093A6
-:10041A0071001FD10F9108950F931F932F933F934C
-:10042A004F93062D002309F002C005D16394C8DF5B
-:10043A00013029F0023049F1033031F183C0000064
-:10044A00B29B04C000C0B39B0AC011C002D1109174
-:10045A006D00183C09F0139510936D0008C0F9D08F
+:10041A00710020D10F9108950F931F932F933F934B
+:10042A004F93062D002309F002C006D16394C8DF5A
+:10043A00013029F0023049F1033031F184C0000063
+:10044A00B29B04C000C0B39B0AC011C003D1109173
+:10045A006D00183C09F0139510936D0008C0FAD08E
:10046A0010916D00113009F01A9510936D000F93D9
:10047A001F9300916D001AE09EDE802F9927F0925B
-:10048A0066001F910F915EC03EC00000B29B04C07F
-:10049A0000C0B39B0FC019C0DCD010916C00209132
-:1004AA006B0031E0130F3327231F10936C00209346
-:1004BA006B000BC0CED010916C0020916B001150D4
+:10048A0066001F910F915FC03FC00000B29B04C07D
+:10049A0000C0B39B0FC019C0DDD010916C00209131
+:1004AA006B003AE0130F3327231F10936C0020933D
+:1004BA006B000BC0CFD010916C0020916B001A50CA
:1004CA00204010936C0020936B000F931F932F937F
:1004DA003F9300916C0010916B00212F207811F44A
:1004EA00E89405C06894009510950F5F1F4F2AE0A5
-:1004FA0030E04EDE802F912FE09266003F912F91DF
-:10050A001F910F911FC0E894B29B04C000C0B39B17
-:10051A0006C009C09ED011E010936E0004C099D0A5
-:10052A0010E010936E001127812F912F20916E00F9
-:10053A00222309F004C01CE01093660003C01DE0EA
-:10054A00109366004F913F912F911F910F9108953B
-:10055A00F894B99A33E04EEB8CD0B99830E04AE877
-:10056A0088D005D033E042E384D078940895B19BD3
-:10057A00716002C0B1997E7F0895F8940F931F931A
-:10058A00082D18E0069508F448F0B99A30E046E7D5
-:10059A0070D0B99830E042E16CD008C0B99A30E026
-:1005AA004AE067D0B99830E04EE763D01A9551F720
-:1005BA001F910F9178940895F8940F931F93002731
-:1005CA0018E00695B99A30E04AE053D0B99830E07D
-:1005DA0040E14FD0B199006830E04CE64AD01A9514
-:1005EA0081F70C931F910F91789408950F935F935D
-:1005FA0053E0A3E6B0E0809361009093620000911B
-:10060A006100109162002AE030E0C2DDED920093B1
-:10061A006100109362005A9591F75F910F910895C6
-:10062A000F931F93EEEAF6E01127E00FF11F0490F3
-:10063A001F910F910895C59A53E039EA4DE71DD0ED
-:10064A00C5980895C59A5CE034E34DEF16D0C59875
-:10065A0008950F931F932F932AE01FEF0FEF0A9528
-:10066A00F1F71A95D9F72A95C1F72F911F910F9192
-:10067A00089541503040E8F70895415030405040C5
-:10068A00E0F708950F931F932F9326E00FEF1FEFC4
-:10069A001A95F1F70A95D9F72A95C1F72F911F9163
-:1006AA000F910895C0F9A4B0999282F880909CBFE6
-:0206BA00C689EF
+:1004FA0030E04EDE802F912F0AE0009366003F9194
+:10050A002F911F910F911FC0E894B29B04C000C0A5
+:10051A00B39B06C009C09ED011E010936E0004C0C0
+:10052A0099D010E010936E001127812F912F2091FE
+:10053A006E00222309F004C01CE01093660003C079
+:10054A001DE0109366004F913F912F911F910F91DB
+:10055A000895F894B99A33E04EEB8CD0B99830E00C
+:10056A004AE888D005D033E042E384D078940895ED
+:10057A00B19B716002C0B1997E7F0895F8940F9380
+:10058A001F93082D18E0069508F448F0B99A30E050
+:10059A0046E770D0B99830E042E16CD008C0B99A09
+:1005AA0030E04AE067D0B99830E04EE763D01A9558
+:1005BA0051F71F910F9178940895F8940F931F9310
+:1005CA00002718E00695B99A30E04AE053D0B99866
+:1005DA0030E040E14FD0B199006830E04CE64AD0B3
+:1005EA001A9581F70C931F910F91789408950F93A0
+:1005FA005F9353E0A3E6B0E08093610090936200BA
+:10060A0000916100109162002AE030E0C1DDED92B4
+:10061A0000936100109362005A9591F75F910F91D0
+:10062A0008950F931F93E0EBF6E01127E00FF11FF7
+:10063A0004901F910F910895C59A53E039EA4DE746
+:10064A001DD0C5980895C59A5CE034E34DEF16D0E5
+:10065A00C59808950F931F932F932AE01FEF0FEF6A
+:10066A000A95F1F71A95D9F72A95C1F72F911F9193
+:10067A000F91089541503040E8F7089541503040B5
+:10068A005040E0F708950F931F932F9326E00FEF42
+:10069A001FEF1A95F1F70A95D9F72A95C1F72F9105
+:1006AA001F910F910895C0F9A4B0999282F8809091
+:0406BA009CBFC68992
:00000001FF
diff --git a/dist/default/production/attiny2313a_thermostat.X.production.lss b/dist/default/production/attiny2313a_thermostat.X.production.lss
index be49451..19eb142 100644
--- a/dist/default/production/attiny2313a_thermostat.X.production.lss
+++ b/dist/default/production/attiny2313a_thermostat.X.production.lss
@@ -1,5 +1,5 @@
-AVRASM ver. 2.2.7 main.asm Thu Jun 29 22:49:03 2023
+AVRASM ver. 2.2.7 main.asm Thu Jun 29 23:01:33 2023
[builtin](2): Including file '/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/avrasm/inc\tn2313Adef.inc'
main.asm(15): Including file 'definitions.asm'
@@ -997,7 +997,7 @@ main.asm(297): Including file 'mpy16u.asm'
000037 9a92 sbi PORTD, DIGIT_1_PIN
000038 c001 rjmp PC+2
000039 9892 cbi PORTD, DIGIT_1_PIN
-00003a d2da rcall DISPLAY_DECODER
+00003a d2db rcall DISPLAY_DECODER
00003b d19b rcall USI_TRANSMIT
_indicate_2:
@@ -1015,7 +1015,7 @@ main.asm(297): Including file 'mpy16u.asm'
000048 c001 rjmp PC+2
000049 9893 cbi PORTD, DIGIT_2_PIN
00004a 9100 0064 lds TEMP_REG_A, DIGITS+1
-00004c d2c8 rcall DISPLAY_DECODER
+00004c d2c9 rcall DISPLAY_DECODER
00004d d189 rcall USI_TRANSMIT
_indicate_3:
@@ -1027,7 +1027,7 @@ main.asm(297): Including file 'mpy16u.asm'
000052 9895 cbi PORTD, DIGIT_4_PIN
000053 9a94 sbi PORTD, DIGIT_3_PIN
000054 9100 0063 lds TEMP_REG_A, DIGITS
-000056 d2be rcall DISPLAY_DECODER
+000056 d2bf rcall DISPLAY_DECODER
; зажигаем точку
000057 2d00 mov r16, r0
000058 770f cbr r16, (1<<7)
@@ -1043,7 +1043,7 @@ main.asm(297): Including file 'mpy16u.asm'
00005f 9894 cbi PORTD, DIGIT_3_PIN
000060 9a95 sbi PORTD, DIGIT_4_PIN
000061 9100 0066 lds TEMP_REG_A, DIGITS+3
-000063 d2b1 rcall DISPLAY_DECODER
+000063 d2b2 rcall DISPLAY_DECODER
000064 d172 rcall USI_TRANSMIT
_indicate_exit:
@@ -1147,10 +1147,10 @@ main.asm(297): Including file 'mpy16u.asm'
ERR_FAMILY_CODE:
0000ae e012 ldi r17, MCU_STATE_ERROR
0000af 9310 0060 sts MCU_STATE, r17
-0000b1 d275 rcall BEEP_LONG
+0000b1 d276 rcall BEEP_LONG
0000b2 c001 rjmp PC+2
START_PROGRAM:
-0000b3 d26c rcall BEEP_SHORT
+0000b3 d26d rcall BEEP_SHORT
0000b4 e080
0000b5 e090 display_load 0
//
@@ -1159,7 +1159,7 @@ main.asm(297): Including file 'mpy16u.asm'
; **** ГЛАВНЫЙ ЦИКЛ **********************************************
LOOP:
0000b6 9100 0060 lds r16, MCU_STATE ; получаем текущее состояние МК
-0000b8 d242 rcall DISPLAY_UPD_DIGITS
+0000b8 d243 rcall DISPLAY_UPD_DIGITS
_STATE_DEFAULT:
0000b9 3000 cpi r16, MCU_STATE_DEFAULT
0000ba f451 brne _STATE_PROGRAM
@@ -1476,7 +1476,7 @@ main.asm(297): Including file 'mpy16u.asm'
00016a e152
00016b e535
00016c eb4d
-00016d d1d4 DELAY24 751000
+00016d d1d5 DELAY24 751000
00016e d012 rcall TEMP_RD
; обновляем данные в ячейках
@@ -1492,14 +1492,14 @@ main.asm(297): Including file 'mpy16u.asm'
RD_F_CODE:
000177 930f push r16
-000178 d134 rcall OW_PRESENCE
+000178 d135 rcall OW_PRESENCE
000179 e303 ldi r16, DS18B20_CMD_READROM
00017a 2e80 mov OW_CMD_r, r16
-00017b d146 rcall OW_SEND_BYTE
+00017b d147 rcall OW_SEND_BYTE
00017c e6af ldi XL, LOW(DEVICE_FAMILY_CODE)
00017d e0b0 ldi XH, HIGH(DEVICE_FAMILY_CODE)
-00017e d162 rcall OW_RD_BYTE
+00017e d163 rcall OW_RD_BYTE
00017f 910f pop r16
000180 9508 ret//
@@ -1512,25 +1512,25 @@ main.asm(297): Including file 'mpy16u.asm'
000184 933f push r19
000185 934f push r20
-000186 d126 rcall OW_PRESENCE
+000186 d127 rcall OW_PRESENCE
000187 ff70 sbrs OWFR, OWPRF
000188 c03c rjmp _TEMP_RD_EXIT
000189 ec0c ldi r16, DS18B20_CMD_SKIPROM
00018a 2e80 mov OW_CMD_r, r16
-00018b d136 rcall OW_SEND_BYTE
+00018b d137 rcall OW_SEND_BYTE
00018c eb0e ldi r16, DS18B20_CMD_RSCRATCHPAD
00018d 2e80 mov OW_CMD_r, r16
-00018e d133 rcall OW_SEND_BYTE
+00018e d134 rcall OW_SEND_BYTE
00018f e6a8 ldi XL, LOW(TEMP_L)
000190 e0b0 ldi XH, HIGH(TEMP_L)
-000191 d14f rcall OW_RD_BYTE
+000191 d150 rcall OW_RD_BYTE
000192 e6a9 ldi XL, LOW(TEMP_H)
000193 e0b0 ldi XH, HIGH(TEMP_H)
-000194 d14c rcall OW_RD_BYTE
+000194 d14d rcall OW_RD_BYTE
000195 9110 0068 lds r17, TEMP_L
000197 9120 0069 lds r18, TEMP_H
@@ -1604,17 +1604,17 @@ main.asm(297): Including file 'mpy16u.asm'
TEMP_CONV:
0001cb 930f push r16
-0001cc d0e0 rcall OW_PRESENCE
+0001cc d0e1 rcall OW_PRESENCE
0001cd ff70 sbrs OWFR, OWPRF
0001ce c006 rjmp _TEMP_CONV_EXIT
0001cf ec0c ldi r16, DS18B20_CMD_SKIPROM
0001d0 2e80 mov OW_CMD_r, r16
-0001d1 d0f0 rcall OW_SEND_BYTE
+0001d1 d0f1 rcall OW_SEND_BYTE
0001d2 e404 ldi r16, DS18B20_CMD_CONVERTTEMP
0001d3 2e80 mov OW_CMD_r, r16
-0001d4 d0ed rcall OW_SEND_BYTE
+0001d4 d0ee rcall OW_SEND_BYTE
_TEMP_CONV_EXIT:
0001d5 910f pop r16
@@ -1670,12 +1670,12 @@ main.asm(297): Including file 'mpy16u.asm'
_SW_SET_FROM_0_TO_1:
0001ee 2700 clr r16
0001ef 9300 0071 sts SW_DATA, r16
-0001f1 d13c rcall DEBOUNCE_SW
+0001f1 d13d rcall DEBOUNCE_SW
0001f2 9463 inc REPROGRAM_STEP_r
0001f3 2d16 mov r17, REPROGRAM_STEP_r
0001f4 3014 cpi r17, 4
0001f5 f414 brge _SAVE_SETTINGS
-0001f6 d129 rcall BEEP_SHORT
+0001f6 d12a rcall BEEP_SHORT
0001f7 c00b rjmp _SW_CHECK_ON_1
_SAVE_SETTINGS:
0001f8 e010
@@ -1685,7 +1685,7 @@ main.asm(297): Including file 'mpy16u.asm'
0001fc 9894 cbi PORTD, DIGIT_3_PIN
0001fd 9895 cbi PORTD, DIGIT_4_PIN
0001fe 2466 clr REPROGRAM_STEP_r
-0001ff d127 rcall BEEP_LONG
+0001ff d128 rcall BEEP_LONG
000200 e010 ldi r17, MCU_STATE_DEFAULT
000201 9310 0060 sts MCU_STATE, r17
_SW_CHECK_ON_1:
@@ -1700,7 +1700,7 @@ main.asm(297): Including file 'mpy16u.asm'
_SW_SET_FROM_1_TO_0:
00020b ef0f ser r16
00020c 9300 0071 sts SW_DATA, r16
-00020e d11f rcall DEBOUNCE_SW
+00020e d120 rcall DEBOUNCE_SW
_BUTTON_PROCESS_END:
00020f 910f pop r16
000210 9508 ret
@@ -1719,7 +1719,7 @@ main.asm(297): Including file 'mpy16u.asm'
000218 f009 breq _INTO
000219 c002 rjmp _REPROGRAM_SETTINGS_LOOP
_INTO:
-00021a d105 rcall BEEP_SHORT
+00021a d106 rcall BEEP_SHORT
00021b 9463 inc REPROGRAM_STEP_r
_REPROGRAM_SETTINGS_LOOP:
00021c dfc8 rcall BUTTON_PROCESS
@@ -1730,7 +1730,7 @@ main.asm(297): Including file 'mpy16u.asm'
000220 f149 breq _STEP_2
000221 3003 cpi r16, 3
000222 f131 breq _S3_JMP
-000223 c083 rjmp _REPROGRAM_SETTINGS_END
+000223 c084 rjmp _REPROGRAM_SETTINGS_END
//
_STEP_1: ; установка и отображение гистерезиса
@@ -1744,7 +1744,7 @@ main.asm(297): Including file 'mpy16u.asm'
000229 c00a rjmp _DECREASE_HYST
00022a c011 rjmp _SHOW_HYST
_INCREASE_HYST:
-00022b d102 rcall DEBOUNCE_SW
+00022b d103 rcall DEBOUNCE_SW
00022c 9110 006d lds r17, SETTING_HYST
00022e 3c18 cpi r17, MAX_HYST
00022f f009 breq PC+2
@@ -1752,7 +1752,7 @@ main.asm(297): Including file 'mpy16u.asm'
000231 9310 006d sts SETTING_HYST, r17
000233 c008 rjmp _SHOW_HYST
_DECREASE_HYST:
-000234 d0f9 rcall DEBOUNCE_SW
+000234 d0fa rcall DEBOUNCE_SW
000235 9110 006d lds r17, SETTING_HYST
000237 3011 cpi r17, MIN_HYST
000238 f009 breq PC+2
@@ -1769,11 +1769,11 @@ main.asm(297): Including file 'mpy16u.asm'
000244 92f0 0066 sts DIGITS+3, drem8u
000246 911f pop dv8u
000247 910f pop dd8u
-000248 c05e rjmp _REPROGRAM_SETTINGS_END
+000248 c05f rjmp _REPROGRAM_SETTINGS_END
//
_S3_JMP: ; просто прыжок на _STEP_3
-000249 c03e rjmp _STEP_3
+000249 c03f rjmp _STEP_3
//
_STEP_2:
@@ -1787,10 +1787,10 @@ main.asm(297): Including file 'mpy16u.asm'
00024f c00f rjmp _DECREASE_TEMP
000250 c019 rjmp _SHOW_TEMP
_INCREASE_TEMP:
-000251 d0dc rcall DEBOUNCE_SW
+000251 d0dd rcall DEBOUNCE_SW
000252 9110 006c lds r17, SETTING_TEMP_L
000254 9120 006b lds r18, SETTING_TEMP_H
-000256 e031 ldi r19, 1
+000256 e03a ldi r19, 10
000257 0f13 add r17, r19
000258 2733 clr r19
000259 1f23 adc r18, r19
@@ -1798,10 +1798,10 @@ main.asm(297): Including file 'mpy16u.asm'
00025c 9320 006b sts SETTING_TEMP_H, r18
00025e c00b rjmp _SHOW_TEMP
_DECREASE_TEMP:
-00025f d0ce rcall DEBOUNCE_SW
+00025f d0cf rcall DEBOUNCE_SW
000260 9110 006c lds r17, SETTING_TEMP_L
000262 9120 006b lds r18, SETTING_TEMP_H
-000264 5011 subi r17, 1
+000264 501a subi r17, 10
000265 4020 sbci r18, 0
000266 9310 006c sts SETTING_TEMP_L, r17
000268 9320 006b sts SETTING_TEMP_H, r18
@@ -1831,60 +1831,62 @@ main.asm(297): Including file 'mpy16u.asm'
00027e de4e rcall div16u
00027f 2f80 mov DISP_NUM_L, dres16uL
000280 2f91 mov DISP_NUM_H, dres16uH
-000281 92e0 0066 sts DIGITS+3, drem16uL
-000283 913f pop dv16uH
-000284 912f pop dv16uL
-000285 911f pop dd16uH
-000286 910f pop dd16uL
-000287 c01f rjmp _REPROGRAM_SETTINGS_END
+000281 e00a ldi r16, 10
+000282 9300 0066 sts DIGITS+3, r16 ; значок градуса
+
+000284 913f pop dv16uH
+000285 912f pop dv16uL
+000286 911f pop dd16uH
+000287 910f pop dd16uL
+000288 c01f rjmp _REPROGRAM_SETTINGS_END
//
//
_STEP_3:
-000288 94e8 clt
+000289 94e8 clt
_S3_CHECK_PLUS:
-000289 9bb2 sbis SW_PIN, SW_PLUS_PIN
-00028a c004 rjmp _SET_HEAT_MODE
-00028b c000 rjmp _S3_CHECK_MINUS
+00028a 9bb2 sbis SW_PIN, SW_PLUS_PIN
+00028b c004 rjmp _SET_HEAT_MODE
+00028c c000 rjmp _S3_CHECK_MINUS
_S3_CHECK_MINUS:
-00028c 9bb3 sbis SW_PIN, SW_MINUS_PIN
-00028d c006 rjmp _SET_COOLING_MODE
-00028e c009 rjmp _SHOW_MODE
+00028d 9bb3 sbis SW_PIN, SW_MINUS_PIN
+00028e c006 rjmp _SET_COOLING_MODE
+00028f c009 rjmp _SHOW_MODE
_SET_HEAT_MODE:
-00028f d09e rcall DEBOUNCE_SW
-000290 e011 ldi r17, HEAT_MODE
-000291 9310 006e sts SETTING_MODE, r17
-000293 c004 rjmp _SHOW_MODE
+000290 d09e rcall DEBOUNCE_SW
+000291 e011 ldi r17, HEAT_MODE
+000292 9310 006e sts SETTING_MODE, r17
+000294 c004 rjmp _SHOW_MODE
_SET_COOLING_MODE:
-000294 d099 rcall DEBOUNCE_SW
-000295 e010 ldi r17, COOLING_MODE
-000296 9310 006e sts SETTING_MODE, r17
+000295 d099 rcall DEBOUNCE_SW
+000296 e010 ldi r17, COOLING_MODE
+000297 9310 006e sts SETTING_MODE, r17
_SHOW_MODE:
-000298 2711 clr r17
-000299 2f81 mov DISP_NUM_L, r17
-00029a 2f91 mov DISP_NUM_H, r17
-00029b 9120 006e lds r18, SETTING_MODE
-00029d 2322 tst r18
-00029e f009 breq _SHOW_COOLING
-00029f c004 rjmp _SHOW_HEATING
+000299 2711 clr r17
+00029a 2f81 mov DISP_NUM_L, r17
+00029b 2f91 mov DISP_NUM_H, r17
+00029c 9120 006e lds r18, SETTING_MODE
+00029e 2322 tst r18
+00029f f009 breq _SHOW_COOLING
+0002a0 c004 rjmp _SHOW_HEATING
_SHOW_COOLING:
-0002a0 e01c ldi r17, 12
-0002a1 9310 0066 sts DIGITS+3, r17
-0002a3 c003 rjmp _REPROGRAM_SETTINGS_END
+0002a1 e01c ldi r17, 12
+0002a2 9310 0066 sts DIGITS+3, r17
+0002a4 c003 rjmp _REPROGRAM_SETTINGS_END
_SHOW_HEATING:
-0002a4 e01d ldi r17, 13
-0002a5 9310 0066 sts DIGITS+3, r17
+0002a5 e01d ldi r17, 13
+0002a6 9310 0066 sts DIGITS+3, r17
//
_REPROGRAM_SETTINGS_END:
-0002a7 914f pop r20
-0002a8 913f pop r19
-0002a9 912f pop r18
-0002aa 911f pop r17
-0002ab 910f pop r16
-0002ac 9508 ret
+0002a8 914f pop r20
+0002a9 913f pop r19
+0002aa 912f pop r18
+0002ab 911f pop r17
+0002ac 910f pop r16
+0002ad 9508 ret
//
;DBG_LED_TOGGLE:
@@ -1902,21 +1904,21 @@ main.asm(297): Including file 'mpy16u.asm'
//
; **** ОПРОС ПРИСУТСТВИЯ УСТРОЙСТВА ******************************
OW_PRESENCE:
-0002ad 94f8 cli
-0002ae 9ab9 ow_pull
-0002af e033
-0002b0 eb4e
-0002b1 d08c DELAY16 480
-0002b2 98b9 ow_release
-0002b3 e030
-0002b4 e84a
-0002b5 d088 DELAY16 70
-0002b6 d005 rcall OW_CHECK_PRESENCE
-0002b7 e033
-0002b8 e342
-0002b9 d084 DELAY16 410
-0002ba 9478 sei
-0002bb 9508 ret
+0002ae 94f8 cli
+0002af 9ab9 ow_pull
+0002b0 e033
+0002b1 eb4e
+0002b2 d08c DELAY16 480
+0002b3 98b9 ow_release
+0002b4 e030
+0002b5 e84a
+0002b6 d088 DELAY16 70
+0002b7 d005 rcall OW_CHECK_PRESENCE
+0002b8 e033
+0002b9 e342
+0002ba d084 DELAY16 410
+0002bb 9478 sei
+0002bc 9508 ret
//
//
@@ -1924,83 +1926,83 @@ main.asm(297): Including file 'mpy16u.asm'
; Если подчиненное устройство притянет шину, то устанавливаем флаг OWPRF в единицу в регистре флагов
;
OW_CHECK_PRESENCE:
-0002bc 9bb1 sbis OW_PIN, OW_LINE
-0002bd 6071 sbr OWFR, (1<
//
OW_SEND_BYTE:
-0002c2 94f8 cli
-0002c3 930f push r16
-0002c4 931f push r17
-0002c5 2d08 mov r16, OW_CMD_r
-0002c6 e018 ldi r17, 8
+0002c3 94f8 cli
+0002c4 930f push r16
+0002c5 931f push r17
+0002c6 2d08 mov r16, OW_CMD_r
+0002c7 e018 ldi r17, 8
_OW_SEND_BYTE_LOOP:
-0002c7 9506 lsr r16
-0002c8 f408 brcc _OW_SEND_0
-0002c9 f048 brcs _OW_SEND_1
+0002c8 9506 lsr r16
+0002c9 f408 brcc _OW_SEND_0
+0002ca f048 brcs _OW_SEND_1
_OW_SEND_0:
-0002ca 9ab9 ow_pull
-0002cb e030
-0002cc e746
-0002cd d070 DELAY16 60
-0002ce 98b9 ow_release
-0002cf e030
-0002d0 e142
-0002d1 d06c DELAY16 10
-0002d2 c008 rjmp _OW_SEND_BYTE_END
+0002cb 9ab9 ow_pull
+0002cc e030
+0002cd e746
+0002ce d070 DELAY16 60
+0002cf 98b9 ow_release
+0002d0 e030
+0002d1 e142
+0002d2 d06c DELAY16 10
+0002d3 c008 rjmp _OW_SEND_BYTE_END
_OW_SEND_1:
-0002d3 9ab9 ow_pull
-0002d4 e030
-0002d5 e04a
-0002d6 d067 DELAY16 6
-0002d7 98b9 ow_release
-0002d8 e030
-0002d9 e74e
-0002da d063 DELAY16 64
+0002d4 9ab9 ow_pull
+0002d5 e030
+0002d6 e04a
+0002d7 d067 DELAY16 6
+0002d8 98b9 ow_release
+0002d9 e030
+0002da e74e
+0002db d063 DELAY16 64
_OW_SEND_BYTE_END:
-0002db 951a dec r17
-0002dc f751 brne _OW_SEND_BYTE_LOOP
-0002dd 911f pop r17
-0002de 910f pop r16
-0002df 9478 sei
-0002e0 9508 ret
+0002dc 951a dec r17
+0002dd f751 brne _OW_SEND_BYTE_LOOP
+0002de 911f pop r17
+0002df 910f pop r16
+0002e0 9478 sei
+0002e1 9508 ret
//
//
OW_RD_BYTE:
-0002e1 94f8 cli
-0002e2 930f push r16
-0002e3 931f push r17
-0002e4 2700 clr r16
-0002e5 e018 ldi r17, 8
+0002e2 94f8 cli
+0002e3 930f push r16
+0002e4 931f push r17
+0002e5 2700 clr r16
+0002e6 e018 ldi r17, 8
_OW_RD_BYTE_LP:
-0002e6 9506 lsr r16
-0002e7 9ab9 ow_pull
-0002e8 e030
-0002e9 e04a
-0002ea d053 DELAY16 6
-0002eb 98b9 ow_release
-0002ec e030
-0002ed e140
-0002ee d04f DELAY16 9
-0002ef 99b1 sbic OW_PIN, OW_LINE
-0002f0 6800 sbr r16, (1<<7)
-0002f1 e030
-0002f2 e64c
-0002f3 d04a DELAY16 55
-0002f4 951a dec r17
-0002f5 f781 brne _OW_RD_BYTE_LP
-0002f6 930c st X, r16
-0002f7 911f pop r17
-0002f8 910f pop r16
-0002f9 9478 sei
-0002fa 9508 ret
+0002e7 9506 lsr r16
+0002e8 9ab9 ow_pull
+0002e9 e030
+0002ea e04a
+0002eb d053 DELAY16 6
+0002ec 98b9 ow_release
+0002ed e030
+0002ee e140
+0002ef d04f DELAY16 9
+0002f0 99b1 sbic OW_PIN, OW_LINE
+0002f1 6800 sbr r16, (1<<7)
+0002f2 e030
+0002f3 e64c
+0002f4 d04a DELAY16 55
+0002f5 951a dec r17
+0002f6 f781 brne _OW_RD_BYTE_LP
+0002f7 930c st X, r16
+0002f8 911f pop r17
+0002f9 910f pop r16
+0002fa 9478 sei
+0002fb 9508 ret
//
//
@@ -2009,163 +2011,163 @@ main.asm(297): Including file 'mpy16u.asm'
; Описание: Перемещает цифры числа в соответствующие ячейки памяти в SRAM
; путем деления этого числа несколько раз
DISPLAY_UPD_DIGITS:
-0002fb 930f push r16
-0002fc 935f push r21
-0002fd e053 ldi r21, 3
+0002fc 930f push r16
+0002fd 935f push r21
+0002fe e053 ldi r21, 3
; инициализация указателя (за каждый проход цикла будет инкрементироваться)
-0002fe e6a3 ldi XL, LOW(DIGITS)
-0002ff e0b0 ldi XH, HIGH(DIGITS)
+0002ff e6a3 ldi XL, LOW(DIGITS)
+000300 e0b0 ldi XH, HIGH(DIGITS)
.equ dividend = SRAM_TEMP_1 ; число которе будем делить
.equ divisor = 10 ; на что делим
; загружаем число которое хотим поделить в адрес SRAM делимого
-000300 9380 0061 sts dividend, DISP_NUM_L
-000302 9390 0062 sts dividend+1, DISP_NUM_H
+000301 9380 0061 sts dividend, DISP_NUM_L
+000303 9390 0062 sts dividend+1, DISP_NUM_H
; четыре раза производим деление для получения остатков
DIV_LOOP:
; заполняем нужные регистры
-000304 9100 0061 lds dd16uL, dividend
-000306 9110 0062 lds dd16uH, dividend+1
-000308 e02a ldi dv16uL, LOW(divisor)
-000309 e030 ldi dv16uH, HIGH(divisor)
+000305 9100 0061 lds dd16uL, dividend
+000307 9110 0062 lds dd16uH, dividend+1
+000309 e02a ldi dv16uL, LOW(divisor)
+00030a e030 ldi dv16uH, HIGH(divisor)
-00030a ddc2 rcall div16u ; делим
+00030b ddc1 rcall div16u ; делим
-00030b 92ed st X+, drem16uL ; сохраняем остаток в ячейку по указателю и увеличиваем его
+00030c 92ed st X+, drem16uL ; сохраняем остаток в ячейку по указателю и увеличиваем его
; обновляем делимое
-00030c 9300 0061 sts dividend, dres16uL
-00030e 9310 0062 sts dividend+1, dres16uH
+00030d 9300 0061 sts dividend, dres16uL
+00030f 9310 0062 sts dividend+1, dres16uH
-000310 955a dec r21 ; декрементируем счетчик цикла
-000311 f791 brne DIV_LOOP ; делим еще раз если не 0
-000312 915f pop r21
-000313 910f pop r16
-000314 9508 ret
+000311 955a dec r21 ; декрементируем счетчик цикла
+000312 f791 brne DIV_LOOP ; делим еще раз если не 0
+000313 915f pop r21
+000314 910f pop r16
+000315 9508 ret
//
//
; **** ЗАГРУЖАЕТ НУЖНЫЙ АДРЕС СИМВОЛА В R0 ***********************
DISPLAY_DECODER:
-000315 930f push r16
-000316 931f push r17
+000316 930f push r16
+000317 931f push r17
-000317 eaee ldi ZL, LOW(2*DISPLAY_SYMBOLS)
-000318 e0f6 ldi ZH, HIGH(2*DISPLAY_SYMBOLS)
+000318 ebe0 ldi ZL, LOW(2*DISPLAY_SYMBOLS)
+000319 e0f6 ldi ZH, HIGH(2*DISPLAY_SYMBOLS)
-000319 2711 clr TEMP_REG_B
-00031a 0fe0 add ZL, TEMP_REG_A
-00031b 1ff1 adc ZH, TEMP_REG_B
+00031a 2711 clr TEMP_REG_B
+00031b 0fe0 add ZL, TEMP_REG_A
+00031c 1ff1 adc ZH, TEMP_REG_B
-00031c 9004 lpm r0, Z
-00031d 911f pop r17
-00031e 910f pop r16
-00031f 9508 ret
+00031d 9004 lpm r0, Z
+00031e 911f pop r17
+00031f 910f pop r16
+000320 9508 ret
//
//
BEEP_SHORT:
-000320 9ac5 sbi BUZZER_PORT, BUZZER_PIN
-000321 e053
-000322 ea39
-000323 e74d
-000324 d01d DELAY24 150000
-000325 98c5 cbi BUZZER_PORT, BUZZER_PIN
-000326 9508 ret
+000321 9ac5 sbi BUZZER_PORT, BUZZER_PIN
+000322 e053
+000323 ea39
+000324 e74d
+000325 d01d DELAY24 150000
+000326 98c5 cbi BUZZER_PORT, BUZZER_PIN
+000327 9508 ret
//
//
BEEP_LONG:
-000327 9ac5 sbi BUZZER_PORT, BUZZER_PIN
-000328 e05c
-000329 e334
-00032a ef4d
-00032b d016 DELAY24 500000
-00032c 98c5 cbi BUZZER_PORT, BUZZER_PIN
-00032d 9508 ret
+000328 9ac5 sbi BUZZER_PORT, BUZZER_PIN
+000329 e05c
+00032a e334
+00032b ef4d
+00032c d016 DELAY24 500000
+00032d 98c5 cbi BUZZER_PORT, BUZZER_PIN
+00032e 9508 ret
//
//
DEBOUNCE_SW:
-00032e 930f push r16
-00032f 931f push r17
-000330 932f push r18
+00032f 930f push r16
+000330 931f push r17
+000331 932f push r18
-000331 e02a ldi r18, 10
+000332 e02a ldi r18, 10
_loop_2:
-000332 ef1f ldi r17, 255
+000333 ef1f ldi r17, 255
_loop_0:
-000333 ef0f ldi r16, 255
+000334 ef0f ldi r16, 255
_dec_0:
-000334 950a dec r16
-000335 f7f1 brne _dec_0
+000335 950a dec r16
+000336 f7f1 brne _dec_0
_loop_1:
-000336 951a dec r17
-000337 f7d9 brne _loop_0
+000337 951a dec r17
+000338 f7d9 brne _loop_0
_loop_3:
-000338 952a dec r18
-000339 f7c1 brne _loop_2
+000339 952a dec r18
+00033a f7c1 brne _loop_2
-00033a 912f pop r18
-00033b 911f pop r17
-00033c 910f pop r16
-00033d 9508 ret//
+00033b 912f pop r18
+00033c 911f pop r17
+00033d 910f pop r16
+00033e 9508 ret//
//
DELAY_LOOP_16:
-00033e 5041 subi DELAY_8_r, 1
-00033f 4030 sbci DELAY_16_r, 0
-000340 f7e8 brcc DELAY_LOOP_16
-000341 9508 ret
+00033f 5041 subi DELAY_8_r, 1
+000340 4030 sbci DELAY_16_r, 0
+000341 f7e8 brcc DELAY_LOOP_16
+000342 9508 ret
//
//
DELAY_LOOP_24:
-000342 5041 subi DELAY_8_r, 1
-000343 4030 sbci DELAY_16_r, 0
-000344 4050 sbci DELAY_24_r, 0
-000345 f7e0 brcc DELAY_LOOP_24
-000346 9508 ret
+000343 5041 subi DELAY_8_r, 1
+000344 4030 sbci DELAY_16_r, 0
+000345 4050 sbci DELAY_24_r, 0
+000346 f7e0 brcc DELAY_LOOP_24
+000347 9508 ret
//
//
DELAY:
-000347 930f push r16
-000348 931f push r17
-000349 932f push r18
+000348 930f push r16
+000349 931f push r17
+00034a 932f push r18
-00034a e026 ldi r18, 6
+00034b e026 ldi r18, 6
_DELAY_0:
-00034b ef0f ldi r16, 255
+00034c ef0f ldi r16, 255
_DELAY_1:
-00034c ef1f ldi r17, 255
+00034d ef1f ldi r17, 255
_DELAY_2:
-00034d 951a dec r17
-00034e f7f1 brne _DELAY_2
+00034e 951a dec r17
+00034f f7f1 brne _DELAY_2
-00034f 950a dec r16
-000350 f7d9 brne _DELAY_1
-000351 952a dec r18
-000352 f7c1 brne _DELAY_0
+000350 950a dec r16
+000351 f7d9 brne _DELAY_1
+000352 952a dec r18
+000353 f7c1 brne _DELAY_0
-000353 912f pop r18
-000354 911f pop r17
-000355 910f pop r16
-000356 9508 ret //
+000354 912f pop r18
+000355 911f pop r17
+000356 910f pop r16
+000357 9508 ret //
//
DISPLAY_SYMBOLS:
; HGFEDCBA HGFEDCBA
-000357 f9c0 .DB 0b11000000, 0b11111001 ; 0, 1
-000358 b0a4 .DB 0b10100100, 0b10110000 ; 2, 3
-000359 9299 .DB 0b10011001, 0b10010010 ; 4, 5
-00035a f882 .DB 0b10000010, 0b11111000 ; 6, 7
-00035b 9080 .DB 0b10000000, 0b10010000 ; 8, 9
-00035c bf9c .DB 0b10011100, 0b10111111 ; °, -
-00035d 89c6 .DB 0b11000110, 0b10001001 ; C, H
+000358 f9c0 .DB 0b11000000, 0b11111001 ; 0, 1
+000359 b0a4 .DB 0b10100100, 0b10110000 ; 2, 3
+00035a 9299 .DB 0b10011001, 0b10010010 ; 4, 5
+00035b f882 .DB 0b10000010, 0b11111000 ; 6, 7
+00035c 9080 .DB 0b10000000, 0b10010000 ; 8, 9
+00035d bf9c .DB 0b10011100, 0b10111111 ; °, -
+00035e 89c6 .DB 0b11000110, 0b10001001 ; C, H
//
//
@@ -2199,7 +2201,7 @@ counted separately from r26..r31 here.
"ATtiny2313A" register use summary:
x : 2 y : 0 z : 1 r0 : 6 r1 : 2 r2 : 0 r3 : 0 r4 : 0
r5 : 6 r6 : 6 r7 : 0 r8 : 6 r9 : 0 r10: 2 r11: 2 r12: 2
-r13: 2 r14: 6 r15: 11 r16: 165 r17: 110 r18: 55 r19: 55 r20: 53
+r13: 2 r14: 5 r15: 11 r16: 167 r17: 110 r18: 55 r19: 55 r20: 53
r21: 24 r22: 5 r23: 10 r24: 6 r25: 6 r26: 4 r27: 4 r28: 0
r29: 0 r30: 2 r31: 2
Registers used: 27 out of 35 (77.1%)
@@ -2214,7 +2216,7 @@ brvs : 0 bset : 0 bst : 0 cbi : 29 cbr : 3 clc : 2
clh : 0 cli : 3 cln : 0 clr : 18 cls : 0 clt : 3
clv : 0 clz : 0 com : 6 cp : 2 cpc : 2 cpi : 16
cpse : 0 dec : 14 eor : 0 icall : 0 ijmp : 0 in : 4
-inc : 4 ld : 0 ldd : 0 ldi : 99 lds : 39 lpm : 2
+inc : 4 ld : 0 ldd : 0 ldi : 100 lds : 39 lpm : 2
lsl : 4 lsr : 11 mov : 31 movw : 0 neg : 1 nop : 2
or : 1 ori : 0 out : 21 pop : 57 push : 56 rcall : 64
ret : 25 reti : 3 rjmp : 58 rol : 6 ror : 9 sbc : 2
@@ -2228,7 +2230,7 @@ Instructions used: 57 out of 105 (54.3%)
"ATtiny2313A" memory use summary [bytes]:
Segment Begin End Code Data Used Size Use%
---------------------------------------------------------------
-[.cseg] 0x000000 0x0006bc 1690 14 1704 2048 83.2%
+[.cseg] 0x000000 0x0006be 1692 14 1706 2048 83.3%
[.dseg] 0x000060 0x000072 0 18 18 128 14.1%
[.eseg] 0x000000 0x000005 0 5 5 128 3.9%
diff --git a/dist/default/production/attiny2313a_thermostat.X.production.map b/dist/default/production/attiny2313a_thermostat.X.production.map
index 5722eb8..bd5befe 100644
--- a/dist/default/production/attiny2313a_thermostat.X.production.map
+++ b/dist/default/production/attiny2313a_thermostat.X.production.map
@@ -1,5 +1,5 @@
-AVRASM ver. 2.2.7 main.asm Thu Jun 29 22:49:03 2023
+AVRASM ver. 2.2.7 main.asm Thu Jun 29 23:01:33 2023
EQU SIGNATURE_000 0000001e
@@ -560,7 +560,7 @@ CSEG _INTO_PROGRAM_STATE 00000014
CSEG _CLR_CURRENT_DIGIT 00000027
CSEG _indicate_1 0000002a
CSEG _indicate_2 0000003c
-CSEG DISPLAY_DECODER 00000315
+CSEG DISPLAY_DECODER 00000316
CSEG USI_TRANSMIT 000001d7
CSEG _indicate_3 0000004e
CSEG _indicate_4 0000005b
@@ -569,10 +569,10 @@ CSEG MCU_INIT 00000072
CSEG RD_F_CODE 00000177
CSEG ERR_FAMILY_CODE 000000ae
CSEG START_PROGRAM 000000b3
-CSEG BEEP_LONG 00000327
-CSEG BEEP_SHORT 00000320
+CSEG BEEP_LONG 00000328
+CSEG BEEP_SHORT 00000321
CSEG LOOP 000000b6
-CSEG DISPLAY_UPD_DIGITS 000002fb
+CSEG DISPLAY_UPD_DIGITS 000002fc
CSEG _STATE_DEFAULT 000000b9
CSEG _STATE_PROGRAM 000000c5
CSEG TEMP_UPD 00000168
@@ -628,11 +628,11 @@ CSEG _MIN_THRESHOLD 00000151
CSEG _MAX_THRESHOLD 00000159
CSEG _COMPARSION_EXIT 00000160
CSEG TEMP_CONV 000001cb
-CSEG DELAY_LOOP_24 00000342
+CSEG DELAY_LOOP_24 00000343
CSEG TEMP_RD 00000181
-CSEG OW_PRESENCE 000002ad
-CSEG OW_SEND_BYTE 000002c2
-CSEG OW_RD_BYTE 000002e1
+CSEG OW_PRESENCE 000002ae
+CSEG OW_SEND_BYTE 000002c3
+CSEG OW_RD_BYTE 000002e2
CSEG _TEMP_RD_EXIT 000001c5
CSEG _TEMP_RD_TO_UNSIGNED 0000019f
CSEG _TEMP_RD_CONTINUE 000001a6
@@ -644,7 +644,7 @@ CSEG _SW_CHECK_ON_0 000001e6
CSEG _SW_SET_0 000001e9
CSEG _SW_CHECK_ON_1 00000203
CSEG _SW_SET_FROM_0_TO_1 000001ee
-CSEG DEBOUNCE_SW 0000032e
+CSEG DEBOUNCE_SW 0000032f
CSEG _SAVE_SETTINGS 000001f8
CSEG _SW_SET_1 00000206
CSEG _BUTTON_PROCESS_END 0000020f
@@ -655,13 +655,13 @@ CSEG _CHECK_STEP 0000021d
CSEG _STEP_1 00000224
CSEG _STEP_2 0000024a
CSEG _S3_JMP 00000249
-CSEG _REPROGRAM_SETTINGS_END 000002a7
+CSEG _REPROGRAM_SETTINGS_END 000002a8
CSEG _S1_CHECK_PLUS 00000225
CSEG _INCREASE_HYST 0000022b
CSEG _S1_CHECK_MINUS 00000228
CSEG _DECREASE_HYST 00000234
CSEG _SHOW_HYST 0000023c
-CSEG _STEP_3 00000288
+CSEG _STEP_3 00000289
CSEG _S2_CHECK_PLUS 0000024b
CSEG _INCREASE_TEMP 00000251
CSEG _S2_CHECK_MINUS 0000024e
@@ -669,34 +669,34 @@ CSEG _DECREASE_TEMP 0000025f
CSEG _SHOW_TEMP 0000026a
CSEG _NEGATE_SET_TEMP 00000277
CSEG _DIVIDE_SET_TEMP 0000027c
-CSEG _S3_CHECK_PLUS 00000289
-CSEG _SET_HEAT_MODE 0000028f
-CSEG _S3_CHECK_MINUS 0000028c
-CSEG _SET_COOLING_MODE 00000294
-CSEG _SHOW_MODE 00000298
-CSEG _SHOW_COOLING 000002a0
-CSEG _SHOW_HEATING 000002a4
-CSEG DELAY_LOOP_16 0000033e
-CSEG OW_CHECK_PRESENCE 000002bc
-CSEG _EXIT 000002c1
-CSEG _OW_SEND_BYTE_LOOP 000002c7
-CSEG _OW_SEND_0 000002ca
-CSEG _OW_SEND_1 000002d3
-CSEG _OW_SEND_BYTE_END 000002db
-CSEG _OW_RD_BYTE_LP 000002e6
+CSEG _S3_CHECK_PLUS 0000028a
+CSEG _SET_HEAT_MODE 00000290
+CSEG _S3_CHECK_MINUS 0000028d
+CSEG _SET_COOLING_MODE 00000295
+CSEG _SHOW_MODE 00000299
+CSEG _SHOW_COOLING 000002a1
+CSEG _SHOW_HEATING 000002a5
+CSEG DELAY_LOOP_16 0000033f
+CSEG OW_CHECK_PRESENCE 000002bd
+CSEG _EXIT 000002c2
+CSEG _OW_SEND_BYTE_LOOP 000002c8
+CSEG _OW_SEND_0 000002cb
+CSEG _OW_SEND_1 000002d4
+CSEG _OW_SEND_BYTE_END 000002dc
+CSEG _OW_RD_BYTE_LP 000002e7
EQU dividend 00000061
EQU divisor 0000000a
-CSEG DIV_LOOP 00000304
-CSEG DISPLAY_SYMBOLS 00000357
-CSEG _loop_2 00000332
-CSEG _loop_0 00000333
-CSEG _dec_0 00000334
-CSEG _loop_1 00000336
-CSEG _loop_3 00000338
-CSEG DELAY 00000347
-CSEG _DELAY_0 0000034b
-CSEG _DELAY_1 0000034c
-CSEG _DELAY_2 0000034d
+CSEG DIV_LOOP 00000305
+CSEG DISPLAY_SYMBOLS 00000358
+CSEG _loop_2 00000333
+CSEG _loop_0 00000334
+CSEG _dec_0 00000335
+CSEG _loop_1 00000337
+CSEG _loop_3 00000339
+CSEG DELAY 00000348
+CSEG _DELAY_0 0000034c
+CSEG _DELAY_1 0000034d
+CSEG _DELAY_2 0000034e
ESEG E_SETTING_TEMP_H 00000000
ESEG E_SETTING_TEMP_L 00000001
ESEG E_SETTING_HYST 00000002
diff --git a/dist/default/production/attiny2313a_thermostat.X.production.obj b/dist/default/production/attiny2313a_thermostat.X.production.obj
index 0227def..219fb49 100644
Binary files a/dist/default/production/attiny2313a_thermostat.X.production.obj and b/dist/default/production/attiny2313a_thermostat.X.production.obj differ
diff --git a/dist/default/production/attiny2313a_thermostat.X.production.tmp b/dist/default/production/attiny2313a_thermostat.X.production.tmp
index ebd77ba..63abcb9 100644
--- a/dist/default/production/attiny2313a_thermostat.X.production.tmp
+++ b/dist/default/production/attiny2313a_thermostat.X.production.tmp
@@ -48,7 +48,7 @@
<_CLR_CURRENT_DIGIT>main.asm98
<_indicate_1>main.asm102
<_indicate_2>main.asm122
- main.asm994
+ main.asm996
main.asm592
<_indicate_3>main.asm140
<_indicate_4>main.asm156
@@ -57,10 +57,10 @@
main.asm458
main.asm254
main.asm259
- main.asm1020
- main.asm1012
+ main.asm1022
+ main.asm1014
main.asm266
- main.asm953
+ main.asm955
<_STATE_DEFAULT>main.asm269
<_STATE_PROGRAM>main.asm281
main.asm442
@@ -87,11 +87,11 @@
<_MAX_THRESHOLD>main.asm424
<_COMPARSION_EXIT>main.asm431
main.asm570
- main.asm1062
+ main.asm1064
main.asm474
- main.asm866
- main.asm893
- main.asm924
+ main.asm868
+ main.asm895
+ main.asm926
<_TEMP_RD_EXIT>main.asm562
<_TEMP_RD_TO_UNSIGNED>main.asm511
<_TEMP_RD_CONTINUE>main.asm524
@@ -103,7 +103,7 @@
<_SW_SET_0>main.asm631
<_SW_CHECK_ON_1>main.asm656
<_SW_SET_FROM_0_TO_1>main.asm636
- main.asm1028
+ main.asm1030
<_SAVE_SETTINGS>main.asm646
<_SW_SET_1>main.asm660
<_BUTTON_PROCESS_END>main.asm669
@@ -114,13 +114,13 @@
<_STEP_1>main.asm701
<_STEP_2>main.asm744
<_S3_JMP>main.asm740
- <_REPROGRAM_SETTINGS_END>main.asm843
+ <_REPROGRAM_SETTINGS_END>main.asm845
<_S1_CHECK_PLUS>main.asm703
<_INCREASE_HYST>main.asm711
<_S1_CHECK_MINUS>main.asm707
<_DECREASE_HYST>main.asm719
<_SHOW_HYST>main.asm726
- <_STEP_3>main.asm806
+ <_STEP_3>main.asm808
<_S2_CHECK_PLUS>main.asm746
<_INCREASE_TEMP>main.asm754
<_S2_CHECK_MINUS>main.asm750
@@ -128,36 +128,36 @@
<_SHOW_TEMP>main.asm773
<_NEGATE_SET_TEMP>main.asm786
<_DIVIDE_SET_TEMP>main.asm790
- <_S3_CHECK_PLUS>main.asm808
- <_SET_HEAT_MODE>main.asm816
- <_S3_CHECK_MINUS>main.asm812
- <_SET_COOLING_MODE>main.asm821
- <_SHOW_MODE>main.asm825
- <_SHOW_COOLING>main.asm834
- <_SHOW_HEATING>main.asm838
- main.asm1054
- main.asm882
- <_EXIT>main.asm888
- <_OW_SEND_BYTE_LOOP>main.asm899
- <_OW_SEND_0>main.asm903
- <_OW_SEND_1>main.asm909
- <_OW_SEND_BYTE_END>main.asm914
- <_OW_RD_BYTE_LP>main.asm930
- main.asm970
- main.asm1096
- <_loop_2>main.asm1034
- <_loop_0>main.asm1036
- <_dec_0>main.asm1038
- <_loop_1>main.asm1041
- <_loop_3>main.asm1044
- main.asm1071
- <_DELAY_0>main.asm1077
- <_DELAY_1>main.asm1079
- <_DELAY_2>main.asm1081
- main.asm1113
- main.asm1114
- main.asm1115
- main.asm1116
- main.asm1117
+ <_S3_CHECK_PLUS>main.asm810
+ <_SET_HEAT_MODE>main.asm818
+ <_S3_CHECK_MINUS>main.asm814
+ <_SET_COOLING_MODE>main.asm823
+ <_SHOW_MODE>main.asm827
+ <_SHOW_COOLING>main.asm836
+ <_SHOW_HEATING>main.asm840
+ main.asm1056
+ main.asm884
+ <_EXIT>main.asm890
+ <_OW_SEND_BYTE_LOOP>main.asm901
+ <_OW_SEND_0>main.asm905
+ <_OW_SEND_1>main.asm911
+ <_OW_SEND_BYTE_END>main.asm916
+ <_OW_RD_BYTE_LP>main.asm932
+ main.asm972
+ main.asm1098
+ <_loop_2>main.asm1036
+ <_loop_0>main.asm1038
+ <_dec_0>main.asm1040
+ <_loop_1>main.asm1043
+ <_loop_3>main.asm1046
+ main.asm1073
+ <_DELAY_0>main.asm1079
+ <_DELAY_1>main.asm1081
+ <_DELAY_2>main.asm1083
+ main.asm1115
+ main.asm1116
+ main.asm1117
+ main.asm1118
+ main.asm1119
diff --git a/main.asm b/main.asm
index 8282196..355ebad 100644
--- a/main.asm
+++ b/main.asm
@@ -755,7 +755,7 @@ _INCREASE_TEMP:
rcall DEBOUNCE_SW
lds r17, SETTING_TEMP_L
lds r18, SETTING_TEMP_H
- ldi r19, 1
+ ldi r19, 10
add r17, r19
clr r19
adc r18, r19
@@ -766,7 +766,7 @@ _DECREASE_TEMP:
rcall DEBOUNCE_SW
lds r17, SETTING_TEMP_L
lds r18, SETTING_TEMP_H
- subi r17, 1
+ subi r17, 10
sbci r18, 0
sts SETTING_TEMP_L, r17
sts SETTING_TEMP_H, r18
@@ -793,7 +793,9 @@ _DIVIDE_SET_TEMP:
rcall div16u
mov DISP_NUM_L, dres16uL
mov DISP_NUM_H, dres16uH
- sts DIGITS+3, drem16uL
+
+ ldi r16, 10
+ sts DIGITS+3, r16 ; значок градуса
pop dv16uH
pop dv16uL