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