program mode setting

This commit is contained in:
Sergey Yarkov 2023-06-29 22:50:37 +03:00
parent 9950d2e13d
commit a164982095
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
10 changed files with 823 additions and 595 deletions

View File

@ -1,2 +1,3 @@
- сделать программу, которая будет сохранять уставку температуры, гистерезис и режим работы в EEPROM - сделать программу, которая будет сохранять уставку температуры, гистерезис и режим работы в EEPROM
(перед инициализации МК необходимо чтобы данные брались из EEPROM и записывались в соответствующие ячейки) (перед инициализации МК необходимо чтобы данные брались из EEPROM и записывались в соответствующие ячейки)
- убрать отображение разряда индикатора в режиме программирования устройства на 3 этапе

View File

@ -61,10 +61,12 @@
.EQU MCU_STATE_PROGRAM = 0x01 ; Режим настройки параметров в EEPROM .EQU MCU_STATE_PROGRAM = 0x01 ; Режим настройки параметров в EEPROM
.EQU MCU_STATE_ERROR = 0x02 ; Режим ошибки, например когда не подключен датчик .EQU MCU_STATE_ERROR = 0x02 ; Режим ошибки, например когда не подключен датчик
.EQU MIN_HYST = 1 ; минимальный гистерезис который можно выставить - 0.1
.EQU MAX_HYST = 200 ; максимальный гистерезис который можно выставить - 20
; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ *********************************** ; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ ***********************************
; Отдельно задается целая и дробная часть в точности до десятых .EQU DEFAULT_TEMP = 300 ; 30 градусов
.EQU DEFAULT_TEMP = 315 ; 30 градусов
.EQU DEFAULT_HYST = 5 ; 0.5 градусов гистерезис .EQU DEFAULT_HYST = 5 ; 0.5 градусов гистерезис
.EQU HEAT_MODE = 1 .EQU HEAT_MODE = 1

View File

@ -7,25 +7,25 @@
:10003A002F933F934F935F935FB74091670045308B :10003A002F933F934F935F935FB74091670045308B
:10004A000CF403C0442740936700403081F493982E :10004A000CF403C0442740936700403081F493982E
:10005A00949895980EF002C00BE002C000916500DA :10005A00949895980EF002C00BE002C000916500DA
:10006A00002311F0929A01C09298A3D29BD14130F9 :10006A00002311F0929A01C09298DAD29BD14130C2
:10007A0081F4929894989598009164003091650063 :10007A0081F4929894989598009164003091650063
:10008A00032B11F0939A01C093980091640091D2C6 :10008A00032B11F0939A01C0939800916400C8D28F
:10009A0089D1423059F4929893989598949A0091FC :10009A0089D1423059F4929893989598949A0091FC
:1000AA00630087D2002D0F77002E7CD1433041F4B4 :1000AA006300BED2002D0F77002E7CD1433041F47D
:1000BA00929893989498959A009166007AD272D100 :1000BA00929893989498959A00916600B1D272D1C9
:1000CA004395409367005FBF5F914F913F912F9196 :1000CA004395409367005FBF5F914F913F912F9196
:1000DA001F910F9118950FED0DBF0FE701BB01EEB0 :1000DA001F910F9118950FED0DBF0FE701BB01EEB0
:1000EA0007BB0CE108BB02E000BF05E003BF09E162 :1000EA0007BB0CE108BB02E000BF05E003BF03E267
:1000FA0006BF00E20BBF0CE100BD03E309B900E053 :1000FA0006BF00E20BBF0CE100BD03E309B900E053
:10010A0002B908E00AB906E003B91124109267009F :10010A0002B908E00AB906E003B91124109267009F
:10011A0000E0009360000BE300936C0001E00093A1 :10011A0000E0009360000CE200936C0001E00093A1
:10012A006B0005E000936D0001E000936E0000276C :10012A006B0005E000936D0001E000936E0000276C
:10013A00009368000093690000EF00936A000FEFD4 :10013A00009368000093690000EF00936A000FEFD4
:10014A00009371006624CED000916F00083209F442 :10014A00009371006624CED000916F00083209F442
:10015A0005C012E0109360003ED201C035D280E0A3 :10015A0005C012E01093600075D201C06CD280E035
:10016A0090E0009160000BD2003051F496982091F3 :10016A0090E00091600042D2003051F496982091BC
:10017A006A0020936600A7D059D011E019BF38D081 :10017A006A0020936600A7D059D011E019BF38D081
:10018A00013011F4969842D1023059F7969AE9CF84 :10018A00013011F4969848D1023059F7969AE9CF7E
:10019A00EE24FF1841E1001F111F4A9509F4089542 :10019A00EE24FF1841E1001F111F4A9509F4089542
:1001AA00EE1CFF1CE21AF30A20F4E20EF31E8894F6 :1001AA00EE1CFF1CE21AF30A20F4E20EF31E8894F6
:1001BA00F2CF0894F0CFFF1829E0001F2A9509F41E :1001BA00F2CF0894F0CFFF1829E0001F2A9509F41E
@ -46,60 +46,67 @@
:1002AA00909801C0909A07C040916E00442311F4BF :1002AA00909801C0909A07C040916E00442311F4BF
:1002BA00909A01C090987F915F914F913F912F91B1 :1002BA00909A01C090987F915F914F913F912F91B1
:1002CA001F910F9108951F9361D052E135E54DEBCF :1002CA001F910F9108951F9361D052E135E54DEBCF
:1002DA009DD112D010916800812F10916900912F41 :1002DA00D4D112D010916800812F10916900912F0A
:1002EA001F9108950F93FDD003E3802E0FD1AFE63F :1002EA001F9108950F9334D103E3802E46D1AFE6D0
:1002FA00B0E02BD10F9108950F931F932F933F9343 :1002FA00B0E062D10F9108950F931F932F933F930C
:10030A004F93EFD070FF3CC00CEC802EFFD00EEB69 :10030A004F9326D170FF3CC00CEC802E36D10EEBF9
:10031A00802EFCD0A8E6B0E018D1A9E6B0E015D14D :10031A00802E33D1A8E6B0E04FD1A9E6B0E04CD1A7
:10032A0010916800209169002F93287F283F11F0CF :10032A0010916800209169002F93287F283F11F0CF
:10033A00E89407C02F916894109520951F5F2F4F5E :10033A00E89407C02F916894109520951F5F2F4F5E
:10034A0001C02F91269517952695179526951795ED :10034A0001C02F91269517952695179526951795ED
:10035A0026951795309168000EF43195432F3F701A :10035A0026951795309168000EF43195432F3F701A
:10036A00432F330F330F330F440F340F369536951F :10036A00432F330F330F330F440F340F369536951F
:10037A0036953695109368002093690030936A0089 :10037A0036953695109368002093690030936A0089
:10038A004F913F912F911F910F9108950F93A9D0EB :10038A004F913F912F911F910F9108950F93E0D0B4
:10039A0070FF06C00CEC802EB9D004E4802EB6D0D3 :10039A0070FF06C00CEC802EF0D004E4802EEDD065
:1003AA000F9108950F930F920FB800E40EB90BE165 :1003AA000F9108950F930F920FB800E40EB90BE165
:1003BA000DB9769BFDCFC09AC0980F900F91089502 :1003BA000DB9769BFDCFC09AC0980F900F91089502
:1003CA000F93B49B01C014C000917100002309F47B :1003CA000F93B49B01C01AC000917100002309F475
:1003DA000FC000270093710005D16394162D1430C5 :1003DA0015C00027009371003CD16394162D143088
:1003EA0014F4F2D005C06624F6D010E01093600031 :1003EA0014F429D10BC010E019BF929893989498ED
:1003FA00B49901C009C000917100002309F004C03A :1003FA009598662427D110E010936000B49901C043
:10040A000FEF00937100EED00F9108950F931F9391 :10040A0009C000917100002309F004C00FEF0093A6
:10041A002F933F934F93062D002309F002C0639454 :10041A0071001FD10F9108950F931F932F933F934C
:10042A00D3D0CEDF013019F0023011F154C00000F0 :10042A004F93062D002309F002C005D16394C8DF5B
:10043A00B29B04C000C0B39B08C00DC0D3D01091BA :10043A00013029F0023049F1033031F183C0000064
:10044A006D00139510936D0006C0CCD010916D000D :10044A00B29B04C000C0B39B0AC011C002D1109174
:10045A001A9510936D000F931F9300916D001AE087 :10045A006D00183C09F0139510936D0008C0F9D08F
:10046A00AADE802F9927F09266001F910F9133C060 :10046A0010916D00113009F01A9510936D000F93D9
:10047A000000B29B04C000C0B39B0FC019C0B2D029 :10047A001F9300916D001AE09EDE802F9927F0925B
:10048A0010916C0020916B0031E0130F3327231F6A :10048A0066001F910F915EC03EC00000B29B04C07F
:10049A0010936C0020936B000BC0A4D010916C00D9 :10049A0000C0B39B0FC019C0DCD010916C00209132
:1004AA0020916B001150204010936C0020936B0038 :1004AA006B0031E0130F3327231F10936C00209346
:1004BA000F931F932F933F9300916C0010916B0041 :1004BA006B000BC0CED010916C0020916B001150D4
:1004CA002AE030E065DE802F912FE09266003F91AE :1004CA00204010936C0020936B000F931F932F937F
:1004DA002F911F910F914F913F912F911F910F9142 :1004DA003F9300916C0010916B00212F207811F44A
:1004EA000895F894B99A33E04EEB8CD0B99830E07D :1004EA00E89405C06894009510950F5F1F4F2AE0A5
:1004FA004AE888D005D033E042E384D0789408955E :1004FA0030E04EDE802F912FE09266003F912F91DF
:10050A00B19B716002C0B1997E7F0895F8940F93F0 :10050A001F910F911FC0E894B29B04C000C0B39B17
:10051A001F93082D18E0069508F448F0B99A30E0C0 :10051A0006C009C09ED011E010936E0004C099D0A5
:10052A0046E770D0B99830E042E16CD008C0B99A79 :10052A0010E010936E001127812F912F20916E00F9
:10053A0030E04AE067D0B99830E04EE763D01A95C8 :10053A00222309F004C01CE01093660003C01DE0EA
:10054A0051F71F910F9178940895F8940F931F9380 :10054A00109366004F913F912F911F910F9108953B
:10055A00002718E00695B99A30E04AE053D0B998D6 :10055A00F894B99A33E04EEB8CD0B99830E04AE877
:10056A0030E040E14FD0B199006830E04CE64AD023 :10056A0088D005D033E042E384D078940895B19BD3
:10057A001A9581F70C931F910F91789408950F9310 :10057A00716002C0B1997E7F0895F8940F931F931A
:10058A005F9353E0A3E6B0E080936100909362002A :10058A00082D18E0069508F448F0B99A30E046E7D5
:10059A0000916100109162002AE030E0F9DDED92ED :10059A0070D0B99830E042E16CD008C0B99A30E026
:1005AA0000936100109362005A9591F75F910F9141 :1005AA004AE067D0B99830E04EE763D01A9551F720
:1005BA0008950F931F93E0E4F6E01127E00FF11F6F :1005BA001F910F9178940895F8940F931F93002731
:1005CA0004901F910F910895C59A53E039EA4DE7B7 :1005CA0018E00695B99A30E04AE053D0B99830E07D
:1005DA001DD0C5980895C59A5CE034E34DEF16D056 :1005DA0040E14FD0B199006830E04CE64AD01A9514
:1005EA00C59808950F931F932F932AE01FEF0FEFDB :1005EA0081F70C931F910F91789408950F935F935D
:1005FA000A95F1F71A95D9F72A95C1F72F911F9104 :1005FA0053E0A3E6B0E0809361009093620000911B
:10060A000F91089541503040E8F708954150304025 :10060A006100109162002AE030E0C2DDED920093B1
:10061A005040E0F708950F931F932F9326E00FEFB2 :10061A006100109362005A9591F75F910F910895C6
:10062A001FEF1A95F1F70A95D9F72A95C1F72F9175 :10062A000F931F93EEEAF6E01127E00FF11F0490F3
:10063A001F910F910895C0F9A4B0999282F8809001 :10063A001F910F910895C59A53E039EA4DE71DD0ED
:04064A009CBFC68902 :10064A00C5980895C59A5CE034E34DEF16D0C59875
:10065A0008950F931F932F932AE01FEF0FEF0A9528
:10066A00F1F71A95D9F72A95C1F72F911F910F9192
:10067A00089541503040E8F70895415030405040C5
:10068A00E0F708950F931F932F9326E00FEF1FEFC4
:10069A001A95F1F70A95D9F72A95C1F72F911F9163
:1006AA000F910895C0F9A4B0999282F880909CBFE6
:0206BA00C689EF
:00000001FF :00000001FF

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
AVRASM ver. 2.2.7 main.asm Thu Jun 29 14:17:58 2023 AVRASM ver. 2.2.7 main.asm Thu Jun 29 22:49:03 2023
EQU SIGNATURE_000 0000001e EQU SIGNATURE_000 0000001e
@ -527,12 +527,14 @@ EQU UART_TX_PIN 00000001
EQU MCU_STATE_DEFAULT 00000000 EQU MCU_STATE_DEFAULT 00000000
EQU MCU_STATE_PROGRAM 00000001 EQU MCU_STATE_PROGRAM 00000001
EQU MCU_STATE_ERROR 00000002 EQU MCU_STATE_ERROR 00000002
EQU DEFAULT_TEMP 0000013b EQU MIN_HYST 00000001
EQU MAX_HYST 000000c8
EQU DEFAULT_TEMP 0000012c
EQU DEFAULT_HYST 00000005 EQU DEFAULT_HYST 00000005
EQU HEAT_MODE 00000001 EQU HEAT_MODE 00000001
EQU COOLING_MODE 00000000 EQU COOLING_MODE 00000000
EQU DEFAULT_MODE 00000001 EQU DEFAULT_MODE 00000001
EQU DEFAULT_SETTING_TEMP_L 0000003b EQU DEFAULT_SETTING_TEMP_L 0000002c
EQU DEFAULT_SETTING_TEMP_H 00000001 EQU DEFAULT_SETTING_TEMP_H 00000001
EQU DEFAULT_SETTING_HYST 00000005 EQU DEFAULT_SETTING_HYST 00000005
EQU DEFAULT_SETTING_MODE 00000001 EQU DEFAULT_SETTING_MODE 00000001
@ -558,7 +560,7 @@ CSEG _INTO_PROGRAM_STATE 00000014
CSEG _CLR_CURRENT_DIGIT 00000027 CSEG _CLR_CURRENT_DIGIT 00000027
CSEG _indicate_1 0000002a CSEG _indicate_1 0000002a
CSEG _indicate_2 0000003c CSEG _indicate_2 0000003c
CSEG DISPLAY_DECODER 000002de CSEG DISPLAY_DECODER 00000315
CSEG USI_TRANSMIT 000001d7 CSEG USI_TRANSMIT 000001d7
CSEG _indicate_3 0000004e CSEG _indicate_3 0000004e
CSEG _indicate_4 0000005b CSEG _indicate_4 0000005b
@ -567,17 +569,17 @@ CSEG MCU_INIT 00000072
CSEG RD_F_CODE 00000177 CSEG RD_F_CODE 00000177
CSEG ERR_FAMILY_CODE 000000ae CSEG ERR_FAMILY_CODE 000000ae
CSEG START_PROGRAM 000000b3 CSEG START_PROGRAM 000000b3
CSEG BEEP_LONG 000002f0 CSEG BEEP_LONG 00000327
CSEG BEEP_SHORT 000002e9 CSEG BEEP_SHORT 00000320
CSEG LOOP 000000b6 CSEG LOOP 000000b6
CSEG DISPLAY_UPD_DIGITS 000002c4 CSEG DISPLAY_UPD_DIGITS 000002fb
CSEG _STATE_DEFAULT 000000b9 CSEG _STATE_DEFAULT 000000b9
CSEG _STATE_PROGRAM 000000c5 CSEG _STATE_PROGRAM 000000c5
CSEG TEMP_UPD 00000168 CSEG TEMP_UPD 00000168
CSEG TEMP_COMPARSION 0000011b CSEG TEMP_COMPARSION 0000011b
CSEG TEMP_SEND_UART 000000fd CSEG TEMP_SEND_UART 000000fd
CSEG _STATE_ERROR 000000c9 CSEG _STATE_ERROR 000000c9
CSEG REPROGRAM_SETTINGS 0000020b CSEG REPROGRAM_SETTINGS 00000211
DEF drem16uL r14 DEF drem16uL r14
DEF drem16uH r15 DEF drem16uH r15
DEF dres16uL r16 DEF dres16uL r16
@ -626,11 +628,11 @@ CSEG _MIN_THRESHOLD 00000151
CSEG _MAX_THRESHOLD 00000159 CSEG _MAX_THRESHOLD 00000159
CSEG _COMPARSION_EXIT 00000160 CSEG _COMPARSION_EXIT 00000160
CSEG TEMP_CONV 000001cb CSEG TEMP_CONV 000001cb
CSEG DELAY_LOOP_24 0000030b CSEG DELAY_LOOP_24 00000342
CSEG TEMP_RD 00000181 CSEG TEMP_RD 00000181
CSEG OW_PRESENCE 00000276 CSEG OW_PRESENCE 000002ad
CSEG OW_SEND_BYTE 0000028b CSEG OW_SEND_BYTE 000002c2
CSEG OW_RD_BYTE 000002aa CSEG OW_RD_BYTE 000002e1
CSEG _TEMP_RD_EXIT 000001c5 CSEG _TEMP_RD_EXIT 000001c5
CSEG _TEMP_RD_TO_UNSIGNED 0000019f CSEG _TEMP_RD_TO_UNSIGNED 0000019f
CSEG _TEMP_RD_CONTINUE 000001a6 CSEG _TEMP_RD_CONTINUE 000001a6
@ -640,47 +642,63 @@ CSEG _USI_TRANSMIT_LOOP 000001dd
CSEG BUTTON_PROCESS 000001e5 CSEG BUTTON_PROCESS 000001e5
CSEG _SW_CHECK_ON_0 000001e6 CSEG _SW_CHECK_ON_0 000001e6
CSEG _SW_SET_0 000001e9 CSEG _SW_SET_0 000001e9
CSEG _SW_CHECK_ON_1 000001fd CSEG _SW_CHECK_ON_1 00000203
CSEG _SW_SET_FROM_0_TO_1 000001ee CSEG _SW_SET_FROM_0_TO_1 000001ee
CSEG DEBOUNCE_SW 000002f7 CSEG DEBOUNCE_SW 0000032e
CSEG _SAVE_SETTINGS 000001f8 CSEG _SAVE_SETTINGS 000001f8
CSEG _SW_SET_1 00000200 CSEG _SW_SET_1 00000206
CSEG _BUTTON_PROCESS_END 00000209 CSEG _BUTTON_PROCESS_END 0000020f
CSEG _SW_SET_FROM_1_TO_0 00000205 CSEG _SW_SET_FROM_1_TO_0 0000020b
CSEG _INTO 00000214 CSEG _INTO 0000021a
CSEG _REPROGRAM_SETTINGS_LOOP 00000216 CSEG _REPROGRAM_SETTINGS_LOOP 0000021c
CSEG _CHECK_STEP 00000217 CSEG _CHECK_STEP 0000021d
CSEG _STEP_1 0000021c CSEG _STEP_1 00000224
CSEG _STEP_2 0000023d CSEG _STEP_2 0000024a
CSEG _REPROGRAM_SETTINGS_END 00000270 CSEG _S3_JMP 00000249
CSEG _S1_CHECK_PLUS 0000021d CSEG _REPROGRAM_SETTINGS_END 000002a7
CSEG _INCREASE_HYST 00000223 CSEG _S1_CHECK_PLUS 00000225
CSEG _S1_CHECK_MINUS 00000220 CSEG _INCREASE_HYST 0000022b
CSEG _DECREASE_HYST 0000022a CSEG _S1_CHECK_MINUS 00000228
CSEG _SHOW_HYST 00000230 CSEG _DECREASE_HYST 00000234
CSEG _S2_CHECK_PLUS 0000023e CSEG _SHOW_HYST 0000023c
CSEG _INCREASE_TEMP 00000244 CSEG _STEP_3 00000288
CSEG _S2_CHECK_MINUS 00000241 CSEG _S2_CHECK_PLUS 0000024b
CSEG _DECREASE_TEMP 00000252 CSEG _INCREASE_TEMP 00000251
CSEG _SHOW_TEMP 0000025d CSEG _S2_CHECK_MINUS 0000024e
CSEG DELAY_LOOP_16 00000307 CSEG _DECREASE_TEMP 0000025f
CSEG OW_CHECK_PRESENCE 00000285 CSEG _SHOW_TEMP 0000026a
CSEG _EXIT 0000028a CSEG _NEGATE_SET_TEMP 00000277
CSEG _OW_SEND_BYTE_LOOP 00000290 CSEG _DIVIDE_SET_TEMP 0000027c
CSEG _OW_SEND_0 00000293 CSEG _S3_CHECK_PLUS 00000289
CSEG _OW_SEND_1 0000029c CSEG _SET_HEAT_MODE 0000028f
CSEG _OW_SEND_BYTE_END 000002a4 CSEG _S3_CHECK_MINUS 0000028c
CSEG _OW_RD_BYTE_LP 000002af 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
EQU dividend 00000061 EQU dividend 00000061
EQU divisor 0000000a EQU divisor 0000000a
CSEG DIV_LOOP 000002cd CSEG DIV_LOOP 00000304
CSEG DISPLAY_SYMBOLS 00000320 CSEG DISPLAY_SYMBOLS 00000357
CSEG _loop_2 000002fb CSEG _loop_2 00000332
CSEG _loop_0 000002fc CSEG _loop_0 00000333
CSEG _dec_0 000002fd CSEG _dec_0 00000334
CSEG _loop_1 000002ff CSEG _loop_1 00000336
CSEG _loop_3 00000301 CSEG _loop_3 00000338
CSEG DELAY 00000310 CSEG DELAY 00000347
CSEG _DELAY_0 00000314 CSEG _DELAY_0 0000034b
CSEG _DELAY_1 00000315 CSEG _DELAY_1 0000034c
CSEG _DELAY_2 00000316 CSEG _DELAY_2 0000034d
ESEG E_SETTING_TEMP_H 00000000
ESEG E_SETTING_TEMP_L 00000001
ESEG E_SETTING_HYST 00000002
ESEG E_SETTING_MODE 00000003
ESEG E_FIRST_TIME_RUN 00000004

View File

@ -48,7 +48,7 @@
<_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>98</LINE></_CLR_CURRENT_DIGIT> <_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>98</LINE></_CLR_CURRENT_DIGIT>
<_indicate_1><FILE>main.asm</FILE><LINE>102</LINE></_indicate_1> <_indicate_1><FILE>main.asm</FILE><LINE>102</LINE></_indicate_1>
<_indicate_2><FILE>main.asm</FILE><LINE>122</LINE></_indicate_2> <_indicate_2><FILE>main.asm</FILE><LINE>122</LINE></_indicate_2>
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>926</LINE></DISPLAY_DECODER> <DISPLAY_DECODER><FILE>main.asm</FILE><LINE>994</LINE></DISPLAY_DECODER>
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>592</LINE></USI_TRANSMIT> <USI_TRANSMIT><FILE>main.asm</FILE><LINE>592</LINE></USI_TRANSMIT>
<_indicate_3><FILE>main.asm</FILE><LINE>140</LINE></_indicate_3> <_indicate_3><FILE>main.asm</FILE><LINE>140</LINE></_indicate_3>
<_indicate_4><FILE>main.asm</FILE><LINE>156</LINE></_indicate_4> <_indicate_4><FILE>main.asm</FILE><LINE>156</LINE></_indicate_4>
@ -57,17 +57,17 @@
<RD_F_CODE><FILE>main.asm</FILE><LINE>458</LINE></RD_F_CODE> <RD_F_CODE><FILE>main.asm</FILE><LINE>458</LINE></RD_F_CODE>
<ERR_FAMILY_CODE><FILE>main.asm</FILE><LINE>254</LINE></ERR_FAMILY_CODE> <ERR_FAMILY_CODE><FILE>main.asm</FILE><LINE>254</LINE></ERR_FAMILY_CODE>
<START_PROGRAM><FILE>main.asm</FILE><LINE>259</LINE></START_PROGRAM> <START_PROGRAM><FILE>main.asm</FILE><LINE>259</LINE></START_PROGRAM>
<BEEP_LONG><FILE>main.asm</FILE><LINE>952</LINE></BEEP_LONG> <BEEP_LONG><FILE>main.asm</FILE><LINE>1020</LINE></BEEP_LONG>
<BEEP_SHORT><FILE>main.asm</FILE><LINE>944</LINE></BEEP_SHORT> <BEEP_SHORT><FILE>main.asm</FILE><LINE>1012</LINE></BEEP_SHORT>
<LOOP><FILE>main.asm</FILE><LINE>266</LINE></LOOP> <LOOP><FILE>main.asm</FILE><LINE>266</LINE></LOOP>
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>885</LINE></DISPLAY_UPD_DIGITS> <DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>953</LINE></DISPLAY_UPD_DIGITS>
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>269</LINE></_STATE_DEFAULT> <_STATE_DEFAULT><FILE>main.asm</FILE><LINE>269</LINE></_STATE_DEFAULT>
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>281</LINE></_STATE_PROGRAM> <_STATE_PROGRAM><FILE>main.asm</FILE><LINE>281</LINE></_STATE_PROGRAM>
<TEMP_UPD><FILE>main.asm</FILE><LINE>442</LINE></TEMP_UPD> <TEMP_UPD><FILE>main.asm</FILE><LINE>442</LINE></TEMP_UPD>
<TEMP_COMPARSION><FILE>main.asm</FILE><LINE>345</LINE></TEMP_COMPARSION> <TEMP_COMPARSION><FILE>main.asm</FILE><LINE>345</LINE></TEMP_COMPARSION>
<TEMP_SEND_UART><FILE>main.asm</FILE><LINE>300</LINE></TEMP_SEND_UART> <TEMP_SEND_UART><FILE>main.asm</FILE><LINE>300</LINE></TEMP_SEND_UART>
<_STATE_ERROR><FILE>main.asm</FILE><LINE>286</LINE></_STATE_ERROR> <_STATE_ERROR><FILE>main.asm</FILE><LINE>286</LINE></_STATE_ERROR>
<REPROGRAM_SETTINGS><FILE>main.asm</FILE><LINE>670</LINE></REPROGRAM_SETTINGS> <REPROGRAM_SETTINGS><FILE>main.asm</FILE><LINE>675</LINE></REPROGRAM_SETTINGS>
<div16u><FILE>div16u.asm</FILE><LINE>32</LINE></div16u> <div16u><FILE>div16u.asm</FILE><LINE>32</LINE></div16u>
<d16u_1><FILE>div16u.asm</FILE><LINE>36</LINE></d16u_1> <d16u_1><FILE>div16u.asm</FILE><LINE>36</LINE></d16u_1>
<d16u_2><FILE>div16u.asm</FILE><LINE>42</LINE></d16u_2> <d16u_2><FILE>div16u.asm</FILE><LINE>42</LINE></d16u_2>
@ -87,11 +87,11 @@
<_MAX_THRESHOLD><FILE>main.asm</FILE><LINE>424</LINE></_MAX_THRESHOLD> <_MAX_THRESHOLD><FILE>main.asm</FILE><LINE>424</LINE></_MAX_THRESHOLD>
<_COMPARSION_EXIT><FILE>main.asm</FILE><LINE>431</LINE></_COMPARSION_EXIT> <_COMPARSION_EXIT><FILE>main.asm</FILE><LINE>431</LINE></_COMPARSION_EXIT>
<TEMP_CONV><FILE>main.asm</FILE><LINE>570</LINE></TEMP_CONV> <TEMP_CONV><FILE>main.asm</FILE><LINE>570</LINE></TEMP_CONV>
<DELAY_LOOP_24><FILE>main.asm</FILE><LINE>994</LINE></DELAY_LOOP_24> <DELAY_LOOP_24><FILE>main.asm</FILE><LINE>1062</LINE></DELAY_LOOP_24>
<TEMP_RD><FILE>main.asm</FILE><LINE>474</LINE></TEMP_RD> <TEMP_RD><FILE>main.asm</FILE><LINE>474</LINE></TEMP_RD>
<OW_PRESENCE><FILE>main.asm</FILE><LINE>798</LINE></OW_PRESENCE> <OW_PRESENCE><FILE>main.asm</FILE><LINE>866</LINE></OW_PRESENCE>
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>825</LINE></OW_SEND_BYTE> <OW_SEND_BYTE><FILE>main.asm</FILE><LINE>893</LINE></OW_SEND_BYTE>
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>856</LINE></OW_RD_BYTE> <OW_RD_BYTE><FILE>main.asm</FILE><LINE>924</LINE></OW_RD_BYTE>
<_TEMP_RD_EXIT><FILE>main.asm</FILE><LINE>562</LINE></_TEMP_RD_EXIT> <_TEMP_RD_EXIT><FILE>main.asm</FILE><LINE>562</LINE></_TEMP_RD_EXIT>
<_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>511</LINE></_TEMP_RD_TO_UNSIGNED> <_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>511</LINE></_TEMP_RD_TO_UNSIGNED>
<_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>524</LINE></_TEMP_RD_CONTINUE> <_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>524</LINE></_TEMP_RD_CONTINUE>
@ -101,47 +101,63 @@
<BUTTON_PROCESS><FILE>main.asm</FILE><LINE>625</LINE></BUTTON_PROCESS> <BUTTON_PROCESS><FILE>main.asm</FILE><LINE>625</LINE></BUTTON_PROCESS>
<_SW_CHECK_ON_0><FILE>main.asm</FILE><LINE>627</LINE></_SW_CHECK_ON_0> <_SW_CHECK_ON_0><FILE>main.asm</FILE><LINE>627</LINE></_SW_CHECK_ON_0>
<_SW_SET_0><FILE>main.asm</FILE><LINE>631</LINE></_SW_SET_0> <_SW_SET_0><FILE>main.asm</FILE><LINE>631</LINE></_SW_SET_0>
<_SW_CHECK_ON_1><FILE>main.asm</FILE><LINE>651</LINE></_SW_CHECK_ON_1> <_SW_CHECK_ON_1><FILE>main.asm</FILE><LINE>656</LINE></_SW_CHECK_ON_1>
<_SW_SET_FROM_0_TO_1><FILE>main.asm</FILE><LINE>636</LINE></_SW_SET_FROM_0_TO_1> <_SW_SET_FROM_0_TO_1><FILE>main.asm</FILE><LINE>636</LINE></_SW_SET_FROM_0_TO_1>
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>960</LINE></DEBOUNCE_SW> <DEBOUNCE_SW><FILE>main.asm</FILE><LINE>1028</LINE></DEBOUNCE_SW>
<_SAVE_SETTINGS><FILE>main.asm</FILE><LINE>646</LINE></_SAVE_SETTINGS> <_SAVE_SETTINGS><FILE>main.asm</FILE><LINE>646</LINE></_SAVE_SETTINGS>
<_SW_SET_1><FILE>main.asm</FILE><LINE>655</LINE></_SW_SET_1> <_SW_SET_1><FILE>main.asm</FILE><LINE>660</LINE></_SW_SET_1>
<_BUTTON_PROCESS_END><FILE>main.asm</FILE><LINE>664</LINE></_BUTTON_PROCESS_END> <_BUTTON_PROCESS_END><FILE>main.asm</FILE><LINE>669</LINE></_BUTTON_PROCESS_END>
<_SW_SET_FROM_1_TO_0><FILE>main.asm</FILE><LINE>660</LINE></_SW_SET_FROM_1_TO_0> <_SW_SET_FROM_1_TO_0><FILE>main.asm</FILE><LINE>665</LINE></_SW_SET_FROM_1_TO_0>
<_INTO><FILE>main.asm</FILE><LINE>681</LINE></_INTO> <_INTO><FILE>main.asm</FILE><LINE>686</LINE></_INTO>
<_REPROGRAM_SETTINGS_LOOP><FILE>main.asm</FILE><LINE>684</LINE></_REPROGRAM_SETTINGS_LOOP> <_REPROGRAM_SETTINGS_LOOP><FILE>main.asm</FILE><LINE>689</LINE></_REPROGRAM_SETTINGS_LOOP>
<_CHECK_STEP><FILE>main.asm</FILE><LINE>686</LINE></_CHECK_STEP> <_CHECK_STEP><FILE>main.asm</FILE><LINE>691</LINE></_CHECK_STEP>
<_STEP_1><FILE>main.asm</FILE><LINE>693</LINE></_STEP_1> <_STEP_1><FILE>main.asm</FILE><LINE>701</LINE></_STEP_1>
<_STEP_2><FILE>main.asm</FILE><LINE>727</LINE></_STEP_2> <_STEP_2><FILE>main.asm</FILE><LINE>744</LINE></_STEP_2>
<_REPROGRAM_SETTINGS_END><FILE>main.asm</FILE><LINE>775</LINE></_REPROGRAM_SETTINGS_END> <_S3_JMP><FILE>main.asm</FILE><LINE>740</LINE></_S3_JMP>
<_S1_CHECK_PLUS><FILE>main.asm</FILE><LINE>695</LINE></_S1_CHECK_PLUS> <_REPROGRAM_SETTINGS_END><FILE>main.asm</FILE><LINE>843</LINE></_REPROGRAM_SETTINGS_END>
<_INCREASE_HYST><FILE>main.asm</FILE><LINE>703</LINE></_INCREASE_HYST> <_S1_CHECK_PLUS><FILE>main.asm</FILE><LINE>703</LINE></_S1_CHECK_PLUS>
<_S1_CHECK_MINUS><FILE>main.asm</FILE><LINE>699</LINE></_S1_CHECK_MINUS> <_INCREASE_HYST><FILE>main.asm</FILE><LINE>711</LINE></_INCREASE_HYST>
<_DECREASE_HYST><FILE>main.asm</FILE><LINE>709</LINE></_DECREASE_HYST> <_S1_CHECK_MINUS><FILE>main.asm</FILE><LINE>707</LINE></_S1_CHECK_MINUS>
<_SHOW_HYST><FILE>main.asm</FILE><LINE>714</LINE></_SHOW_HYST> <_DECREASE_HYST><FILE>main.asm</FILE><LINE>719</LINE></_DECREASE_HYST>
<_S2_CHECK_PLUS><FILE>main.asm</FILE><LINE>729</LINE></_S2_CHECK_PLUS> <_SHOW_HYST><FILE>main.asm</FILE><LINE>726</LINE></_SHOW_HYST>
<_INCREASE_TEMP><FILE>main.asm</FILE><LINE>737</LINE></_INCREASE_TEMP> <_STEP_3><FILE>main.asm</FILE><LINE>806</LINE></_STEP_3>
<_S2_CHECK_MINUS><FILE>main.asm</FILE><LINE>733</LINE></_S2_CHECK_MINUS> <_S2_CHECK_PLUS><FILE>main.asm</FILE><LINE>746</LINE></_S2_CHECK_PLUS>
<_DECREASE_TEMP><FILE>main.asm</FILE><LINE>748</LINE></_DECREASE_TEMP> <_INCREASE_TEMP><FILE>main.asm</FILE><LINE>754</LINE></_INCREASE_TEMP>
<_SHOW_TEMP><FILE>main.asm</FILE><LINE>756</LINE></_SHOW_TEMP> <_S2_CHECK_MINUS><FILE>main.asm</FILE><LINE>750</LINE></_S2_CHECK_MINUS>
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>986</LINE></DELAY_LOOP_16> <_DECREASE_TEMP><FILE>main.asm</FILE><LINE>765</LINE></_DECREASE_TEMP>
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>814</LINE></OW_CHECK_PRESENCE> <_SHOW_TEMP><FILE>main.asm</FILE><LINE>773</LINE></_SHOW_TEMP>
<_EXIT><FILE>main.asm</FILE><LINE>820</LINE></_EXIT> <_NEGATE_SET_TEMP><FILE>main.asm</FILE><LINE>786</LINE></_NEGATE_SET_TEMP>
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>831</LINE></_OW_SEND_BYTE_LOOP> <_DIVIDE_SET_TEMP><FILE>main.asm</FILE><LINE>790</LINE></_DIVIDE_SET_TEMP>
<_OW_SEND_0><FILE>main.asm</FILE><LINE>835</LINE></_OW_SEND_0> <_S3_CHECK_PLUS><FILE>main.asm</FILE><LINE>808</LINE></_S3_CHECK_PLUS>
<_OW_SEND_1><FILE>main.asm</FILE><LINE>841</LINE></_OW_SEND_1> <_SET_HEAT_MODE><FILE>main.asm</FILE><LINE>816</LINE></_SET_HEAT_MODE>
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>846</LINE></_OW_SEND_BYTE_END> <_S3_CHECK_MINUS><FILE>main.asm</FILE><LINE>812</LINE></_S3_CHECK_MINUS>
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>862</LINE></_OW_RD_BYTE_LP> <_SET_COOLING_MODE><FILE>main.asm</FILE><LINE>821</LINE></_SET_COOLING_MODE>
<DIV_LOOP><FILE>main.asm</FILE><LINE>902</LINE></DIV_LOOP> <_SHOW_MODE><FILE>main.asm</FILE><LINE>825</LINE></_SHOW_MODE>
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>1028</LINE></DISPLAY_SYMBOLS> <_SHOW_COOLING><FILE>main.asm</FILE><LINE>834</LINE></_SHOW_COOLING>
<_loop_2><FILE>main.asm</FILE><LINE>966</LINE></_loop_2> <_SHOW_HEATING><FILE>main.asm</FILE><LINE>838</LINE></_SHOW_HEATING>
<_loop_0><FILE>main.asm</FILE><LINE>968</LINE></_loop_0> <DELAY_LOOP_16><FILE>main.asm</FILE><LINE>1054</LINE></DELAY_LOOP_16>
<_dec_0><FILE>main.asm</FILE><LINE>970</LINE></_dec_0> <OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>882</LINE></OW_CHECK_PRESENCE>
<_loop_1><FILE>main.asm</FILE><LINE>973</LINE></_loop_1> <_EXIT><FILE>main.asm</FILE><LINE>888</LINE></_EXIT>
<_loop_3><FILE>main.asm</FILE><LINE>976</LINE></_loop_3> <_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>899</LINE></_OW_SEND_BYTE_LOOP>
<DELAY><FILE>main.asm</FILE><LINE>1003</LINE></DELAY> <_OW_SEND_0><FILE>main.asm</FILE><LINE>903</LINE></_OW_SEND_0>
<_DELAY_0><FILE>main.asm</FILE><LINE>1009</LINE></_DELAY_0> <_OW_SEND_1><FILE>main.asm</FILE><LINE>909</LINE></_OW_SEND_1>
<_DELAY_1><FILE>main.asm</FILE><LINE>1011</LINE></_DELAY_1> <_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>914</LINE></_OW_SEND_BYTE_END>
<_DELAY_2><FILE>main.asm</FILE><LINE>1013</LINE></_DELAY_2> <_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>930</LINE></_OW_RD_BYTE_LP>
<DIV_LOOP><FILE>main.asm</FILE><LINE>970</LINE></DIV_LOOP>
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>1096</LINE></DISPLAY_SYMBOLS>
<_loop_2><FILE>main.asm</FILE><LINE>1034</LINE></_loop_2>
<_loop_0><FILE>main.asm</FILE><LINE>1036</LINE></_loop_0>
<_dec_0><FILE>main.asm</FILE><LINE>1038</LINE></_dec_0>
<_loop_1><FILE>main.asm</FILE><LINE>1041</LINE></_loop_1>
<_loop_3><FILE>main.asm</FILE><LINE>1044</LINE></_loop_3>
<DELAY><FILE>main.asm</FILE><LINE>1071</LINE></DELAY>
<_DELAY_0><FILE>main.asm</FILE><LINE>1077</LINE></_DELAY_0>
<_DELAY_1><FILE>main.asm</FILE><LINE>1079</LINE></_DELAY_1>
<_DELAY_2><FILE>main.asm</FILE><LINE>1081</LINE></_DELAY_2>
<E_SETTING_TEMP_H><FILE>main.asm</FILE><LINE>1113</LINE></E_SETTING_TEMP_H>
<E_SETTING_TEMP_L><FILE>main.asm</FILE><LINE>1114</LINE></E_SETTING_TEMP_L>
<E_SETTING_HYST><FILE>main.asm</FILE><LINE>1115</LINE></E_SETTING_HYST>
<E_SETTING_MODE><FILE>main.asm</FILE><LINE>1116</LINE></E_SETTING_MODE>
<E_FIRST_TIME_RUN><FILE>main.asm</FILE><LINE>1117</LINE></E_FIRST_TIME_RUN>
</LABELS> </LABELS>
</ASSEMBLER_INFO> </ASSEMBLER_INFO>

View File

@ -24,6 +24,15 @@
.MACRO relay_off .MACRO relay_off
cbi RELAY_PORT, RELAY_PIN cbi RELAY_PORT, RELAY_PIN
.ENDMACRO .ENDMACRO
; @0 - младший байт
; @1 - старший байт
.MACRO com16
com @0
com @1
subi @0, low(-1)
sbci @1, high(-1)
.ENDMACRO
.MACRO DELAY16 .MACRO DELAY16
ldi DELAY_16_r, HIGH(@0*F_CPU/4-2) ldi DELAY_16_r, HIGH(@0*F_CPU/4-2)

View File

@ -89,7 +89,7 @@ TIMER0_COMPA_vect:
push r20 push r20
push r21 push r21
in r21, SREG in r21, SREG
lds r20, CURRENT_DIGIT lds r20, CURRENT_DIGIT
cpi r20, 5 cpi r20, 5
brge _CLR_CURRENT_DIGIT ; сброс активного разряда если >= 5 brge _CLR_CURRENT_DIGIT ; сброс активного разряда если >= 5
@ -136,11 +136,11 @@ _indicate_2:
lds TEMP_REG_A, DIGITS+1 lds TEMP_REG_A, DIGITS+1
rcall DISPLAY_DECODER rcall DISPLAY_DECODER
rcall USI_TRANSMIT rcall USI_TRANSMIT
_indicate_3: _indicate_3:
cpi r20, 2 cpi r20, 2
brne _indicate_4 brne _indicate_4
cbi PORTD, DIGIT_1_PIN cbi PORTD, DIGIT_1_PIN
cbi PORTD, DIGIT_2_PIN cbi PORTD, DIGIT_2_PIN
cbi PORTD, DIGIT_4_PIN cbi PORTD, DIGIT_4_PIN
@ -196,7 +196,7 @@ MCU_INIT:
; **** ИНИЦИАЛИЗАЦИЯ ТАЙМЕРА 0 (8 бит) ************************* ; **** ИНИЦИАЛИЗАЦИЯ ТАЙМЕРА 0 (8 бит) *************************
outi r16, TCCR0A, (1<<WGM01) ; режим CTC Compare A outi r16, TCCR0A, (1<<WGM01) ; режим CTC Compare A
outi r16, TCCR0B, (1<<CS02) | (1<<CS00) ; 1024 делитель outi r16, TCCR0B, (1<<CS02) | (1<<CS00) ; 1024 делитель
outi r16, OCR0A, 25 ; число для сравнения. (60Hz) outi r16, OCR0A, 35 ; число для сравнения. (~60Hz)
; **** ИНИЦИАЛИЗАЦИЯ ТАЙМЕРА 1 (16 бит) ************************* ; **** ИНИЦИАЛИЗАЦИЯ ТАЙМЕРА 1 (16 бит) *************************
; outi r16, TCCR1A ; outi r16, TCCR1A
@ -644,6 +644,11 @@ _SW_SET_FROM_0_TO_1:
rcall BEEP_SHORT rcall BEEP_SHORT
rjmp _SW_CHECK_ON_1 rjmp _SW_CHECK_ON_1
_SAVE_SETTINGS: _SAVE_SETTINGS:
outi r17, TIMSK, (0<<OCIE0A)
cbi PORTD, DIGIT_1_PIN
cbi PORTD, DIGIT_2_PIN
cbi PORTD, DIGIT_3_PIN
cbi PORTD, DIGIT_4_PIN
clr REPROGRAM_STEP_r clr REPROGRAM_STEP_r
rcall BEEP_LONG rcall BEEP_LONG
ldi r17, MCU_STATE_DEFAULT ldi r17, MCU_STATE_DEFAULT
@ -679,8 +684,8 @@ REPROGRAM_SETTINGS:
breq _INTO breq _INTO
rjmp _REPROGRAM_SETTINGS_LOOP rjmp _REPROGRAM_SETTINGS_LOOP
_INTO: _INTO:
inc REPROGRAM_STEP_r
rcall BEEP_SHORT rcall BEEP_SHORT
inc REPROGRAM_STEP_r
_REPROGRAM_SETTINGS_LOOP: _REPROGRAM_SETTINGS_LOOP:
rcall BUTTON_PROCESS rcall BUTTON_PROCESS
_CHECK_STEP: _CHECK_STEP:
@ -688,8 +693,11 @@ _CHECK_STEP:
breq _STEP_1 breq _STEP_1
cpi r16, 2 cpi r16, 2
breq _STEP_2 breq _STEP_2
cpi r16, 3
breq _S3_JMP
rjmp _REPROGRAM_SETTINGS_END rjmp _REPROGRAM_SETTINGS_END
//<editor-fold defaultstate="collapsed" desc="Настройка: шаг 1">
_STEP_1: ; установка и отображение гистерезиса _STEP_1: ; установка и отображение гистерезиса
nop nop
_S1_CHECK_PLUS: _S1_CHECK_PLUS:
@ -703,12 +711,16 @@ _S1_CHECK_MINUS:
_INCREASE_HYST: _INCREASE_HYST:
rcall DEBOUNCE_SW rcall DEBOUNCE_SW
lds r17, SETTING_HYST lds r17, SETTING_HYST
cpi r17, MAX_HYST
breq PC+2
inc r17 inc r17
sts SETTING_HYST, r17 sts SETTING_HYST, r17
rjmp _SHOW_HYST rjmp _SHOW_HYST
_DECREASE_HYST: _DECREASE_HYST:
rcall DEBOUNCE_SW rcall DEBOUNCE_SW
lds r17, SETTING_HYST lds r17, SETTING_HYST
cpi r17, MIN_HYST
breq PC+2
dec r17 dec r17
sts SETTING_HYST, r17 sts SETTING_HYST, r17
_SHOW_HYST: _SHOW_HYST:
@ -723,7 +735,12 @@ _SHOW_HYST:
pop dv8u pop dv8u
pop dd8u pop dd8u
rjmp _REPROGRAM_SETTINGS_END rjmp _REPROGRAM_SETTINGS_END
//</editor-fold>
_S3_JMP: ; просто прыжок на _STEP_3
rjmp _STEP_3
//<editor-fold defaultstate="collapsed" desc="Настройка: шаг 2">
_STEP_2: _STEP_2:
nop nop
_S2_CHECK_PLUS: _S2_CHECK_PLUS:
@ -761,6 +778,16 @@ _SHOW_TEMP:
lds dd16uL, SETTING_TEMP_L lds dd16uL, SETTING_TEMP_L
lds dd16uH, SETTING_TEMP_H lds dd16uH, SETTING_TEMP_H
mov r18, dd16uH
andi r18, (1<<7)
brne _NEGATE_SET_TEMP
clt
rjmp _DIVIDE_SET_TEMP
_NEGATE_SET_TEMP:
set
com16 dd16uL, dd16uH
_DIVIDE_SET_TEMP:
ldi dv16uL, LOW(10) ldi dv16uL, LOW(10)
ldi dv16uH, HIGH(10) ldi dv16uH, HIGH(10)
rcall div16u rcall div16u
@ -772,6 +799,47 @@ _SHOW_TEMP:
pop dv16uL pop dv16uL
pop dd16uH pop dd16uH
pop dd16uL pop dd16uL
rjmp _REPROGRAM_SETTINGS_END
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Настройка: шаг 3">
_STEP_3:
clt
_S3_CHECK_PLUS:
sbis SW_PIN, SW_PLUS_PIN
rjmp _SET_HEAT_MODE
rjmp _S3_CHECK_MINUS
_S3_CHECK_MINUS:
sbis SW_PIN, SW_MINUS_PIN
rjmp _SET_COOLING_MODE
rjmp _SHOW_MODE
_SET_HEAT_MODE:
rcall DEBOUNCE_SW
ldi r17, HEAT_MODE
sts SETTING_MODE, r17
rjmp _SHOW_MODE
_SET_COOLING_MODE:
rcall DEBOUNCE_SW
ldi r17, COOLING_MODE
sts SETTING_MODE, r17
_SHOW_MODE:
clr r17
mov DISP_NUM_L, r17
mov DISP_NUM_H, r17
lds r18, SETTING_MODE
tst r18
breq _SHOW_COOLING
rjmp _SHOW_HEATING
_SHOW_COOLING:
ldi r17, 12
sts DIGITS+3, r17
rjmp _REPROGRAM_SETTINGS_END
_SHOW_HEATING:
ldi r17, 13
sts DIGITS+3, r17
//</editor-fold>
_REPROGRAM_SETTINGS_END: _REPROGRAM_SETTINGS_END:
pop r20 pop r20
pop r19 pop r19
@ -1040,6 +1108,11 @@ DISPLAY_SYMBOLS:
//<editor-fold defaultstate="collapsed" desc="Сегмент EEPROM"> //<editor-fold defaultstate="collapsed" desc="Сегмент EEPROM">
; **** СЕГМЕНТ EEPROM ******************************************** ; **** СЕГМЕНТ EEPROM ********************************************
; .ESEG .ESEG
; INFO: .DB "AVR Thermostat. Written by Sergey Yarkov 22.01.2023"
E_SETTING_TEMP_H: .BYTE 1
E_SETTING_TEMP_L: .BYTE 1
E_SETTING_HYST: .BYTE 1
E_SETTING_MODE: .BYTE 1
E_FIRST_TIME_RUN: .BYTE 1
;</editor-fold> ;</editor-fold>

202
main.hex
View File

@ -1,98 +1,112 @@
:020000020000FC :020000020000FC
:020000007AC0C4 :020000006FC0CF
:02000800189549 :02000800189549
:0200160002C026 :0200160002C026
:10001A0018C00F931F932F933F930FB716B3212F37 :10001A000DC00F931F930FB716B31C7019F411E09C
:10002A002C71309171002327209371001C7019F4F0 :10002A00109360000FBF1F910F9118950F931F93A4
:10003A0011E0109360000FBF3F912F911F910F9114 :10003A002F933F934F935F935FB74091670045308B
:10004A0018950F931F932F933F934F935F935FB727 :10004A000CF403C0442740936700403081F493982E
:10005A004091670045300CF403C044274093670081 :10005A00949895980EF002C00BE002C000916500DA
:10006A00403081F49398949895980EF002C00BE072 :10006A00002311F0929A01C09298DAD29BD14130C2
:10007A0002C000916500002311F0929A01C0929883 :10007A0081F4929894989598009164003091650063
:10008A0060D29BD1413081F49298949895980091CE :10008A00032B11F0939A01C0939800916400C8D28F
:10009A00640030916500032B11F0939A01C0939884 :10009A0089D1423059F4929893989598949A0091FC
:1000AA00009164004ED289D1423059F492989398C3 :1000AA006300BED2002D0F77002E7CD1433041F47D
:1000BA009598949A0091630044D2002D0F77002EF0 :1000BA00929893989498959A00916600B1D272D1C9
:1000CA007CD1433041F4929893989498959A0091F0 :1000CA004395409367005FBF5F914F913F912F9196
:1000DA00660037D272D14395409367005FBF5F9144 :1000DA001F910F9118950FED0DBF0FE701BB01EEB0
:1000EA004F913F912F911F910F9118950FED0DBFD1 :1000EA0007BB0CE108BB02E000BF05E003BF03E267
:1000FA000FE701BB01EE07BB0CE108BB02E000BF42 :1000FA0006BF00E20BBF0CE100BD03E309B900E053
:10010A0005E003BF09E106BF00E20BBF0CE100BD39 :10010A0002B908E00AB906E003B91124109267009F
:10011A0003E309B900E002B908E00AB906E003B945 :10011A0000E0009360000CE200936C0001E00093A1
:10012A0011241092670000E0009360000CE2009333 :10012A006B0005E000936D0001E000936E0000276C
:10013A006C0001E000936B0005E000936D0001E0A4 :10013A00009368000093690000EF00936A000FEFD4
:10014A0000936E000027009368000093690000EF97 :10014A00009371006624CED000916F00083209F442
:10015A0000936A0000E0009371006624CED00091FB :10015A0005C012E01093600075D201C06CD280E035
:10016A006F00083209F405C012E010936000FBD159 :10016A0090E00091600042D2003051F496982091BC
:10017A0001C0F2D180E090E000916000C8D1003067 :10017A006A0020936600A7D059D011E019BF38D081
:10018A0051F4969820916A0020936600A7D011E056 :10018A00013011F4969848D1023059F7969AE9CF7E
:10019A0019BF57D038D0013011F496981CD10230CB :10019A00EE24FF1841E1001F111F4A9509F4089542
:1001AA0059F7969AE9CFEE24FF1841E1001F111F73 :1001AA00EE1CFF1CE21AF30A20F4E20EF31E8894F6
:1001BA004A9509F40895EE1CFF1CE21AF30A20F48A :1001BA00F2CF0894F0CFFF1829E0001F2A9509F41E
:1001CA00E20EF31E8894F2CF0894F0CFFF1829E0CC :1001CA000895FF1CF11A18F4F10E8894F6CF0894DA
:1001DA00001F2A9509F40895FF1CF11A18F4F10E6C :1001DA00F4CF5527442760E13695279510F4400F50
:1001EA008894F6CF0894F4CF5527442760E13695D2 :1001EA00511F57954795379527956A95B9F70895F9
:1001FA00279510F4400F511F579547953795279526 :1001FA000F931F9300916800502E14D000916A004B
:10020A006A95B9F708950F931F9300916800502ECD :10020A00502E10D000B30170502E0CD004E0502EA6
:10021A0014D000916A00502E10D000B30170502EF5 :10021A0009D00027502E1CE005D01A95E9F71F9146
:10022A000CD004E0502E09D00027502E1CE005D037 :10022A000F9108955D9BFECF5CB808950F931F93BD
:10023A001A95E9F71F910F9108955D9BFECF5CB85F :10023A002F933F934F935F937F93009168001091A0
:10024A0008950F931F932F933F934F935F937F9339 :10024A0069002AE030E0C5DF022F132F20916A00EF
:10025A0000916800109169002AE030E0C5DF022FA2 :10025A003327020F131F40916C0050916B0060917D
:10026A00132F20916A003327020F131F40916C004D :10026A006D004F935F937727461B570BB42EA52E2D
:10027A0050916B0060916D004F935F937727461BF7 :10027A005F914F917727460F571FD42EC52E0EF048
:10028A00570BB42EA52E5F914F917727460F571F14 :10028A0004C0009510950F5F1F4FB016A10624F405
:10029A00D42EC52E0EF004C0009510950F5F1F4F87 :10029A000D151C054CF40FC040916E00442311F457
:1002AA00B016A10624F40D151C054CF40FC040919C :1002AA00909801C0909A07C040916E00442311F4BF
:1002BA006E00442311F4909801C0909A07C04091AF :1002BA00909A01C090987F915F914F913F912F91B1
:1002CA006E00442311F4909A01C090987F915F9137 :1002CA001F910F9108951F9361D052E135E54DEBCF
:1002DA004F913F912F911F910F9108951F9361D0D4 :1002DA00D4D112D010916800812F10916900912F0A
:1002EA0052E135E54DEB5AD112D010916800812FB9 :1002EA001F9108950F9334D103E3802E46D1AFE6D0
:1002FA0010916900912F1F9108950F93BAD003E3CB :1002FA00B0E062D10F9108950F931F932F933F930C
:10030A00802ECCD0AFE6B0E0E8D00F9108950F93DD :10030A004F9326D170FF3CC00CEC802E36D10EEBF9
:10031A001F932F933F934F93ACD070FF3CC00CECCC :10031A00802E33D1A8E6B0E04FD1A9E6B0E04CD1A7
:10032A00802EBCD00EEB802EB9D0A8E6B0E0D5D096 :10032A0010916800209169002F93287F283F11F0CF
:10033A00A9E6B0E0D2D010916800209169002F930D :10033A00E89407C02F916894109520951F5F2F4F5E
:10034A00287F283F11F0E89407C02F9168941095F0 :10034A0001C02F91269517952695179526951795ED
:10035A0020951F5F2F4F01C02F912695179526953F :10035A0026951795309168000EF43195432F3F701A
:10036A0017952695179526951795309168000EF4DE :10036A00432F330F330F330F440F340F369536951F
:10037A003195432F3F70432F330F330F330F440F01 :10037A0036953695109368002093690030936A0089
:10038A00340F369536953695369510936800209336 :10038A004F913F912F911F910F9108950F93E0D0B4
:10039A00690030936A004F913F912F911F910F91FD :10039A0070FF06C00CEC802EF0D004E4802EEDD065
:1003AA0008950F9366D070FF06C00CEC802E76D0AD :1003AA000F9108950F930F920FB800E40EB90BE165
:1003BA0004E4802E73D00F9108950F930F920FB813 :1003BA000DB9769BFDCFC09AC0980F900F91089502
:1003CA0000E40EB90BE10DB9769BFDCFC09AC09837 :1003CA000F93B49B01C01AC000917100002309F475
:1003DA000F900F9108950F931F932F93062D0023CB :1003DA0015C00027009371003CD16394162D143088
:1003EA0009F002C06394B8D0013009F00CC00F9331 :1003EA0014F429D10BC010E019BF929893989498ED
:1003FA001F9300916D001AE0E9DE802F9927F09291 :1003FA009598662427D110E010936000B49901C043
:10040A0066001F910F910091710004FF01C015C091 :10040A0009C000917100002309F004C00FEF0093A6
:10041A00B49B01C02AC01091710010611093710041 :10041A0071001FD10F9108950F931F932F933F934C
:10042A00A9D06394162D143011F096D01EC06624FC :10042A004F93062D002309F002C005D16394C8DF5B
:10043A009AD010E01093600018C0B29B03C0B39B1F :10043A00013029F0023049F1033031F183C0000064
:10044A000BC013C057E032E54DEFA8D020916D00E4 :10044A00B29B04C000C0B39B0AC011C002D1109174
:10045A00239520936D0009C057E032E54DEF9ED0F9 :10045A006D00183C09F0139510936D0008C0F9D08F
:10046A0020916D002A9520936D002F911F910F9175 :10046A0010916D00113009F01A9510936D000F93D9
:10047A000895F894B99A33E04EEB8CD0B99830E0ED :10047A001F9300916D001AE09EDE802F9927F0925B
:10048A004AE888D005D033E042E384D078940895CE :10048A0066001F910F915EC03EC00000B29B04C07F
:10049A00B19B716002C0B1997E7F0895F8940F9361 :10049A0000C0B39B0FC019C0DCD010916C00209132
:1004AA001F93082D18E0069508F448F0B99A30E031 :1004AA006B0031E0130F3327231F10936C00209346
:1004BA0046E770D0B99830E042E16CD008C0B99AEA :1004BA006B000BC0CED010916C0020916B001150D4
:1004CA0030E04AE067D0B99830E04EE763D01A9539 :1004CA00204010936C0020936B000F931F932F937F
:1004DA0051F71F910F9178940895F8940F931F93F1 :1004DA003F9300916C0010916B00212F207811F44A
:1004EA00002718E00695B99A30E04AE053D0B99847 :1004EA00E89405C06894009510950F5F1F4F2AE0A5
:1004FA0030E040E14FD0B199006830E04CE64AD094 :1004FA0030E04EDE802F912FE09266003F912F91DF
:10050A001A9581F70C931F910F91789408950F9380 :10050A001F910F911FC0E894B29B04C000C0B39B17
:10051A005F9353E0A3E6B0E080936100909362009A :10051A0006C009C09ED011E010936E0004C099D0A5
:10052A0000916100109162002AE030E03CDEED9219 :10052A0010E010936E001127812F912F20916E00F9
:10053A0000936100109362005A9591F75F910F91B1 :10053A00222309F004C01CE01093660003C01DE0EA
:10054A0008950F931F93E0EDF5E01127E00FF11FD7 :10054A00109366004F913F912F911F910F9108953B
:10055A0004901F910F910895C59A53E039EA4DE727 :10055A00F894B99A33E04EEB8CD0B99830E04AE877
:10056A001DD0C5980895C59A5CE034E34DEF16D0C6 :10056A0088D005D033E042E384D078940895B19BD3
:10057A00C59808950F931F932F932AE01FEF0FEF4B :10057A00716002C0B1997E7F0895F8940F931F931A
:10058A000A95F1F71A95D9F72A95C1F72F911F9174 :10058A00082D18E0069508F448F0B99A30E046E7D5
:10059A000F91089541503040E8F708954150304096 :10059A0070D0B99830E042E16CD008C0B99A30E026
:1005AA005040E0F708950F931F932F9326E00FEF23 :1005AA004AE067D0B99830E04EE763D01A9551F720
:1005BA001FEF1A95F1F70A95D9F72A95C1F72F91E6 :1005BA001F910F9178940895F8940F931F93002731
:1005CA001F910F910895C0F9A4B0999282F8809072 :1005CA0018E00695B99A30E04AE053D0B99830E07D
:0405DA009CBFC68973 :1005DA0040E14FD0B199006830E04CE64AD01A9514
:1005EA0081F70C931F910F91789408950F935F935D
:1005FA0053E0A3E6B0E0809361009093620000911B
:10060A006100109162002AE030E0C2DDED920093B1
:10061A006100109362005A9591F75F910F910895C6
:10062A000F931F93EEEAF6E01127E00FF11F0490F3
:10063A001F910F910895C59A53E039EA4DE71DD0ED
:10064A00C5980895C59A5CE034E34DEF16D0C59875
:10065A0008950F931F932F932AE01FEF0FEF0A9528
:10066A00F1F71A95D9F72A95C1F72F911F910F9192
:10067A00089541503040E8F70895415030405040C5
:10068A00E0F708950F931F932F9326E00FEF1FEFC4
:10069A001A95F1F70A95D9F72A95C1F72F911F9163
:1006AA000F910895C0F9A4B0999282F880909CBFE6
:0206BA00C689EF
:00000001FF :00000001FF