min & max limit for temp setting

This commit is contained in:
Sergey Yarkov 2023-06-30 21:42:04 +03:00
parent f4112a7d64
commit b176b356ce
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
9 changed files with 811 additions and 666 deletions

View File

@ -7,6 +7,8 @@
.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 EEP_A_r = r3
.DEF EEP_D_r = r4
.DEF REPROGRAM_STEP_r = r6 .DEF REPROGRAM_STEP_r = r6
.EQU DIGIT_1_PIN = PD2 ; Пин разряда индикатора 1 .EQU DIGIT_1_PIN = PD2 ; Пин разряда индикатора 1
@ -14,8 +16,8 @@
.EQU DIGIT_3_PIN = PD4 ; Пин разряда индикатора 3 .EQU DIGIT_3_PIN = PD4 ; Пин разряда индикатора 3
.EQU DIGIT_4_PIN = PD5 ; Пин разряда индикатора 4 .EQU DIGIT_4_PIN = PD5 ; Пин разряда индикатора 4
.EQU LED_ERR_PIN = PD6 ; Светодиод который говорит о том, что МК в состоянии ошибки .EQU LED_PGM_PIN = PD6 ; Светодиод который говорит о том, что МК в состоянии настройки
.EQU LED_ERR_PORT = PORTD .EQU LED_PGM_PORT = PORTD
.EQU OW_LINE = PB1 ; Пин шины 1-Wire .EQU OW_LINE = PB1 ; Пин шины 1-Wire
.EQU OW_DDR = DDRB .EQU OW_DDR = DDRB
@ -64,6 +66,11 @@
.EQU MIN_HYST = 1 ; минимальный гистерезис который можно выставить - 0.1 .EQU MIN_HYST = 1 ; минимальный гистерезис который можно выставить - 0.1
.EQU MAX_HYST = 200 ; максимальный гистерезис который можно выставить - 20 .EQU MAX_HYST = 200 ; максимальный гистерезис который можно выставить - 20
.EQU MIN_TEMP_H = 0xfe
.EQU MIN_TEMP_L = 0x0c ; минимум -50 градусов уставка
.EQU MAX_TEMP_H = 0x04 ; максимум 120 градусов уставка
.EQU MAX_TEMP_L = 0xb0
; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ *********************************** ; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ ***********************************
.EQU DEFAULT_TEMP = 300 ; 30 градусов .EQU DEFAULT_TEMP = 300 ; 30 градусов
@ -78,3 +85,9 @@
.EQU DEFAULT_SETTING_TEMP_H = HIGH(DEFAULT_TEMP) .EQU DEFAULT_SETTING_TEMP_H = HIGH(DEFAULT_TEMP)
.EQU DEFAULT_SETTING_HYST = DEFAULT_HYST .EQU DEFAULT_SETTING_HYST = DEFAULT_HYST
.EQU DEFAULT_SETTING_MODE = DEFAULT_MODE .EQU DEFAULT_SETTING_MODE = DEFAULT_MODE
.EQU EEP_SETTING_TEMP_H = 0x00
.EQU EEP_SETTING_TEMP_L = 0x01
.EQU EEP_SETTING_HYST = 0x02
.EQU EEP_SETTING_MODE = 0x03
.EQU EEP_FIRST_TIME_RUN = 0x04

View File

@ -7,12 +7,12 @@
:10003A002F933F934F935F935FB74091670045308B :10003A002F933F934F935F935FB74091670045308B
:10004A000CF403C0442740936700403081F493982E :10004A000CF403C0442740936700403081F493982E
:10005A00949895980EF002C00BE002C000916500DA :10005A00949895980EF002C00BE002C000916500DA
:10006A00002311F0929A01C0929850D305D24130E0 :10006A00002311F0929A01C0929858D305D24130D8
:10007A0081F4929894989598009164003091650063 :10007A0081F4929894989598009164003091650063
:10008A00032B11F0939A01C09398009164003ED318 :10008A00032B11F0939A01C093980091640046D310
:10009A00F3D1423059F4929893989598949A009192 :10009A00F3D1423059F4929893989598949A009192
:1000AA00630034D3002D0F77002EE6D1433041F49C :1000AA0063003CD3002D0F77002EE6D1433041F494
:1000BA00929893989498959A0091660027D3DCD1E8 :1000BA00929893989498959A009166002FD3DCD1E0
:1000CA004395409367005FBF5F914F913F912F9196 :1000CA004395409367005FBF5F914F913F912F9196
:1000DA001F910F9118950FED0DBF0FE701BB01EEB0 :1000DA001F910F9118950FED0DBF0FE701BB01EEB0
:1000EA0007BB0CE108BB02E000BF05E003BF03E267 :1000EA0007BB0CE108BB02E000BF05E003BF03E267
@ -24,9 +24,9 @@
:10014A0040926D0003E0302ED3D040926E0000271B :10014A0040926D0003E0302ED3D040926E0000271B
:10015A00009368000093690000EF00936A000FEFB4 :10015A00009368000093690000EF00936A000FEFB4
:10016A0000937100662428D100916F00083209F4C7 :10016A0000937100662428D100916F00083209F4C7
:10017A0005C012E010936000DBD201C0D2D280E049 :10017A0005C012E010936000E3D201C0DAD280E039
:10018A0090E000916000003051F420916A002093C1 :10018A0090E000916000003051F420916A002093C1
:10019A00660003D1A1D2B4D011E019BF41D0013019 :10019A00660003D1A9D2B4D011E019BF41D0013011
:1001AA0009F4A6D1023069F71BE01093630010939B :1001AA0009F4A6D1023069F71BE01093630010939B
:1001BA006400109365001093660011E019BFE1CF47 :1001BA006400109365001093660011E019BFE1CF47
:1001CA00EE24FF1841E1001F111F4A9509F4089512 :1001CA00EE24FF1841E1001F111F4A9509F4089512
@ -59,66 +59,67 @@
:10037A00442311F4909801C0909A07C040916E00EE :10037A00442311F4909801C0909A07C040916E00EE
:10038A00442311F4909A01C090987F915F914F9104 :10038A00442311F4909A01C090987F915F914F9104
:10039A003F912F911F910F9108951F9361D052E1C0 :10039A003F912F911F910F9108951F9361D052E1C0
:1003AA0035E54DEBE0D112D010916800812F109104 :1003AA0035E54DEBE8D112D010916800812F1091FC
:1003BA006900912F1F9108950F9340D103E3802E76 :1003BA006900912F1F9108950F9348D103E3802E6E
:1003CA0052D1AFE6B0E06ED10F9108950F931F930B :1003CA005AD1AFE6B0E076D10F9108950F931F93FB
:1003DA002F933F934F9332D170FF3CC00CEC802E89 :1003DA002F933F934F933AD170FF3CC00CEC802E81
:1003EA0042D10EEB802E3FD1A8E6B0E05BD1A9E660 :1003EA004AD10EEB802E47D1A8E6B0E063D1A9E648
:1003FA00B0E058D110916800209169002F93287FAE :1003FA00B0E060D110916800209169002F93287FA6
:10040A00283F11F0E89407C02F9168941095209521 :10040A00283F11F0E89407C02F9168941095209521
:10041A001F5F2F4F01C02F91269517952695179587 :10041A001F5F2F4F01C02F91269517952695179587
:10042A002695179526951795309168000EF4319503 :10042A002695179526951795309168000EF4319503
:10043A00432F3F70432F330F330F330F440F340FC3 :10043A00432F3F70432F330F330F330F440F340FC3
:10044A00369536953695369510936800209369004F :10044A00369536953695369510936800209369004F
:10045A0030936A004F913F912F911F910F91089508 :10045A0030936A004F913F912F911F910F91089508
:10046A000F93ECD070FF06C00CEC802EFCD004E495 :10046A000F93F4D070FF06C00CEC802E04D104E484
:10047A00802EF9D00F9108950F930F920FB800E4D0 :10047A00802E01D10F9108950F930F920FB800E4C7
:10048A000EB90BE10DB9769BFDCFC09AC0980F90BB :10048A000EB90BE10DB9769BFDCFC09AC0980F90BB
:10049A000F9108950F93B49B01C01CC00091710085 :10049A000F9108950F93B49B01C01CC00091710085
:1004AA00002309F417C000270093710048D1639410 :1004AA00002309F417C000270093710050D1639408
:1004BA00162D143014F435D10DC010E019BF9298DE :1004BA00162D143014F43DD10DC010E019BF9298D6
:1004CA009398949895986624EBDE32D1969810E02A :1004CA009398949895986624EBDE3AD1969810E022
:1004DA0010936000B49901C009C000917100002313 :1004DA0010936000B49901C009C000917100002313
:1004EA0009F004C00FEF0093710029D10F9108950C :1004EA0009F004C00FEF0093710031D10F91089504
:1004FA000F931F932F933F934F93062D002309F0D9 :1004FA000F931F932F933F934F93062D002309F0D9
:10050A0004C09098969A0DD16394C4DF013029F003 :10050A0004C09098969A15D16394C4DF013029F0FB
:10051A00023049F1033031F18BC0DED0B29B04C006 :10051A00023049F1033031F193C0E6D0B29B04C0F6
:10052A0000C0B39B0AC011C00AD110916D00183CDB :10052A0000C0B39B0AC011C012D110916D00183CD3
:10053A0009F0139510936D0008C001D110916D0058 :10053A0009F0139510936D0008C009D110916D0050
:10054A00113009F01A9510936D000F931F930091C3 :10054A00113009F01A9510936D000F931F930091C3
:10055A006D001AE048DE802F9927F09266001F91FD :10055A006D001AE048DE802F9927F09266001F91FD
:10056A000F9166C03FC0B8D0B29B04C000C0B39B15 :10056A000F916EC047C0C0D0B29B04C000C0B39BFD
:10057A000FC019C0E4D010916C0020916B003AE0D2 :10057A0013C021C0ECD010916C0020916B00103B8D
:10058A00130F3327231F10936C0020936B000BC0AB :10058A0034E0230731F03AE0130F3327231F109387
:10059A00D6D010916C0020916B001A502040109315 :10059A006C0020936B000FC0DAD010916C00209190
:1005AA006C0020936B000F931F932F933F9300913E :1005AA006B001C303EEF230711F01A5020401093C5
:1005BA006C0010916B00212F207811F4E89405C08B :1005BA006C0020936B000F931F932F933F9300912E
:1005CA006894009510950F5F1F4F2AE030E0F8DD20 :1005CA006C0010916B00212F207811F4E89405C07B
:1005DA00802F912F0AE0009366003F912F911F917F :1005DA006894009510950F5F1F4F2AE030E0F0DD18
:1005EA000F9126C0E894B29B04C000C0B39B06C01A :1005EA00802F912F0AE0009366003F912F911F916F
:1005FA0009C0A5D011E010936E0004C0A0D010E08D :1005FA000F9126C0E894B29B04C000C0B39B06C00A
:10060A0010936E001127812F912F112710936300E9 :10060A0009C0A5D011E010936E0004C0A0D010E07C
:10061A00109364001093650020916E00222309F064 :10061A0010936E001127812F912F1EE01093630013
:10062A0004C01CE01093660003C01DE0109366002E :10062A00109364001093650020916E00222309F054
:10063A004F913F912F911F910F910895F894B99A74 :10063A0004C01CE01093660003C01DE0109366001E
:10064A0033E04EEB8CD0B99830E04AE888D005D038 :10064A004F913F912F911F910F910895F894B99A64
:10065A0033E042E384D078940895B19B716002C07C :10065A0033E04EEB8CD0B99830E04AE888D005D028
:10066A00B1997E7F0895F8940F931F93082D18E08F :10066A0033E042E384D078940895B19B716002C06C
:10067A00069508F448F0B99A30E046E770D0B99880 :10067A00B1997E7F0895F8940F931F93082D18E07F
:10068A0030E042E16CD008C0B99A30E04AE067D065 :10068A00069508F448F0B99A30E046E770D0B99870
:10069A00B99830E04EE763D01A9551F71F910F9140 :10069A0030E042E16CD008C0B99A30E04AE067D055
:1006AA0078940895F8940F931F93002718E00695FD :1006AA00B99830E04EE763D01A9551F71F910F9130
:1006BA00B99A30E04AE053D0B99830E040E14FD0DF :1006BA0078940895F8940F931F93002718E00695ED
:1006CA00B199006830E04CE64AD01A9581F70C934C :1006CA00B99A30E04AE053D0B99830E040E14FD0CF
:1006DA001F910F91789408950F935F9353E0A3E6C7 :1006DA00B199006830E04CE64AD01A9581F70C933C
:1006EA00B0E08093610090936200009161001091E4 :1006EA001F910F91789408950F935F9353E0A3E6B7
:1006FA0062002AE030E064DDED920093610010931D :1006FA00B0E08093610090936200009161001091D4
:10070A0062005A9591F75F910F9108950F931F9385 :10070A0062002AE030E05CDDED9200936100109314
:10071A00EAE7F7E01127E00FF11F04901F910F910C :10071A0062005A9591F75F910F9108950F931F9375
:10072A000895C59A53E039EA4DE71DD0C598089552 :10072A00EAE8F7E01127E00FF11F04901F910F91FB
:10073A00C59A5CE034E34DEF16D0C59808950F933F :10073A000895C59A53E039EA4DE71DD0C598089542
:10074A001F932F932AE01FEF0FEF0A95F1F71A95DF :10074A00C59A5CE034E34DEF16D0C59808950F932F
:10075A00D9F72A95C1F72F911F910F91089541500A :10075A001F932F932AE01FEF0FEF0A95F1F71A95CF
:10076A003040E8F70895415030405040E0F708958E :10076A00D9F72A95C1F72F911F910F9108954150FA
:0E077A00C0F9A4B0999282F880909CBFC68905 :10077A003040E8F70895415030405040E0F708957E
:0E078A00C0F9A4B0999282F880909CBFC689F5
:00000001FF :00000001FF

View File

@ -1,58 +1,58 @@
AVRASM ver. 2.2.7 main.asm Fri Jun 30 16:51:54 2023 AVRASM ver. 2.2.7 main.asm Fri Jun 30 21:37:26 2023
[builtin](2): Including file '/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/avrasm/inc\tn2313Adef.inc' [builtin](2): Including file '/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/avrasm/inc\tn2313Adef.inc'
main.asm(15): Including file 'definitions.asm' main.asm(15): Including file 'definitions.asm'
main.asm(16): Including file 'macros.asm' main.asm(16): Including file 'macros.asm'
main.asm(329): Including file 'div16u.asm' main.asm(317): Including file 'div16u.asm'
div16u.asm(22): warning: Register r16 already defined by the .DEF directive div16u.asm(22): warning: Register r16 already defined by the .DEF directive
main.asm(329): 'div16u.asm' included form here main.asm(317): 'div16u.asm' included form here
div16u.asm(23): warning: Register r17 already defined by the .DEF directive div16u.asm(23): warning: Register r17 already defined by the .DEF directive
main.asm(329): 'div16u.asm' included form here main.asm(317): 'div16u.asm' included form here
div16u.asm(24): warning: Register r16 already defined by the .DEF directive div16u.asm(24): warning: Register r16 already defined by the .DEF directive
main.asm(329): 'div16u.asm' included form here main.asm(317): 'div16u.asm' included form here
div16u.asm(25): warning: Register r17 already defined by the .DEF directive div16u.asm(25): warning: Register r17 already defined by the .DEF directive
main.asm(329): 'div16u.asm' included form here main.asm(317): 'div16u.asm' included form here
div16u.asm(27): warning: Register r19 already defined by the .DEF directive div16u.asm(27): warning: Register r19 already defined by the .DEF directive
main.asm(329): 'div16u.asm' included form here main.asm(317): 'div16u.asm' included form here
div16u.asm(28): warning: Register r20 already defined by the .DEF directive div16u.asm(28): warning: Register r20 already defined by the .DEF directive
main.asm(329): 'div16u.asm' included form here main.asm(317): 'div16u.asm' included form here
main.asm(330): Including file 'div8u.asm' main.asm(318): Including file 'div8u.asm'
div8u.asm(18): warning: Register r15 already defined by the .DEF directive div8u.asm(18): warning: Register r15 already defined by the .DEF directive
main.asm(330): 'div8u.asm' included form here main.asm(318): 'div8u.asm' included form here
div8u.asm(19): warning: Register r16 already defined by the .DEF directive div8u.asm(19): warning: Register r16 already defined by the .DEF directive
main.asm(330): 'div8u.asm' included form here main.asm(318): 'div8u.asm' included form here
div8u.asm(20): warning: Register r16 already defined by the .DEF directive div8u.asm(20): warning: Register r16 already defined by the .DEF directive
main.asm(330): 'div8u.asm' included form here main.asm(318): 'div8u.asm' included form here
div8u.asm(21): warning: Register r17 already defined by the .DEF directive div8u.asm(21): warning: Register r17 already defined by the .DEF directive
main.asm(330): 'div8u.asm' included form here main.asm(318): 'div8u.asm' included form here
div8u.asm(22): warning: Register r18 already defined by the .DEF directive div8u.asm(22): warning: Register r18 already defined by the .DEF directive
main.asm(330): 'div8u.asm' included form here main.asm(318): 'div8u.asm' included form here
main.asm(331): Including file 'mpy16u.asm' main.asm(319): Including file 'mpy16u.asm'
mpy16u.asm(19): warning: Register r16 already defined by the .DEF directive mpy16u.asm(19): warning: Register r16 already defined by the .DEF directive
main.asm(331): 'mpy16u.asm' included form here main.asm(319): 'mpy16u.asm' included form here
mpy16u.asm(20): warning: Register r17 already defined by the .DEF directive mpy16u.asm(20): warning: Register r17 already defined by the .DEF directive
main.asm(331): 'mpy16u.asm' included form here main.asm(319): 'mpy16u.asm' included form here
mpy16u.asm(21): warning: Register r18 already defined by the .DEF directive mpy16u.asm(21): warning: Register r18 already defined by the .DEF directive
main.asm(331): 'mpy16u.asm' included form here main.asm(319): 'mpy16u.asm' included form here
mpy16u.asm(22): warning: Register r19 already defined by the .DEF directive mpy16u.asm(22): warning: Register r19 already defined by the .DEF directive
main.asm(331): 'mpy16u.asm' included form here main.asm(319): 'mpy16u.asm' included form here
mpy16u.asm(23): warning: Register r18 already defined by the .DEF directive mpy16u.asm(23): warning: Register r18 already defined by the .DEF directive
main.asm(331): 'mpy16u.asm' included form here main.asm(319): 'mpy16u.asm' included form here
mpy16u.asm(24): warning: Register r19 already defined by the .DEF directive mpy16u.asm(24): warning: Register r19 already defined by the .DEF directive
main.asm(331): 'mpy16u.asm' included form here main.asm(319): 'mpy16u.asm' included form here
mpy16u.asm(25): warning: Register r20 already defined by the .DEF directive mpy16u.asm(25): warning: Register r20 already defined by the .DEF directive
main.asm(331): 'mpy16u.asm' included form here main.asm(319): 'mpy16u.asm' included form here
mpy16u.asm(26): warning: Register r21 already defined by the .DEF directive mpy16u.asm(26): warning: Register r21 already defined by the .DEF directive
main.asm(331): 'mpy16u.asm' included form here main.asm(319): 'mpy16u.asm' included form here
main.asm(498): warning: Register r16 already defined by the .DEF directive main.asm(486): warning: Register r16 already defined by the .DEF directive
main.asm(499): warning: Register r17 already defined by the .DEF directive main.asm(487): warning: Register r17 already defined by the .DEF directive
[builtin](2): Including file '/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/avrasm/inc\tn2313Adef.inc' [builtin](2): Including file '/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/avrasm/inc\tn2313Adef.inc'
main.asm(15): Including file 'definitions.asm' main.asm(15): Including file 'definitions.asm'
main.asm(16): Including file 'macros.asm' main.asm(16): Including file 'macros.asm'
main.asm(329): Including file 'div16u.asm' main.asm(317): Including file 'div16u.asm'
main.asm(330): Including file 'div8u.asm' main.asm(318): Including file 'div8u.asm'
main.asm(331): Including file 'mpy16u.asm' main.asm(319): Including file 'mpy16u.asm'
; ;
@ -836,6 +836,11 @@ main.asm(331): Including file 'mpy16u.asm'
.EQU MIN_HYST = 1 ; минимальный гистерезис который можно выставить - 0.1 .EQU MIN_HYST = 1 ; минимальный гистерезис который можно выставить - 0.1
.EQU MAX_HYST = 200 ; максимальный гистерезис который можно выставить - 20 .EQU MAX_HYST = 200 ; максимальный гистерезис который можно выставить - 20
.EQU MIN_TEMP_H = 0xfe
.EQU MIN_TEMP_L = 0x0c ; минимум -50 градусов уставка
.EQU MAX_TEMP_H = 0x04 ; максимум 120 градусов уставка
.EQU MAX_TEMP_L = 0xb0
; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ *********************************** ; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ ***********************************
.EQU DEFAULT_TEMP = 300 ; 30 градусов .EQU DEFAULT_TEMP = 300 ; 30 градусов
@ -1005,7 +1010,7 @@ main.asm(331): Including file 'mpy16u.asm'
000037 9a92 sbi PORTD, DIGIT_1_PIN 000037 9a92 sbi PORTD, DIGIT_1_PIN
000038 c001 rjmp PC+2 000038 c001 rjmp PC+2
000039 9892 cbi PORTD, DIGIT_1_PIN 000039 9892 cbi PORTD, DIGIT_1_PIN
00003a d350 rcall DISPLAY_DECODER 00003a d358 rcall DISPLAY_DECODER
00003b d205 rcall USI_TRANSMIT 00003b d205 rcall USI_TRANSMIT
_indicate_2: _indicate_2:
@ -1023,7 +1028,7 @@ main.asm(331): Including file 'mpy16u.asm'
000048 c001 rjmp PC+2 000048 c001 rjmp PC+2
000049 9893 cbi PORTD, DIGIT_2_PIN 000049 9893 cbi PORTD, DIGIT_2_PIN
00004a 9100 0064 lds TEMP_REG_A, DIGITS+1 00004a 9100 0064 lds TEMP_REG_A, DIGITS+1
00004c d33e rcall DISPLAY_DECODER 00004c d346 rcall DISPLAY_DECODER
00004d d1f3 rcall USI_TRANSMIT 00004d d1f3 rcall USI_TRANSMIT
_indicate_3: _indicate_3:
@ -1035,7 +1040,7 @@ main.asm(331): Including file 'mpy16u.asm'
000052 9895 cbi PORTD, DIGIT_4_PIN 000052 9895 cbi PORTD, DIGIT_4_PIN
000053 9a94 sbi PORTD, DIGIT_3_PIN 000053 9a94 sbi PORTD, DIGIT_3_PIN
000054 9100 0063 lds TEMP_REG_A, DIGITS 000054 9100 0063 lds TEMP_REG_A, DIGITS
000056 d334 rcall DISPLAY_DECODER 000056 d33c rcall DISPLAY_DECODER
000057 2d00 mov r16, r0 000057 2d00 mov r16, r0
000058 770f cbr r16, (1<<7) 000058 770f cbr r16, (1<<7)
000059 2e00 mov r0, r16 000059 2e00 mov r0, r16
@ -1050,7 +1055,7 @@ main.asm(331): Including file 'mpy16u.asm'
00005f 9894 cbi PORTD, DIGIT_3_PIN 00005f 9894 cbi PORTD, DIGIT_3_PIN
000060 9a95 sbi PORTD, DIGIT_4_PIN 000060 9a95 sbi PORTD, DIGIT_4_PIN
000061 9100 0066 lds TEMP_REG_A, DIGITS+3 000061 9100 0066 lds TEMP_REG_A, DIGITS+3
000063 d327 rcall DISPLAY_DECODER 000063 d32f rcall DISPLAY_DECODER
000064 d1dc rcall USI_TRANSMIT 000064 d1dc rcall USI_TRANSMIT
_indicate_exit: _indicate_exit:
@ -1149,18 +1154,6 @@ main.asm(331): Including file 'mpy16u.asm'
0000a9 d0d3 rcall EEP_RD_BYTE 0000a9 d0d3 rcall EEP_RD_BYTE
0000aa 9240 006e sts SETTING_MODE, EEP_D_r 0000aa 9240 006e sts SETTING_MODE, EEP_D_r
; ldi r16, DEFAULT_SETTING_TEMP_L
; sts SETTING_TEMP_L, r16 ; уставка LOW
;
; ldi r16, DEFAULT_SETTING_TEMP_H
; sts SETTING_TEMP_H, r16 ; уставка HIGH
;
; ldi r16, DEFAULT_SETTING_HYST
; sts SETTING_HYST, r16 ; гистерезис
;
; ldi r16, DEFAULT_SETTING_MODE
; sts SETTING_MODE, r16 ; режим работы
_CONTINUE_INIT: _CONTINUE_INIT:
0000ac 2700 clr r16 0000ac 2700 clr r16
0000ad 9300 0068 sts TEMP_L, r16 0000ad 9300 0068 sts TEMP_L, r16
@ -1185,10 +1178,10 @@ main.asm(331): Including file 'mpy16u.asm'
ERR_FAMILY_CODE: ERR_FAMILY_CODE:
0000be e012 ldi r17, MCU_STATE_ERROR 0000be e012 ldi r17, MCU_STATE_ERROR
0000bf 9310 0060 sts MCU_STATE, r17 0000bf 9310 0060 sts MCU_STATE, r17
0000c1 d2db rcall BEEP_LONG 0000c1 d2e3 rcall BEEP_LONG
0000c2 c001 rjmp PC+2 0000c2 c001 rjmp PC+2
START_PROGRAM: START_PROGRAM:
0000c3 d2d2 rcall BEEP_SHORT 0000c3 d2da rcall BEEP_SHORT
0000c4 e080 0000c4 e080
0000c5 e090 display_load 0 0000c5 e090 display_load 0
//</editor-fold> //</editor-fold>
@ -1206,7 +1199,7 @@ main.asm(331): Including file 'mpy16u.asm'
0000cc 9320 0066 sts DIGITS+3, r18 0000cc 9320 0066 sts DIGITS+3, r18
0000ce d103 rcall TEMP_UPD ; обновление данных о температуре 0000ce d103 rcall TEMP_UPD ; обновление данных о температуре
0000cf d2a1 rcall DISPLAY_UPD_DIGITS 0000cf d2a9 rcall DISPLAY_UPD_DIGITS
0000d0 d0b4 rcall TEMP_COMPARSION ; логика термостата 0000d0 d0b4 rcall TEMP_COMPARSION ; логика термостата
0000d1 e011 0000d1 e011
0000d2 bf19 outi r17, TIMSK, (1<<OCIE0A) ; вкл. индикатор 0000d2 bf19 outi r17, TIMSK, (1<<OCIE0A) ; вкл. индикатор
@ -1630,7 +1623,7 @@ main.asm(331): Including file 'mpy16u.asm'
0001d4 e152 0001d4 e152
0001d5 e535 0001d5 e535
0001d6 eb4d 0001d6 eb4d
0001d7 d1e0 DELAY24 751000 0001d7 d1e8 DELAY24 751000
0001d8 d012 rcall TEMP_RD 0001d8 d012 rcall TEMP_RD
; обновляем данные в ячейках ; обновляем данные в ячейках
@ -1646,14 +1639,14 @@ main.asm(331): Including file 'mpy16u.asm'
RD_F_CODE: RD_F_CODE:
0001e1 930f push r16 0001e1 930f push r16
0001e2 d140 rcall OW_PRESENCE 0001e2 d148 rcall OW_PRESENCE
0001e3 e303 ldi r16, DS18B20_CMD_READROM 0001e3 e303 ldi r16, DS18B20_CMD_READROM
0001e4 2e80 mov OW_CMD_r, r16 0001e4 2e80 mov OW_CMD_r, r16
0001e5 d152 rcall OW_SEND_BYTE 0001e5 d15a rcall OW_SEND_BYTE
0001e6 e6af ldi XL, LOW(DEVICE_FAMILY_CODE) 0001e6 e6af ldi XL, LOW(DEVICE_FAMILY_CODE)
0001e7 e0b0 ldi XH, HIGH(DEVICE_FAMILY_CODE) 0001e7 e0b0 ldi XH, HIGH(DEVICE_FAMILY_CODE)
0001e8 d16e rcall OW_RD_BYTE 0001e8 d176 rcall OW_RD_BYTE
0001e9 910f pop r16 0001e9 910f pop r16
0001ea 9508 ret//</editor-fold> 0001ea 9508 ret//</editor-fold>
@ -1666,25 +1659,25 @@ main.asm(331): Including file 'mpy16u.asm'
0001ee 933f push r19 0001ee 933f push r19
0001ef 934f push r20 0001ef 934f push r20
0001f0 d132 rcall OW_PRESENCE 0001f0 d13a rcall OW_PRESENCE
0001f1 ff70 sbrs OWFR, OWPRF 0001f1 ff70 sbrs OWFR, OWPRF
0001f2 c03c rjmp _TEMP_RD_EXIT 0001f2 c03c rjmp _TEMP_RD_EXIT
0001f3 ec0c ldi r16, DS18B20_CMD_SKIPROM 0001f3 ec0c ldi r16, DS18B20_CMD_SKIPROM
0001f4 2e80 mov OW_CMD_r, r16 0001f4 2e80 mov OW_CMD_r, r16
0001f5 d142 rcall OW_SEND_BYTE 0001f5 d14a rcall OW_SEND_BYTE
0001f6 eb0e ldi r16, DS18B20_CMD_RSCRATCHPAD 0001f6 eb0e ldi r16, DS18B20_CMD_RSCRATCHPAD
0001f7 2e80 mov OW_CMD_r, r16 0001f7 2e80 mov OW_CMD_r, r16
0001f8 d13f rcall OW_SEND_BYTE 0001f8 d147 rcall OW_SEND_BYTE
0001f9 e6a8 ldi XL, LOW(TEMP_L) 0001f9 e6a8 ldi XL, LOW(TEMP_L)
0001fa e0b0 ldi XH, HIGH(TEMP_L) 0001fa e0b0 ldi XH, HIGH(TEMP_L)
0001fb d15b rcall OW_RD_BYTE 0001fb d163 rcall OW_RD_BYTE
0001fc e6a9 ldi XL, LOW(TEMP_H) 0001fc e6a9 ldi XL, LOW(TEMP_H)
0001fd e0b0 ldi XH, HIGH(TEMP_H) 0001fd e0b0 ldi XH, HIGH(TEMP_H)
0001fe d158 rcall OW_RD_BYTE 0001fe d160 rcall OW_RD_BYTE
0001ff 9110 0068 lds r17, TEMP_L 0001ff 9110 0068 lds r17, TEMP_L
000201 9120 0069 lds r18, TEMP_H 000201 9120 0069 lds r18, TEMP_H
@ -1758,17 +1751,17 @@ main.asm(331): Including file 'mpy16u.asm'
TEMP_CONV: TEMP_CONV:
000235 930f push r16 000235 930f push r16
000236 d0ec rcall OW_PRESENCE 000236 d0f4 rcall OW_PRESENCE
000237 ff70 sbrs OWFR, OWPRF 000237 ff70 sbrs OWFR, OWPRF
000238 c006 rjmp _TEMP_CONV_EXIT 000238 c006 rjmp _TEMP_CONV_EXIT
000239 ec0c ldi r16, DS18B20_CMD_SKIPROM 000239 ec0c ldi r16, DS18B20_CMD_SKIPROM
00023a 2e80 mov OW_CMD_r, r16 00023a 2e80 mov OW_CMD_r, r16
00023b d0fc rcall OW_SEND_BYTE 00023b d104 rcall OW_SEND_BYTE
00023c e404 ldi r16, DS18B20_CMD_CONVERTTEMP 00023c e404 ldi r16, DS18B20_CMD_CONVERTTEMP
00023d 2e80 mov OW_CMD_r, r16 00023d 2e80 mov OW_CMD_r, r16
00023e d0f9 rcall OW_SEND_BYTE 00023e d101 rcall OW_SEND_BYTE
_TEMP_CONV_EXIT: _TEMP_CONV_EXIT:
00023f 910f pop r16 00023f 910f pop r16
@ -1824,12 +1817,12 @@ main.asm(331): Including file 'mpy16u.asm'
_SW_SET_FROM_0_TO_1: _SW_SET_FROM_0_TO_1:
000258 2700 clr r16 000258 2700 clr r16
000259 9300 0071 sts SW_DATA, r16 000259 9300 0071 sts SW_DATA, r16
00025b d148 rcall DEBOUNCE_SW 00025b d150 rcall DEBOUNCE_SW
00025c 9463 inc REPROGRAM_STEP_r 00025c 9463 inc REPROGRAM_STEP_r
00025d 2d16 mov r17, REPROGRAM_STEP_r 00025d 2d16 mov r17, REPROGRAM_STEP_r
00025e 3014 cpi r17, 4 00025e 3014 cpi r17, 4
00025f f414 brge _SAVE_SETTINGS 00025f f414 brge _SAVE_SETTINGS
000260 d135 rcall BEEP_SHORT 000260 d13d rcall BEEP_SHORT
000261 c00d rjmp _SW_CHECK_ON_1 000261 c00d rjmp _SW_CHECK_ON_1
_SAVE_SETTINGS: _SAVE_SETTINGS:
000262 e010 000262 e010
@ -1840,7 +1833,7 @@ main.asm(331): Including file 'mpy16u.asm'
000267 9895 cbi PORTD, DIGIT_4_PIN 000267 9895 cbi PORTD, DIGIT_4_PIN
000268 2466 clr REPROGRAM_STEP_r 000268 2466 clr REPROGRAM_STEP_r
000269 deeb rcall WRITE_PARAMS_TO_EEP 000269 deeb rcall WRITE_PARAMS_TO_EEP
00026a d132 rcall BEEP_LONG 00026a d13a rcall BEEP_LONG
00026b 9896 cbi PORTD, LED_PGM_PIN 00026b 9896 cbi PORTD, LED_PGM_PIN
00026c e010 ldi r17, MCU_STATE_DEFAULT 00026c e010 ldi r17, MCU_STATE_DEFAULT
00026d 9310 0060 sts MCU_STATE, r17 00026d 9310 0060 sts MCU_STATE, r17
@ -1856,7 +1849,7 @@ main.asm(331): Including file 'mpy16u.asm'
_SW_SET_FROM_1_TO_0: _SW_SET_FROM_1_TO_0:
000277 ef0f ser r16 000277 ef0f ser r16
000278 9300 0071 sts SW_DATA, r16 000278 9300 0071 sts SW_DATA, r16
00027a d129 rcall DEBOUNCE_SW 00027a d131 rcall DEBOUNCE_SW
_BUTTON_PROCESS_END: _BUTTON_PROCESS_END:
00027b 910f pop r16 00027b 910f pop r16
00027c 9508 ret 00027c 9508 ret
@ -1877,7 +1870,7 @@ main.asm(331): Including file 'mpy16u.asm'
_INTO: _INTO:
000286 9890 relay_off 000286 9890 relay_off
000287 9a96 sbi PORTD, LED_PGM_PIN 000287 9a96 sbi PORTD, LED_PGM_PIN
000288 d10d rcall BEEP_SHORT 000288 d115 rcall BEEP_SHORT
000289 9463 inc REPROGRAM_STEP_r 000289 9463 inc REPROGRAM_STEP_r
_REPROGRAM_SETTINGS_LOOP: _REPROGRAM_SETTINGS_LOOP:
00028a dfc4 rcall BUTTON_PROCESS 00028a dfc4 rcall BUTTON_PROCESS
@ -1888,11 +1881,11 @@ main.asm(331): Including file 'mpy16u.asm'
00028e f149 breq _STEP_2 00028e f149 breq _STEP_2
00028f 3003 cpi r16, 3 00028f 3003 cpi r16, 3
000290 f131 breq _S3_JMP 000290 f131 breq _S3_JMP
000291 c08b rjmp _REPROGRAM_SETTINGS_END 000291 c093 rjmp _REPROGRAM_SETTINGS_END
//<editor-fold defaultstate="collapsed" desc="Настройка: шаг 1"> //<editor-fold defaultstate="collapsed" desc="Настройка: шаг 1">
_STEP_1: ; установка и отображение гистерезиса _STEP_1: ; установка и отображение гистерезиса
000292 d0de rcall DISPLAY_UPD_DIGITS 000292 d0e6 rcall DISPLAY_UPD_DIGITS
_S1_CHECK_PLUS: _S1_CHECK_PLUS:
000293 9bb2 sbis SW_PIN, SW_PLUS_PIN 000293 9bb2 sbis SW_PIN, SW_PLUS_PIN
000294 c004 rjmp _INCREASE_HYST 000294 c004 rjmp _INCREASE_HYST
@ -1902,7 +1895,7 @@ main.asm(331): Including file 'mpy16u.asm'
000297 c00a rjmp _DECREASE_HYST 000297 c00a rjmp _DECREASE_HYST
000298 c011 rjmp _SHOW_HYST 000298 c011 rjmp _SHOW_HYST
_INCREASE_HYST: _INCREASE_HYST:
000299 d10a rcall DEBOUNCE_SW 000299 d112 rcall DEBOUNCE_SW
00029a 9110 006d lds r17, SETTING_HYST 00029a 9110 006d lds r17, SETTING_HYST
00029c 3c18 cpi r17, MAX_HYST 00029c 3c18 cpi r17, MAX_HYST
00029d f009 breq PC+2 00029d f009 breq PC+2
@ -1910,7 +1903,7 @@ main.asm(331): Including file 'mpy16u.asm'
00029f 9310 006d sts SETTING_HYST, r17 00029f 9310 006d sts SETTING_HYST, r17
0002a1 c008 rjmp _SHOW_HYST 0002a1 c008 rjmp _SHOW_HYST
_DECREASE_HYST: _DECREASE_HYST:
0002a2 d101 rcall DEBOUNCE_SW 0002a2 d109 rcall DEBOUNCE_SW
0002a3 9110 006d lds r17, SETTING_HYST 0002a3 9110 006d lds r17, SETTING_HYST
0002a5 3011 cpi r17, MIN_HYST 0002a5 3011 cpi r17, MIN_HYST
0002a6 f009 breq PC+2 0002a6 f009 breq PC+2
@ -1927,149 +1920,158 @@ main.asm(331): Including file 'mpy16u.asm'
0002b2 92f0 0066 sts DIGITS+3, drem8u 0002b2 92f0 0066 sts DIGITS+3, drem8u
0002b4 911f pop dv8u 0002b4 911f pop dv8u
0002b5 910f pop dd8u 0002b5 910f pop dd8u
0002b6 c066 rjmp _REPROGRAM_SETTINGS_END 0002b6 c06e rjmp _REPROGRAM_SETTINGS_END
//</editor-fold> //</editor-fold>
_S3_JMP: ; просто прыжок на _STEP_3 _S3_JMP: ; просто прыжок на _STEP_3
0002b7 c03f rjmp _STEP_3 0002b7 c047 rjmp _STEP_3
//<editor-fold defaultstate="collapsed" desc="Настройка: шаг 2"> //<editor-fold defaultstate="collapsed" desc="Настройка: шаг 2">
_STEP_2: _STEP_2:
0002b8 d0b8 rcall DISPLAY_UPD_DIGITS 0002b8 d0c0 rcall DISPLAY_UPD_DIGITS
_S2_CHECK_PLUS: _S2_CHECK_PLUS:
0002b9 9bb2 sbis SW_PIN, SW_PLUS_PIN 0002b9 9bb2 sbis SW_PIN, SW_PLUS_PIN
0002ba c004 rjmp _INCREASE_TEMP 0002ba c004 rjmp _INCREASE_TEMP
0002bb c000 rjmp _S2_CHECK_MINUS 0002bb c000 rjmp _S2_CHECK_MINUS
_S2_CHECK_MINUS: _S2_CHECK_MINUS:
0002bc 9bb3 sbis SW_PIN, SW_MINUS_PIN 0002bc 9bb3 sbis SW_PIN, SW_MINUS_PIN
0002bd c00f rjmp _DECREASE_TEMP 0002bd c013 rjmp _DECREASE_TEMP
0002be c019 rjmp _SHOW_TEMP 0002be c021 rjmp _SHOW_TEMP
_INCREASE_TEMP: _INCREASE_TEMP:
0002bf d0e4 rcall DEBOUNCE_SW 0002bf d0ec rcall DEBOUNCE_SW
0002c0 9110 006c lds r17, SETTING_TEMP_L 0002c0 9110 006c lds r17, SETTING_TEMP_L
0002c2 9120 006b lds r18, SETTING_TEMP_H 0002c2 9120 006b lds r18, SETTING_TEMP_H
0002c4 e03a ldi r19, 10 0002c4 3b10 cpi r17, MAX_TEMP_L
0002c5 0f13 add r17, r19 0002c5 e034 ldi r19, MAX_TEMP_H
0002c6 2733 clr r19 0002c6 0723 cpc r18, r19
0002c7 1f23 adc r18, r19 0002c7 f031 breq PC+7
0002c8 9310 006c sts SETTING_TEMP_L, r17 0002c8 e03a ldi r19, 10
0002ca 9320 006b sts SETTING_TEMP_H, r18 0002c9 0f13 add r17, r19
0002cc c00b rjmp _SHOW_TEMP 0002ca 2733 clr r19
0002cb 1f23 adc r18, r19
0002cc 9310 006c sts SETTING_TEMP_L, r17
0002ce 9320 006b sts SETTING_TEMP_H, r18
0002d0 c00f rjmp _SHOW_TEMP
_DECREASE_TEMP: _DECREASE_TEMP:
0002cd d0d6 rcall DEBOUNCE_SW 0002d1 d0da rcall DEBOUNCE_SW
0002ce 9110 006c lds r17, SETTING_TEMP_L 0002d2 9110 006c lds r17, SETTING_TEMP_L
0002d0 9120 006b lds r18, SETTING_TEMP_H 0002d4 9120 006b lds r18, SETTING_TEMP_H
0002d2 501a subi r17, 10 0002d6 301c cpi r17, MIN_TEMP_L
0002d3 4020 sbci r18, 0 0002d7 ef3e ldi r19, MIN_TEMP_H
0002d4 9310 006c sts SETTING_TEMP_L, r17 0002d8 0723 cpc r18, r19
0002d6 9320 006b sts SETTING_TEMP_H, r18 0002d9 f011 breq PC+3
__DECREASE:
0002da 501a subi r17, 10
0002db 4020 sbci r18, 0
0002dc 9310 006c sts SETTING_TEMP_L, r17
0002de 9320 006b sts SETTING_TEMP_H, r18
_SHOW_TEMP: _SHOW_TEMP:
0002d8 930f push dd16uL 0002e0 930f push dd16uL
0002d9 931f push dd16uH 0002e1 931f push dd16uH
0002da 932f push dv16uL 0002e2 932f push dv16uL
0002db 933f push dv16uH 0002e3 933f push dv16uH
0002dc 9100 006c lds dd16uL, SETTING_TEMP_L 0002e4 9100 006c lds dd16uL, SETTING_TEMP_L
0002de 9110 006b lds dd16uH, SETTING_TEMP_H 0002e6 9110 006b lds dd16uH, SETTING_TEMP_H
0002e0 2f21 mov r18, dd16uH 0002e8 2f21 mov r18, dd16uH
0002e1 7820 andi r18, (1<<7) 0002e9 7820 andi r18, (1<<7)
0002e2 f411 brne _NEGATE_SET_TEMP 0002ea f411 brne _NEGATE_SET_TEMP
0002e3 94e8 clt 0002eb 94e8 clt
0002e4 c005 rjmp _DIVIDE_SET_TEMP 0002ec c005 rjmp _DIVIDE_SET_TEMP
_NEGATE_SET_TEMP: _NEGATE_SET_TEMP:
0002e5 9468 set 0002ed 9468 set
0002e6 9500 0002ee 9500
0002e7 9510 0002ef 9510
0002e8 5f0f 0002f0 5f0f
0002e9 4f1f com16 dd16uL, dd16uH 0002f1 4f1f com16 dd16uL, dd16uH
_DIVIDE_SET_TEMP: _DIVIDE_SET_TEMP:
0002ea e02a ldi dv16uL, LOW(10) 0002f2 e02a ldi dv16uL, LOW(10)
0002eb e030 ldi dv16uH, HIGH(10) 0002f3 e030 ldi dv16uH, HIGH(10)
0002ec ddf8 rcall div16u 0002f4 ddf0 rcall div16u
0002ed 2f80 mov DISP_NUM_L, dres16uL 0002f5 2f80 mov DISP_NUM_L, dres16uL
0002ee 2f91 mov DISP_NUM_H, dres16uH 0002f6 2f91 mov DISP_NUM_H, dres16uH
0002ef e00a ldi r16, 10 0002f7 e00a ldi r16, 10
0002f0 9300 0066 sts DIGITS+3, r16 ; значок градуса 0002f8 9300 0066 sts DIGITS+3, r16 ; значок градуса
0002f2 913f pop dv16uH 0002fa 913f pop dv16uH
0002f3 912f pop dv16uL 0002fb 912f pop dv16uL
0002f4 911f pop dd16uH 0002fc 911f pop dd16uH
0002f5 910f pop dd16uL 0002fd 910f pop dd16uL
0002f6 c026 rjmp _REPROGRAM_SETTINGS_END 0002fe c026 rjmp _REPROGRAM_SETTINGS_END
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Настройка: шаг 3"> //<editor-fold defaultstate="collapsed" desc="Настройка: шаг 3">
_STEP_3: _STEP_3:
0002f7 94e8 clt 0002ff 94e8 clt
_S3_CHECK_PLUS: _S3_CHECK_PLUS:
0002f8 9bb2 sbis SW_PIN, SW_PLUS_PIN 000300 9bb2 sbis SW_PIN, SW_PLUS_PIN
0002f9 c004 rjmp _SET_HEAT_MODE 000301 c004 rjmp _SET_HEAT_MODE
0002fa c000 rjmp _S3_CHECK_MINUS 000302 c000 rjmp _S3_CHECK_MINUS
_S3_CHECK_MINUS: _S3_CHECK_MINUS:
0002fb 9bb3 sbis SW_PIN, SW_MINUS_PIN 000303 9bb3 sbis SW_PIN, SW_MINUS_PIN
0002fc c006 rjmp _SET_COOLING_MODE 000304 c006 rjmp _SET_COOLING_MODE
0002fd c009 rjmp _SHOW_MODE 000305 c009 rjmp _SHOW_MODE
_SET_HEAT_MODE: _SET_HEAT_MODE:
0002fe d0a5 rcall DEBOUNCE_SW 000306 d0a5 rcall DEBOUNCE_SW
0002ff e011 ldi r17, HEAT_MODE 000307 e011 ldi r17, HEAT_MODE
000300 9310 006e sts SETTING_MODE, r17 000308 9310 006e sts SETTING_MODE, r17
000302 c004 rjmp _SHOW_MODE 00030a c004 rjmp _SHOW_MODE
_SET_COOLING_MODE: _SET_COOLING_MODE:
000303 d0a0 rcall DEBOUNCE_SW 00030b d0a0 rcall DEBOUNCE_SW
000304 e010 ldi r17, COOLING_MODE 00030c e010 ldi r17, COOLING_MODE
000305 9310 006e sts SETTING_MODE, r17 00030d 9310 006e sts SETTING_MODE, r17
_SHOW_MODE: _SHOW_MODE:
000307 2711 clr r17 00030f 2711 clr r17
000308 2f81 mov DISP_NUM_L, r17 000310 2f81 mov DISP_NUM_L, r17
000309 2f91 mov DISP_NUM_H, r17 000311 2f91 mov DISP_NUM_H, r17
00030a 2711 clr r17 000312 e01e ldi r17, 14
00030b 9310 0063 sts DIGITS, r17 000313 9310 0063 sts DIGITS, r17
00030d 9310 0064 sts DIGITS+1, r17 000315 9310 0064 sts DIGITS+1, r17
00030f 9310 0065 sts DIGITS+2, r17 000317 9310 0065 sts DIGITS+2, r17
000311 9120 006e lds r18, SETTING_MODE 000319 9120 006e lds r18, SETTING_MODE
000313 2322 tst r18 00031b 2322 tst r18
000314 f009 breq _SHOW_COOLING 00031c f009 breq _SHOW_COOLING
000315 c004 rjmp _SHOW_HEATING 00031d c004 rjmp _SHOW_HEATING
_SHOW_COOLING: _SHOW_COOLING:
000316 e01c ldi r17, 12 00031e e01c ldi r17, 12
000317 9310 0066 sts DIGITS+3, r17 00031f 9310 0066 sts DIGITS+3, r17
000319 c003 rjmp _REPROGRAM_SETTINGS_END 000321 c003 rjmp _REPROGRAM_SETTINGS_END
_SHOW_HEATING: _SHOW_HEATING:
00031a e01d ldi r17, 13 000322 e01d ldi r17, 13
00031b 9310 0066 sts DIGITS+3, r17 000323 9310 0066 sts DIGITS+3, r17
//</editor-fold> //</editor-fold>
_REPROGRAM_SETTINGS_END: _REPROGRAM_SETTINGS_END:
00031d 914f pop r20 000325 914f pop r20
00031e 913f pop r19 000326 913f pop r19
00031f 912f pop r18 000327 912f pop r18
000320 911f pop r17 000328 911f pop r17
000321 910f pop r16 000329 910f pop r16
000322 9508 ret 00032a 9508 ret
//</editor-fold> //</editor-fold>
//<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:
000323 94f8 cli 00032b 94f8 cli
000324 9ab9 ow_pull 00032c 9ab9 ow_pull
000325 e033
000326 eb4e
000327 d08c DELAY16 480
000328 98b9 ow_release
000329 e030
00032a e84a
00032b d088 DELAY16 70
00032c d005 rcall OW_CHECK_PRESENCE
00032d e033 00032d e033
00032e e342 00032e eb4e
00032f d084 DELAY16 410 00032f d08c DELAY16 480
000330 9478 sei 000330 98b9 ow_release
000331 9508 ret 000331 e030
000332 e84a
000333 d088 DELAY16 70
000334 d005 rcall OW_CHECK_PRESENCE
000335 e033
000336 e342
000337 d084 DELAY16 410
000338 9478 sei
000339 9508 ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="1-Wire: проверка наличия устройства"> //<editor-fold defaultstate="collapsed" desc="1-Wire: проверка наличия устройства">
@ -2077,83 +2079,83 @@ main.asm(331): Including file 'mpy16u.asm'
; Если подчиненное устройство притянет шину, то устанавливаем флаг OWPRF в единицу в регистре флагов ; Если подчиненное устройство притянет шину, то устанавливаем флаг OWPRF в единицу в регистре флагов
; ;
OW_CHECK_PRESENCE: OW_CHECK_PRESENCE:
000332 9bb1 sbis OW_PIN, OW_LINE 00033a 9bb1 sbis OW_PIN, OW_LINE
000333 6071 sbr OWFR, (1<<OWPRF) 00033b 6071 sbr OWFR, (1<<OWPRF)
000334 c002 rjmp _EXIT 00033c c002 rjmp _EXIT
000335 99b1 sbic OW_PIN, OW_LINE 00033d 99b1 sbic OW_PIN, OW_LINE
000336 7f7e cbr OWFR, (1<<OWPRF) 00033e 7f7e cbr OWFR, (1<<OWPRF)
_EXIT: _EXIT:
000337 9508 ret 00033f 9508 ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="1-Wire: отправка байта"> //<editor-fold defaultstate="collapsed" desc="1-Wire: отправка байта">
OW_SEND_BYTE: OW_SEND_BYTE:
000338 94f8 cli 000340 94f8 cli
000339 930f push r16 000341 930f push r16
00033a 931f push r17 000342 931f push r17
00033b 2d08 mov r16, OW_CMD_r 000343 2d08 mov r16, OW_CMD_r
00033c e018 ldi r17, 8 000344 e018 ldi r17, 8
_OW_SEND_BYTE_LOOP: _OW_SEND_BYTE_LOOP:
00033d 9506 lsr r16 000345 9506 lsr r16
00033e f408 brcc _OW_SEND_0 000346 f408 brcc _OW_SEND_0
00033f f048 brcs _OW_SEND_1 000347 f048 brcs _OW_SEND_1
_OW_SEND_0: _OW_SEND_0:
000340 9ab9 ow_pull 000348 9ab9 ow_pull
000341 e030 000349 e030
000342 e746 00034a e746
000343 d070 DELAY16 60 00034b d070 DELAY16 60
000344 98b9 ow_release 00034c 98b9 ow_release
000345 e030 00034d e030
000346 e142 00034e e142
000347 d06c DELAY16 10 00034f d06c DELAY16 10
000348 c008 rjmp _OW_SEND_BYTE_END 000350 c008 rjmp _OW_SEND_BYTE_END
_OW_SEND_1: _OW_SEND_1:
000349 9ab9 ow_pull 000351 9ab9 ow_pull
00034a e030 000352 e030
00034b e04a 000353 e04a
00034c d067 DELAY16 6 000354 d067 DELAY16 6
00034d 98b9 ow_release 000355 98b9 ow_release
00034e e030 000356 e030
00034f e74e 000357 e74e
000350 d063 DELAY16 64 000358 d063 DELAY16 64
_OW_SEND_BYTE_END: _OW_SEND_BYTE_END:
000351 951a dec r17 000359 951a dec r17
000352 f751 brne _OW_SEND_BYTE_LOOP 00035a f751 brne _OW_SEND_BYTE_LOOP
000353 911f pop r17 00035b 911f pop r17
000354 910f pop r16 00035c 910f pop r16
000355 9478 sei 00035d 9478 sei
000356 9508 ret 00035e 9508 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:
000357 94f8 cli 00035f 94f8 cli
000358 930f push r16 000360 930f push r16
000359 931f push r17 000361 931f push r17
00035a 2700 clr r16 000362 2700 clr r16
00035b e018 ldi r17, 8 000363 e018 ldi r17, 8
_OW_RD_BYTE_LP: _OW_RD_BYTE_LP:
00035c 9506 lsr r16 000364 9506 lsr r16
00035d 9ab9 ow_pull 000365 9ab9 ow_pull
00035e e030 000366 e030
00035f e04a 000367 e04a
000360 d053 DELAY16 6 000368 d053 DELAY16 6
000361 98b9 ow_release 000369 98b9 ow_release
000362 e030 00036a e030
000363 e140 00036b e140
000364 d04f DELAY16 9 00036c d04f DELAY16 9
000365 99b1 sbic OW_PIN, OW_LINE 00036d 99b1 sbic OW_PIN, OW_LINE
000366 6800 sbr r16, (1<<7) 00036e 6800 sbr r16, (1<<7)
000367 e030 00036f e030
000368 e64c 000370 e64c
000369 d04a DELAY16 55 000371 d04a DELAY16 55
00036a 951a dec r17 000372 951a dec r17
00036b f781 brne _OW_RD_BYTE_LP 000373 f781 brne _OW_RD_BYTE_LP
00036c 930c st X, r16 000374 930c st X, r16
00036d 911f pop r17 000375 911f pop r17
00036e 910f pop r16 000376 910f pop r16
00036f 9478 sei 000377 9478 sei
000370 9508 ret 000378 9508 ret
//</editor-fold> //</editor-fold>
//</editor-fold> //</editor-fold>
@ -2162,138 +2164,138 @@ main.asm(331): Including file 'mpy16u.asm'
; Описание: Перемещает цифры числа в соответствующие ячейки памяти в SRAM ; Описание: Перемещает цифры числа в соответствующие ячейки памяти в SRAM
; путем деления этого числа несколько раз ; путем деления этого числа несколько раз
DISPLAY_UPD_DIGITS: DISPLAY_UPD_DIGITS:
000371 930f push r16 000379 930f push r16
000372 935f push r21 00037a 935f push r21
000373 e053 ldi r21, 3 00037b e053 ldi r21, 3
; инициализация указателя (за каждый проход цикла будет инкрементироваться) ; инициализация указателя (за каждый проход цикла будет инкрементироваться)
000374 e6a3 ldi XL, LOW(DIGITS) 00037c e6a3 ldi XL, LOW(DIGITS)
000375 e0b0 ldi XH, HIGH(DIGITS) 00037d e0b0 ldi XH, HIGH(DIGITS)
.equ dividend = SRAM_TEMP_1 ; число которе будем делить .equ dividend = SRAM_TEMP_1 ; число которе будем делить
.equ divisor = 10 ; на что делим .equ divisor = 10 ; на что делим
; загружаем число которое хотим поделить в адрес SRAM делимого ; загружаем число которое хотим поделить в адрес SRAM делимого
000376 9380 0061 sts dividend, DISP_NUM_L 00037e 9380 0061 sts dividend, DISP_NUM_L
000378 9390 0062 sts dividend+1, DISP_NUM_H 000380 9390 0062 sts dividend+1, DISP_NUM_H
; четыре раза производим деление для получения остатков ; четыре раза производим деление для получения остатков
DIV_LOOP: DIV_LOOP:
; заполняем нужные регистры ; заполняем нужные регистры
00037a 9100 0061 lds dd16uL, dividend 000382 9100 0061 lds dd16uL, dividend
00037c 9110 0062 lds dd16uH, dividend+1 000384 9110 0062 lds dd16uH, dividend+1
00037e e02a ldi dv16uL, LOW(divisor) 000386 e02a ldi dv16uL, LOW(divisor)
00037f e030 ldi dv16uH, HIGH(divisor) 000387 e030 ldi dv16uH, HIGH(divisor)
000380 dd64 rcall div16u ; делим 000388 dd5c rcall div16u ; делим
000381 92ed st X+, drem16uL ; сохраняем остаток в ячейку по указателю и увеличиваем его 000389 92ed st X+, drem16uL ; сохраняем остаток в ячейку по указателю и увеличиваем его
; обновляем делимое ; обновляем делимое
000382 9300 0061 sts dividend, dres16uL 00038a 9300 0061 sts dividend, dres16uL
000384 9310 0062 sts dividend+1, dres16uH 00038c 9310 0062 sts dividend+1, dres16uH
000386 955a dec r21 ; декрементируем счетчик цикла 00038e 955a dec r21 ; декрементируем счетчик цикла
000387 f791 brne DIV_LOOP ; делим еще раз если не 0 00038f f791 brne DIV_LOOP ; делим еще раз если не 0
000388 915f pop r21 000390 915f pop r21
000389 910f pop r16 000391 910f pop r16
00038a 9508 ret 000392 9508 ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: получение символа для индикатора"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: получение символа для индикатора">
; **** ЗАГРУЖАЕТ НУЖНЫЙ АДРЕС СИМВОЛА В R0 *********************** ; **** ЗАГРУЖАЕТ НУЖНЫЙ АДРЕС СИМВОЛА В R0 ***********************
DISPLAY_DECODER: DISPLAY_DECODER:
00038b 930f push r16 000393 930f push r16
00038c 931f push r17 000394 931f push r17
00038d e7ea ldi ZL, LOW(2*DISPLAY_SYMBOLS) 000395 e8ea ldi ZL, LOW(2*DISPLAY_SYMBOLS)
00038e e0f7 ldi ZH, HIGH(2*DISPLAY_SYMBOLS) 000396 e0f7 ldi ZH, HIGH(2*DISPLAY_SYMBOLS)
00038f 2711 clr TEMP_REG_B 000397 2711 clr TEMP_REG_B
000390 0fe0 add ZL, TEMP_REG_A 000398 0fe0 add ZL, TEMP_REG_A
000391 1ff1 adc ZH, TEMP_REG_B 000399 1ff1 adc ZH, TEMP_REG_B
000392 9004 lpm r0, Z 00039a 9004 lpm r0, Z
000393 911f pop r17 00039b 911f pop r17
000394 910f pop r16 00039c 910f pop r16
000395 9508 ret 00039d 9508 ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: короткий писк"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: короткий писк">
BEEP_SHORT: BEEP_SHORT:
000396 9ac5 sbi BUZZER_PORT, BUZZER_PIN 00039e 9ac5 sbi BUZZER_PORT, BUZZER_PIN
000397 e053 00039f e053
000398 ea39 0003a0 ea39
000399 e74d 0003a1 e74d
00039a d01d DELAY24 150000 0003a2 d01d DELAY24 150000
00039b 98c5 cbi BUZZER_PORT, BUZZER_PIN 0003a3 98c5 cbi BUZZER_PORT, BUZZER_PIN
00039c 9508 ret 0003a4 9508 ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: длинный писк"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: длинный писк">
BEEP_LONG: BEEP_LONG:
00039d 9ac5 sbi BUZZER_PORT, BUZZER_PIN 0003a5 9ac5 sbi BUZZER_PORT, BUZZER_PIN
00039e e05c 0003a6 e05c
00039f e334 0003a7 e334
0003a0 ef4d 0003a8 ef4d
0003a1 d016 DELAY24 500000 0003a9 d016 DELAY24 500000
0003a2 98c5 cbi BUZZER_PORT, BUZZER_PIN 0003aa 98c5 cbi BUZZER_PORT, BUZZER_PIN
0003a3 9508 ret 0003ab 9508 ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: устранение дребезга кнопки"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: устранение дребезга кнопки">
DEBOUNCE_SW: DEBOUNCE_SW:
0003a4 930f push r16 0003ac 930f push r16
0003a5 931f push r17 0003ad 931f push r17
0003a6 932f push r18 0003ae 932f push r18
0003a7 e02a ldi r18, 10 0003af e02a ldi r18, 10
_loop_2: _loop_2:
0003a8 ef1f ldi r17, 255 0003b0 ef1f ldi r17, 255
_loop_0: _loop_0:
0003a9 ef0f ldi r16, 255 0003b1 ef0f ldi r16, 255
_dec_0: _dec_0:
0003aa 950a dec r16 0003b2 950a dec r16
0003ab f7f1 brne _dec_0 0003b3 f7f1 brne _dec_0
_loop_1: _loop_1:
0003ac 951a dec r17 0003b4 951a dec r17
0003ad f7d9 brne _loop_0 0003b5 f7d9 brne _loop_0
_loop_3: _loop_3:
0003ae 952a dec r18 0003b6 952a dec r18
0003af f7c1 brne _loop_2 0003b7 f7c1 brne _loop_2
0003b0 912f pop r18 0003b8 912f pop r18
0003b1 911f pop r17 0003b9 911f pop r17
0003b2 910f pop r16 0003ba 910f pop r16
0003b3 9508 ret//</editor-fold> 0003bb 9508 ret//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка (16бит макс число)"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка (16бит макс число)">
DELAY_LOOP_16: DELAY_LOOP_16:
0003b4 5041 subi DELAY_8_r, 1 0003bc 5041 subi DELAY_8_r, 1
0003b5 4030 sbci DELAY_16_r, 0 0003bd 4030 sbci DELAY_16_r, 0
0003b6 f7e8 brcc DELAY_LOOP_16 0003be f7e8 brcc DELAY_LOOP_16
0003b7 9508 ret 0003bf 9508 ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка (24бит макс число)"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка (24бит макс число)">
DELAY_LOOP_24: DELAY_LOOP_24:
0003b8 5041 subi DELAY_8_r, 1 0003c0 5041 subi DELAY_8_r, 1
0003b9 4030 sbci DELAY_16_r, 0 0003c1 4030 sbci DELAY_16_r, 0
0003ba 4050 sbci DELAY_24_r, 0 0003c2 4050 sbci DELAY_24_r, 0
0003bb f7e0 brcc DELAY_LOOP_24 0003c3 f7e0 brcc DELAY_LOOP_24
0003bc 9508 ret 0003c4 9508 ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Символы для индикатора"> //<editor-fold defaultstate="collapsed" desc="Символы для индикатора">
DISPLAY_SYMBOLS: DISPLAY_SYMBOLS:
; HGFEDCBA HGFEDCBA ; HGFEDCBA HGFEDCBA
0003bd f9c0 .DB 0b11000000, 0b11111001 ; 0, 1 0003c5 f9c0 .DB 0b11000000, 0b11111001 ; 0, 1
0003be b0a4 .DB 0b10100100, 0b10110000 ; 2, 3 0003c6 b0a4 .DB 0b10100100, 0b10110000 ; 2, 3
0003bf 9299 .DB 0b10011001, 0b10010010 ; 4, 5 0003c7 9299 .DB 0b10011001, 0b10010010 ; 4, 5
0003c0 f882 .DB 0b10000010, 0b11111000 ; 6, 7 0003c8 f882 .DB 0b10000010, 0b11111000 ; 6, 7
0003c1 9080 .DB 0b10000000, 0b10010000 ; 8, 9 0003c9 9080 .DB 0b10000000, 0b10010000 ; 8, 9
0003c2 bf9c .DB 0b10011100, 0b10111111 ; °, - 0003ca bf9c .DB 0b10011100, 0b10111111 ; °, -
0003c3 89c6 .DB 0b11000110, 0b10001001 ; C, H 0003cb 89c6 .DB 0b11000110, 0b10001001 ; C, H
//</editor-fold> //</editor-fold>
//</editor-fold> //</editor-fold>
@ -2363,7 +2365,7 @@ counted separately from r26..r31 here.
"ATtiny2313A" register use summary: "ATtiny2313A" register use summary:
x : 2 y : 0 z : 1 r0 : 6 r1 : 2 r2 : 0 r3 : 16 r4 : 16 x : 2 y : 0 z : 1 r0 : 6 r1 : 2 r2 : 0 r3 : 16 r4 : 16
r5 : 6 r6 : 6 r7 : 0 r8 : 6 r9 : 0 r10: 2 r11: 2 r12: 2 r5 : 6 r6 : 6 r7 : 0 r8 : 6 r9 : 0 r10: 2 r11: 2 r12: 2
r13: 2 r14: 5 r15: 11 r16: 213 r17: 117 r18: 51 r19: 55 r20: 53 r13: 2 r14: 5 r15: 11 r16: 213 r17: 119 r18: 53 r19: 59 r20: 53
r21: 24 r22: 5 r23: 10 r24: 6 r25: 6 r26: 4 r27: 4 r28: 0 r21: 24 r22: 5 r23: 10 r24: 6 r25: 6 r26: 4 r27: 4 r28: 0
r29: 0 r30: 2 r31: 2 r29: 0 r30: 2 r31: 2
Registers used: 29 out of 35 (82.9%) Registers used: 29 out of 35 (82.9%)
@ -2371,14 +2373,14 @@ Registers used: 29 out of 35 (82.9%)
"ATtiny2313A" instruction use summary: "ATtiny2313A" instruction use summary:
.lds : 0 .sts : 0 adc : 6 add : 8 adiw : 0 and : 0 .lds : 0 .sts : 0 adc : 6 add : 8 adiw : 0 and : 0
andi : 4 asr : 0 bclr : 0 bld : 0 brbc : 0 brbs : 0 andi : 4 asr : 0 bclr : 0 bld : 0 brbc : 0 brbs : 0
brcc : 6 brcs : 1 break : 0 breq : 12 brge : 4 brhc : 0 brcc : 6 brcs : 1 break : 0 breq : 14 brge : 4 brhc : 0
brhs : 0 brid : 0 brie : 0 brlo : 0 brlt : 0 brmi : 0 brhs : 0 brid : 0 brie : 0 brlo : 0 brlt : 0 brmi : 0
brne : 23 brpl : 0 brsh : 0 brtc : 1 brts : 2 brvc : 0 brne : 23 brpl : 0 brsh : 0 brtc : 1 brts : 2 brvc : 0
brvs : 0 bset : 0 bst : 0 cbi : 29 cbr : 3 clc : 2 brvs : 0 bset : 0 bst : 0 cbi : 29 cbr : 3 clc : 2
clh : 0 cli : 5 cln : 0 clr : 19 cls : 0 clt : 3 clh : 0 cli : 5 cln : 0 clr : 18 cls : 0 clt : 3
clv : 0 clz : 0 com : 6 cp : 2 cpc : 2 cpi : 17 clv : 0 clz : 0 com : 6 cp : 2 cpc : 4 cpi : 19
cpse : 0 dec : 11 eor : 0 icall : 0 ijmp : 0 in : 5 cpse : 0 dec : 11 eor : 0 icall : 0 ijmp : 0 in : 5
inc : 4 ld : 0 ldd : 0 ldi : 115 lds : 43 lpm : 2 inc : 4 ld : 0 ldd : 0 ldi : 118 lds : 43 lpm : 2
lsl : 4 lsr : 11 mov : 55 movw : 0 neg : 1 nop : 0 lsl : 4 lsr : 11 mov : 55 movw : 0 neg : 1 nop : 0
or : 1 ori : 0 out : 26 pop : 56 push : 55 rcall : 82 or : 1 ori : 0 out : 26 pop : 56 push : 55 rcall : 82
ret : 28 reti : 3 rjmp : 61 rol : 6 ror : 9 sbc : 2 ret : 28 reti : 3 rjmp : 61 rol : 6 ror : 9 sbc : 2
@ -2392,7 +2394,7 @@ Instructions used: 56 out of 105 (53.3%)
"ATtiny2313A" memory use summary [bytes]: "ATtiny2313A" memory use summary [bytes]:
Segment Begin End Code Data Used Size Use% Segment Begin End Code Data Used Size Use%
--------------------------------------------------------------- ---------------------------------------------------------------
[.cseg] 0x000000 0x000788 1894 14 1908 2048 93.2% [.cseg] 0x000000 0x000798 1910 14 1924 2048 93.9%
[.dseg] 0x000060 0x000072 0 18 18 128 14.1% [.dseg] 0x000060 0x000072 0 18 18 128 14.1%
[.eseg] 0x000030 0x000058 0 40 40 128 31.3% [.eseg] 0x000030 0x000058 0 40 40 128 31.3%

View File

@ -1,5 +1,5 @@
AVRASM ver. 2.2.7 main.asm Fri Jun 30 16:51:54 2023 AVRASM ver. 2.2.7 main.asm Fri Jun 30 21:37:26 2023
EQU SIGNATURE_000 0000001e EQU SIGNATURE_000 0000001e
@ -531,6 +531,10 @@ EQU MCU_STATE_PROGRAM 00000001
EQU MCU_STATE_ERROR 00000002 EQU MCU_STATE_ERROR 00000002
EQU MIN_HYST 00000001 EQU MIN_HYST 00000001
EQU MAX_HYST 000000c8 EQU MAX_HYST 000000c8
EQU MIN_TEMP_H 000000fe
EQU MIN_TEMP_L 0000000c
EQU MAX_TEMP_H 00000004
EQU MAX_TEMP_L 000000b0
EQU DEFAULT_TEMP 0000012c EQU DEFAULT_TEMP 0000012c
EQU DEFAULT_HYST 00000005 EQU DEFAULT_HYST 00000005
EQU HEAT_MODE 00000001 EQU HEAT_MODE 00000001
@ -567,7 +571,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 0000038b CSEG DISPLAY_DECODER 00000393
CSEG USI_TRANSMIT 00000241 CSEG USI_TRANSMIT 00000241
CSEG _indicate_3 0000004e CSEG _indicate_3 0000004e
CSEG _indicate_4 0000005b CSEG _indicate_4 0000005b
@ -581,13 +585,13 @@ CSEG _CONTINUE_INIT 000000ac
CSEG RD_F_CODE 000001e1 CSEG RD_F_CODE 000001e1
CSEG ERR_FAMILY_CODE 000000be CSEG ERR_FAMILY_CODE 000000be
CSEG START_PROGRAM 000000c3 CSEG START_PROGRAM 000000c3
CSEG BEEP_LONG 0000039d CSEG BEEP_LONG 000003a5
CSEG BEEP_SHORT 00000396 CSEG BEEP_SHORT 0000039e
CSEG LOOP 000000c6 CSEG LOOP 000000c6
CSEG _STATE_DEFAULT 000000c8 CSEG _STATE_DEFAULT 000000c8
CSEG _STATE_PROGRAM 000000d4 CSEG _STATE_PROGRAM 000000d4
CSEG TEMP_UPD 000001d2 CSEG TEMP_UPD 000001d2
CSEG DISPLAY_UPD_DIGITS 00000371 CSEG DISPLAY_UPD_DIGITS 00000379
CSEG TEMP_COMPARSION 00000185 CSEG TEMP_COMPARSION 00000185
CSEG TEMP_SEND_UART 00000115 CSEG TEMP_SEND_UART 00000115
CSEG _STATE_ERROR 000000d7 CSEG _STATE_ERROR 000000d7
@ -644,11 +648,11 @@ CSEG _MIN_THRESHOLD 000001bb
CSEG _MAX_THRESHOLD 000001c3 CSEG _MAX_THRESHOLD 000001c3
CSEG _COMPARSION_EXIT 000001ca CSEG _COMPARSION_EXIT 000001ca
CSEG TEMP_CONV 00000235 CSEG TEMP_CONV 00000235
CSEG DELAY_LOOP_24 000003b8 CSEG DELAY_LOOP_24 000003c0
CSEG TEMP_RD 000001eb CSEG TEMP_RD 000001eb
CSEG OW_PRESENCE 00000323 CSEG OW_PRESENCE 0000032b
CSEG OW_SEND_BYTE 00000338 CSEG OW_SEND_BYTE 00000340
CSEG OW_RD_BYTE 00000357 CSEG OW_RD_BYTE 0000035f
CSEG _TEMP_RD_EXIT 0000022f CSEG _TEMP_RD_EXIT 0000022f
CSEG _TEMP_RD_TO_UNSIGNED 00000209 CSEG _TEMP_RD_TO_UNSIGNED 00000209
CSEG _TEMP_RD_CONTINUE 00000210 CSEG _TEMP_RD_CONTINUE 00000210
@ -660,7 +664,7 @@ CSEG _SW_CHECK_ON_0 00000250
CSEG _SW_SET_0 00000253 CSEG _SW_SET_0 00000253
CSEG _SW_CHECK_ON_1 0000026f CSEG _SW_CHECK_ON_1 0000026f
CSEG _SW_SET_FROM_0_TO_1 00000258 CSEG _SW_SET_FROM_0_TO_1 00000258
CSEG DEBOUNCE_SW 000003a4 CSEG DEBOUNCE_SW 000003ac
CSEG _SAVE_SETTINGS 00000262 CSEG _SAVE_SETTINGS 00000262
CSEG _SW_SET_1 00000272 CSEG _SW_SET_1 00000272
CSEG _BUTTON_PROCESS_END 0000027b CSEG _BUTTON_PROCESS_END 0000027b
@ -671,42 +675,43 @@ CSEG _CHECK_STEP 0000028b
CSEG _STEP_1 00000292 CSEG _STEP_1 00000292
CSEG _STEP_2 000002b8 CSEG _STEP_2 000002b8
CSEG _S3_JMP 000002b7 CSEG _S3_JMP 000002b7
CSEG _REPROGRAM_SETTINGS_END 0000031d CSEG _REPROGRAM_SETTINGS_END 00000325
CSEG _S1_CHECK_PLUS 00000293 CSEG _S1_CHECK_PLUS 00000293
CSEG _INCREASE_HYST 00000299 CSEG _INCREASE_HYST 00000299
CSEG _S1_CHECK_MINUS 00000296 CSEG _S1_CHECK_MINUS 00000296
CSEG _DECREASE_HYST 000002a2 CSEG _DECREASE_HYST 000002a2
CSEG _SHOW_HYST 000002aa CSEG _SHOW_HYST 000002aa
CSEG _STEP_3 000002f7 CSEG _STEP_3 000002ff
CSEG _S2_CHECK_PLUS 000002b9 CSEG _S2_CHECK_PLUS 000002b9
CSEG _INCREASE_TEMP 000002bf CSEG _INCREASE_TEMP 000002bf
CSEG _S2_CHECK_MINUS 000002bc CSEG _S2_CHECK_MINUS 000002bc
CSEG _DECREASE_TEMP 000002cd CSEG _DECREASE_TEMP 000002d1
CSEG _SHOW_TEMP 000002d8 CSEG _SHOW_TEMP 000002e0
CSEG _NEGATE_SET_TEMP 000002e5 CSEG __DECREASE 000002da
CSEG _DIVIDE_SET_TEMP 000002ea CSEG _NEGATE_SET_TEMP 000002ed
CSEG _S3_CHECK_PLUS 000002f8 CSEG _DIVIDE_SET_TEMP 000002f2
CSEG _SET_HEAT_MODE 000002fe CSEG _S3_CHECK_PLUS 00000300
CSEG _S3_CHECK_MINUS 000002fb CSEG _SET_HEAT_MODE 00000306
CSEG _SET_COOLING_MODE 00000303 CSEG _S3_CHECK_MINUS 00000303
CSEG _SHOW_MODE 00000307 CSEG _SET_COOLING_MODE 0000030b
CSEG _SHOW_COOLING 00000316 CSEG _SHOW_MODE 0000030f
CSEG _SHOW_HEATING 0000031a CSEG _SHOW_COOLING 0000031e
CSEG DELAY_LOOP_16 000003b4 CSEG _SHOW_HEATING 00000322
CSEG OW_CHECK_PRESENCE 00000332 CSEG DELAY_LOOP_16 000003bc
CSEG _EXIT 00000337 CSEG OW_CHECK_PRESENCE 0000033a
CSEG _OW_SEND_BYTE_LOOP 0000033d CSEG _EXIT 0000033f
CSEG _OW_SEND_0 00000340 CSEG _OW_SEND_BYTE_LOOP 00000345
CSEG _OW_SEND_1 00000349 CSEG _OW_SEND_0 00000348
CSEG _OW_SEND_BYTE_END 00000351 CSEG _OW_SEND_1 00000351
CSEG _OW_RD_BYTE_LP 0000035c CSEG _OW_SEND_BYTE_END 00000359
CSEG _OW_RD_BYTE_LP 00000364
EQU dividend 00000061 EQU dividend 00000061
EQU divisor 0000000a EQU divisor 0000000a
CSEG DIV_LOOP 0000037a CSEG DIV_LOOP 00000382
CSEG DISPLAY_SYMBOLS 000003bd CSEG DISPLAY_SYMBOLS 000003c5
CSEG _loop_2 000003a8 CSEG _loop_2 000003b0
CSEG _loop_0 000003a9 CSEG _loop_0 000003b1
CSEG _dec_0 000003aa CSEG _dec_0 000003b2
CSEG _loop_1 000003ac CSEG _loop_1 000003b4
CSEG _loop_3 000003ae CSEG _loop_3 000003b6
ESEG INFO 00000030 ESEG INFO 00000030

View File

@ -48,31 +48,31 @@
<_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>1138</LINE></DISPLAY_DECODER> <DISPLAY_DECODER><FILE>main.asm</FILE><LINE>1135</LINE></DISPLAY_DECODER>
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>737</LINE></USI_TRANSMIT> <USI_TRANSMIT><FILE>main.asm</FILE><LINE>725</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>155</LINE></_indicate_4> <_indicate_4><FILE>main.asm</FILE><LINE>155</LINE></_indicate_4>
<_indicate_exit><FILE>main.asm</FILE><LINE>167</LINE></_indicate_exit> <_indicate_exit><FILE>main.asm</FILE><LINE>167</LINE></_indicate_exit>
<MCU_INIT><FILE>main.asm</FILE><LINE>189</LINE></MCU_INIT> <MCU_INIT><FILE>main.asm</FILE><LINE>189</LINE></MCU_INIT>
<EEP_RD_BYTE><FILE>main.asm</FILE><LINE>472</LINE></EEP_RD_BYTE> <EEP_RD_BYTE><FILE>main.asm</FILE><LINE>460</LINE></EEP_RD_BYTE>
<_INIT_PARAMS><FILE>main.asm</FILE><LINE>230</LINE></_INIT_PARAMS> <_INIT_PARAMS><FILE>main.asm</FILE><LINE>230</LINE></_INIT_PARAMS>
<_FIRST_TIME_RUN><FILE>main.asm</FILE><LINE>227</LINE></_FIRST_TIME_RUN> <_FIRST_TIME_RUN><FILE>main.asm</FILE><LINE>227</LINE></_FIRST_TIME_RUN>
<INIT_DEFAULT_PARAMS><FILE>main.asm</FILE><LINE>380</LINE></INIT_DEFAULT_PARAMS> <INIT_DEFAULT_PARAMS><FILE>main.asm</FILE><LINE>368</LINE></INIT_DEFAULT_PARAMS>
<_CONTINUE_INIT><FILE>main.asm</FILE><LINE>263</LINE></_CONTINUE_INIT> <_CONTINUE_INIT><FILE>main.asm</FILE><LINE>251</LINE></_CONTINUE_INIT>
<RD_F_CODE><FILE>main.asm</FILE><LINE>603</LINE></RD_F_CODE> <RD_F_CODE><FILE>main.asm</FILE><LINE>591</LINE></RD_F_CODE>
<ERR_FAMILY_CODE><FILE>main.asm</FILE><LINE>284</LINE></ERR_FAMILY_CODE> <ERR_FAMILY_CODE><FILE>main.asm</FILE><LINE>272</LINE></ERR_FAMILY_CODE>
<START_PROGRAM><FILE>main.asm</FILE><LINE>289</LINE></START_PROGRAM> <START_PROGRAM><FILE>main.asm</FILE><LINE>277</LINE></START_PROGRAM>
<BEEP_LONG><FILE>main.asm</FILE><LINE>1164</LINE></BEEP_LONG> <BEEP_LONG><FILE>main.asm</FILE><LINE>1161</LINE></BEEP_LONG>
<BEEP_SHORT><FILE>main.asm</FILE><LINE>1156</LINE></BEEP_SHORT> <BEEP_SHORT><FILE>main.asm</FILE><LINE>1153</LINE></BEEP_SHORT>
<LOOP><FILE>main.asm</FILE><LINE>296</LINE></LOOP> <LOOP><FILE>main.asm</FILE><LINE>284</LINE></LOOP>
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>299</LINE></_STATE_DEFAULT> <_STATE_DEFAULT><FILE>main.asm</FILE><LINE>287</LINE></_STATE_DEFAULT>
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>311</LINE></_STATE_PROGRAM> <_STATE_PROGRAM><FILE>main.asm</FILE><LINE>299</LINE></_STATE_PROGRAM>
<TEMP_UPD><FILE>main.asm</FILE><LINE>587</LINE></TEMP_UPD> <TEMP_UPD><FILE>main.asm</FILE><LINE>575</LINE></TEMP_UPD>
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>1097</LINE></DISPLAY_UPD_DIGITS> <DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>1094</LINE></DISPLAY_UPD_DIGITS>
<TEMP_COMPARSION><FILE>main.asm</FILE><LINE>489</LINE></TEMP_COMPARSION> <TEMP_COMPARSION><FILE>main.asm</FILE><LINE>477</LINE></TEMP_COMPARSION>
<TEMP_SEND_UART><FILE>main.asm</FILE><LINE>334</LINE></TEMP_SEND_UART> <TEMP_SEND_UART><FILE>main.asm</FILE><LINE>322</LINE></TEMP_SEND_UART>
<_STATE_ERROR><FILE>main.asm</FILE><LINE>315</LINE></_STATE_ERROR> <_STATE_ERROR><FILE>main.asm</FILE><LINE>303</LINE></_STATE_ERROR>
<REPROGRAM_SETTINGS><FILE>main.asm</FILE><LINE>822</LINE></REPROGRAM_SETTINGS> <REPROGRAM_SETTINGS><FILE>main.asm</FILE><LINE>810</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>
@ -84,81 +84,82 @@
<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>372</LINE></UART_WR_BYTE> <UART_WR_BYTE><FILE>main.asm</FILE><LINE>360</LINE></UART_WR_BYTE>
<_TEMP_SEND_UART_L><FILE>main.asm</FILE><LINE>361</LINE></_TEMP_SEND_UART_L> <_TEMP_SEND_UART_L><FILE>main.asm</FILE><LINE>349</LINE></_TEMP_SEND_UART_L>
<EEP_WR_BYTE><FILE>main.asm</FILE><LINE>447</LINE></EEP_WR_BYTE> <EEP_WR_BYTE><FILE>main.asm</FILE><LINE>435</LINE></EEP_WR_BYTE>
<WRITE_PARAMS_TO_EEP><FILE>main.asm</FILE><LINE>418</LINE></WRITE_PARAMS_TO_EEP> <WRITE_PARAMS_TO_EEP><FILE>main.asm</FILE><LINE>406</LINE></WRITE_PARAMS_TO_EEP>
<_EEP_WR_BYTE_LP><FILE>main.asm</FILE><LINE>450</LINE></_EEP_WR_BYTE_LP> <_EEP_WR_BYTE_LP><FILE>main.asm</FILE><LINE>438</LINE></_EEP_WR_BYTE_LP>
<_EEP_RD_BYTE_LP><FILE>main.asm</FILE><LINE>474</LINE></_EEP_RD_BYTE_LP> <_EEP_RD_BYTE_LP><FILE>main.asm</FILE><LINE>462</LINE></_EEP_RD_BYTE_LP>
<_NEGATE_TEMP><FILE>main.asm</FILE><LINE>543</LINE></_NEGATE_TEMP> <_NEGATE_TEMP><FILE>main.asm</FILE><LINE>531</LINE></_NEGATE_TEMP>
<_COMPARE><FILE>main.asm</FILE><LINE>549</LINE></_COMPARE> <_COMPARE><FILE>main.asm</FILE><LINE>537</LINE></_COMPARE>
<_MIN_THRESHOLD><FILE>main.asm</FILE><LINE>559</LINE></_MIN_THRESHOLD> <_MIN_THRESHOLD><FILE>main.asm</FILE><LINE>547</LINE></_MIN_THRESHOLD>
<_MAX_THRESHOLD><FILE>main.asm</FILE><LINE>568</LINE></_MAX_THRESHOLD> <_MAX_THRESHOLD><FILE>main.asm</FILE><LINE>556</LINE></_MAX_THRESHOLD>
<_COMPARSION_EXIT><FILE>main.asm</FILE><LINE>575</LINE></_COMPARSION_EXIT> <_COMPARSION_EXIT><FILE>main.asm</FILE><LINE>563</LINE></_COMPARSION_EXIT>
<TEMP_CONV><FILE>main.asm</FILE><LINE>715</LINE></TEMP_CONV> <TEMP_CONV><FILE>main.asm</FILE><LINE>703</LINE></TEMP_CONV>
<DELAY_LOOP_24><FILE>main.asm</FILE><LINE>1206</LINE></DELAY_LOOP_24> <DELAY_LOOP_24><FILE>main.asm</FILE><LINE>1203</LINE></DELAY_LOOP_24>
<TEMP_RD><FILE>main.asm</FILE><LINE>619</LINE></TEMP_RD> <TEMP_RD><FILE>main.asm</FILE><LINE>607</LINE></TEMP_RD>
<OW_PRESENCE><FILE>main.asm</FILE><LINE>1010</LINE></OW_PRESENCE> <OW_PRESENCE><FILE>main.asm</FILE><LINE>1007</LINE></OW_PRESENCE>
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>1037</LINE></OW_SEND_BYTE> <OW_SEND_BYTE><FILE>main.asm</FILE><LINE>1034</LINE></OW_SEND_BYTE>
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>1068</LINE></OW_RD_BYTE> <OW_RD_BYTE><FILE>main.asm</FILE><LINE>1065</LINE></OW_RD_BYTE>
<_TEMP_RD_EXIT><FILE>main.asm</FILE><LINE>707</LINE></_TEMP_RD_EXIT> <_TEMP_RD_EXIT><FILE>main.asm</FILE><LINE>695</LINE></_TEMP_RD_EXIT>
<_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>656</LINE></_TEMP_RD_TO_UNSIGNED> <_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>644</LINE></_TEMP_RD_TO_UNSIGNED>
<_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>669</LINE></_TEMP_RD_CONTINUE> <_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>657</LINE></_TEMP_RD_CONTINUE>
<_TEMP_RD_END><FILE>main.asm</FILE><LINE>679</LINE></_TEMP_RD_END> <_TEMP_RD_END><FILE>main.asm</FILE><LINE>667</LINE></_TEMP_RD_END>
<_TEMP_CONV_EXIT><FILE>main.asm</FILE><LINE>730</LINE></_TEMP_CONV_EXIT> <_TEMP_CONV_EXIT><FILE>main.asm</FILE><LINE>718</LINE></_TEMP_CONV_EXIT>
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>756</LINE></_USI_TRANSMIT_LOOP> <_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>744</LINE></_USI_TRANSMIT_LOOP>
<BUTTON_PROCESS><FILE>main.asm</FILE><LINE>770</LINE></BUTTON_PROCESS> <BUTTON_PROCESS><FILE>main.asm</FILE><LINE>758</LINE></BUTTON_PROCESS>
<_SW_CHECK_ON_0><FILE>main.asm</FILE><LINE>772</LINE></_SW_CHECK_ON_0> <_SW_CHECK_ON_0><FILE>main.asm</FILE><LINE>760</LINE></_SW_CHECK_ON_0>
<_SW_SET_0><FILE>main.asm</FILE><LINE>776</LINE></_SW_SET_0> <_SW_SET_0><FILE>main.asm</FILE><LINE>764</LINE></_SW_SET_0>
<_SW_CHECK_ON_1><FILE>main.asm</FILE><LINE>803</LINE></_SW_CHECK_ON_1> <_SW_CHECK_ON_1><FILE>main.asm</FILE><LINE>791</LINE></_SW_CHECK_ON_1>
<_SW_SET_FROM_0_TO_1><FILE>main.asm</FILE><LINE>781</LINE></_SW_SET_FROM_0_TO_1> <_SW_SET_FROM_0_TO_1><FILE>main.asm</FILE><LINE>769</LINE></_SW_SET_FROM_0_TO_1>
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>1172</LINE></DEBOUNCE_SW> <DEBOUNCE_SW><FILE>main.asm</FILE><LINE>1169</LINE></DEBOUNCE_SW>
<_SAVE_SETTINGS><FILE>main.asm</FILE><LINE>791</LINE></_SAVE_SETTINGS> <_SAVE_SETTINGS><FILE>main.asm</FILE><LINE>779</LINE></_SAVE_SETTINGS>
<_SW_SET_1><FILE>main.asm</FILE><LINE>807</LINE></_SW_SET_1> <_SW_SET_1><FILE>main.asm</FILE><LINE>795</LINE></_SW_SET_1>
<_BUTTON_PROCESS_END><FILE>main.asm</FILE><LINE>816</LINE></_BUTTON_PROCESS_END> <_BUTTON_PROCESS_END><FILE>main.asm</FILE><LINE>804</LINE></_BUTTON_PROCESS_END>
<_SW_SET_FROM_1_TO_0><FILE>main.asm</FILE><LINE>812</LINE></_SW_SET_FROM_1_TO_0> <_SW_SET_FROM_1_TO_0><FILE>main.asm</FILE><LINE>800</LINE></_SW_SET_FROM_1_TO_0>
<_INTO><FILE>main.asm</FILE><LINE>833</LINE></_INTO> <_INTO><FILE>main.asm</FILE><LINE>821</LINE></_INTO>
<_REPROGRAM_SETTINGS_LOOP><FILE>main.asm</FILE><LINE>838</LINE></_REPROGRAM_SETTINGS_LOOP> <_REPROGRAM_SETTINGS_LOOP><FILE>main.asm</FILE><LINE>826</LINE></_REPROGRAM_SETTINGS_LOOP>
<_CHECK_STEP><FILE>main.asm</FILE><LINE>840</LINE></_CHECK_STEP> <_CHECK_STEP><FILE>main.asm</FILE><LINE>828</LINE></_CHECK_STEP>
<_STEP_1><FILE>main.asm</FILE><LINE>850</LINE></_STEP_1> <_STEP_1><FILE>main.asm</FILE><LINE>838</LINE></_STEP_1>
<_STEP_2><FILE>main.asm</FILE><LINE>893</LINE></_STEP_2> <_STEP_2><FILE>main.asm</FILE><LINE>881</LINE></_STEP_2>
<_S3_JMP><FILE>main.asm</FILE><LINE>889</LINE></_S3_JMP> <_S3_JMP><FILE>main.asm</FILE><LINE>877</LINE></_S3_JMP>
<_REPROGRAM_SETTINGS_END><FILE>main.asm</FILE><LINE>998</LINE></_REPROGRAM_SETTINGS_END> <_REPROGRAM_SETTINGS_END><FILE>main.asm</FILE><LINE>995</LINE></_REPROGRAM_SETTINGS_END>
<_S1_CHECK_PLUS><FILE>main.asm</FILE><LINE>852</LINE></_S1_CHECK_PLUS> <_S1_CHECK_PLUS><FILE>main.asm</FILE><LINE>840</LINE></_S1_CHECK_PLUS>
<_INCREASE_HYST><FILE>main.asm</FILE><LINE>860</LINE></_INCREASE_HYST> <_INCREASE_HYST><FILE>main.asm</FILE><LINE>848</LINE></_INCREASE_HYST>
<_S1_CHECK_MINUS><FILE>main.asm</FILE><LINE>856</LINE></_S1_CHECK_MINUS> <_S1_CHECK_MINUS><FILE>main.asm</FILE><LINE>844</LINE></_S1_CHECK_MINUS>
<_DECREASE_HYST><FILE>main.asm</FILE><LINE>868</LINE></_DECREASE_HYST> <_DECREASE_HYST><FILE>main.asm</FILE><LINE>856</LINE></_DECREASE_HYST>
<_SHOW_HYST><FILE>main.asm</FILE><LINE>875</LINE></_SHOW_HYST> <_SHOW_HYST><FILE>main.asm</FILE><LINE>863</LINE></_SHOW_HYST>
<_STEP_3><FILE>main.asm</FILE><LINE>957</LINE></_STEP_3> <_STEP_3><FILE>main.asm</FILE><LINE>954</LINE></_STEP_3>
<_S2_CHECK_PLUS><FILE>main.asm</FILE><LINE>895</LINE></_S2_CHECK_PLUS> <_S2_CHECK_PLUS><FILE>main.asm</FILE><LINE>883</LINE></_S2_CHECK_PLUS>
<_INCREASE_TEMP><FILE>main.asm</FILE><LINE>903</LINE></_INCREASE_TEMP> <_INCREASE_TEMP><FILE>main.asm</FILE><LINE>891</LINE></_INCREASE_TEMP>
<_S2_CHECK_MINUS><FILE>main.asm</FILE><LINE>899</LINE></_S2_CHECK_MINUS> <_S2_CHECK_MINUS><FILE>main.asm</FILE><LINE>887</LINE></_S2_CHECK_MINUS>
<_DECREASE_TEMP><FILE>main.asm</FILE><LINE>914</LINE></_DECREASE_TEMP> <_DECREASE_TEMP><FILE>main.asm</FILE><LINE>906</LINE></_DECREASE_TEMP>
<_SHOW_TEMP><FILE>main.asm</FILE><LINE>922</LINE></_SHOW_TEMP> <_SHOW_TEMP><FILE>main.asm</FILE><LINE>919</LINE></_SHOW_TEMP>
<_NEGATE_SET_TEMP><FILE>main.asm</FILE><LINE>935</LINE></_NEGATE_SET_TEMP> <__DECREASE><FILE>main.asm</FILE><LINE>914</LINE></__DECREASE>
<_DIVIDE_SET_TEMP><FILE>main.asm</FILE><LINE>939</LINE></_DIVIDE_SET_TEMP> <_NEGATE_SET_TEMP><FILE>main.asm</FILE><LINE>932</LINE></_NEGATE_SET_TEMP>
<_S3_CHECK_PLUS><FILE>main.asm</FILE><LINE>959</LINE></_S3_CHECK_PLUS> <_DIVIDE_SET_TEMP><FILE>main.asm</FILE><LINE>936</LINE></_DIVIDE_SET_TEMP>
<_SET_HEAT_MODE><FILE>main.asm</FILE><LINE>967</LINE></_SET_HEAT_MODE> <_S3_CHECK_PLUS><FILE>main.asm</FILE><LINE>956</LINE></_S3_CHECK_PLUS>
<_S3_CHECK_MINUS><FILE>main.asm</FILE><LINE>963</LINE></_S3_CHECK_MINUS> <_SET_HEAT_MODE><FILE>main.asm</FILE><LINE>964</LINE></_SET_HEAT_MODE>
<_SET_COOLING_MODE><FILE>main.asm</FILE><LINE>972</LINE></_SET_COOLING_MODE> <_S3_CHECK_MINUS><FILE>main.asm</FILE><LINE>960</LINE></_S3_CHECK_MINUS>
<_SHOW_MODE><FILE>main.asm</FILE><LINE>976</LINE></_SHOW_MODE> <_SET_COOLING_MODE><FILE>main.asm</FILE><LINE>969</LINE></_SET_COOLING_MODE>
<_SHOW_COOLING><FILE>main.asm</FILE><LINE>989</LINE></_SHOW_COOLING> <_SHOW_MODE><FILE>main.asm</FILE><LINE>973</LINE></_SHOW_MODE>
<_SHOW_HEATING><FILE>main.asm</FILE><LINE>993</LINE></_SHOW_HEATING> <_SHOW_COOLING><FILE>main.asm</FILE><LINE>986</LINE></_SHOW_COOLING>
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>1198</LINE></DELAY_LOOP_16> <_SHOW_HEATING><FILE>main.asm</FILE><LINE>990</LINE></_SHOW_HEATING>
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>1026</LINE></OW_CHECK_PRESENCE> <DELAY_LOOP_16><FILE>main.asm</FILE><LINE>1195</LINE></DELAY_LOOP_16>
<_EXIT><FILE>main.asm</FILE><LINE>1032</LINE></_EXIT> <OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>1023</LINE></OW_CHECK_PRESENCE>
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>1043</LINE></_OW_SEND_BYTE_LOOP> <_EXIT><FILE>main.asm</FILE><LINE>1029</LINE></_EXIT>
<_OW_SEND_0><FILE>main.asm</FILE><LINE>1047</LINE></_OW_SEND_0> <_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>1040</LINE></_OW_SEND_BYTE_LOOP>
<_OW_SEND_1><FILE>main.asm</FILE><LINE>1053</LINE></_OW_SEND_1> <_OW_SEND_0><FILE>main.asm</FILE><LINE>1044</LINE></_OW_SEND_0>
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>1058</LINE></_OW_SEND_BYTE_END> <_OW_SEND_1><FILE>main.asm</FILE><LINE>1050</LINE></_OW_SEND_1>
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>1074</LINE></_OW_RD_BYTE_LP> <_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>1055</LINE></_OW_SEND_BYTE_END>
<DIV_LOOP><FILE>main.asm</FILE><LINE>1114</LINE></DIV_LOOP> <_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>1071</LINE></_OW_RD_BYTE_LP>
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>1215</LINE></DISPLAY_SYMBOLS> <DIV_LOOP><FILE>main.asm</FILE><LINE>1111</LINE></DIV_LOOP>
<_loop_2><FILE>main.asm</FILE><LINE>1178</LINE></_loop_2> <DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>1212</LINE></DISPLAY_SYMBOLS>
<_loop_0><FILE>main.asm</FILE><LINE>1180</LINE></_loop_0> <_loop_2><FILE>main.asm</FILE><LINE>1175</LINE></_loop_2>
<_dec_0><FILE>main.asm</FILE><LINE>1182</LINE></_dec_0> <_loop_0><FILE>main.asm</FILE><LINE>1177</LINE></_loop_0>
<_loop_1><FILE>main.asm</FILE><LINE>1185</LINE></_loop_1> <_dec_0><FILE>main.asm</FILE><LINE>1179</LINE></_dec_0>
<_loop_3><FILE>main.asm</FILE><LINE>1188</LINE></_loop_3> <_loop_1><FILE>main.asm</FILE><LINE>1182</LINE></_loop_1>
<INFO><FILE>main.asm</FILE><LINE>1233</LINE></INFO> <_loop_3><FILE>main.asm</FILE><LINE>1185</LINE></_loop_3>
<INFO><FILE>main.asm</FILE><LINE>1230</LINE></INFO>
</LABELS> </LABELS>
</ASSEMBLER_INFO> </ASSEMBLER_INFO>

229
main.asm
View File

@ -147,7 +147,6 @@ _indicate_3:
sbi PORTD, DIGIT_3_PIN sbi PORTD, DIGIT_3_PIN
lds TEMP_REG_A, DIGITS lds TEMP_REG_A, DIGITS
rcall DISPLAY_DECODER rcall DISPLAY_DECODER
; зажигаем точку
mov r16, r0 mov r16, r0
cbr r16, (1<<7) cbr r16, (1<<7)
mov r0, r16 mov r0, r16
@ -189,7 +188,7 @@ RESET_vect:
; **** ПРОЦЕСС ИНИЦИАЛИЗАЦИИ МК ********************************** ; **** ПРОЦЕСС ИНИЦИАЛИЗАЦИИ МК **********************************
MCU_INIT: MCU_INIT:
; **** ИНИЦИАЛИЗАЦИЯ ПИНОВ ************************************* ; **** ИНИЦИАЛИЗАЦИЯ ПИНОВ *************************************
outi r16, DDRD, (1<<LED_ERR_PIN) | (1<<DIGIT_1_PIN) | (1<<DIGIT_2_PIN) | (1<<DIGIT_3_PIN) | (1<<DIGIT_4_PIN) | (1<<UART_TX_PIN) | (1<<RELAY_PIN) outi r16, DDRD, (1<<LED_PGM_PIN) | (1<<DIGIT_1_PIN) | (1<<DIGIT_2_PIN) | (1<<DIGIT_3_PIN) | (1<<DIGIT_4_PIN) | (1<<UART_TX_PIN) | (1<<RELAY_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, 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)
@ -218,19 +217,38 @@ MCU_INIT:
ldi r16, 0x00 ldi r16, 0x00
sts MCU_STATE, r16 ; переводим МК сразу в режим измерения температуры sts MCU_STATE, r16 ; переводим МК сразу в режим измерения температуры
; настройка параметров ; проверяем впервые ли запускаем устройство
ldi r16, DEFAULT_SETTING_TEMP_L ldi r16, EEP_FIRST_TIME_RUN
sts SETTING_TEMP_L, r16 ; уставка LOW mov EEP_A_r, r16
rcall EEP_RD_BYTE
mov r16, EEP_D_r
cpi r16, 0x10 ; 0x10 - зарезервированное число которое говорит о том что устройство запускается НЕ впервые
breq _INIT_PARAMS
_FIRST_TIME_RUN: ; если устройство запускается впервые то записываем в EEPROM и ОЗУ стандартные параметры
rcall INIT_DEFAULT_PARAMS
rjmp _CONTINUE_INIT
_INIT_PARAMS: ; иначе берем из EEPROM настройки и записываем в ОЗУ
ldi r16, EEP_SETTING_TEMP_H
mov EEP_A_r, r16
rcall EEP_RD_BYTE
sts SETTING_TEMP_H, EEP_D_r
ldi r16, DEFAULT_SETTING_TEMP_H ldi r16, EEP_SETTING_TEMP_L
sts SETTING_TEMP_H, r16 ; уставка HIGH mov EEP_A_r, r16
rcall EEP_RD_BYTE
sts SETTING_TEMP_L, EEP_D_r
ldi r16, DEFAULT_SETTING_HYST ldi r16, EEP_SETTING_HYST
sts SETTING_HYST, r16 ; гистерезис mov EEP_A_r, r16
rcall EEP_RD_BYTE
sts SETTING_HYST, EEP_D_r
ldi r16, DEFAULT_SETTING_MODE ldi r16, EEP_SETTING_MODE
sts SETTING_MODE, r16 ; режим работы mov EEP_A_r, r16
rcall EEP_RD_BYTE
sts SETTING_MODE, EEP_D_r
_CONTINUE_INIT:
clr r16 clr r16
sts TEMP_L, r16 sts TEMP_L, r16
sts TEMP_H, r16 sts TEMP_H, r16
@ -265,28 +283,32 @@ START_PROGRAM:
; **** ГЛАВНЫЙ ЦИКЛ ********************************************** ; **** ГЛАВНЫЙ ЦИКЛ **********************************************
LOOP: LOOP:
lds r16, MCU_STATE ; получаем текущее состояние МК lds r16, MCU_STATE ; получаем текущее состояние МК
rcall DISPLAY_UPD_DIGITS ; 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
lds r18, TEMP_F lds r18, TEMP_F
sts DIGITS+3, r18 sts DIGITS+3, r18
rcall TEMP_UPD ; обновление данных о температуре rcall TEMP_UPD ; обновление данных о температуре
rcall DISPLAY_UPD_DIGITS
rcall TEMP_COMPARSION ; логика термостата rcall TEMP_COMPARSION ; логика термостата
outi r17, TIMSK, (1<<OCIE0A) ; вкл. индикатор 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
rcall REPROGRAM_SETTINGS rcall REPROGRAM_SETTINGS
_STATE_ERROR: _STATE_ERROR:
cpi r16, MCU_STATE_ERROR cpi r16, MCU_STATE_ERROR
brne LOOP brne LOOP
sbi LED_ERR_PORT, LED_ERR_PIN ldi r17, 11
sts DIGITS, r17
sts DIGITS+1, r17
sts DIGITS+2, r17
sts DIGITS+3, r17
outi r17, TIMSK, (1<<OCIE0A)
rjmp LOOP rjmp LOOP
//</editor-fold> //</editor-fold>
@ -339,6 +361,116 @@ UART_WR_BYTE:
sbis UCSRA, UDRE sbis UCSRA, UDRE
rjmp UART_WR_BYTE rjmp UART_WR_BYTE
out UDR, r5 out UDR, r5
ret
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: инициализация стандартных параметров">
INIT_DEFAULT_PARAMS:
ldi r16, DEFAULT_SETTING_TEMP_H
sts SETTING_TEMP_H, r16 ; уставка HIGH
mov EEP_D_r, r16
ldi r16, EEP_SETTING_TEMP_H
mov EEP_A_r, r16
rcall EEP_WR_BYTE
ldi r16, DEFAULT_SETTING_TEMP_L
sts SETTING_TEMP_L, r16 ; уставка LOW
mov EEP_D_r, r16
ldi r16, EEP_SETTING_TEMP_L
mov EEP_A_r, r16
rcall EEP_WR_BYTE
ldi r16, DEFAULT_SETTING_HYST
sts SETTING_HYST, r16 ; гистерезис
mov EEP_D_r, r16
ldi r16, EEP_SETTING_HYST
mov EEP_A_r, r16
rcall EEP_WR_BYTE
ldi r16, DEFAULT_SETTING_MODE
sts SETTING_MODE, r16 ; режим
mov EEP_D_r, r16
ldi r16, EEP_SETTING_MODE
mov EEP_A_r, r16
rcall EEP_WR_BYTE
ldi r16, 0x10
mov EEP_D_r, r16
ldi r16, EEP_FIRST_TIME_RUN
mov EEP_A_r, r16
rcall EEP_WR_BYTE
ret
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: запись параметров из ОЗУ в EEPROM">
WRITE_PARAMS_TO_EEP:
push r16
lds r16, SETTING_TEMP_H ; уставка HIGH
mov EEP_D_r, r16
ldi r16, EEP_SETTING_TEMP_H
mov EEP_A_r, r16
rcall EEP_WR_BYTE
lds r16, SETTING_TEMP_L ; уставка LOW
mov EEP_D_r, r16
ldi r16, EEP_SETTING_TEMP_L
mov EEP_A_r, r16
rcall EEP_WR_BYTE
lds r16, SETTING_HYST ; гистерезис
mov EEP_D_r, r16
ldi r16, EEP_SETTING_HYST
mov EEP_A_r, r16
rcall EEP_WR_BYTE
lds r16, SETTING_MODE ; режим
mov EEP_D_r, r16
ldi r16, EEP_SETTING_MODE
mov EEP_A_r, r16
rcall EEP_WR_BYTE
pop r16
ret//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограммы: запись и чтение байта из EEPROM">
EEP_WR_BYTE:
cli
push r16
_EEP_WR_BYTE_LP:
; ждем завершения предыдущей записи
sbic EECR, EEPE
rjmp _EEP_WR_BYTE_LP
; режим программирования - атомарный
ldi r16, (0<<EEPM1) | (0<<EEPM0)
out EECR, r16
; выставляем адресс куда записывать
out EEARL, EEP_A_r
; помещаем данные
out EEDR, EEP_D_r
; запись
sbi EECR, EEMPE
sbi EECR, EEPE
pop r16
sei
ret
EEP_RD_BYTE:
cli
_EEP_RD_BYTE_LP:
; ждем завершения предыдущей записи
sbic EECR, EEPE
rjmp _EEP_RD_BYTE_LP
; выставляем адресс откуда читать
out EEARL, EEP_A_r
; читаем
sbi EECR, EERE
in EEP_D_r, EEDR
sei
ret//</editor-fold> ret//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: сравнение температуры с уставкой"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: сравнение температуры с уставкой">
@ -436,7 +568,8 @@ _COMPARSION_EXIT:
pop r18 pop r18
pop r17 pop r17
pop r16 pop r16
ret//</editor-fold> ret
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: обновляем данные о температуре"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: обновляем данные о температуре">
TEMP_UPD: TEMP_UPD:
@ -650,7 +783,9 @@ _SAVE_SETTINGS:
cbi PORTD, DIGIT_3_PIN cbi PORTD, DIGIT_3_PIN
cbi PORTD, DIGIT_4_PIN cbi PORTD, DIGIT_4_PIN
clr REPROGRAM_STEP_r clr REPROGRAM_STEP_r
rcall WRITE_PARAMS_TO_EEP
rcall BEEP_LONG rcall BEEP_LONG
cbi PORTD, LED_PGM_PIN
ldi r17, MCU_STATE_DEFAULT ldi r17, MCU_STATE_DEFAULT
sts MCU_STATE, r17 sts MCU_STATE, r17
_SW_CHECK_ON_1: _SW_CHECK_ON_1:
@ -684,6 +819,8 @@ REPROGRAM_SETTINGS:
breq _INTO breq _INTO
rjmp _REPROGRAM_SETTINGS_LOOP rjmp _REPROGRAM_SETTINGS_LOOP
_INTO: _INTO:
relay_off
sbi PORTD, LED_PGM_PIN
rcall BEEP_SHORT rcall BEEP_SHORT
inc REPROGRAM_STEP_r inc REPROGRAM_STEP_r
_REPROGRAM_SETTINGS_LOOP: _REPROGRAM_SETTINGS_LOOP:
@ -699,7 +836,7 @@ _CHECK_STEP:
//<editor-fold defaultstate="collapsed" desc="Настройка: шаг 1"> //<editor-fold defaultstate="collapsed" desc="Настройка: шаг 1">
_STEP_1: ; установка и отображение гистерезиса _STEP_1: ; установка и отображение гистерезиса
nop rcall DISPLAY_UPD_DIGITS
_S1_CHECK_PLUS: _S1_CHECK_PLUS:
sbis SW_PIN, SW_PLUS_PIN sbis SW_PIN, SW_PLUS_PIN
rjmp _INCREASE_HYST rjmp _INCREASE_HYST
@ -742,7 +879,7 @@ _S3_JMP: ; просто прыжок на _STEP_3
//<editor-fold defaultstate="collapsed" desc="Настройка: шаг 2"> //<editor-fold defaultstate="collapsed" desc="Настройка: шаг 2">
_STEP_2: _STEP_2:
nop rcall DISPLAY_UPD_DIGITS
_S2_CHECK_PLUS: _S2_CHECK_PLUS:
sbis SW_PIN, SW_PLUS_PIN sbis SW_PIN, SW_PLUS_PIN
rjmp _INCREASE_TEMP rjmp _INCREASE_TEMP
@ -755,6 +892,10 @@ _INCREASE_TEMP:
rcall DEBOUNCE_SW rcall DEBOUNCE_SW
lds r17, SETTING_TEMP_L lds r17, SETTING_TEMP_L
lds r18, SETTING_TEMP_H lds r18, SETTING_TEMP_H
cpi r17, MAX_TEMP_L
ldi r19, MAX_TEMP_H
cpc r18, r19
breq PC+7
ldi r19, 10 ldi r19, 10
add r17, r19 add r17, r19
clr r19 clr r19
@ -766,6 +907,11 @@ _DECREASE_TEMP:
rcall DEBOUNCE_SW rcall DEBOUNCE_SW
lds r17, SETTING_TEMP_L lds r17, SETTING_TEMP_L
lds r18, SETTING_TEMP_H lds r18, SETTING_TEMP_H
cpi r17, MIN_TEMP_L
ldi r19, MIN_TEMP_H
cpc r18, r19
breq PC+3
__DECREASE:
subi r17, 10 subi r17, 10
sbci r18, 0 sbci r18, 0
sts SETTING_TEMP_L, r17 sts SETTING_TEMP_L, r17
@ -828,6 +974,10 @@ _SHOW_MODE:
clr r17 clr r17
mov DISP_NUM_L, r17 mov DISP_NUM_L, r17
mov DISP_NUM_H, r17 mov DISP_NUM_H, r17
ldi r17, 14
sts DIGITS, r17
sts DIGITS+1, r17
sts DIGITS+2, r17
lds r18, SETTING_MODE lds r18, SETTING_MODE
tst r18 tst r18
breq _SHOW_COOLING breq _SHOW_COOLING
@ -851,17 +1001,6 @@ _REPROGRAM_SETTINGS_END:
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: опрос присутствия">
; **** ОПРОС ПРИСУТСТВИЯ УСТРОЙСТВА ****************************** ; **** ОПРОС ПРИСУТСТВИЯ УСТРОЙСТВА ******************************
@ -1069,31 +1208,6 @@ DELAY_LOOP_24:
ret ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка">
DELAY:
push r16
push r17
push r18
ldi r18, 6
_DELAY_0:
ldi r16, 255
_DELAY_1:
ldi r17, 255
_DELAY_2:
dec r17
brne _DELAY_2
dec r16
brne _DELAY_1
dec r18
brne _DELAY_0
pop r18
pop r17
pop r16
ret //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Символы для индикатора"> //<editor-fold defaultstate="collapsed" desc="Символы для индикатора">
DISPLAY_SYMBOLS: DISPLAY_SYMBOLS:
; HGFEDCBA HGFEDCBA ; HGFEDCBA HGFEDCBA
@ -1112,9 +1226,6 @@ DISPLAY_SYMBOLS:
; **** СЕГМЕНТ EEPROM ******************************************** ; **** СЕГМЕНТ EEPROM ********************************************
.ESEG .ESEG
E_SETTING_TEMP_H: .BYTE 1 .ORG 0x30
E_SETTING_TEMP_L: .BYTE 1 INFO: .DB "AVR Thermostat. Written by Sergey Yarkov"
E_SETTING_HYST: .BYTE 1
E_SETTING_MODE: .BYTE 1
E_FIRST_TIME_RUN: .BYTE 1
;</editor-fold> ;</editor-fold>

204
main.hex
View File

@ -7,106 +7,118 @@
:10003A002F933F934F935F935FB74091670045308B :10003A002F933F934F935F935FB74091670045308B
:10004A000CF403C0442740936700403081F493982E :10004A000CF403C0442740936700403081F493982E
:10005A00949895980EF002C00BE002C000916500DA :10005A00949895980EF002C00BE002C000916500DA
:10006A00002311F0929A01C09298DAD29BD14130C2 :10006A00002311F0929A01C0929850D305D24130E0
:10007A0081F4929894989598009164003091650063 :10007A0081F4929894989598009164003091650063
:10008A00032B11F0939A01C0939800916400C8D28F :10008A00032B11F0939A01C09398009164003ED318
:10009A0089D1423059F4929893989598949A0091FC :10009A00F3D1423059F4929893989598949A009192
:1000AA006300BED2002D0F77002E7CD1433041F47D :1000AA00630034D3002D0F77002EE6D1433041F49C
:1000BA00929893989498959A00916600B1D272D1C9 :1000BA00929893989498959A0091660027D3DCD1E8
:1000CA004395409367005FBF5F914F913F912F9196 :1000CA004395409367005FBF5F914F913F912F9196
:1000DA001F910F9118950FED0DBF0FE701BB01EEB0 :1000DA001F910F9118950FED0DBF0FE701BB01EEB0
:1000EA0007BB0CE108BB02E000BF05E003BF03E267 :1000EA0007BB0CE108BB02E000BF05E003BF03E267
:1000FA0006BF00E20BBF0CE100BD03E309B900E053 :1000FA0006BF00E20BBF0CE100BD03E309B900E053
:10010A0002B908E00AB906E003B91124109267009F :10010A0002B908E00AB906E003B91124109267009F
:10011A0000E0009360000CE200936C0001E00093A1 :10011A0000E00093600004E0302EEAD0042D0031A4
:10012A006B0005E000936D0001E000936E0000276C :10012A0011F09CD014C000E0302EE2D040926B0057
:10013A00009368000093690000EF00936A000FEFD4 :10013A0001E0302EDDD040926C0002E0302ED8D0A3
:10014A00009371006624CED000916F00083209F442 :10014A0040926D0003E0302ED3D040926E0000271B
:10015A0005C012E01093600075D201C06CD280E035 :10015A00009368000093690000EF00936A000FEFB4
:10016A0090E00091600042D2003051F496982091BC :10016A0000937100662428D100916F00083209F4C7
:10017A006A0020936600A7D059D011E019BF38D081 :10017A0005C012E010936000DBD201C0D2D280E049
:10018A00013011F4969848D1023059F7969AE9CF7E :10018A0090E000916000003051F420916A002093C1
:10019A00EE24FF1841E1001F111F4A9509F4089542 :10019A00660003D1A1D2B4D011E019BF41D0013019
:1001AA00EE1CFF1CE21AF30A20F4E20EF31E8894F6 :1001AA0009F4A6D1023069F71BE01093630010939B
:1001BA00F2CF0894F0CFFF1829E0001F2A9509F41E :1001BA006400109365001093660011E019BFE1CF47
:1001CA000895FF1CF11A18F4F10E8894F6CF0894DA :1001CA00EE24FF1841E1001F111F4A9509F4089512
:1001DA00F4CF5527442760E13695279510F4400F50 :1001DA00EE1CFF1CE21AF30A20F4E20EF31E8894C6
:1001EA00511F57954795379527956A95B9F70895F9 :1001EA00F2CF0894F0CFFF1829E0001F2A9509F4EE
:1001FA000F931F9300916800502E14D000916A004B :1001FA000895FF1CF11A18F4F10E8894F6CF0894AA
:10020A00502E10D000B30170502E0CD004E0502EA6 :10020A00F4CF5527442760E13695279510F4400F1F
:10021A0009D00027502E1CE005D01A95E9F71F9146 :10021A00511F57954795379527956A95B9F70895C8
:10022A000F9108955D9BFECF5CB808950F931F93BD :10022A000F931F9300916800502E14D000916A001A
:10023A002F933F934F935F937F93009168001091A0 :10023A00502E10D000B30170502E0CD004E0502E76
:10024A0069002AE030E0C5DF022F132F20916A00EF :10024A0009D00027502E1CE005D01A95E9F71F9116
:10025A003327020F131F40916C0050916B0060917D :10025A000F9108955D9BFECF5CB8089501E000936D
:10026A006D004F935F937727461B570BB42EA52E2D :10026A006B00402E00E0302E36D00CE200936C007A
:10027A005F914F917727460F571FD42EC52E0EF048 :10027A00402E01E0302E2FD005E000936D00402E75
:10028A0004C0009510950F5F1F4FB016A10624F405 :10028A0002E0302E28D001E000936E00402E03E0F9
:10029A000D151C054CF40FC040916E00442311F457 :10029A00302E21D000E1402E04E0302E1CD00895EB
:1002AA00909801C0909A07C040916E00442311F4BF :1002AA000F9300916B00402E00E0302E14D0009185
:1002BA00909A01C090987F915F914F913F912F91B1 :1002BA006C00402E01E0302E0ED000916D00402ED1
:1002CA001F910F9108951F9361D052E135E54DEBCF :1002CA0002E0302E08D000916E00402E03E0302E5E
:1002DA00D4D112D010916800812F10916900912F0A :1002DA0002D00F910895F8940F93E199FECF00E0B0
:1002EA001F9108950F9334D103E3802E46D1AFE6D0 :1002EA000CBB3EBA4DBAE29AE19A0F9178940895FE
:1002FA00B0E062D10F9108950F931F932F933F930C :1002FA00F894E199FECF3EBAE09A4DB27894089507
:10030A004F9326D170FF3CC00CEC802E36D10EEBF9 :10030A000F931F932F933F934F935F937F93009184
:10031A00802E33D1A8E6B0E04FD1A9E6B0E04CD1A7 :10031A006800109169002AE030E073DF022F132F82
:10032A0010916800209169002F93287F283F11F0CF :10032A0020916A003327020F131F40916C005091ED
:10033A00E89407C02F916894109520951F5F2F4F5E :10033A006B0060916D004F935F937727461B570BB5
:10034A0001C02F91269517952695179526951795ED :10034A00B42EA52E5F914F917727460F571FD42EB3
:10035A0026951795309168000EF43195432F3F701A :10035A00C52E0EF004C0009510950F5F1F4FB01602
:10036A00432F330F330F330F440F340F369536951F :10036A00A10624F40D151C054CF40FC040916E0033
:10037A0036953695109368002093690030936A0089 :10037A00442311F4909801C0909A07C040916E00EE
:10038A004F913F912F911F910F9108950F93E0D0B4 :10038A00442311F4909A01C090987F915F914F9104
:10039A0070FF06C00CEC802EF0D004E4802EEDD065 :10039A003F912F911F910F9108951F9361D052E1C0
:1003AA000F9108950F930F920FB800E40EB90BE165 :1003AA0035E54DEBE0D112D010916800812F109104
:1003BA000DB9769BFDCFC09AC0980F900F91089502 :1003BA006900912F1F9108950F9340D103E3802E76
:1003CA000F93B49B01C01AC000917100002309F475 :1003CA0052D1AFE6B0E06ED10F9108950F931F930B
:1003DA0015C00027009371003CD16394162D143088 :1003DA002F933F934F9332D170FF3CC00CEC802E89
:1003EA0014F429D10BC010E019BF929893989498ED :1003EA0042D10EEB802E3FD1A8E6B0E05BD1A9E660
:1003FA009598662427D110E010936000B49901C043 :1003FA00B0E058D110916800209169002F93287FAE
:10040A0009C000917100002309F004C00FEF0093A6 :10040A00283F11F0E89407C02F9168941095209521
:10041A0071001FD10F9108950F931F932F933F934C :10041A001F5F2F4F01C02F91269517952695179587
:10042A004F93062D002309F002C005D16394C8DF5B :10042A002695179526951795309168000EF4319503
:10043A00013029F0023049F1033031F183C0000064 :10043A00432F3F70432F330F330F330F440F340FC3
:10044A00B29B04C000C0B39B0AC011C002D1109174 :10044A00369536953695369510936800209369004F
:10045A006D00183C09F0139510936D0008C0F9D08F :10045A0030936A004F913F912F911F910F91089508
:10046A0010916D00113009F01A9510936D000F93D9 :10046A000F93ECD070FF06C00CEC802EFCD004E495
:10047A001F9300916D001AE09EDE802F9927F0925B :10047A00802EF9D00F9108950F930F920FB800E4D0
:10048A0066001F910F915EC03EC00000B29B04C07F :10048A000EB90BE10DB9769BFDCFC09AC0980F90BB
:10049A0000C0B39B0FC019C0DCD010916C00209132 :10049A000F9108950F93B49B01C01CC00091710085
:1004AA006B0031E0130F3327231F10936C00209346 :1004AA00002309F417C000270093710048D1639410
:1004BA006B000BC0CED010916C0020916B001150D4 :1004BA00162D143014F435D10DC010E019BF9298DE
:1004CA00204010936C0020936B000F931F932F937F :1004CA009398949895986624EBDE32D1969810E02A
:1004DA003F9300916C0010916B00212F207811F44A :1004DA0010936000B49901C009C000917100002313
:1004EA00E89405C06894009510950F5F1F4F2AE0A5 :1004EA0009F004C00FEF0093710029D10F9108950C
:1004FA0030E04EDE802F912FE09266003F912F91DF :1004FA000F931F932F933F934F93062D002309F0D9
:10050A001F910F911FC0E894B29B04C000C0B39B17 :10050A0004C09098969A0DD16394C4DF013029F003
:10051A0006C009C09ED011E010936E0004C099D0A5 :10051A00023049F1033031F18BC0DED0B29B04C006
:10052A0010E010936E001127812F912F20916E00F9 :10052A0000C0B39B0AC011C00AD110916D00183CDB
:10053A00222309F004C01CE01093660003C01DE0EA :10053A0009F0139510936D0008C001D110916D0058
:10054A00109366004F913F912F911F910F9108953B :10054A00113009F01A9510936D000F931F930091C3
:10055A00F894B99A33E04EEB8CD0B99830E04AE877 :10055A006D001AE048DE802F9927F09266001F91FD
:10056A0088D005D033E042E384D078940895B19BD3 :10056A000F9166C03FC0B8D0B29B04C000C0B39B15
:10057A00716002C0B1997E7F0895F8940F931F931A :10057A000FC019C0E4D010916C0020916B003AE0D2
:10058A00082D18E0069508F448F0B99A30E046E7D5 :10058A00130F3327231F10936C0020936B000BC0AB
:10059A0070D0B99830E042E16CD008C0B99A30E026 :10059A00D6D010916C0020916B001A502040109315
:1005AA004AE067D0B99830E04EE763D01A9551F720 :1005AA006C0020936B000F931F932F933F9300913E
:1005BA001F910F9178940895F8940F931F93002731 :1005BA006C0010916B00212F207811F4E89405C08B
:1005CA0018E00695B99A30E04AE053D0B99830E07D :1005CA006894009510950F5F1F4F2AE030E0F8DD20
:1005DA0040E14FD0B199006830E04CE64AD01A9514 :1005DA00802F912F0AE0009366003F912F911F917F
:1005EA0081F70C931F910F91789408950F935F935D :1005EA000F9126C0E894B29B04C000C0B39B06C01A
:1005FA0053E0A3E6B0E0809361009093620000911B :1005FA0009C0A5D011E010936E0004C0A0D010E08D
:10060A006100109162002AE030E0C2DDED920093B1 :10060A0010936E001127812F912F1FEF1093630013
:10061A006100109362005A9591F75F910F910895C6 :10061A00109364001093650020916E00222309F064
:10062A000F931F93EEEAF6E01127E00FF11F0490F3 :10062A0004C01CE01093660003C01DE0109366002E
:10063A001F910F910895C59A53E039EA4DE71DD0ED :10063A004F913F912F911F910F910895F894B99A74
:10064A00C5980895C59A5CE034E34DEF16D0C59875 :10064A0033E04EEB8CD0B99830E04AE888D005D038
:10065A0008950F931F932F932AE01FEF0FEF0A9528 :10065A0033E042E384D078940895B19B716002C07C
:10066A00F1F71A95D9F72A95C1F72F911F910F9192 :10066A00B1997E7F0895F8940F931F93082D18E08F
:10067A00089541503040E8F70895415030405040C5 :10067A00069508F448F0B99A30E046E770D0B99880
:10068A00E0F708950F931F932F9326E00FEF1FEFC4 :10068A0030E042E16CD008C0B99A30E04AE067D065
:10069A001A95F1F70A95D9F72A95C1F72F911F9163 :10069A00B99830E04EE763D01A9551F71F910F9140
:1006AA000F910895C0F9A4B0999282F880909CBFE6 :1006AA0078940895F8940F931F93002718E00695FD
:0206BA00C689EF :1006BA00B99A30E04AE053D0B99830E040E14FD0DF
:1006CA00B199006830E04CE64AD01A9581F70C934C
:1006DA001F910F91789408950F935F9353E0A3E6C7
:1006EA00B0E08093610090936200009161001091E4
:1006FA0062002AE030E064DDED920093610010931D
:10070A0062005A9591F75F910F9108950F931F9385
:10071A00EAE7F7E01127E00FF11F04901F910F910C
:10072A000895C59A53E039EA4DE71DD0C598089552
:10073A00C59A5CE034E34DEF16D0C59808950F933F
:10074A001F932F932AE01FEF0FEF0A95F1F71A95DF
:10075A00D9F72A95C1F72F911F910F91089541500A
:10076A003040E8F70895415030405040E0F708958E
:0E077A00C0F9A4B0999282F880909CBFC68905
:00000001FF :00000001FF

View File

@ -1,5 +1,5 @@
# #
#Wed Jun 28 17:31:11 MSK 2023 #Fri Jun 30 15:31:30 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
conf.ids=default conf.ids=default