change hyst & temp settings

This commit is contained in:
Sergey Yarkov 2023-06-29 14:18:35 +03:00
parent 482bb3794c
commit 9950d2e13d
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
13 changed files with 1581 additions and 2040 deletions

View File

@ -1,10 +1,2 @@
- сделать программу, которая будет сохранять уставку температуры, гистерезис и режим работы в EEPROM
ОСНОВНОЕ: (перед инициализации МК необходимо чтобы данные брались из EEPROM и записывались в соответствующие ячейки)
- сделать подпрограмму, которя будет опрашивать кнопки и в зависимости от нажатия переключють состояние программы
- сделать программу, которая будет сохранять уставку температуры и гистерезис в EEPROM (перед инициализации МК
необходимо чтобы данные брались из EEPROM и записывались в соответствующие ячейки)
ДОПОЛНИТЕЛЬНО (если хватит памяти):
- отправлять данные температуры в UART ("целая-часть:дробная-часть\n")

View File

@ -7,6 +7,7 @@
.DEF DELAY_24_r = r21 .DEF DELAY_24_r = r21
.DEF DISP_NUM_L = r24 ; LSB числа которое сейчас на индикаторе .DEF DISP_NUM_L = r24 ; LSB числа которое сейчас на индикаторе
.DEF DISP_NUM_H = r25 ; MSB числа которое сейчас на индикаторе .DEF DISP_NUM_H = r25 ; MSB числа которое сейчас на индикаторе
.DEF REPROGRAM_STEP_r = r6
.EQU DIGIT_1_PIN = PD2 ; Пин разряда индикатора 1 .EQU DIGIT_1_PIN = PD2 ; Пин разряда индикатора 1
.EQU DIGIT_2_PIN = PD3 ; Пин разряда индикатора 2 .EQU DIGIT_2_PIN = PD3 ; Пин разряда индикатора 2
@ -63,7 +64,7 @@
; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ *********************************** ; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ ***********************************
; Отдельно задается целая и дробная часть в точности до десятых ; Отдельно задается целая и дробная часть в точности до десятых
.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

@ -1,85 +1,105 @@
:020000020000FC :020000020000FC
:0200000073C0CB :020000006FC0CF
:0200160018953B :02000800189549
:10001A0015C00F931F932F933F930FB7B49908C03E :0200160002C026
:10002A0020916000203009F003C011E010936000B5 :10001A000DC00F931F930FB716B31C7019F411E09C
:10003A000FBF3F912F911F910F9118954F935F9387 :10002A00109360000FBF1F910F9118950F931F93A4
:10004A000F931F935FB74091670045300CF403C0CC :10003A002F933F934F935F935FB74091670045308B
:10005A00442740936700403081F493989498959888 :10004A000CF403C0442740936700403081F493982E
:10006A000EF002C00BE002C000916500002311F0FF :10005A00949895980EF002C00BE002C000916500DA
:10007A00929A01C092980FD28CD1413081F4929811 :10006A00002311F0929A01C09298A3D29BD14130F9
:10008A00949895980091640030916500032B11F0C3 :10007A0081F4929894989598009164003091650063
:10009A00939A01C0939800916400FDD17AD14230BD :10008A00032B11F0939A01C093980091640091D2C6
:1000AA0059F4929893989598949A00916300F3D191 :10009A0089D1423059F4929893989598949A0091FC
:1000BA00002D0F77002E6DD1433041F4929893981A :1000AA00630087D2002D0F77002E7CD1433041F4B4
:1000CA009498959A00916B00E6D163D14395409339 :1000BA00929893989498959A009166007AD272D100
:1000DA0067005FBF1F910F915F914F9118950FEDC8 :1000CA004395409367005FBF5F914F913F912F9196
:1000EA000DBF0FE701BB01EE07BB0CE108BB02E045 :1000DA001F910F9118950FED0DBF0FE701BB01EEB0
:1000FA0000BF05E003BF09E106BF00E20BBF0CE148 :1000EA0007BB0CE108BB02E000BF05E003BF09E162
:10010A0000BD03E309B900E002B908E00AB906E054 :1000FA0006BF00E20BBF0CE100BD03E309B900E053
:10011A0003B911241092670000E0009360000CE21A :10010A0002B908E00AB906E003B91124109267009F
:10012A0000936D0001E000936C0005E000936E00FF :10011A0000E0009360000BE300936C0001E00093A1
:10013A0001E000936F0000270093690000936A00B2 :10012A006B0005E000936D0001E000936E0000276C
:10014A0000EF00936B00C5D000917000083209F4EB :10013A00009368000093690000EF00936A000FEFD4
:10015A0005C012E010936000ADD101C0A7D180E0C4 :10014A00009371006624CED000916F00083209F442
:10016A0090E000916000003039F496987AD1A2D0DC :10015A0005C012E0109360003ED201C035D280E0A3
:10017A0001E009BF50D039D0013019F4969871D1F5 :10016A0090E0009160000BD2003051F496982091F3
:10018A0014D1023071F7969AECCFEE24FF1841E1B0 :10017A006A0020936600A7D059D011E019BF38D081
:10019A00001F111F4A9509F40895EE1CFF1CE21A6C :10018A00013011F4969842D1023059F7969AE9CF84
:1001AA00F30A20F4E20EF31E8894F2CF0894F0CFFB :10019A00EE24FF1841E1001F111F4A9509F4089542
:1001BA00FF1829E0001F2A9509F40895FF1CF11A77 :1001AA00EE1CFF1CE21AF30A20F4E20EF31E8894F6
:1001CA0018F4F10E8894F6CF0894F4CF55274427F3 :1001BA00F2CF0894F0CFFF1829E0001F2A9509F41E
:1001DA0060E13695279510F4400F511F57954795C2 :1001CA000895FF1CF11A18F4F10E8894F6CF0894DA
:1001EA00379527956A95B9F708950F930091690095 :1001DA00F4CF5527442760E13695279510F4400F50
:1001FA00502E0DD000916B00502E09D000B3017023 :1001EA00511F57954795379527956A95B9F70895F9
:10020A00502E05D004E0502E02D00F9108955D9B28 :1001FA000F931F9300916800502E14D000916A004B
:10021A00FECF5CB808950F931F932F933F934F938C :10020A00502E10D000B30170502E0CD004E0502EA6
:10022A005F930091690010916A002AE030E0CEDF06 :10021A0009D00027502E1CE005D01A95E9F71F9146
:10023A00022F132F20916B003327020F131F1093E5 :10022A000F9108955D9BFECF5CB808950F931F93BD
:10024A0071000093720040916D0050916C006091B2 :10023A002F933F934F935F937F93009168001091A0
:10025A006E004F935F937727461B570BB42EA52E3C :10024A0069002AE030E0C5DF022F132F20916A00EF
:10026A005F914F917727460F571FD42EC52E0EF058 :10025A003327020F131F40916C0050916B0060917D
:10027A0004C0009510950F5F1F4FB016A10624F415 :10026A006D004F935F937727461B570BB42EA52E2D
:10028A000D151C054CF40FC040916F00442311F466 :10027A005F914F917727460F571FD42EC52E0EF048
:10029A00909801C0909A07C040916F00442311F4CE :10028A0004C0009510950F5F1F4FB016A10624F405
:1002AA00909A01C090985F914F913F912F911F9121 :10029A000D151C054CF40FC040916E00442311F457
:1002BA000F9108951F9361D053E137E84DEF15D19F :1002AA00909801C0909A07C040916E00442311F4BF
:1002CA0012D010916900812F10916A00912F1F910D :1002BA00909A01C090987F915F914F913F912F91B1
:1002DA0008950F9378D003E3802E8AD0A0E7B0E088 :1002CA001F910F9108951F9361D052E135E54DEBCF
:1002EA00A6D00F9108950F931F932F933F934F9387 :1002DA009DD112D010916800812F10916900912F41
:1002FA006AD070FF3CC00CEC802E7AD00EEB802EB8 :1002EA001F9108950F93FDD003E3802E0FD1AFE63F
:10030A0077D0A9E6B0E093D0AAE6B0E090D01091F9 :1002FA00B0E02BD10F9108950F931F932F933F9343
:10031A00690020916A002F93287F283F11F0E89402 :10030A004F93EFD070FF3CC00CEC802EFFD00EEB69
:10032A0007C02F916894109520951F5F2F4F01C029 :10031A00802EFCD0A8E6B0E018D1A9E6B0E015D14D
:10033A002F91269517952695179526951795269503 :10032A0010916800209169002F93287F283F11F0CF
:10034A001795309169000EF43195432F3F70432F72 :10033A00E89407C02F916894109520951F5F2F4F5E
:10035A00330F330F330F440F340F369536953695D6 :10034A0001C02F91269517952695179526951795ED
:10036A0036951093690020936A0030936B004F9181 :10035A0026951795309168000EF43195432F3F701A
:10037A003F912F911F910F9108950F9324D070FFF1 :10036A00432F330F330F330F440F340F369536951F
:10038A0006C00CEC802E34D004E4802E31D00F91BC :10037A0036953695109368002093690030936A0089
:10039A0008950F930FB800E40EB90BE10DB9769BDF :10038A004F913F912F911F910F9108950F93A9D0EB
:1003AA00FDCFC09AC0980F9108950F938AD0B29B3F :10039A0070FF06C00CEC802EB9D004E4802EB6D0D3
:1003BA000196B39B0197B49B01C003C000E0009370 :1003AA000F9108950F930F920FB800E40EB90BE165
:1003CA0060000F910895F894B99A33E04EEB89D002 :1003BA000DB9769BFDCFC09AC0980F900F91089502
:1003DA00B99830E04AE885D005D033E042E381D0CD :1003CA000F93B49B01C014C000917100002309F47B
:1003EA0078940895B19B716002C0B1997E7F089597 :1003DA000FC000270093710005D16394162D1430C5
:1003FA000F931F93F894082D18E0069508F448F017 :1003EA0014F4F2D005C06624F6D010E01093600031
:10040A00B99A30E046E76DD0B99830E042E169D058 :1003FA00B49901C009C000917100002309F004C03A
:10041A0008C0B99A30E04AE064D0B99830E04EE7B3 :10040A000FEF00937100EED00F9108950F931F9391
:10042A0060D01A9551F778941F910F9108950F9300 :10041A002F933F934F93062D002309F002C0639454
:10043A001F93F894002718E00695B99A30E04AE02D :10042A00D3D0CEDF013019F0023011F154C00000F0
:10044A0050D0B99830E040E14CD0B199006830E022 :10043A00B29B04C000C0B39B08C00DC0D3D01091BA
:10045A004CE647D01A9581F70C9378941F910F9127 :10044A006D00139510936D0006C0CCD010916D000D
:10046A000895F8945F9354E0A3E6B0E080936100A6 :10045A001A9510936D000F931F9300916D001AE087
:10047A009093620000916100109162002AE030E0DE :10046A00AADE802F9927F09266001F910F9133C060
:10048A0084DEED9200936100109362005A9591F711 :10047A000000B29B04C000C0B39B0FC019C0B2D029
:10049A005F91789408950F931F93EEE1F5E0112789 :10048A0010916C0020916B0031E0130F3327231F6A
:1004AA00E00FF11F04901F910F910895C59A22D071 :10049A0010936C0020936B000BC0A4D010916C00D9
:1004BA00C5980895C59A1ED01DD01CD01BD0C598CA :1004AA0020916B001150204010936C0020936B0038
:1004CA0008950F931F932F932AE01FEF0FEF0A95BA :1004BA000F931F932F933F9300916C0010916B0041
:1004DA00F1F71A95D9F72A95C1F72F911F910F9124 :1004CA002AE030E065DE802F912FE09266003F91AE
:1004EA00089541503040E8F7089541503040504057 :1004DA002F911F910F914F913F912F911F910F9142
:1004FA00E0F708950F931F932F9326E00FEF1FEF56 :1004EA000895F894B99A33E04EEB8CD0B99830E07D
:10050A001A95F1F70A95D9F72A95C1F72F911F91F4 :1004FA004AE888D005D033E042E384D0789408955E
:10051A000F910895C0F9A4B0999282F880909CBF77 :10050A00B19B716002C0B1997E7F0895F8940F93F0
:10051A001F93082D18E0069508F448F0B99A30E0C0
:10052A0046E770D0B99830E042E16CD008C0B99A79
:10053A0030E04AE067D0B99830E04EE763D01A95C8
:10054A0051F71F910F9178940895F8940F931F9380
:10055A00002718E00695B99A30E04AE053D0B998D6
:10056A0030E040E14FD0B199006830E04CE64AD023
:10057A001A9581F70C931F910F91789408950F9310
:10058A005F9353E0A3E6B0E080936100909362002A
:10059A0000916100109162002AE030E0F9DDED92ED
:1005AA0000936100109362005A9591F75F910F9141
:1005BA0008950F931F93E0E4F6E01127E00FF11F6F
:1005CA0004901F910F910895C59A53E039EA4DE7B7
:1005DA001DD0C5980895C59A5CE034E34DEF16D056
:1005EA00C59808950F931F932F932AE01FEF0FEFDB
:1005FA000A95F1F71A95D9F72A95C1F72F911F9104
:10060A000F91089541503040E8F708954150304025
:10061A005040E0F708950F931F932F9326E00FEFB2
:10062A001FEF1A95F1F70A95D9F72A95C1F72F9175
:10063A001F910F910895C0F9A4B0999282F8809001
:04064A009CBFC68902
: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 Mon Jun 26 12:19:45 2023 AVRASM ver. 2.2.7 main.asm Thu Jun 29 14:17:58 2023
EQU SIGNATURE_000 0000001e EQU SIGNATURE_000 0000001e
@ -486,6 +486,7 @@ DEF DELAY_8_r r20
DEF DELAY_24_r r21 DEF DELAY_24_r r21
DEF DISP_NUM_L r24 DEF DISP_NUM_L r24
DEF DISP_NUM_H r25 DEF DISP_NUM_H r25
DEF REPROGRAM_STEP_r r6
EQU DIGIT_1_PIN 00000002 EQU DIGIT_1_PIN 00000002
EQU DIGIT_2_PIN 00000003 EQU DIGIT_2_PIN 00000003
EQU DIGIT_3_PIN 00000004 EQU DIGIT_3_PIN 00000004
@ -526,12 +527,12 @@ 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 0000012c EQU DEFAULT_TEMP 0000013b
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 0000002c EQU DEFAULT_SETTING_TEMP_L 0000003b
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
@ -539,45 +540,44 @@ DSEG MCU_STATE 00000060
DSEG SRAM_TEMP_1 00000061 DSEG SRAM_TEMP_1 00000061
DSEG DIGITS 00000063 DSEG DIGITS 00000063
DSEG CURRENT_DIGIT 00000067 DSEG CURRENT_DIGIT 00000067
DSEG SW_FLAGS 00000068 DSEG TEMP_L 00000068
DSEG TEMP_L 00000069 DSEG TEMP_H 00000069
DSEG TEMP_H 0000006a DSEG TEMP_F 0000006a
DSEG TEMP_F 0000006b DSEG SETTING_TEMP_H 0000006b
DSEG SETTING_TEMP_H 0000006c DSEG SETTING_TEMP_L 0000006c
DSEG SETTING_TEMP_L 0000006d DSEG SETTING_HYST 0000006d
DSEG SETTING_HYST 0000006e DSEG SETTING_MODE 0000006e
DSEG SETTING_MODE 0000006f DSEG DEVICE_FAMILY_CODE 0000006f
DSEG DEVICE_FAMILY_CODE 00000070 DSEG PROGRAM_STEPS 00000070
DSEG SRAM_TEMP_2 00000071 DSEG SW_DATA 00000071
DSEG SRAM_TEMP_3 00000072 CSEG RESET_vect 00000070
CSEG RESET_vect 00000074
CSEG TIMER0_COMPA_vect 00000023
CSEG PCINT0_vect 0000000e CSEG PCINT0_vect 0000000e
CSEG _PCINT0_vect_end 0000001d CSEG TIMER0_COMPA_vect 0000001b
CSEG _INTO_PROGRAM_STATE 0000001a CSEG _PCINT0_vect_end 00000017
CSEG _CLR_CURRENT_DIGIT 0000002d CSEG _INTO_PROGRAM_STATE 00000014
CSEG _indicate_1 00000030 CSEG _CLR_CURRENT_DIGIT 00000027
CSEG _indicate_2 00000042 CSEG _indicate_1 0000002a
CSEG DISPLAY_DECODER 00000250 CSEG _indicate_2 0000003c
CSEG USI_TRANSMIT 000001ce CSEG DISPLAY_DECODER 000002de
CSEG _indicate_3 00000054 CSEG USI_TRANSMIT 000001d7
CSEG _indicate_4 00000061 CSEG _indicate_3 0000004e
CSEG _indicate_exit 0000006b CSEG _indicate_4 0000005b
CSEG MCU_INIT 00000076 CSEG _indicate_exit 00000065
CSEG RD_F_CODE 0000016e CSEG MCU_INIT 00000072
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 0000025f CSEG BEEP_LONG 000002f0
CSEG BEEP_SHORT 0000025b CSEG BEEP_SHORT 000002e9
CSEG LOOP 000000b6 CSEG LOOP 000000b6
CSEG _STATE_DEFAULT 000000b8 CSEG DISPLAY_UPD_DIGITS 000002c4
CSEG _STATE_PROGRAM 000000c1 CSEG _STATE_DEFAULT 000000b9
CSEG DISPLAY_UPD_DIGITS 00000236 CSEG _STATE_PROGRAM 000000c5
CSEG TEMP_UPD 0000015f CSEG TEMP_UPD 00000168
CSEG TEMP_COMPARSION 00000110 CSEG TEMP_COMPARSION 0000011b
CSEG TEMP_SEND_UART 000000fa CSEG TEMP_SEND_UART 000000fd
CSEG _STATE_ERROR 000000c6 CSEG _STATE_ERROR 000000c9
CSEG SW_CHECK_PROCESS 000001da CSEG REPROGRAM_SETTINGS 0000020b
DEF drem16uL r14 DEF drem16uL r14
DEF drem16uH r15 DEF drem16uH r15
DEF dres16uL r16 DEF dres16uL r16
@ -587,19 +587,19 @@ DEF dd16uH r17
DEF dv16uL r18 DEF dv16uL r18
DEF dv16uH r19 DEF dv16uH r19
DEF dcnt16u r20 DEF dcnt16u r20
CSEG div16u 000000ca CSEG div16u 000000cd
CSEG d16u_1 000000cd CSEG d16u_1 000000d0
CSEG d16u_2 000000d2 CSEG d16u_2 000000d5
CSEG d16u_3 000000db CSEG d16u_3 000000de
DEF drem8u r15 DEF drem8u r15
DEF dres8u r16 DEF dres8u r16
DEF dd8u r16 DEF dd8u r16
DEF dv8u r17 DEF dv8u r17
DEF dcnt8u r18 DEF dcnt8u r18
CSEG div8u 000000dd CSEG div8u 000000e0
CSEG d8u_1 000000df CSEG d8u_1 000000e2
CSEG d8u_2 000000e3 CSEG d8u_2 000000e6
CSEG d8u_3 000000e9 CSEG d8u_3 000000ec
DEF mc16uL r16 DEF mc16uL r16
DEF mc16uH r17 DEF mc16uH r17
DEF mp16uL r18 DEF mp16uL r18
@ -609,54 +609,78 @@ DEF m16u1 r19
DEF m16u2 r20 DEF m16u2 r20
DEF m16u3 r21 DEF m16u3 r21
DEF mcnt16u r22 DEF mcnt16u r22
CSEG mpy16u 000000eb CSEG mpy16u 000000ee
CSEG m16u_1 000000f0 CSEG m16u_1 000000f3
CSEG noad8 000000f3 CSEG noad8 000000f6
CSEG UART_WR_BYTE 0000010c CSEG UART_WR_BYTE 00000117
CSEG _TEMP_SEND_UART_L 00000111
DEF temp_r_l r16 DEF temp_r_l r16
DEF temp_r_h r17 DEF temp_r_h r17
DEF min_r_trhd_l r11 DEF min_r_trhd_l r11
DEF min_r_trhd_h r10 DEF min_r_trhd_h r10
DEF max_r_trhd_l r13 DEF max_r_trhd_l r13
DEF max_r_trhd_h r12 DEF max_r_trhd_h r12
CSEG _NEGATE_TEMP 0000013e CSEG _NEGATE_TEMP 00000146
CSEG _COMPARE 00000142 CSEG _COMPARE 0000014a
CSEG _MIN_THRESHOLD 00000149 CSEG _MIN_THRESHOLD 00000151
CSEG _MAX_THRESHOLD 00000151 CSEG _MAX_THRESHOLD 00000159
CSEG _COMPARSION_EXIT 00000158 CSEG _COMPARSION_EXIT 00000160
CSEG TEMP_CONV 000001c2 CSEG TEMP_CONV 000001cb
CSEG DELAY_LOOP_24 0000027a CSEG DELAY_LOOP_24 0000030b
CSEG TEMP_RD 00000178 CSEG TEMP_RD 00000181
CSEG OW_PRESENCE 000001e8 CSEG OW_PRESENCE 00000276
CSEG OW_SEND_BYTE 000001fd CSEG OW_SEND_BYTE 0000028b
CSEG OW_RD_BYTE 0000021c CSEG OW_RD_BYTE 000002aa
CSEG _TEMP_RD_EXIT 000001bc CSEG _TEMP_RD_EXIT 000001c5
CSEG _TEMP_RD_TO_UNSIGNED 00000196 CSEG _TEMP_RD_TO_UNSIGNED 0000019f
CSEG _TEMP_RD_CONTINUE 0000019d CSEG _TEMP_RD_CONTINUE 000001a6
CSEG _TEMP_RD_END 000001a6 CSEG _TEMP_RD_END 000001af
CSEG _TEMP_CONV_EXIT 000001cc CSEG _TEMP_CONV_EXIT 000001d5
CSEG _USI_TRANSMIT_LOOP 000001d3 CSEG _USI_TRANSMIT_LOOP 000001dd
CSEG DEBOUNCE_SW 00000266 CSEG BUTTON_PROCESS 000001e5
CSEG _INTO_DEFAULT_STATE 000001e3 CSEG _SW_CHECK_ON_0 000001e6
CSEG _SW_CHECK_PROCESS_END 000001e6 CSEG _SW_SET_0 000001e9
CSEG DELAY_LOOP_16 00000276 CSEG _SW_CHECK_ON_1 000001fd
CSEG OW_CHECK_PRESENCE 000001f7 CSEG _SW_SET_FROM_0_TO_1 000001ee
CSEG _EXIT 000001fc CSEG DEBOUNCE_SW 000002f7
CSEG _OW_SEND_BYTE_LOOP 00000202 CSEG _SAVE_SETTINGS 000001f8
CSEG _OW_SEND_0 00000205 CSEG _SW_SET_1 00000200
CSEG _OW_SEND_1 0000020e CSEG _BUTTON_PROCESS_END 00000209
CSEG _OW_SEND_BYTE_END 00000216 CSEG _SW_SET_FROM_1_TO_0 00000205
CSEG _OW_RD_BYTE_LP 00000221 CSEG _INTO 00000214
CSEG _REPROGRAM_SETTINGS_LOOP 00000216
CSEG _CHECK_STEP 00000217
CSEG _STEP_1 0000021c
CSEG _STEP_2 0000023d
CSEG _REPROGRAM_SETTINGS_END 00000270
CSEG _S1_CHECK_PLUS 0000021d
CSEG _INCREASE_HYST 00000223
CSEG _S1_CHECK_MINUS 00000220
CSEG _DECREASE_HYST 0000022a
CSEG _SHOW_HYST 00000230
CSEG _S2_CHECK_PLUS 0000023e
CSEG _INCREASE_TEMP 00000244
CSEG _S2_CHECK_MINUS 00000241
CSEG _DECREASE_TEMP 00000252
CSEG _SHOW_TEMP 0000025d
CSEG DELAY_LOOP_16 00000307
CSEG OW_CHECK_PRESENCE 00000285
CSEG _EXIT 0000028a
CSEG _OW_SEND_BYTE_LOOP 00000290
CSEG _OW_SEND_0 00000293
CSEG _OW_SEND_1 0000029c
CSEG _OW_SEND_BYTE_END 000002a4
CSEG _OW_RD_BYTE_LP 000002af
EQU dividend 00000061 EQU dividend 00000061
EQU divisor 0000000a EQU divisor 0000000a
CSEG DIV_LOOP 0000023f CSEG DIV_LOOP 000002cd
CSEG DISPLAY_SYMBOLS 0000028f CSEG DISPLAY_SYMBOLS 00000320
CSEG DELAY 0000027f CSEG _loop_2 000002fb
CSEG _loop_2 0000026a CSEG _loop_0 000002fc
CSEG _loop_0 0000026b CSEG _dec_0 000002fd
CSEG _dec_0 0000026c CSEG _loop_1 000002ff
CSEG _loop_1 0000026e CSEG _loop_3 00000301
CSEG _loop_3 00000270 CSEG DELAY 00000310
CSEG _DELAY_0 00000283 CSEG _DELAY_0 00000314
CSEG _DELAY_1 00000284 CSEG _DELAY_1 00000315
CSEG _DELAY_2 00000285 CSEG _DELAY_2 00000316

View File

@ -30,45 +30,44 @@
<SRAM_TEMP_1><FILE>main.asm</FILE><LINE>25</LINE></SRAM_TEMP_1> <SRAM_TEMP_1><FILE>main.asm</FILE><LINE>25</LINE></SRAM_TEMP_1>
<DIGITS><FILE>main.asm</FILE><LINE>26</LINE></DIGITS> <DIGITS><FILE>main.asm</FILE><LINE>26</LINE></DIGITS>
<CURRENT_DIGIT><FILE>main.asm</FILE><LINE>27</LINE></CURRENT_DIGIT> <CURRENT_DIGIT><FILE>main.asm</FILE><LINE>27</LINE></CURRENT_DIGIT>
<SW_FLAGS><FILE>main.asm</FILE><LINE>28</LINE></SW_FLAGS> <TEMP_L><FILE>main.asm</FILE><LINE>28</LINE></TEMP_L>
<TEMP_L><FILE>main.asm</FILE><LINE>29</LINE></TEMP_L> <TEMP_H><FILE>main.asm</FILE><LINE>29</LINE></TEMP_H>
<TEMP_H><FILE>main.asm</FILE><LINE>30</LINE></TEMP_H> <TEMP_F><FILE>main.asm</FILE><LINE>30</LINE></TEMP_F>
<TEMP_F><FILE>main.asm</FILE><LINE>31</LINE></TEMP_F> <SETTING_TEMP_H><FILE>main.asm</FILE><LINE>31</LINE></SETTING_TEMP_H>
<SETTING_TEMP_H><FILE>main.asm</FILE><LINE>32</LINE></SETTING_TEMP_H> <SETTING_TEMP_L><FILE>main.asm</FILE><LINE>32</LINE></SETTING_TEMP_L>
<SETTING_TEMP_L><FILE>main.asm</FILE><LINE>33</LINE></SETTING_TEMP_L> <SETTING_HYST><FILE>main.asm</FILE><LINE>33</LINE></SETTING_HYST>
<SETTING_HYST><FILE>main.asm</FILE><LINE>34</LINE></SETTING_HYST> <SETTING_MODE><FILE>main.asm</FILE><LINE>34</LINE></SETTING_MODE>
<SETTING_MODE><FILE>main.asm</FILE><LINE>35</LINE></SETTING_MODE> <DEVICE_FAMILY_CODE><FILE>main.asm</FILE><LINE>35</LINE></DEVICE_FAMILY_CODE>
<DEVICE_FAMILY_CODE><FILE>main.asm</FILE><LINE>36</LINE></DEVICE_FAMILY_CODE> <PROGRAM_STEPS><FILE>main.asm</FILE><LINE>36</LINE></PROGRAM_STEPS>
<SRAM_TEMP_2><FILE>main.asm</FILE><LINE>37</LINE></SRAM_TEMP_2> <SW_DATA><FILE>main.asm</FILE><LINE>37</LINE></SW_DATA>
<SRAM_TEMP_3><FILE>main.asm</FILE><LINE>38</LINE></SRAM_TEMP_3> <RESET_vect><FILE>main.asm</FILE><LINE>184</LINE></RESET_vect>
<RESET_vect><FILE>main.asm</FILE><LINE>191</LINE></RESET_vect> <PCINT0_vect><FILE>main.asm</FILE><LINE>61</LINE></PCINT0_vect>
<TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>96</LINE></TIMER0_COMPA_vect> <TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>84</LINE></TIMER0_COMPA_vect>
<PCINT0_vect><FILE>main.asm</FILE><LINE>59</LINE></PCINT0_vect> <_PCINT0_vect_end><FILE>main.asm</FILE><LINE>75</LINE></_PCINT0_vect_end>
<_PCINT0_vect_end><FILE>main.asm</FILE><LINE>86</LINE></_PCINT0_vect_end> <_INTO_PROGRAM_STATE><FILE>main.asm</FILE><LINE>71</LINE></_INTO_PROGRAM_STATE>
<_INTO_PROGRAM_STATE><FILE>main.asm</FILE><LINE>82</LINE></_INTO_PROGRAM_STATE> <_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>98</LINE></_CLR_CURRENT_DIGIT>
<_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>108</LINE></_CLR_CURRENT_DIGIT> <_indicate_1><FILE>main.asm</FILE><LINE>102</LINE></_indicate_1>
<_indicate_1><FILE>main.asm</FILE><LINE>112</LINE></_indicate_1> <_indicate_2><FILE>main.asm</FILE><LINE>122</LINE></_indicate_2>
<_indicate_2><FILE>main.asm</FILE><LINE>132</LINE></_indicate_2> <DISPLAY_DECODER><FILE>main.asm</FILE><LINE>926</LINE></DISPLAY_DECODER>
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>778</LINE></DISPLAY_DECODER> <USI_TRANSMIT><FILE>main.asm</FILE><LINE>592</LINE></USI_TRANSMIT>
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>595</LINE></USI_TRANSMIT> <_indicate_3><FILE>main.asm</FILE><LINE>140</LINE></_indicate_3>
<_indicate_3><FILE>main.asm</FILE><LINE>150</LINE></_indicate_3> <_indicate_4><FILE>main.asm</FILE><LINE>156</LINE></_indicate_4>
<_indicate_4><FILE>main.asm</FILE><LINE>166</LINE></_indicate_4> <_indicate_exit><FILE>main.asm</FILE><LINE>168</LINE></_indicate_exit>
<_indicate_exit><FILE>main.asm</FILE><LINE>178</LINE></_indicate_exit> <MCU_INIT><FILE>main.asm</FILE><LINE>190</LINE></MCU_INIT>
<MCU_INIT><FILE>main.asm</FILE><LINE>197</LINE></MCU_INIT> <RD_F_CODE><FILE>main.asm</FILE><LINE>458</LINE></RD_F_CODE>
<RD_F_CODE><FILE>main.asm</FILE><LINE>457</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>253</LINE></ERR_FAMILY_CODE> <START_PROGRAM><FILE>main.asm</FILE><LINE>259</LINE></START_PROGRAM>
<START_PROGRAM><FILE>main.asm</FILE><LINE>258</LINE></START_PROGRAM> <BEEP_LONG><FILE>main.asm</FILE><LINE>952</LINE></BEEP_LONG>
<BEEP_LONG><FILE>main.asm</FILE><LINE>802</LINE></BEEP_LONG> <BEEP_SHORT><FILE>main.asm</FILE><LINE>944</LINE></BEEP_SHORT>
<BEEP_SHORT><FILE>main.asm</FILE><LINE>794</LINE></BEEP_SHORT> <LOOP><FILE>main.asm</FILE><LINE>266</LINE></LOOP>
<LOOP><FILE>main.asm</FILE><LINE>267</LINE></LOOP> <DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>885</LINE></DISPLAY_UPD_DIGITS>
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>271</LINE></_STATE_DEFAULT> <_STATE_DEFAULT><FILE>main.asm</FILE><LINE>269</LINE></_STATE_DEFAULT>
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>280</LINE></_STATE_PROGRAM> <_STATE_PROGRAM><FILE>main.asm</FILE><LINE>281</LINE></_STATE_PROGRAM>
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>737</LINE></DISPLAY_UPD_DIGITS> <TEMP_UPD><FILE>main.asm</FILE><LINE>442</LINE></TEMP_UPD>
<TEMP_UPD><FILE>main.asm</FILE><LINE>441</LINE></TEMP_UPD> <TEMP_COMPARSION><FILE>main.asm</FILE><LINE>345</LINE></TEMP_COMPARSION>
<TEMP_COMPARSION><FILE>main.asm</FILE><LINE>334</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>
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>626</LINE></SW_CHECK_PROCESS> <REPROGRAM_SETTINGS><FILE>main.asm</FILE><LINE>670</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>
@ -80,45 +79,69 @@
<mpy16u><FILE>mpy16u.asm</FILE><LINE>31</LINE></mpy16u> <mpy16u><FILE>mpy16u.asm</FILE><LINE>31</LINE></mpy16u>
<m16u_1><FILE>mpy16u.asm</FILE><LINE>37</LINE></m16u_1> <m16u_1><FILE>mpy16u.asm</FILE><LINE>37</LINE></m16u_1>
<noad8><FILE>mpy16u.asm</FILE><LINE>40</LINE></noad8> <noad8><FILE>mpy16u.asm</FILE><LINE>40</LINE></noad8>
<UART_WR_BYTE><FILE>main.asm</FILE><LINE>327</LINE></UART_WR_BYTE> <UART_WR_BYTE><FILE>main.asm</FILE><LINE>338</LINE></UART_WR_BYTE>
<_TEMP_SEND_UART_L><FILE>main.asm</FILE><LINE>327</LINE></_TEMP_SEND_UART_L>
<_NEGATE_TEMP><FILE>main.asm</FILE><LINE>399</LINE></_NEGATE_TEMP> <_NEGATE_TEMP><FILE>main.asm</FILE><LINE>399</LINE></_NEGATE_TEMP>
<_COMPARE><FILE>main.asm</FILE><LINE>405</LINE></_COMPARE> <_COMPARE><FILE>main.asm</FILE><LINE>405</LINE></_COMPARE>
<_MIN_THRESHOLD><FILE>main.asm</FILE><LINE>415</LINE></_MIN_THRESHOLD> <_MIN_THRESHOLD><FILE>main.asm</FILE><LINE>415</LINE></_MIN_THRESHOLD>
<_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>571</LINE></TEMP_CONV> <TEMP_CONV><FILE>main.asm</FILE><LINE>570</LINE></TEMP_CONV>
<DELAY_LOOP_24><FILE>main.asm</FILE><LINE>846</LINE></DELAY_LOOP_24> <DELAY_LOOP_24><FILE>main.asm</FILE><LINE>994</LINE></DELAY_LOOP_24>
<TEMP_RD><FILE>main.asm</FILE><LINE>473</LINE></TEMP_RD> <TEMP_RD><FILE>main.asm</FILE><LINE>474</LINE></TEMP_RD>
<OW_PRESENCE><FILE>main.asm</FILE><LINE>650</LINE></OW_PRESENCE> <OW_PRESENCE><FILE>main.asm</FILE><LINE>798</LINE></OW_PRESENCE>
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>677</LINE></OW_SEND_BYTE> <OW_SEND_BYTE><FILE>main.asm</FILE><LINE>825</LINE></OW_SEND_BYTE>
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>708</LINE></OW_RD_BYTE> <OW_RD_BYTE><FILE>main.asm</FILE><LINE>856</LINE></OW_RD_BYTE>
<_TEMP_RD_EXIT><FILE>main.asm</FILE><LINE>563</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>
<_TEMP_RD_END><FILE>main.asm</FILE><LINE>534</LINE></_TEMP_RD_END> <_TEMP_RD_END><FILE>main.asm</FILE><LINE>534</LINE></_TEMP_RD_END>
<_TEMP_CONV_EXIT><FILE>main.asm</FILE><LINE>588</LINE></_TEMP_CONV_EXIT> <_TEMP_CONV_EXIT><FILE>main.asm</FILE><LINE>585</LINE></_TEMP_CONV_EXIT>
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>613</LINE></_USI_TRANSMIT_LOOP> <_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>611</LINE></_USI_TRANSMIT_LOOP>
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>812</LINE></DEBOUNCE_SW> <BUTTON_PROCESS><FILE>main.asm</FILE><LINE>625</LINE></BUTTON_PROCESS>
<_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>639</LINE></_INTO_DEFAULT_STATE> <_SW_CHECK_ON_0><FILE>main.asm</FILE><LINE>627</LINE></_SW_CHECK_ON_0>
<_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>642</LINE></_SW_CHECK_PROCESS_END> <_SW_SET_0><FILE>main.asm</FILE><LINE>631</LINE></_SW_SET_0>
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>838</LINE></DELAY_LOOP_16> <_SW_CHECK_ON_1><FILE>main.asm</FILE><LINE>651</LINE></_SW_CHECK_ON_1>
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>666</LINE></OW_CHECK_PRESENCE> <_SW_SET_FROM_0_TO_1><FILE>main.asm</FILE><LINE>636</LINE></_SW_SET_FROM_0_TO_1>
<_EXIT><FILE>main.asm</FILE><LINE>672</LINE></_EXIT> <DEBOUNCE_SW><FILE>main.asm</FILE><LINE>960</LINE></DEBOUNCE_SW>
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>683</LINE></_OW_SEND_BYTE_LOOP> <_SAVE_SETTINGS><FILE>main.asm</FILE><LINE>646</LINE></_SAVE_SETTINGS>
<_OW_SEND_0><FILE>main.asm</FILE><LINE>687</LINE></_OW_SEND_0> <_SW_SET_1><FILE>main.asm</FILE><LINE>655</LINE></_SW_SET_1>
<_OW_SEND_1><FILE>main.asm</FILE><LINE>693</LINE></_OW_SEND_1> <_BUTTON_PROCESS_END><FILE>main.asm</FILE><LINE>664</LINE></_BUTTON_PROCESS_END>
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>698</LINE></_OW_SEND_BYTE_END> <_SW_SET_FROM_1_TO_0><FILE>main.asm</FILE><LINE>660</LINE></_SW_SET_FROM_1_TO_0>
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>714</LINE></_OW_RD_BYTE_LP> <_INTO><FILE>main.asm</FILE><LINE>681</LINE></_INTO>
<DIV_LOOP><FILE>main.asm</FILE><LINE>754</LINE></DIV_LOOP> <_REPROGRAM_SETTINGS_LOOP><FILE>main.asm</FILE><LINE>684</LINE></_REPROGRAM_SETTINGS_LOOP>
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>880</LINE></DISPLAY_SYMBOLS> <_CHECK_STEP><FILE>main.asm</FILE><LINE>686</LINE></_CHECK_STEP>
<DELAY><FILE>main.asm</FILE><LINE>855</LINE></DELAY> <_STEP_1><FILE>main.asm</FILE><LINE>693</LINE></_STEP_1>
<_loop_2><FILE>main.asm</FILE><LINE>818</LINE></_loop_2> <_STEP_2><FILE>main.asm</FILE><LINE>727</LINE></_STEP_2>
<_loop_0><FILE>main.asm</FILE><LINE>820</LINE></_loop_0> <_REPROGRAM_SETTINGS_END><FILE>main.asm</FILE><LINE>775</LINE></_REPROGRAM_SETTINGS_END>
<_dec_0><FILE>main.asm</FILE><LINE>822</LINE></_dec_0> <_S1_CHECK_PLUS><FILE>main.asm</FILE><LINE>695</LINE></_S1_CHECK_PLUS>
<_loop_1><FILE>main.asm</FILE><LINE>825</LINE></_loop_1> <_INCREASE_HYST><FILE>main.asm</FILE><LINE>703</LINE></_INCREASE_HYST>
<_loop_3><FILE>main.asm</FILE><LINE>828</LINE></_loop_3> <_S1_CHECK_MINUS><FILE>main.asm</FILE><LINE>699</LINE></_S1_CHECK_MINUS>
<_DELAY_0><FILE>main.asm</FILE><LINE>861</LINE></_DELAY_0> <_DECREASE_HYST><FILE>main.asm</FILE><LINE>709</LINE></_DECREASE_HYST>
<_DELAY_1><FILE>main.asm</FILE><LINE>863</LINE></_DELAY_1> <_SHOW_HYST><FILE>main.asm</FILE><LINE>714</LINE></_SHOW_HYST>
<_DELAY_2><FILE>main.asm</FILE><LINE>865</LINE></_DELAY_2> <_S2_CHECK_PLUS><FILE>main.asm</FILE><LINE>729</LINE></_S2_CHECK_PLUS>
<_INCREASE_TEMP><FILE>main.asm</FILE><LINE>737</LINE></_INCREASE_TEMP>
<_S2_CHECK_MINUS><FILE>main.asm</FILE><LINE>733</LINE></_S2_CHECK_MINUS>
<_DECREASE_TEMP><FILE>main.asm</FILE><LINE>748</LINE></_DECREASE_TEMP>
<_SHOW_TEMP><FILE>main.asm</FILE><LINE>756</LINE></_SHOW_TEMP>
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>986</LINE></DELAY_LOOP_16>
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>814</LINE></OW_CHECK_PRESENCE>
<_EXIT><FILE>main.asm</FILE><LINE>820</LINE></_EXIT>
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>831</LINE></_OW_SEND_BYTE_LOOP>
<_OW_SEND_0><FILE>main.asm</FILE><LINE>835</LINE></_OW_SEND_0>
<_OW_SEND_1><FILE>main.asm</FILE><LINE>841</LINE></_OW_SEND_1>
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>846</LINE></_OW_SEND_BYTE_END>
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>862</LINE></_OW_RD_BYTE_LP>
<DIV_LOOP><FILE>main.asm</FILE><LINE>902</LINE></DIV_LOOP>
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>1028</LINE></DISPLAY_SYMBOLS>
<_loop_2><FILE>main.asm</FILE><LINE>966</LINE></_loop_2>
<_loop_0><FILE>main.asm</FILE><LINE>968</LINE></_loop_0>
<_dec_0><FILE>main.asm</FILE><LINE>970</LINE></_dec_0>
<_loop_1><FILE>main.asm</FILE><LINE>973</LINE></_loop_1>
<_loop_3><FILE>main.asm</FILE><LINE>976</LINE></_loop_3>
<DELAY><FILE>main.asm</FILE><LINE>1003</LINE></DELAY>
<_DELAY_0><FILE>main.asm</FILE><LINE>1009</LINE></_DELAY_0>
<_DELAY_1><FILE>main.asm</FILE><LINE>1011</LINE></_DELAY_1>
<_DELAY_2><FILE>main.asm</FILE><LINE>1013</LINE></_DELAY_2>
</LABELS> </LABELS>
</ASSEMBLER_INFO> </ASSEMBLER_INFO>

342
main.asm
View File

@ -25,7 +25,6 @@ MCU_STATE: .BYTE 1 ; Текущее состояние
SRAM_TEMP_1: .BYTE 2 ; Хранения временного 16-бит числа в ячейке SRAM_TEMP_1: .BYTE 2 ; Хранения временного 16-бит числа в ячейке
DIGITS: .BYTE 4 ; Ячейки, где хранятся символы, для вывода на индикатор DIGITS: .BYTE 4 ; Ячейки, где хранятся символы, для вывода на индикатор
CURRENT_DIGIT: .BYTE 1 ; Номер разряда индикатора, который сейчас горит CURRENT_DIGIT: .BYTE 1 ; Номер разряда индикатора, который сейчас горит
SW_FLAGS: .BYTE 1 ; Состояние кнопок
TEMP_L: .BYTE 1 ; Младший байт температуры TEMP_L: .BYTE 1 ; Младший байт температуры
TEMP_H: .BYTE 1 ; Старший байт температуры TEMP_H: .BYTE 1 ; Старший байт температуры
TEMP_F: .BYTE 1 ; Дробная часть TEMP_F: .BYTE 1 ; Дробная часть
@ -34,8 +33,8 @@ SETTING_TEMP_L: .BYTE 1 ; Уставка температуры (млад
SETTING_HYST: .BYTE 1 ; Гистерезис: отклонение от уставки SETTING_HYST: .BYTE 1 ; Гистерезис: отклонение от уставки
SETTING_MODE: .BYTE 1 ; Режим работы: '1' - нагрев; '0' - 'охлаждение' SETTING_MODE: .BYTE 1 ; Режим работы: '1' - нагрев; '0' - 'охлаждение'
DEVICE_FAMILY_CODE: .BYTE 1 ; Должно быть 0x10 для DS18B20 DEVICE_FAMILY_CODE: .BYTE 1 ; Должно быть 0x10 для DS18B20
SRAM_TEMP_2: .BYTE 1 PROGRAM_STEPS: .BYTE 1 ; Текущий "шаг" для настройки (0 - ничего; 1 - уставка T; 2 - гистерезис)
SRAM_TEMP_3: .BYTE 1 SW_DATA: .BYTE 1
;//</editor-fold> ;//</editor-fold>
@ -47,37 +46,27 @@ SRAM_TEMP_3: .BYTE 1
.ORG 0x00 .ORG 0x00
rjmp RESET_vect rjmp RESET_vect
.ORG 0x000B .ORG 0x04
; rjmp PCINT0_vect
reti reti
.ORG 0x000B
rjmp PCINT0_vect
.ORG 0x000D .ORG 0x000D
rjmp TIMER0_COMPA_vect rjmp TIMER0_COMPA_vect
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Прерывание: изменение состояния пина"> //<editor-fold defaultstate="collapsed" desc="Прерывание: изменение состояния пина">
PCINT0_vect: PCINT0_vect:
push r16 push r16
push r17 push r17
push r18
push r19
in r16, SREG in r16, SREG
in r17, SW_PIN
; display_off ; если нажаты две кнопки то входим в режим программирования
andi r17, (1<<SW_PLUS_PIN) | (1<<SW_MINUS_PIN)
; in r17, SW_PIN brne _PCINT0_vect_end
; clr r18
; ldi r18, (1<<SW_PLUS_PIN) | (1<<SW_MINUS_PIN)
; and r17, r18
; cp r17, r18
; breq _PCINT0_vect_end
sbic SW_PIN, SW_SET_PIN
rjmp _PCINT0_vect_end
lds r18, MCU_STATE
cpi r18, MCU_STATE_DEFAULT
breq _INTO_PROGRAM_STATE
rjmp _PCINT0_vect_end
_INTO_PROGRAM_STATE: _INTO_PROGRAM_STATE:
ldi r17, MCU_STATE_PROGRAM ldi r17, MCU_STATE_PROGRAM
@ -85,19 +74,20 @@ _INTO_PROGRAM_STATE:
_PCINT0_vect_end: _PCINT0_vect_end:
out SREG, r16 out SREG, r16
pop r19
pop r18
pop r17 pop r17
pop r16 pop r16
reti//</editor-fold> reti
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Прерывание: динамическая индикация"> //<editor-fold defaultstate="collapsed" desc="Прерывание: динамическая индикация">
; **** ДИНАМИЧЕСКАЯ ИНДИКАЦИЯ ************************************ ; **** ДИНАМИЧЕСКАЯ ИНДИКАЦИЯ ************************************
TIMER0_COMPA_vect: TIMER0_COMPA_vect:
push r20 push r16
push r21 push r17
push r16 push r18
push r17 push r19
push r20
push r21
in r21, SREG in r21, SREG
lds r20, CURRENT_DIGIT lds r20, CURRENT_DIGIT
@ -171,19 +161,22 @@ _indicate_4:
cbi PORTD, DIGIT_2_PIN cbi PORTD, DIGIT_2_PIN
cbi PORTD, DIGIT_3_PIN cbi PORTD, DIGIT_3_PIN
sbi PORTD, DIGIT_4_PIN sbi PORTD, DIGIT_4_PIN
lds TEMP_REG_A, TEMP_F lds TEMP_REG_A, DIGITS+3
rcall DISPLAY_DECODER rcall DISPLAY_DECODER
rcall USI_TRANSMIT rcall USI_TRANSMIT
_indicate_exit: _indicate_exit:
inc r20 inc r20
sts CURRENT_DIGIT, r20 sts CURRENT_DIGIT, r20
out SREG, r21 out SREG, r21
pop r17 pop r21
pop r16
pop r21
pop r20 pop r20
pop r19
pop r18
pop r17
pop r16
reti reti
;//</editor-fold> ;//</editor-fold>
@ -200,20 +193,23 @@ MCU_INIT:
outi r16, DDRB, (1<<USI_CLK_PIN) | (1<<USI_DO_PIN) | (1<<USI_LATCH_PIN) | (0<<SW_PLUS_PIN) | (0<<SW_MINUS_PIN) | (0<<SW_SET_PIN) | (1<<BUZZER_PIN) outi r16, DDRB, (1<<USI_CLK_PIN) | (1<<USI_DO_PIN) | (1<<USI_LATCH_PIN) | (0<<SW_PLUS_PIN) | (0<<SW_MINUS_PIN) | (0<<SW_SET_PIN) | (1<<BUZZER_PIN)
outi r16, PORTB, (1<<SW_PLUS_PIN) | (1<<SW_MINUS_PIN) | (1<<SW_SET_PIN) outi r16, PORTB, (1<<SW_PLUS_PIN) | (1<<SW_MINUS_PIN) | (1<<SW_SET_PIN)
; **** ИНИЦИАЛИЗАЦИЯ ТАЙМЕРА 0 ********************************** ; **** ИНИЦИАЛИЗАЦИЯ ТАЙМЕРА 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, 25 ; число для сравнения. (60Hz)
; **** ИНИЦИАЛИЗАЦИЯ ТАЙМЕРА 1 (16 бит) *************************
; outi r16, TCCR1A
; **** ПРЕРЫВАНИЕ ПО ИЗМЕНЕНИЮ СОСТОЯНИЯ ПИНОВ ****************** ; **** ПРЕРЫВАНИЕ ПО ИЗМЕНЕНИЮ СОСТОЯНИЯ ПИНОВ ******************
outi r16, GIMSK, (1<<PCIE0) outi r16, GIMSK, (1<<PCIE0)
outi r16, PCMSK0, (1<<PCINT2) | (1<<PCINT3) | (1<<PCINT4) ; для кнопок outi r16, PCMSK0, (1<<PCINT2) | (1<<PCINT3) | (1<<PCINT4) ; для кнопок
; **** ИНИЦИАЛИЗАЦИЯ USART ************************************** ; **** ИНИЦИАЛИЗАЦИЯ USART **************************************
outi r16, UBRRL, LOW(51) ; 9600 БОД outi r16, UBRRL, LOW(51) ; 9600 БОД
outi r16, UBRRH, HIGH(51) ; 9600 БОД outi r16, UBRRH, HIGH(51) ; 9600 БОД
outi r16, UCSRB, (1<<TXEN) ; Включение передачии outi r16, UCSRB, (1<<TXEN) ; Включение передачии
outi r16, UCSRC, (1<<UCSZ1) | (1<<UCSZ0) ; Асинхронный режим, 8 бит фрейм, 1 стоповый бит outi r16, UCSRC, (1<<UCSZ1) | (1<<UCSZ0) ; Асинхронный режим, 8 бит фрейм, 1 стоповый бит
; **** ИНИЦИАЛИЗАЦИЯ ДАННЫХ В ОЗУ ****************************** ; **** ИНИЦИАЛИЗАЦИЯ ДАННЫХ В ОЗУ ******************************
clr r1 clr r1
@ -241,6 +237,11 @@ MCU_INIT:
ldi r16, 0xf0 ldi r16, 0xf0
sts TEMP_F, r16 sts TEMP_F, r16
ser r16
sts SW_DATA, r16
clr REPROGRAM_STEP_r
; **** СТАРТУЕМ ************************************************ ; **** СТАРТУЕМ ************************************************
rcall RD_F_CODE ; проверяем что датчик есть на шине rcall RD_F_CODE ; проверяем что датчик есть на шине
@ -258,31 +259,30 @@ ERR_FAMILY_CODE:
START_PROGRAM: START_PROGRAM:
rcall BEEP_SHORT rcall BEEP_SHORT
display_load 0 display_load 0
; sei
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Главный цикл"> //<editor-fold defaultstate="collapsed" desc="Главный цикл">
; **** ГЛАВНЫЙ ЦИКЛ ********************************************** ; **** ГЛАВНЫЙ ЦИКЛ **********************************************
LOOP: LOOP:
; rcall DISPLAY_UPD_DIGITS
lds r16, MCU_STATE ; получаем текущее состояние МК lds r16, MCU_STATE ; получаем текущее состояние МК
rcall DISPLAY_UPD_DIGITS
_STATE_DEFAULT: _STATE_DEFAULT:
cpi r16, MCU_STATE_DEFAULT cpi r16, MCU_STATE_DEFAULT
brne _STATE_PROGRAM brne _STATE_PROGRAM
cbi LED_ERR_PORT, LED_ERR_PIN cbi LED_ERR_PORT, LED_ERR_PIN
rcall DISPLAY_UPD_DIGITS
lds r18, TEMP_F
sts DIGITS+3, r18
rcall TEMP_UPD ; обновление данных о температуре rcall TEMP_UPD ; обновление данных о температуре
outi r16, TIMSK, (1<<OCIE0A) ; вкл. индикатор
rcall TEMP_COMPARSION ; логика термостата rcall TEMP_COMPARSION ; логика термостата
outi r17, TIMSK, (1<<OCIE0A) ; вкл. индикатор
rcall TEMP_SEND_UART ; отпрака данных в UART rcall TEMP_SEND_UART ; отпрака данных в UART
_STATE_PROGRAM: _STATE_PROGRAM:
cpi r16, MCU_STATE_PROGRAM cpi r16, MCU_STATE_PROGRAM
brne _STATE_ERROR brne _STATE_ERROR
cbi LED_ERR_PORT, LED_ERR_PIN cbi LED_ERR_PORT, LED_ERR_PIN
rcall DISPLAY_UPD_DIGITS rcall REPROGRAM_SETTINGS
rcall SW_CHECK_PROCESS
_STATE_ERROR: _STATE_ERROR:
cpi r16, MCU_STATE_ERROR cpi r16, MCU_STATE_ERROR
brne LOOP brne LOOP
@ -299,6 +299,8 @@ _STATE_ERROR:
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: отправка данных в UART"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: отправка данных в UART">
TEMP_SEND_UART: TEMP_SEND_UART:
push r16 push r16
push r17
; целая часть ; целая часть
lds r16, TEMP_L lds r16, TEMP_L
mov r5, r16 mov r5, r16
@ -319,6 +321,15 @@ TEMP_SEND_UART:
mov r5, r16 mov r5, r16
rcall UART_WR_BYTE rcall UART_WR_BYTE
clr r16
mov r5, r16
ldi r17, 12
_TEMP_SEND_UART_L:
rcall UART_WR_BYTE
dec r17
brne _TEMP_SEND_UART_L
pop r17
pop r16 pop r16
ret ret
//</editor-fold> //</editor-fold>
@ -338,17 +349,8 @@ TEMP_COMPARSION:
push r19 push r19
push r20 push r20
push r21 push r21
; push r23
; lds dd8u, SETTING_HYST
; ldi dv8u, 10
; rcall div8u
;
; ; определение нижнего и верхнего порого срабатывания
; lds r19, SETTING_INT
; mov r20, r19
; sub r19, dres8u ; MIN = SET - HYST_INT
; add r20, dres8u ; MAX = SET + HYST_INT
;
.DEF temp_r_l = r16 .DEF temp_r_l = r16
.DEF temp_r_h = r17 .DEF temp_r_h = r17
@ -370,8 +372,6 @@ TEMP_COMPARSION:
clr r19 clr r19
add temp_r_l, r18 add temp_r_l, r18
adc temp_r_h, r19 adc temp_r_h, r19
sts SRAM_TEMP_2, temp_r_h
sts SRAM_TEMP_3, temp_r_l
; определяем нижний и верхний пороги ; определяем нижний и верхний пороги
lds r20, SETTING_TEMP_L lds r20, SETTING_TEMP_L
@ -429,6 +429,7 @@ _MAX_THRESHOLD:
rjmp PC+2 rjmp PC+2
relay_off relay_off
_COMPARSION_EXIT: _COMPARSION_EXIT:
pop r23
pop r21 pop r21
pop r20 pop r20
pop r19 pop r19
@ -441,7 +442,7 @@ _COMPARSION_EXIT:
TEMP_UPD: TEMP_UPD:
push r17 push r17
rcall TEMP_CONV rcall TEMP_CONV
DELAY24 800000 DELAY24 751000
rcall TEMP_RD rcall TEMP_RD
; обновляем данные в ячейках ; обновляем данные в ячейках
@ -476,7 +477,6 @@ TEMP_RD:
push r18 push r18
push r19 push r19
push r20 push r20
; cli
rcall OW_PRESENCE rcall OW_PRESENCE
sbrs OWFR, OWPRF sbrs OWFR, OWPRF
@ -559,7 +559,6 @@ _TEMP_RD_END:
sts TEMP_H, r18 sts TEMP_H, r18
sts TEMP_F, r19 sts TEMP_F, r19
; sei
_TEMP_RD_EXIT: _TEMP_RD_EXIT:
pop r20 pop r20
pop r19 pop r19
@ -570,7 +569,6 @@ _TEMP_RD_EXIT:
; ;
TEMP_CONV: TEMP_CONV:
push r16 push r16
; cli
rcall OW_PRESENCE rcall OW_PRESENCE
sbrs OWFR, OWPRF sbrs OWFR, OWPRF
@ -584,7 +582,6 @@ TEMP_CONV:
mov OW_CMD_r, r16 mov OW_CMD_r, r16
rcall OW_SEND_BYTE rcall OW_SEND_BYTE
; sei
_TEMP_CONV_EXIT: _TEMP_CONV_EXIT:
pop r16 pop r16
ret ret
@ -594,6 +591,7 @@ _TEMP_CONV_EXIT:
; **** ОТПРАВКА БАЙТА В СДВИГОВЫЙ РЕГИСТР ************************* ; **** ОТПРАВКА БАЙТА В СДВИГОВЫЙ РЕГИСТР *************************
USI_TRANSMIT: USI_TRANSMIT:
push r16 push r16
push r0
out USIDR, r0 ; Байт для отправки всегда находится в регистре r0. Помещаем данные в регистр USIDR. out USIDR, r0 ; Байт для отправки всегда находится в регистре r0. Помещаем данные в регистр USIDR.
; Enable USI Overflow Interrupt Flag (will be 0 if transfer is not compeleted) ; Enable USI Overflow Interrupt Flag (will be 0 if transfer is not compeleted)
@ -619,33 +617,183 @@ _USI_TRANSMIT_LOOP: ; Execute loop when USIOIF is 0
; This will copy byte from 74hc595 shift register into 74hc595 storage register ; This will copy byte from 74hc595 shift register into 74hc595 storage register
sbi PORTB, USI_LATCH_PIN sbi PORTB, USI_LATCH_PIN
cbi PORTB, USI_LATCH_PIN cbi PORTB, USI_LATCH_PIN
pop r0
pop r16 pop r16
ret//</editor-fold> ret
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: опрос кнопок"> BUTTON_PROCESS:
SW_CHECK_PROCESS:
push r16 push r16
rcall DEBOUNCE_SW _SW_CHECK_ON_0:
sbis SW_PIN, SW_PLUS_PIN
adiw DISP_NUM_L, 1
sbis SW_PIN, SW_MINUS_PIN
sbiw DISP_NUM_L, 1
sbis SW_PIN, SW_SET_PIN sbis SW_PIN, SW_SET_PIN
rjmp _INTO_DEFAULT_STATE rjmp _SW_SET_0
rjmp _SW_CHECK_PROCESS_END rjmp _SW_CHECK_ON_1
_SW_SET_0:
lds r16, SW_DATA
tst r16
brne _SW_SET_FROM_0_TO_1
rjmp _SW_CHECK_ON_1
_SW_SET_FROM_0_TO_1:
clr r16
sts SW_DATA, r16
rcall DEBOUNCE_SW
inc REPROGRAM_STEP_r
mov r17, REPROGRAM_STEP_r
cpi r17, 4
brge _SAVE_SETTINGS
rcall BEEP_SHORT
rjmp _SW_CHECK_ON_1
_SAVE_SETTINGS:
clr REPROGRAM_STEP_r
rcall BEEP_LONG
ldi r17, MCU_STATE_DEFAULT
sts MCU_STATE, r17
_SW_CHECK_ON_1:
sbic SW_PIN, SW_SET_PIN
rjmp _SW_SET_1
rjmp _BUTTON_PROCESS_END
_SW_SET_1:
lds r16, SW_DATA
tst r16
breq _SW_SET_FROM_1_TO_0
rjmp _BUTTON_PROCESS_END
_SW_SET_FROM_1_TO_0:
ser r16
sts SW_DATA, r16
rcall DEBOUNCE_SW
_BUTTON_PROCESS_END:
pop r16
ret
_INTO_DEFAULT_STATE:
ldi r16, MCU_STATE_DEFAULT //<editor-fold defaultstate="collapsed" desc="Подпрограмма: перепрограммирование параметров">
sts MCU_STATE, r16 REPROGRAM_SETTINGS:
_SW_CHECK_PROCESS_END: push r16
push r17
push r18
push r19
push r20
mov r16, REPROGRAM_STEP_r
tst r16
breq _INTO
rjmp _REPROGRAM_SETTINGS_LOOP
_INTO:
inc REPROGRAM_STEP_r
rcall BEEP_SHORT
_REPROGRAM_SETTINGS_LOOP:
rcall BUTTON_PROCESS
_CHECK_STEP:
cpi r16, 1
breq _STEP_1
cpi r16, 2
breq _STEP_2
rjmp _REPROGRAM_SETTINGS_END
_STEP_1: ; установка и отображение гистерезиса
nop
_S1_CHECK_PLUS:
sbis SW_PIN, SW_PLUS_PIN
rjmp _INCREASE_HYST
rjmp _S1_CHECK_MINUS
_S1_CHECK_MINUS:
sbis SW_PIN, SW_MINUS_PIN
rjmp _DECREASE_HYST
rjmp _SHOW_HYST
_INCREASE_HYST:
rcall DEBOUNCE_SW
lds r17, SETTING_HYST
inc r17
sts SETTING_HYST, r17
rjmp _SHOW_HYST
_DECREASE_HYST:
rcall DEBOUNCE_SW
lds r17, SETTING_HYST
dec r17
sts SETTING_HYST, r17
_SHOW_HYST:
push dd8u
push dv8u
lds dd8u, SETTING_HYST
ldi dv8u, 10
rcall div8u
mov DISP_NUM_L, dres8u
clr DISP_NUM_H ; гистерезис 8 битный так что ноль пишем в старший байт
sts DIGITS+3, drem8u
pop dv8u
pop dd8u
rjmp _REPROGRAM_SETTINGS_END
_STEP_2:
nop
_S2_CHECK_PLUS:
sbis SW_PIN, SW_PLUS_PIN
rjmp _INCREASE_TEMP
rjmp _S2_CHECK_MINUS
_S2_CHECK_MINUS:
sbis SW_PIN, SW_MINUS_PIN
rjmp _DECREASE_TEMP
rjmp _SHOW_TEMP
_INCREASE_TEMP:
rcall DEBOUNCE_SW
lds r17, SETTING_TEMP_L
lds r18, SETTING_TEMP_H
ldi r19, 1
add r17, r19
clr r19
adc r18, r19
sts SETTING_TEMP_L, r17
sts SETTING_TEMP_H, r18
rjmp _SHOW_TEMP
_DECREASE_TEMP:
rcall DEBOUNCE_SW
lds r17, SETTING_TEMP_L
lds r18, SETTING_TEMP_H
subi r17, 1
sbci r18, 0
sts SETTING_TEMP_L, r17
sts SETTING_TEMP_H, r18
_SHOW_TEMP:
push dd16uL
push dd16uH
push dv16uL
push dv16uH
lds dd16uL, SETTING_TEMP_L
lds dd16uH, SETTING_TEMP_H
ldi dv16uL, LOW(10)
ldi dv16uH, HIGH(10)
rcall div16u
mov DISP_NUM_L, dres16uL
mov DISP_NUM_H, dres16uH
sts DIGITS+3, drem16uL
pop dv16uH
pop dv16uL
pop dd16uH
pop dd16uL
_REPROGRAM_SETTINGS_END:
pop r20
pop r19
pop r18
pop r17
pop r16 pop r16
ret ret
//</editor-fold> //</editor-fold>
;DBG_LED_TOGGLE:
; push r18
; push r19
; in r18, PIND
; ldi r19, (1<<PD0)
; eor r18, r19
; out PORTD, r18
; pop r19
; pop r18
; ret
//<editor-fold defaultstate="collapsed" desc="Реализация интерфеса 1-Wire"> //<editor-fold defaultstate="collapsed" desc="Реализация интерфеса 1-Wire">
//<editor-fold defaultstate="collapsed" desc="1-Wire: оспрос присутствия"> //<editor-fold defaultstate="collapsed" desc="1-Wire: опрос присутствия">
; **** ОПРОС ПРИСУТСТВИЯ УСТРОЙСТВА ****************************** ; **** ОПРОС ПРИСУТСТВИЯ УСТРОЙСТВА ******************************
OW_PRESENCE: OW_PRESENCE:
cli cli
@ -675,9 +823,9 @@ _EXIT:
//<editor-fold defaultstate="collapsed" desc="1-Wire: отправка байта"> //<editor-fold defaultstate="collapsed" desc="1-Wire: отправка байта">
OW_SEND_BYTE: OW_SEND_BYTE:
cli
push r16 push r16
push r17 push r17
cli
mov r16, OW_CMD_r mov r16, OW_CMD_r
ldi r17, 8 ldi r17, 8
_OW_SEND_BYTE_LOOP: _OW_SEND_BYTE_LOOP:
@ -698,17 +846,17 @@ _OW_SEND_1:
_OW_SEND_BYTE_END: _OW_SEND_BYTE_END:
dec r17 dec r17
brne _OW_SEND_BYTE_LOOP brne _OW_SEND_BYTE_LOOP
sei
pop r17 pop r17
pop r16 pop r16
sei
ret ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="1-Wire: чтение байта"> //<editor-fold defaultstate="collapsed" desc="1-Wire: чтение байта">
OW_RD_BYTE: OW_RD_BYTE:
cli
push r16 push r16
push r17 push r17
cli
clr r16 clr r16
ldi r17, 8 ldi r17, 8
_OW_RD_BYTE_LP: _OW_RD_BYTE_LP:
@ -723,9 +871,9 @@ _OW_RD_BYTE_LP:
dec r17 dec r17
brne _OW_RD_BYTE_LP brne _OW_RD_BYTE_LP
st X, r16 st X, r16
sei
pop r17 pop r17
pop r16 pop r16
sei
ret ret
//</editor-fold> //</editor-fold>
//</editor-fold> //</editor-fold>
@ -735,9 +883,9 @@ _OW_RD_BYTE_LP:
; Описание: Перемещает цифры числа в соответствующие ячейки памяти в SRAM ; Описание: Перемещает цифры числа в соответствующие ячейки памяти в SRAM
; путем деления этого числа несколько раз ; путем деления этого числа несколько раз
DISPLAY_UPD_DIGITS: DISPLAY_UPD_DIGITS:
cli push r16
push r21 push r21
ldi r21, 4 ; (4 раза делим) т.к индикатор четырех разрядный ldi r21, 3
; инициализация указателя (за каждый проход цикла будет инкрементироваться) ; инициализация указателя (за каждый проход цикла будет инкрементироваться)
ldi XL, LOW(DIGITS) ldi XL, LOW(DIGITS)
@ -769,7 +917,7 @@ DIV_LOOP:
dec r21 ; декрементируем счетчик цикла dec r21 ; декрементируем счетчик цикла
brne DIV_LOOP ; делим еще раз если не 0 brne DIV_LOOP ; делим еще раз если не 0
pop r21 pop r21
sei pop r16
ret ret
//</editor-fold> //</editor-fold>
@ -778,6 +926,7 @@ DIV_LOOP:
DISPLAY_DECODER: DISPLAY_DECODER:
push r16 push r16
push r17 push r17
ldi ZL, LOW(2*DISPLAY_SYMBOLS) ldi ZL, LOW(2*DISPLAY_SYMBOLS)
ldi ZH, HIGH(2*DISPLAY_SYMBOLS) ldi ZH, HIGH(2*DISPLAY_SYMBOLS)
@ -788,12 +937,13 @@ DISPLAY_DECODER:
lpm r0, Z lpm r0, Z
pop r17 pop r17
pop r16 pop r16
ret//</editor-fold> ret
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: короткий писк"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: короткий писк">
BEEP_SHORT: BEEP_SHORT:
sbi BUZZER_PORT, BUZZER_PIN sbi BUZZER_PORT, BUZZER_PIN
rcall DELAY DELAY24 150000
cbi BUZZER_PORT, BUZZER_PIN cbi BUZZER_PORT, BUZZER_PIN
ret ret
//</editor-fold> //</editor-fold>
@ -801,12 +951,10 @@ BEEP_SHORT:
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: длинный писк"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: длинный писк">
BEEP_LONG: BEEP_LONG:
sbi BUZZER_PORT, BUZZER_PIN sbi BUZZER_PORT, BUZZER_PIN
rcall DELAY DELAY24 500000
rcall DELAY
rcall DELAY
rcall DELAY
cbi BUZZER_PORT, BUZZER_PIN cbi BUZZER_PORT, BUZZER_PIN
ret//</editor-fold> ret
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: устранение дребезга кнопки"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: устранение дребезга кнопки">
DEBOUNCE_SW: DEBOUNCE_SW:
@ -884,7 +1032,9 @@ DISPLAY_SYMBOLS:
.DB 0b10011001, 0b10010010 ; 4, 5 .DB 0b10011001, 0b10010010 ; 4, 5
.DB 0b10000010, 0b11111000 ; 6, 7 .DB 0b10000010, 0b11111000 ; 6, 7
.DB 0b10000000, 0b10010000 ; 8, 9 .DB 0b10000000, 0b10010000 ; 8, 9
.DB 0b10011100, 0b10111111 ; °, -//</editor-fold> .DB 0b10011100, 0b10111111 ; °, -
.DB 0b11000110, 0b10001001 ; C, H
//</editor-fold>
//</editor-fold> //</editor-fold>

177
main.hex
View File

@ -1,83 +1,98 @@
:020000020000FC :020000020000FC
:0200000073C0CB :020000007AC0C4
:0200160018953B :02000800189549
:10001A0015C00F931F932F933F930FB7B49908C03E :0200160002C026
:10002A0020916000203009F003C011E010936000B5 :10001A0018C00F931F932F933F930FB716B3212F37
:10003A000FBF3F912F911F910F9118954F935F9387 :10002A002C71309171002327209371001C7019F4F0
:10004A000F931F935FB74091670045300CF403C0CC :10003A0011E0109360000FBF3F912F911F910F9114
:10005A00442740936700403081F493989498959888 :10004A0018950F931F932F933F934F935F935FB727
:10006A000EF002C00BE002C000916500002311F0FF :10005A004091670045300CF403C044274093670081
:10007A00929A01C09298FED17BD1413081F4929834 :10006A00403081F49398949895980EF002C00BE072
:10008A00949895980091640030916500032B11F0C3 :10007A0002C000916500002311F0929A01C0929883
:10009A00939A01C0939800916400ECD169D14230DF :10008A0060D29BD1413081F49298949895980091CE
:1000AA0059F4929893989598949A00916300E2D1A2 :10009A00640030916500032B11F0939A01C0939884
:1000BA00002D0F77002E5CD1433041F4929893982B :1000AA00009164004ED289D1423059F492989398C3
:1000CA009498959A00916B00D5D152D1439540935B :1000BA009598949A0091630044D2002D0F77002EF0
:1000DA0067005FBF1F910F915F914F9118950FEDC8 :1000CA007CD1433041F4929893989498959A0091F0
:1000EA000DBF0FE701BB01EE07BB0CE108BB02E045 :1000DA00660037D272D14395409367005FBF5F9144
:1000FA0000BF05E003BF09E106BF00E20BBF0CE148 :1000EA004F913F912F911F910F9118950FED0DBFD1
:10010A0000BD11241092670000E0009360000CE229 :1000FA000FE701BB01EE07BB0CE108BB02E000BF42
:10011A0000936D0001E000936C0005E000936E000F :10010A0005E003BF09E106BF00E20BBF0CE100BD39
:10012A0001E000936F0000270093690000936A00C2 :10011A0003E309B900E002B908E00AB906E003B945
:10013A0000EF00936B0053E137E84DEFC5D15CE067 :10012A0011241092670000E0009360000CE2009333
:10014A0034E34DEFC1D1B2D000917000083209F406 :10013A006C0001E000936B0005E000936D0001E0A4
:10015A0005C012E0109360009CD101C096D180E0E6 :10014A0000936E000027009368000093690000EF97
:10016A0090E000916000003031F4969869D18BD00C :10015A0000936A0000E0009371006624CED00091FB
:10017A0001E009BF39D0013019F4969861D104D150 :10016A006F00083209F405C012E010936000FBD159
:10018A00023079F7969AEDCFEE24FF1841E1001F6D :10017A0001C0F2D180E090E000916000C8D1003067
:10019A00111F4A9509F40895EE1CFF1CE21AF30A8E :10018A0051F4969820916A0020936600A7D011E056
:1001AA0020F4E20EF31E8894F2CF0894F0CFFF18E1 :10019A0019BF57D038D0013011F496981CD10230CB
:1001BA0029E0001F2A9509F40895FF1CF11A18F482 :1001AA0059F7969AE9CFEE24FF1841E1001F111F73
:1001CA00F10E8894F6CF0894F4CF5527442760E1BE :1001BA004A9509F40895EE1CFF1CE21AF30A20F48A
:1001DA003695279510F4400F511F57954795379537 :1001CA00E20EF31E8894F2CF0894F0CFFF1829E0CC
:1001EA0027956A95B9F708950F931F932F933F9315 :1001DA00001F2A9509F40895FF1CF11A18F4F10E6C
:1001FA004F935F930091690010916A002AE030E002 :1001EA008894F6CF0894F4CF5527442760E13695D2
:10020A00E4DF022F132F20916B003327020F131FF5 :1001FA00279510F4400F511F579547953795279526
:10021A00109371000093720040916D0050916C0030 :10020A006A95B9F708950F931F9300916800502ECD
:10022A0060916E004F935F937727461B570BB42E4E :10021A0014D000916A00502E10D000B30170502EF5
:10023A00A52E5F914F917727460F571FD42EC52EB3 :10022A000CD004E0502E09D00027502E1CE005D037
:10024A000EF004C0009510950F5F1F4FB016A1065F :10023A001A95E9F71F910F9108955D9BFECF5CB85F
:10025A0024F40D151C054CF40FC040916F00442383 :10024A0008950F931F932F933F934F935F937F9339
:10026A0011F4909801C0909A07C040916F004423FE :10025A0000916800109169002AE030E0C5DF022FA2
:10027A0011F4909A01C090985F914F913F912F91FC :10026A00132F20916A003327020F131F40916C004D
:10028A001F910F9108951F9367D05CE034E34DEFFF :10027A0050916B0060916D004F935F937727461BF7
:10029A001BD15CE034E34DEF17D112D01091690005 :10028A00570BB42EA52E5F914F917727460F571F14
:1002AA00812F10916A00912F1F9108950F937AD090 :10029A00D42EC52E0EF004C0009510950F5F1F4F87
:1002BA0003E3802E8CD0A0E7B0E0A8D00F91089578 :1002AA00B016A10624F40D151C054CF40FC040919C
:1002CA000F931F932F933F934F936CD070FF3EC0B1 :1002BA006E00442311F4909801C0909A07C04091AF
:1002DA000CEC802E7CD00EEB802E79D0A9E6B0E013 :1002CA006E00442311F4909A01C090987F915F9137
:1002EA0095D0AAE6B0E092D01091690020916A00F8 :1002DA004F913F912F911F910F9108951F9361D0D4
:1002FA002F93287F283F11F0E89409C02F91689422 :1002EA0052E135E54DEB5AD112D010916800812FB9
:10030A001095209531E0130F30E0231F01C02F9183 :1002FA0010916900912F1F9108950F93BAD003E3CB
:10031A002695179526951795269517952695179537 :10030A00802ECCD0AFE6B0E0E8D00F9108950F93DD
:10032A00309169000EF43195432F3F70432F330FFC :10031A001F932F933F934F93ACD070FF3CC00CECCC
:10033A00330F330F440F340F36953695369536956D :10032A00802EBCD00EEB802EB9D0A8E6B0E0D5D096
:10034A001093690020936A0030936B004F913F919C :10033A00A9E6B0E0D2D010916800209169002F930D
:10035A002F911F910F9108950F9324D070FF06C01B :10034A00287F283F11F0E89407C02F9168941095F0
:10036A000CEC802E34D004E4802E31D00F91089505 :10035A0020951F5F2F4F01C02F912695179526953F
:10037A000F930FB800E40EB90BE10DB9769BFDCFD0 :10036A0017952695179526951795309168000EF4DE
:10038A00C09AC0980F9108950F938AD0B29B019694 :10037A003195432F3F70432F330F330F330F440F01
:10039A00B39B0197B49B01C003C000E000936000C7 :10038A00340F369536953695369510936800209336
:1003AA000F910895F894B99A33E04EEB89D0B99831 :10039A00690030936A004F913F912F911F910F91FD
:1003BA0030E04AE885D005D033E042E381D0789432 :1003AA0008950F9366D070FF06C00CEC802E76D0AD
:1003CA000895B19B716002C0B1997E7F08950F9321 :1003BA0004E4802E73D00F9108950F930F920FB813
:1003DA001F93F894082D18E0069508F448F0B99A86 :1003CA0000E40EB90BE10DB9769BFDCFC09AC09837
:1003EA0030E046E76DD0B99830E042E169D008C004 :1003DA000F900F9108950F931F932F93062D0023CB
:1003FA00B99A30E04AE064D0B99830E04EE760D06C :1003EA0009F002C06394B8D0013009F00CC00F9331
:10040A001A9551F778941F910F9108950F931F939E :1003FA001F9300916D001AE0E9DE802F9927F09291
:10041A00F894002718E00695B99A30E04AE050D0DF :10040A0066001F910F910091710004FF01C015C091
:10042A00B99830E040E14CD0B199006830E04CE630 :10041A00B49B01C02AC01091710010611093710041
:10043A0047D01A9581F70C9378941F910F910895DC :10042A00A9D06394162D143011F096D01EC06624FC
:10044A00F8945F9354E0A3E6B0E080936100909340 :10043A009AD010E01093600018C0B29B03C0B39B1F
:10045A00620000916100109162002AE030E094DEAF :10044A000BC013C057E032E54DEFA8D020916D00E4
:10046A00ED9200936100109362005A9591F75F91A3 :10045A00239520936D0009C057E032E54DEF9ED0F9
:10047A00789408950F931F93ECEFF4E01127E00F9F :10046A0020916D002A9520936D002F911F910F9175
:10048A00F11F04901F910F910895C59A22D0C59823 :10047A000895F894B99A33E04EEB8CD0B99830E0ED
:10049A000895C59A1ED01DD01CD01BD0C5980895AA :10048A004AE888D005D033E042E384D078940895CE
:1004AA000F931F932F932AE01FEF0FEF0A95F1F78F :10049A00B19B716002C0B1997E7F0895F8940F9361
:1004BA001A95D9F72A95C1F72F911F910F9108958F :1004AA001F93082D18E0069508F448F0B99A30E031
:1004CA0041503040E8F70895415030405040E0F73D :1004BA0046E770D0B99830E042E16CD008C0B99AEA
:1004DA0008950F931F932F9326E00FEF1FEF1A959E :1004CA0030E04AE067D0B99830E04EE763D01A9539
:1004EA00F1F70A95D9F72A95C1F72F911F910F9124 :1004DA0051F71F910F9178940895F8940F931F93F1
:0E04FA000895C0F9A4B0999282F880909CBF3A :1004EA00002718E00695B99A30E04AE053D0B99847
:1004FA0030E040E14FD0B199006830E04CE64AD094
:10050A001A9581F70C931F910F91789408950F9380
:10051A005F9353E0A3E6B0E080936100909362009A
:10052A0000916100109162002AE030E03CDEED9219
:10053A0000936100109362005A9591F75F910F91B1
:10054A0008950F931F93E0EDF5E01127E00FF11FD7
:10055A0004901F910F910895C59A53E039EA4DE727
:10056A001DD0C5980895C59A5CE034E34DEF16D0C6
:10057A00C59808950F931F932F932AE01FEF0FEF4B
:10058A000A95F1F71A95D9F72A95C1F72F911F9174
:10059A000F91089541503040E8F708954150304096
:1005AA005040E0F708950F931F932F9326E00FEF23
:1005BA001FEF1A95F1F70A95D9F72A95C1F72F91E6
:1005CA001F910F910895C0F9A4B0999282F8809072
:0405DA009CBFC68973
:00000001FF :00000001FF

View File

@ -1,13 +1,13 @@
# #
#Sun Jun 25 21:34:52 MSK 2023 #Wed Jun 28 17:31:11 MSK 2023
default.languagetoolchain.version=2.2.7 default.languagetoolchain.version=2.2.7
default.Pack.dfplocation=/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151 default.Pack.dfplocation=/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151
default.com-microchip-mplab-mdbcore-simulator-Simulator.md5=19e4dc0f223322f74cda227c3c12c71c
conf.ids=default conf.ids=default
default.languagetoolchain.dir=/usr/bin default.languagetoolchain.dir=/usr/bin
host.id=2l3s-yrgx-1d host.id=cf4f-twrn-b
configurations-xml=6a01ab9659d148a99244ed826cfd39c3 configurations-xml=85db3bcfcc45f311e22a744cb34722f8
default.com-microchip-mplab-nbide-toolchain-avrasm-AVRASMLanguageToolchain.md5=0e94da8ed93e9650ffef50929833a79f default.com-microchip-mplab-nbide-toolchain-avrasm-AVRASMLanguageToolchain.md5=0e94da8ed93e9650ffef50929833a79f
default.com-microchip-mplab-mdbcore-snap-SnapToolImpl.md5=eaa336cefb7fc46db8b50b7b2b6e54ca
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=6e02ca5e9f5042ffd365b42ab82d3a9b com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=6e02ca5e9f5042ffd365b42ab82d3a9b
user-defined-mime-resolver-xml=none user-defined-mime-resolver-xml=none
proj.dir=/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X proj.dir=/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
<defaultConf>0</defaultConf> <defaultConf>0</defaultConf>
<confs> <confs>
<conf name="default" type="2"> <conf name="default" type="2">
<platformToolSN></platformToolSN> <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>03EB:=&lt;pid>2180:=&lt;rev>0100:=&lt;man>Microchip Technology Incorporated:=&lt;prod>MPLAB Snap ICD CMSIS-DAP:=&lt;sn>BUR205073320:=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>
<languageToolchainDir>/usr/bin</languageToolchainDir> <languageToolchainDir>/usr/bin</languageToolchainDir>
<mdbdebugger version="1"> <mdbdebugger version="1">
<placeholder1>place holder 1</placeholder1> <placeholder1>place holder 1</placeholder1>

View File

@ -3,11 +3,12 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="1"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="1"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <group>
<file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/mpy16u.asm</file>
<file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/NOTES.md</file>
<file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/main.asm</file> <file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/main.asm</file>
<file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/README.md</file>
<file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/macros.asm</file> <file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/macros.asm</file>
<file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/README.md</file>
<file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/NOTES.md</file>
<file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/mpy16u.asm</file>
<file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/div16u.asm</file>
<file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/definitions.asm</file> <file>file:/home/sergeyyarkov/Documents/Projects/Firmwares/AVR/attiny2313a_thermostat.X/definitions.asm</file>
</group> </group>
</open-files> </open-files>