read family code from ROM

This commit is contained in:
Sergey Yarkov 2023-06-25 15:12:17 +03:00
parent aaa9318a16
commit a1518d41fc
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
7 changed files with 626 additions and 685 deletions

View File

@ -64,10 +64,10 @@
; Отдельно задается целая и дробная часть в точности до десятых ; Отдельно задается целая и дробная часть в точности до десятых
; Например: 30.5 градусов ; Например: 30.5 градусов
.EQU DEFAULT_SETTING_INT = 29 .EQU DEFAULT_SETTING_INT = 0
.EQU DEFAULT_SETTING_F = 5 // 0.5 .EQU DEFAULT_SETTING_F = 5 // 0.5
.EQU DEFAULT_SETTING_HYST = 5 // 0.5 .EQU DEFAULT_SETTING_HYST = 15 // 1.5
.EQU HEAT_MODE = 1 .EQU HEAT_MODE = 1
.EQU COOLING_MODE = 0 .EQU COOLING_MODE = 0

View File

@ -7,65 +7,68 @@
:10004A000F931F935FB74091670045300CF403C0CC :10004A000F931F935FB74091670045300CF403C0CC
:10005A00442740936700403081F493989498959888 :10005A00442740936700403081F493989498959888
:10006A000EF002C00BE002C000916500002311F0FF :10006A000EF002C00BE002C000916500002311F0FF
:10007A00929A01C0929898D113D1413081F4929802 :10007A00929A01C09298B0D12BD1413081F49298D2
:10008A00949895980091640030916500032B11F0C3 :10008A00949895980091640030916500032B11F0C3
:10009A00939A01C093980091640086D101D14230AD :10009A00939A01C09398009164009ED119D142307D
:1000AA0059F4929893989598949A009163007CD108 :1000AA0059F4929893989598949A0091630094D1F0
:1000BA00002D0F77002EF4D0433041F49298939894 :1000BA00002D0F77002E0CD1433041F4929893987B
:1000CA009498959A00916B006FD1EAD0439540932A :1000CA009498959A00916B0087D102D143954093F9
:1000DA0067005FBF1F910F915F914F9118950FEDC8 :1000DA0067005FBF1F910F915F914F9118950FEDC8
:1000EA000DBF0FE701BB01EE07BB0CE108BB02E045 :1000EA000DBF0FE701BB01EE07BB0CE108BB02E045
:1000FA0000BF05E003BF09E106BF00E20BBF0CE148 :1000FA0000BF05E003BF09E106BF00E20BBF0CE148
:10010A0000BD11241092670000E0009360000DE129 :10010A0000BD11241092670000E00093600000E037
:10011A0000936C0005E000936D0005E000936E000B :10011A0000936C0005E000936D000FE000936E0001
:10012A0001E000936F0000270093690000936A00C2 :10012A0001E000936F0000270093690000936A00C2
:10013A0000EF00936B0050D000917000003109F479 :10013A0000EF00936B006ED000917000083209F452
:10014A0005C012E0109360003ED101C038D180E0B2 :10014A0005C012E01093600056D101C050D180E082
:10015A0090E000916000003031F496980BD129D0DC :10015A0090E000916000003031F4969823D147D0A6
:10016A0001E009BF25D0013019F4969803D1A4D033 :10016A0001E009BF1CD0013019F496981BD1BCD00C
:10017A00023079F7969A1BE010936300109364009B :10017A00023079F7969AEDCFEE24FF1841E1001F7D
:10018A001093650010936600E4CFEE24FF1841E156 :10018A00111F4A9509F40895EE1CFF1CE21AF30A9E
:10019A00001F111F4A9509F40895EE1CFF1CE21A6C :10019A0020F4E20EF31E8894F2CF0894F0CF0F9366
:1001AA00F30A20F4E20EF31E8894F2CF0894F0CFFB :1001AA001F932F933F934F935F936F93009169002F
:1001BA0008951F936BD05CE034E34DEF1FD15CE0F0 :1001BA0010916A0020916B003CE140E250916F007F
:1001CA0034E34DEF1BD118D010916900812F1091A3 :1001CA000EF001C00195552309F409C030170CF44B
:1001DA006A00912F1F9108950F937CD00CEC802E0A :1001DA0002C0909A04C004170CF401C090986F9161
:1001EA008ED00EEB802E8BD0A0E7B0E008E0A8D02E :1001EA005F914F913F912F911F910F9108951F9306
:1001FA000A95E9F70F9108950F931F932F933F9351 :1001FA0065D05CE034E34DEF19D15CE034E34DEFB8
:10020A004F9368D00CEC802E7AD00EEB802E77D0EC :10020A0015D112D010916900812F10916A00912F97
:10021A00A9E6B0E095D0AAE6B0E092D010916900C4 :10021A001F9108950F9376D003E3802E88D0A0E72C
:10022A0020916A002F93287F283F11F0E89409C093 :10022A00B0E0A6D00F9108950F931F932F933F9399
:10023A002F9168941095209531E0130F30E0231F19 :10023A004F9368D00CEC802E7AD00EEB802E77D0BC
:10024A0001C02F91269517952695179526951795EE :10024A00A9E6B0E095D0AAE6B0E092D01091690094
:10025A0026951795309169000EF43195432F3F701A :10025A0020916A002F93287F283F11F0E89409C063
:10026A00432F330F330F330F440F340F3695369520 :10026A002F9168941095209531E0130F30E0231FE9
:10027A00369536951093690020936A0030936B0087 :10027A0001C02F91269517952695179526951795BE
:10028A004F913F912F911F910F9108950F9322D073 :10028A0026951795309169000EF43195432F3F70EA
:10029A000CEC802E34D004E4802E31D00F910895D6 :10029A00432F330F330F330F440F340F36953695F0
:1002AA000F930FB800E40EB90BE10DB9769BFDCFA1 :1002AA00369536951093690020936A0030936B0057
:1002BA00C09AC0980F9108950F938CD0B29B019663 :1002BA004F913F912F911F910F9108950F9322D043
:1002CA00B39B0197B49B01C003C000E00093600098 :1002CA000CEC802E34D004E4802E31D00F910895A6
:1002DA000F910895F894B99A33E04EEB8BD0B99800 :1002DA000F930FB800E40EB90BE10DB9769BFDCF71
:1002EA0030E04AE887D005D033E042E383D07894FF :1002EA00C09AC0980F9108950F938CD0B29B019633
:1002FA000895B19B716002C0B1997E7F08950F93F2 :1002FA00B39B0197B49B01C003C000E00093600068
:10030A001F93082D18E0069508F458F0F894B99A46 :10030A000F910895F894B99A33E04EEB8BD0B998CF
:10031A0030E046E76FD0B99830E042E16BD078948C :10031A0030E04AE887D005D033E042E383D07894CE
:10032A000AC0F894B99A30E04AE064D0B99830E04B :10032A000895B19B716002C0B1997E7F08950F93C1
:10033A004EE760D078941A9531F71F910F9108957E :10033A001F93082D18E0069508F458F0F894B99A16
:10034A000F931F93002718E0F8940695B99A30E0A6 :10034A0030E046E76FD0B99830E042E16BD078945C
:10035A004AE050D0B99830E040E14CD0B1990068F9 :10035A000AC0F894B99A30E04AE064D0B99830E01B
:10036A0030E04CE647D01A9581F70C9378941F91A8 :10036A004EE760D078941A9531F71F910F9108954E
:10037A000F910895F8945F9354E0A3E6B0E0809358 :10037A000F931F93002718E0F8940695B99A30E076
:10038A0061009093620000916100109162002AE07E :10038A004AE050D0B99830E040E14CD0B1990068C9
:10039A0030E0FBDEED9200936100109362005A9503 :10039A0030E04CE647D01A9581F70C9378941F9178
:1003AA0091F75F91789408950F931F93E0E3F4E037 :1003AA000F910895F8945F9354E0A3E6B0E0809328
:1003BA001127E00FF11F04901F910F910895C59A1C :1003BA0061009093620000916100109162002AE04E
:1003CA0022D0C5980895C59A1ED01DD01CD01BD026 :1003CA0030E0DADEED9200936100109362005A95F4
:1003DA00C59808950F931F932F932AE01FEF0FEFED :1003DA0091F75F91789408950F931F93E0E6F4E004
:1003EA000A95F1F71A95D9F72A95C1F72F911F9116 :1003EA001127E00FF11F04901F910F910895C59AEC
:1003FA000F91089541503040E8F708954150304038 :1003FA0022D0C5980895C59A1ED01DD01CD01BD0F6
:10040A005040E0F708950F931F932F9326E00FEFC4 :10040A00C59808950F931F932F932AE01FEF0FEFBC
:10041A001FEF1A95F1F70A95D9F72A95C1F72F9187 :10041A000A95F1F71A95D9F72A95C1F72F911F91E5
:10042A001F910F910895C0F9A4B0999282F8809013 :10042A000F91089541503040E8F708954150304007
:02043A009CBF65 :10043A005040E0F708950F931F932F9326E00FEF94
:10044A001FEF1A95F1F70A95D9F72A95C1F72F9157
:10045A001F910F910895C0F9A4B0999282F88090E3
:02046A009CBF35
: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 Sat Jun 24 17:26:02 2023 AVRASM ver. 2.2.7 main.asm Sun Jun 25 15:01:25 2023
EQU SIGNATURE_000 0000001e EQU SIGNATURE_000 0000001e
@ -526,9 +526,9 @@ 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_SETTING_INT 0000001d EQU DEFAULT_SETTING_INT 00000000
EQU DEFAULT_SETTING_F 00000005 EQU DEFAULT_SETTING_F 00000005
EQU DEFAULT_SETTING_HYST 00000005 EQU DEFAULT_SETTING_HYST 0000000f
EQU HEAT_MODE 00000001 EQU HEAT_MODE 00000001
EQU COOLING_MODE 00000000 EQU COOLING_MODE 00000000
EQU DEFAULT_SETTING_MODE 00000001 EQU DEFAULT_SETTING_MODE 00000001
@ -553,25 +553,25 @@ CSEG _INTO_PROGRAM_STATE 0000001a
CSEG _CLR_CURRENT_DIGIT 0000002d CSEG _CLR_CURRENT_DIGIT 0000002d
CSEG _indicate_1 00000030 CSEG _indicate_1 00000030
CSEG _indicate_2 00000042 CSEG _indicate_2 00000042
CSEG DISPLAY_DECODER 000001d9 CSEG DISPLAY_DECODER 000001f1
CSEG USI_TRANSMIT 00000155 CSEG USI_TRANSMIT 0000016d
CSEG _indicate_3 00000054 CSEG _indicate_3 00000054
CSEG _indicate_4 00000061 CSEG _indicate_4 00000061
CSEG _indicate_exit 0000006b CSEG _indicate_exit 0000006b
CSEG MCU_INIT 00000076 CSEG MCU_INIT 00000076
CSEG RD_F_CODE 000000f1 CSEG RD_F_CODE 0000010f
CSEG ERR_FAMILY_CODE 000000a6 CSEG ERR_FAMILY_CODE 000000a6
CSEG START_PROGRAM 000000ab CSEG START_PROGRAM 000000ab
CSEG BEEP_LONG 000001e8 CSEG BEEP_LONG 00000200
CSEG BEEP_SHORT 000001e4 CSEG BEEP_SHORT 000001fc
CSEG LOOP 000000ae CSEG LOOP 000000ae
CSEG _STATE_DEFAULT 000000b0 CSEG _STATE_DEFAULT 000000b0
CSEG _STATE_PROGRAM 000000b8 CSEG _STATE_PROGRAM 000000b8
CSEG DISPLAY_UPD_DIGITS 000001bf CSEG DISPLAY_UPD_DIGITS 000001d7
CSEG TEMP_UPD 000000de CSEG TEMP_UPD 000000fc
CSEG TEMP_COMPARSION 000000dd CSEG TEMP_COMPARSION 000000d4
CSEG _STATE_ERROR 000000bd CSEG _STATE_ERROR 000000bd
CSEG SW_CHECK_PROCESS 00000161 CSEG SW_CHECK_PROCESS 00000179
DEF drem16uL r14 DEF drem16uL r14
DEF drem16uH r15 DEF drem16uH r15
DEF dres16uL r16 DEF dres16uL r16
@ -581,42 +581,45 @@ 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 000000c1
CSEG d16u_1 000000cd CSEG d16u_1 000000c4
CSEG d16u_2 000000d2 CSEG d16u_2 000000c9
CSEG d16u_3 000000db CSEG d16u_3 000000d2
CSEG TEMP_CONV 0000014b CSEG _HEATING_MODE 000000eb
CSEG DELAY_LOOP_24 00000203 CSEG _COMPARSION_EXIT 000000f4
CSEG TEMP_RD 00000101 CSEG _HEATING_ON 000000ee
CSEG OW_PRESENCE 0000016f CSEG _HEATING_OFF 000000f0
CSEG OW_SEND_BYTE 00000184 CSEG TEMP_CONV 00000163
CSEG _RD_L 000000fc CSEG DELAY_LOOP_24 0000021b
CSEG OW_RD_BYTE 000001a5 CSEG TEMP_RD 00000119
CSEG _TEMP_RD_TO_UNSIGNED 0000011d CSEG OW_PRESENCE 00000187
CSEG _TEMP_RD_CONTINUE 00000126 CSEG OW_SEND_BYTE 0000019c
CSEG _TEMP_RD_END 0000012f CSEG OW_RD_BYTE 000001bd
CSEG _USI_TRANSMIT_LOOP 0000015a CSEG _TEMP_RD_TO_UNSIGNED 00000135
CSEG DEBOUNCE_SW 000001ef CSEG _TEMP_RD_CONTINUE 0000013e
CSEG _INTO_DEFAULT_STATE 0000016a CSEG _TEMP_RD_END 00000147
CSEG _SW_CHECK_PROCESS_END 0000016d CSEG _USI_TRANSMIT_LOOP 00000172
CSEG DELAY_LOOP_16 000001ff CSEG DEBOUNCE_SW 00000207
CSEG OW_CHECK_PRESENCE 0000017e CSEG _INTO_DEFAULT_STATE 00000182
CSEG _EXIT 00000183 CSEG _SW_CHECK_PROCESS_END 00000185
CSEG _OW_SEND_BYTE_LOOP 00000188 CSEG DELAY_LOOP_16 00000217
CSEG _OW_SEND_0 0000018b CSEG OW_CHECK_PRESENCE 00000196
CSEG _OW_SEND_1 00000196 CSEG _EXIT 0000019b
CSEG _OW_SEND_BYTE_END 000001a0 CSEG _OW_SEND_BYTE_LOOP 000001a0
CSEG _OW_RD_BYTE_LP 000001aa CSEG _OW_SEND_0 000001a3
CSEG _OW_SEND_1 000001ae
CSEG _OW_SEND_BYTE_END 000001b8
CSEG _OW_RD_BYTE_LP 000001c2
EQU dividend 00000061 EQU dividend 00000061
EQU divisor 0000000a EQU divisor 0000000a
CSEG DIV_LOOP 000001c8 CSEG DIV_LOOP 000001e0
CSEG DISPLAY_SYMBOLS 00000218 CSEG DISPLAY_SYMBOLS 00000230
CSEG DELAY 00000208 CSEG DELAY 00000220
CSEG _loop_2 000001f3 CSEG _loop_2 0000020b
CSEG _loop_0 000001f4 CSEG _loop_0 0000020c
CSEG _dec_0 000001f5 CSEG _dec_0 0000020d
CSEG _loop_1 000001f7 CSEG _loop_1 0000020f
CSEG _loop_3 000001f9 CSEG _loop_3 00000211
CSEG _DELAY_0 0000020c CSEG _DELAY_0 00000224
CSEG _DELAY_1 0000020d CSEG _DELAY_1 00000225
CSEG _DELAY_2 0000020e CSEG _DELAY_2 00000226

View File

@ -45,61 +45,64 @@
<_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>106</LINE></_CLR_CURRENT_DIGIT> <_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>106</LINE></_CLR_CURRENT_DIGIT>
<_indicate_1><FILE>main.asm</FILE><LINE>110</LINE></_indicate_1> <_indicate_1><FILE>main.asm</FILE><LINE>110</LINE></_indicate_1>
<_indicate_2><FILE>main.asm</FILE><LINE>130</LINE></_indicate_2> <_indicate_2><FILE>main.asm</FILE><LINE>130</LINE></_indicate_2>
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>710</LINE></DISPLAY_DECODER> <DISPLAY_DECODER><FILE>main.asm</FILE><LINE>674</LINE></DISPLAY_DECODER>
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>523</LINE></USI_TRANSMIT> <USI_TRANSMIT><FILE>main.asm</FILE><LINE>487</LINE></USI_TRANSMIT>
<_indicate_3><FILE>main.asm</FILE><LINE>148</LINE></_indicate_3> <_indicate_3><FILE>main.asm</FILE><LINE>148</LINE></_indicate_3>
<_indicate_4><FILE>main.asm</FILE><LINE>164</LINE></_indicate_4> <_indicate_4><FILE>main.asm</FILE><LINE>164</LINE></_indicate_4>
<_indicate_exit><FILE>main.asm</FILE><LINE>176</LINE></_indicate_exit> <_indicate_exit><FILE>main.asm</FILE><LINE>176</LINE></_indicate_exit>
<MCU_INIT><FILE>main.asm</FILE><LINE>195</LINE></MCU_INIT> <MCU_INIT><FILE>main.asm</FILE><LINE>195</LINE></MCU_INIT>
<RD_F_CODE><FILE>main.asm</FILE><LINE>386</LINE></RD_F_CODE> <RD_F_CODE><FILE>main.asm</FILE><LINE>359</LINE></RD_F_CODE>
<ERR_FAMILY_CODE><FILE>main.asm</FILE><LINE>247</LINE></ERR_FAMILY_CODE> <ERR_FAMILY_CODE><FILE>main.asm</FILE><LINE>247</LINE></ERR_FAMILY_CODE>
<START_PROGRAM><FILE>main.asm</FILE><LINE>252</LINE></START_PROGRAM> <START_PROGRAM><FILE>main.asm</FILE><LINE>252</LINE></START_PROGRAM>
<BEEP_LONG><FILE>main.asm</FILE><LINE>734</LINE></BEEP_LONG> <BEEP_LONG><FILE>main.asm</FILE><LINE>698</LINE></BEEP_LONG>
<BEEP_SHORT><FILE>main.asm</FILE><LINE>726</LINE></BEEP_SHORT> <BEEP_SHORT><FILE>main.asm</FILE><LINE>690</LINE></BEEP_SHORT>
<LOOP><FILE>main.asm</FILE><LINE>261</LINE></LOOP> <LOOP><FILE>main.asm</FILE><LINE>261</LINE></LOOP>
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>265</LINE></_STATE_DEFAULT> <_STATE_DEFAULT><FILE>main.asm</FILE><LINE>265</LINE></_STATE_DEFAULT>
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>273</LINE></_STATE_PROGRAM> <_STATE_PROGRAM><FILE>main.asm</FILE><LINE>273</LINE></_STATE_PROGRAM>
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>669</LINE></DISPLAY_UPD_DIGITS> <DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>633</LINE></DISPLAY_UPD_DIGITS>
<TEMP_UPD><FILE>main.asm</FILE><LINE>369</LINE></TEMP_UPD> <TEMP_UPD><FILE>main.asm</FILE><LINE>342</LINE></TEMP_UPD>
<TEMP_COMPARSION><FILE>main.asm</FILE><LINE>296</LINE></TEMP_COMPARSION> <TEMP_COMPARSION><FILE>main.asm</FILE><LINE>290</LINE></TEMP_COMPARSION>
<_STATE_ERROR><FILE>main.asm</FILE><LINE>279</LINE></_STATE_ERROR> <_STATE_ERROR><FILE>main.asm</FILE><LINE>279</LINE></_STATE_ERROR>
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>554</LINE></SW_CHECK_PROCESS> <SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>518</LINE></SW_CHECK_PROCESS>
<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>
<d16u_3><FILE>div16u.asm</FILE><LINE>52</LINE></d16u_3> <d16u_3><FILE>div16u.asm</FILE><LINE>52</LINE></d16u_3>
<TEMP_CONV><FILE>main.asm</FILE><LINE>503</LINE></TEMP_CONV> <_HEATING_MODE><FILE>main.asm</FILE><LINE>319</LINE></_HEATING_MODE>
<DELAY_LOOP_24><FILE>main.asm</FILE><LINE>777</LINE></DELAY_LOOP_24> <_COMPARSION_EXIT><FILE>main.asm</FILE><LINE>331</LINE></_COMPARSION_EXIT>
<TEMP_RD><FILE>main.asm</FILE><LINE>411</LINE></TEMP_RD> <_HEATING_ON><FILE>main.asm</FILE><LINE>323</LINE></_HEATING_ON>
<OW_PRESENCE><FILE>main.asm</FILE><LINE>578</LINE></OW_PRESENCE> <_HEATING_OFF><FILE>main.asm</FILE><LINE>326</LINE></_HEATING_OFF>
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>605</LINE></OW_SEND_BYTE> <TEMP_CONV><FILE>main.asm</FILE><LINE>467</LINE></TEMP_CONV>
<_RD_L><FILE>main.asm</FILE><LINE>402</LINE></_RD_L> <DELAY_LOOP_24><FILE>main.asm</FILE><LINE>742</LINE></DELAY_LOOP_24>
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>638</LINE></OW_RD_BYTE> <TEMP_RD><FILE>main.asm</FILE><LINE>375</LINE></TEMP_RD>
<_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>446</LINE></_TEMP_RD_TO_UNSIGNED> <OW_PRESENCE><FILE>main.asm</FILE><LINE>542</LINE></OW_PRESENCE>
<_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>457</LINE></_TEMP_RD_CONTINUE> <OW_SEND_BYTE><FILE>main.asm</FILE><LINE>569</LINE></OW_SEND_BYTE>
<_TEMP_RD_END><FILE>main.asm</FILE><LINE>467</LINE></_TEMP_RD_END> <OW_RD_BYTE><FILE>main.asm</FILE><LINE>602</LINE></OW_RD_BYTE>
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>541</LINE></_USI_TRANSMIT_LOOP> <_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>410</LINE></_TEMP_RD_TO_UNSIGNED>
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>744</LINE></DEBOUNCE_SW> <_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>421</LINE></_TEMP_RD_CONTINUE>
<_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>567</LINE></_INTO_DEFAULT_STATE> <_TEMP_RD_END><FILE>main.asm</FILE><LINE>431</LINE></_TEMP_RD_END>
<_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>570</LINE></_SW_CHECK_PROCESS_END> <_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>505</LINE></_USI_TRANSMIT_LOOP>
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>770</LINE></DELAY_LOOP_16> <DEBOUNCE_SW><FILE>main.asm</FILE><LINE>708</LINE></DEBOUNCE_SW>
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>594</LINE></OW_CHECK_PRESENCE> <_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>531</LINE></_INTO_DEFAULT_STATE>
<_EXIT><FILE>main.asm</FILE><LINE>600</LINE></_EXIT> <_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>534</LINE></_SW_CHECK_PROCESS_END>
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>610</LINE></_OW_SEND_BYTE_LOOP> <DELAY_LOOP_16><FILE>main.asm</FILE><LINE>734</LINE></DELAY_LOOP_16>
<_OW_SEND_0><FILE>main.asm</FILE><LINE>614</LINE></_OW_SEND_0> <OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>558</LINE></OW_CHECK_PRESENCE>
<_OW_SEND_1><FILE>main.asm</FILE><LINE>622</LINE></_OW_SEND_1> <_EXIT><FILE>main.asm</FILE><LINE>564</LINE></_EXIT>
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>629</LINE></_OW_SEND_BYTE_END> <_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>574</LINE></_OW_SEND_BYTE_LOOP>
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>644</LINE></_OW_RD_BYTE_LP> <_OW_SEND_0><FILE>main.asm</FILE><LINE>578</LINE></_OW_SEND_0>
<DIV_LOOP><FILE>main.asm</FILE><LINE>686</LINE></DIV_LOOP> <_OW_SEND_1><FILE>main.asm</FILE><LINE>586</LINE></_OW_SEND_1>
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>810</LINE></DISPLAY_SYMBOLS> <_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>593</LINE></_OW_SEND_BYTE_END>
<DELAY><FILE>main.asm</FILE><LINE>785</LINE></DELAY> <_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>608</LINE></_OW_RD_BYTE_LP>
<_loop_2><FILE>main.asm</FILE><LINE>750</LINE></_loop_2> <DIV_LOOP><FILE>main.asm</FILE><LINE>650</LINE></DIV_LOOP>
<_loop_0><FILE>main.asm</FILE><LINE>752</LINE></_loop_0> <DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>776</LINE></DISPLAY_SYMBOLS>
<_dec_0><FILE>main.asm</FILE><LINE>754</LINE></_dec_0> <DELAY><FILE>main.asm</FILE><LINE>751</LINE></DELAY>
<_loop_1><FILE>main.asm</FILE><LINE>757</LINE></_loop_1> <_loop_2><FILE>main.asm</FILE><LINE>714</LINE></_loop_2>
<_loop_3><FILE>main.asm</FILE><LINE>760</LINE></_loop_3> <_loop_0><FILE>main.asm</FILE><LINE>716</LINE></_loop_0>
<_DELAY_0><FILE>main.asm</FILE><LINE>791</LINE></_DELAY_0> <_dec_0><FILE>main.asm</FILE><LINE>718</LINE></_dec_0>
<_DELAY_1><FILE>main.asm</FILE><LINE>793</LINE></_DELAY_1> <_loop_1><FILE>main.asm</FILE><LINE>721</LINE></_loop_1>
<_DELAY_2><FILE>main.asm</FILE><LINE>795</LINE></_DELAY_2> <_loop_3><FILE>main.asm</FILE><LINE>724</LINE></_loop_3>
<_DELAY_0><FILE>main.asm</FILE><LINE>757</LINE></_DELAY_0>
<_DELAY_1><FILE>main.asm</FILE><LINE>759</LINE></_DELAY_1>
<_DELAY_2><FILE>main.asm</FILE><LINE>761</LINE></_DELAY_2>
</LABELS> </LABELS>
</ASSEMBLER_INFO> </ASSEMBLER_INFO>

134
main.asm
View File

@ -240,7 +240,7 @@ MCU_INIT:
rcall RD_F_CODE ; проверяем что датчик есть на шине rcall RD_F_CODE ; проверяем что датчик есть на шине
lds r16, DEVICE_FAMILY_CODE lds r16, DEVICE_FAMILY_CODE
cpi r16, 0x10 cpi r16, 0x28 ; код семейства для DS18B20 = 0x28
brne ERR_FAMILY_CODE brne ERR_FAMILY_CODE
rjmp START_PROGRAM rjmp START_PROGRAM
@ -280,12 +280,6 @@ _STATE_ERROR:
cpi r16, MCU_STATE_ERROR cpi r16, MCU_STATE_ERROR
brne LOOP brne LOOP
sbi LED_ERR_PORT, LED_ERR_PIN 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
rjmp LOOP rjmp LOOP
//</editor-fold> //</editor-fold>
@ -294,75 +288,54 @@ _STATE_ERROR:
.INCLUDE "div16u.asm" .INCLUDE "div16u.asm"
TEMP_COMPARSION: TEMP_COMPARSION:
; push r16 push r16
; push r17 push r17
; push r18 push r18
; push r19 push r19
; push r20 push r20
; push r21 push r21
; push r22 push r22
;
; lds r16, TEMP_L lds r16, TEMP_L
; lds r17, TEMP_H // всегда 0? lds r17, TEMP_H // всегда 0?
; lds r18, TEMP_F lds r18, TEMP_F
; lds r19, SETTING_INT ; lds r19, SETTING_INT
; lds r20, SETTING_F ; lds r20, SETTING_F
; lds r21, SETTING_MODE
;
; brtc _START_COMPARSION
; neg r19 ldi r19, 28 ; min
; ldi r20, 32 ; max
;_START_COMPARSION: lds r21, SETTING_MODE ; mode
; tst r21
; brne _HEATING brts PC+2
;_COOLING: rjmp PC+2
; rjmp _COMPARSION_EXIT neg r16
;_HEATING:
; cp r16, r19 tst r21
; brge _HEATING_GREATER_OR_E ; если целая часть текущей температуры <= уставки - продолжаем сравнение brne _HEATING_MODE
; brtc PC+3 rjmp _COMPARSION_EXIT
; relay_off
; rjmp PC+2 _HEATING_MODE:
; relay_on ; c cp r19, r16
; rjmp _COMPARSION_EXIT brge _HEATING_ON ; TEMP <= MIN
;_HEATING_GREATER_OR_E: rjmp _HEATING_OFF
; cp r16, r19 _HEATING_ON:
; breq _HEATING_GREATER_E relay_on
; brtc PC+3 rjmp _COMPARSION_EXIT
; relay_on _HEATING_OFF:
; rjmp PC+2 cp r16, r20
; relay_off ; c brge PC+2 ; TEMP >= MAX
; rjmp _COMPARSION_EXIT rjmp _COMPARSION_EXIT
;_HEATING_GREATER_E: relay_off
; brtc PC+3 _COMPARSION_EXIT:
; relay_off pop r22
; rjmp PC+2 pop r21
; relay_on ; c pop r20
; cp r18, r20 pop r19
; brge PC+2 ; если дробная часть текущей температуры >= уставки - выключаем реле pop r18
; rjmp _COMPARSION_EXIT pop r17
;_HEATING_GREATER_OR_E_F: pop r16
; cp r18, r20
; breq _HEATING_GREATER_E_F
; brtc PC+3
; relay_on
; rjmp PC+2
; relay_off ; c
; rjmp _COMPARSION_EXIT
;_HEATING_GREATER_E_F:
; brtc PC+3
; relay_on
; rjmp PC+2
; relay_off ; c
;
;_COMPARSION_EXIT:
; pop r22
; pop r21
; pop r20
; pop r19
; pop r18
; pop r17
; pop r16
ret ret
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: обновляем данные о температуре"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: обновляем данные о температуре">
@ -387,22 +360,13 @@ RD_F_CODE:
push r16 push r16
rcall OW_PRESENCE rcall OW_PRESENCE
ldi r16, DS18B20_CMD_SKIPROM ldi r16, DS18B20_CMD_READROM
mov OW_CMD_r, r16
rcall OW_SEND_BYTE
ldi r16, DS18B20_CMD_RSCRATCHPAD
mov OW_CMD_r, r16 mov OW_CMD_r, r16
rcall OW_SEND_BYTE rcall OW_SEND_BYTE
ldi XL, LOW(DEVICE_FAMILY_CODE) ldi XL, LOW(DEVICE_FAMILY_CODE)
ldi XH, HIGH(DEVICE_FAMILY_CODE) ldi XH, HIGH(DEVICE_FAMILY_CODE)
ldi r16, 8
_RD_L:
rcall OW_RD_BYTE rcall OW_RD_BYTE
dec r16
brne _RD_L
pop r16 pop r16
ret//</editor-fold> ret//</editor-fold>
@ -774,12 +738,14 @@ DELAY_LOOP_16:
ret ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка (24бит макс число)">
DELAY_LOOP_24: DELAY_LOOP_24:
subi DELAY_8_r, 1 subi DELAY_8_r, 1
sbci DELAY_16_r, 0 sbci DELAY_16_r, 0
sbci DELAY_24_r, 0 sbci DELAY_24_r, 0
brcc DELAY_LOOP_24 brcc DELAY_LOOP_24
ret ret
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка">
DELAY: DELAY: