This commit is contained in:
Sergey Yarkov 2023-06-23 16:43:04 +03:00
parent ab5a9cedf6
commit 29c3c316aa
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
10 changed files with 782 additions and 758 deletions

View File

@ -1,7 +1,6 @@
ОСНОВНОЕ: ОСНОВНОЕ:
- сделать подпрограмму, которая будет проверять флаг включен сейчас индикатор или выключен и вызывать ее в гл.цикле
- сделать подпрограмму, которая будет проверять текущую температуру с уставкой учитывая гистерезис - сделать подпрограмму, которая будет проверять текущую температуру с уставкой учитывая гистерезис
- сделать подпрограмму, которя будет опрашивать кнопки и в зависимости от нажатия переключють состояние программы - сделать подпрограмму, которя будет опрашивать кнопки и в зависимости от нажатия переключють состояние программы
- сделать программу, которая будет сохранять уставку температуры и гистерезис в EEPROM (перед инициализации МК - сделать программу, которая будет сохранять уставку температуры и гистерезис в EEPROM (перед инициализации МК

View File

@ -4,6 +4,7 @@
.DEF TEMP_REG_B = r17 .DEF TEMP_REG_B = r17
.DEF DELAY_16_r = r19 .DEF DELAY_16_r = r19
.DEF DELAY_8_r = r20 .DEF DELAY_8_r = r20
.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 числа которое сейчас на индикаторе

View File

@ -1,64 +1,65 @@
:020000020000FC :020000020000FC
:0200000074C0CA :0200000073C0CB
:0200160018953B :0200160018953B
:10001A0016C018950F931F932F933F930FB7B49958 :10001A0015C00F931F932F933F930FB7B49908C03E
:10002A0008C020916000203009F003C011E010934D :10002A0020916000203009F003C011E010936000B5
:10003A0060000FBF3F912F911F910F9118954F9319 :10003A000FBF3F912F911F910F9118954F935F9387
:10004A005F930F931F935FB74091670045300CF49D :10004A000F931F935FB74091670045300CF403C0CC
:10005A0003C0442740936700403081F493989498F2 :10005A00442740936700403081F493989498959888
:10006A0095980EF002C00BE002C0009165000023D3 :10006A000EF002C00BE002C000916500002311F0FF
:10007A0011F0929A01C0929867D1E2D0413081F48E :10007A00929A01C092986BD1E6D0413081F492985D
:10008A009298949895980091640030916500032B9A :10008A00949895980091640030916500032B11F0C3
:10009A0011F0939A01C093980091640055D1D0D081 :10009A00939A01C093980091640059D1D4D0423008
:1000AA00423059F4929893989598949A00916300E3 :1000AA0059F4929893989598949A009163004FD135
:1000BA004BD1002D0F77002EC3D0433041F49298D4 :1000BA00002D0F77002EC7D0433041F492989398C1
:1000CA0093989498959A00916C003ED1B9D0439533 :1000CA009498959A00916C0042D1BDD04395409383
:1000DA00409367005FBF1F910F915F914F911895F1 :1000DA0067005FBF1F910F915F914F9118950FEDC8
:1000EA000FED0DBF0FE701BB01EE07BB0CE108BB2B :1000EA000DBF0FE701BB01EE07BB0CE108BB02E045
:1000FA0002E000BF05E003BF09E106BF00E20BBF53 :1000FA0000BF05E003BF09E106BF00E20BBF0CE148
:10010A000CE100BD11241092670000E0009360002A :10010A0000BD11241092670000E0009360000027F0
:10011A00002700936A0000936B0000EF00936C00C5 :10011A0000936A0000936B0000EF00936C0022D1F9
:10012A001ED180E090E000916000003081F4969842 :10012A0080E090E000916000003029F49698F5D0C4
:10013A00F1D07CD01FD11ED12FD010916A00812F0F :10013A0027D001E009BF013019F49698EED08FD08C
:10014A0010916B00912F0F9301E009BF0F910130BD :10014A00023081F7969A1BE01093630010936400C3
:10015A0019F49698DFD080D0023029F7969A1BE0DE :10015A001093650010936600E5CFEE24FF1841E185
:10016A001093630010936400109365001093660067 :10016A00001F111F4A9509F40895EE1CFF1CE21A9C
:10017A00DACFEE24FF1841E1001F111F4A9509F456 :10017A00F30A20F4E20EF31E8894F2CF0894F0CF2B
:10018A000895EE1CFF1CE21AF30A20F4E20EF31E95 :10018A001F9357D052E13DE84DEF0BD108D01091A3
:10019A008894F2CF0894F0CF0F931F932F933F9335 :10019A006A00812F10916B00912F1F9108950F9380
:1001AA004F9368D00CEC802E7AD00EEB802E77D04D :1001AA001F932F933F934F9368D00CEC802E7AD0F5
:1001BA00AAE6B0E095D0ABE6B0E092D010916A0022 :1001BA000EEB802E77D0AAE6B0E095D0ABE6B0E0A1
:1001CA0020916B002F93287F283F11F0E89409C0F3 :1001CA0092D010916A0020916B002F93287F283FCC
:1001DA002F9168941095209531E0130F30E0231F7A :1001DA0011F0E89409C02F9168941095209531E0A8
:1001EA0001C02F912695179526951795269517954F :1001EA00130F30E0231F01C02F91269517952695EE
:1001FA002695179530916A000EF43195432F3F707A :1001FA001795269517952695179530916A000EF44E
:10020A00432F330F330F330F440F340F3695369580 :10020A003195432F3F70432F330F330F330F440F72
:10021A003695369510936A0020936B0030936C00E4 :10021A00340F369536953695369510936A002093A5
:10022A004F913F912F911F910F9108950F9322D0D3 :10022A006B0030936C004F913F912F911F910F916A
:10023A000CEC802E34D004E4802E31D00F91089536 :10023A0008950F9322D00CEC802E34D004E4802E43
:10024A000F930FB800E40EB90BE10DB9769BFDCF01 :10024A0031D00F9108950F930FB800E40EB90BE166
:10025A00C09AC0980F9108950F938CD0B29B0196C3 :10025A000DB9769BFDCFC09AC0980F9108950F9360
:10026A00B39B0197B49B01C003C000E000936000F8 :10026A008CD0B29B0196B39B0197B49B01C003C08B
:10027A000F910895F894B99A33E04EEB8BD0B99860 :10027A0000E0009360000F910895F894B99A33E072
:10028A0030E04AE887D005D033E042E383D078945F :10028A004EEB8BD0B99830E04AE887D005D033E0FE
:10029A000895B19B716002C0B1997E7F08950F9352 :10029A0042E383D078940895B19B716002C0B1990A
:1002AA001F93082D18E0069508F458F0F894B99AA7 :1002AA007E7F08950F931F93082D18E0069508F492
:1002BA0030E046E76FD0B99830E042E16BD07894ED :1002BA0058F0F894B99A30E046E76FD0B99830E030
:1002CA000AC0F894B99A30E04AE064D0B99830E0AC :1002CA0042E16BD078940AC0F894B99A30E04AE0D7
:1002DA004EE760D078941A9531F71F910F910895DF :1002DA0064D0B99830E04EE760D078941A9531F737
:1002EA000F931F93002718E0F8940695B99A30E007 :1002EA001F910F9108950F931F93002718E0F89418
:1002FA004AE050D0B99830E040E14CD0B19900685A :1002FA000695B99A30E04AE050D0B99830E040E12A
:10030A0030E04CE647D01A9581F70C9378941F9108 :10030A004CD0B199006830E04CE647D01A9581F795
:10031A000F910895F8945F9354E0A3E6B0E08093B8 :10031A000C9378941F910F910895F8945F9354E089
:10032A0061009093620000916100109162002AE0DE :10032A00A3E6B0E0809361009093620000916100BF
:10033A0030E01FDFED9200936100109362005A953E :10033A00109162002AE030E010DFED920093610034
:10034A0091F75F91789408950F931F93E6ECF3E089 :10034A00109362005A9591F75F91789408950F93EC
:10035A001127E00FF11F04901F910F910895C59A7C :10035A001F93E6EDF3E01127E00FF11F04901F91C0
:10036A001DD0C5980895C59A19D018D017D016D09F :10036A000F910895C59A22D0C5980895C59A1ED0AE
:10037A00C59808950F931F932F932AE01FEF0FEF4D :10037A001DD01CD01BD0C59808950F931F932F939F
:10038A000A95F1F71A95D9F72A95C1F72F911F9176 :10038A002AE01FEF0FEF0A95F1F71A95D9F72A9588
:10039A000F91089541503040E8F708950F931F9345 :10039A00C1F72F911F910F91089541503040E8F70E
:1003AA002F9326E00FEF1FEF1A95F1F70A95D9F769 :1003AA000895415030405040E0F708950F931F934D
:1003BA002A95C1F72F911F910F910895C0F9A4B002 :1003BA002F9326E00FEF1FEF1A95F1F70A95D9F759
:0803CA00999282F880909CBF1B :1003CA002A95C1F72F911F910F910895C0F9A4B0F2
:0803DA00999282F880909CBF0B
:00000001FF :00000001FF

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
AVRASM ver. 2.2.7 main.asm Thu Jun 22 18:27:57 2023 AVRASM ver. 2.2.7 main.asm Fri Jun 23 16:35:36 2023
EQU SIGNATURE_000 0000001e EQU SIGNATURE_000 0000001e
@ -483,6 +483,7 @@ DEF TEMP_REG_A r16
DEF TEMP_REG_B r17 DEF TEMP_REG_B r17
DEF DELAY_16_r r19 DEF DELAY_16_r r19
DEF DELAY_8_r r20 DEF DELAY_8_r r20
DEF DELAY_24_r r21
DEF DISP_NUM_L r24 DEF DISP_NUM_L r24
DEF DISP_NUM_H r25 DEF DISP_NUM_H r25
EQU DIGIT_1_PIN 00000002 EQU DIGIT_1_PIN 00000002
@ -534,30 +535,28 @@ DSEG HYSTERESIS 00000069
DSEG TEMP_L 0000006a DSEG TEMP_L 0000006a
DSEG TEMP_H 0000006b DSEG TEMP_H 0000006b
DSEG TEMP_F 0000006c DSEG TEMP_F 0000006c
CSEG RESET_vect 00000075 CSEG RESET_vect 00000074
CSEG TIMER0_COMPA_vect 00000024 CSEG TIMER0_COMPA_vect 00000023
CSEG PCINT0_vect 0000000e CSEG PCINT0_vect 0000000e
CSEG _PCINT0_vect_end 0000001e CSEG _PCINT0_vect_end 0000001d
CSEG _INTO_PROGRAM_STATE 0000001b CSEG _INTO_PROGRAM_STATE 0000001a
CSEG _CLR_CURRENT_DIGIT 0000002e CSEG _CLR_CURRENT_DIGIT 0000002d
CSEG _indicate_1 00000031 CSEG _indicate_1 00000030
CSEG _indicate_2 00000043 CSEG _indicate_2 00000042
CSEG DISPLAY_DECODER 000001a9 CSEG DISPLAY_DECODER 000001ac
CSEG USI_TRANSMIT 00000125 CSEG USI_TRANSMIT 00000128
CSEG _indicate_3 00000055 CSEG _indicate_3 00000054
CSEG _indicate_4 00000062 CSEG _indicate_4 00000061
CSEG _indicate_exit 0000006c CSEG _indicate_exit 0000006b
CSEG MCU_INIT 00000077 CSEG MCU_INIT 00000076
CSEG BEEP_SHORT 000001b4 CSEG BEEP_SHORT 000001b7
CSEG LOOP 00000098 CSEG LOOP 00000097
CSEG _STATE_DEFAULT 0000009a CSEG _STATE_DEFAULT 00000099
CSEG _STATE_PROGRAM 000000ac CSEG _STATE_PROGRAM 000000a0
CSEG DISPLAY_UPD_DIGITS 0000018f CSEG DISPLAY_UPD_DIGITS 00000192
CSEG TEMP_CONV 0000011b CSEG TEMP_UPD 000000c5
CSEG DEBOUNCE_SW 000001bf CSEG _STATE_ERROR 000000a5
CSEG TEMP_RD 000000d1 CSEG SW_CHECK_PROCESS 00000134
CSEG _STATE_ERROR 000000b1
CSEG SW_CHECK_PROCESS 00000131
DEF drem16uL r14 DEF drem16uL r14
DEF drem16uH r15 DEF drem16uH r15
DEF dres16uL r16 DEF dres16uL r16
@ -567,38 +566,42 @@ DEF dd16uH r17
DEF dv16uL r18 DEF dv16uL r18
DEF dv16uH r19 DEF dv16uH r19
DEF dcnt16u r20 DEF dcnt16u r20
CSEG div16u 000000be CSEG div16u 000000b2
CSEG d16u_1 000000c1 CSEG d16u_1 000000b5
CSEG d16u_2 000000c6 CSEG d16u_2 000000ba
CSEG d16u_3 000000cf CSEG d16u_3 000000c3
CSEG OW_PRESENCE 0000013f CSEG TEMP_CONV 0000011e
CSEG OW_SEND_BYTE 00000154 CSEG DELAY_LOOP_24 000001d6
CSEG OW_RD_BYTE 00000175 CSEG TEMP_RD 000000d4
CSEG _TEMP_RD_TO_UNSIGNED 000000ed CSEG OW_PRESENCE 00000142
CSEG _TEMP_RD_CONTINUE 000000f6 CSEG OW_SEND_BYTE 00000157
CSEG _TEMP_RD_END 000000ff CSEG OW_RD_BYTE 00000178
CSEG _USI_TRANSMIT_LOOP 0000012a CSEG _TEMP_RD_TO_UNSIGNED 000000f0
CSEG _INTO_DEFAULT_STATE 0000013a CSEG _TEMP_RD_CONTINUE 000000f9
CSEG _SW_CHECK_PROCESS_END 0000013d CSEG _TEMP_RD_END 00000102
CSEG DELAY_LOOP_16 000001cf CSEG _USI_TRANSMIT_LOOP 0000012d
CSEG OW_CHECK_PRESENCE 0000014e CSEG DEBOUNCE_SW 000001c2
CSEG _EXIT 00000153 CSEG _INTO_DEFAULT_STATE 0000013d
CSEG _OW_SEND_BYTE_LOOP 00000158 CSEG _SW_CHECK_PROCESS_END 00000140
CSEG _OW_SEND_0 0000015b CSEG DELAY_LOOP_16 000001d2
CSEG _OW_SEND_1 00000166 CSEG OW_CHECK_PRESENCE 00000151
CSEG _OW_SEND_BYTE_END 00000170 CSEG _EXIT 00000156
CSEG _OW_RD_BYTE_LP 0000017a CSEG _OW_SEND_BYTE_LOOP 0000015b
CSEG _OW_SEND_0 0000015e
CSEG _OW_SEND_1 00000169
CSEG _OW_SEND_BYTE_END 00000173
CSEG _OW_RD_BYTE_LP 0000017d
EQU dividend 00000061 EQU dividend 00000061
EQU divisor 0000000a EQU divisor 0000000a
CSEG DIV_LOOP 00000198 CSEG DIV_LOOP 0000019b
CSEG DISPLAY_SYMBOLS 000001e3 CSEG DISPLAY_SYMBOLS 000001eb
CSEG DELAY 000001d3 CSEG DELAY 000001db
CSEG BEEP_LONG 000001b8 CSEG BEEP_LONG 000001bb
CSEG _loop_2 000001c3 CSEG _loop_2 000001c6
CSEG _loop_0 000001c4 CSEG _loop_0 000001c7
CSEG _dec_0 000001c5 CSEG _dec_0 000001c8
CSEG _loop_1 000001c7 CSEG _loop_1 000001ca
CSEG _loop_3 000001c9 CSEG _loop_3 000001cc
CSEG _DELAY_0 000001d7 CSEG _DELAY_0 000001df
CSEG _DELAY_1 000001d8 CSEG _DELAY_1 000001e0
CSEG _DELAY_2 000001d9 CSEG _DELAY_2 000001e1

View File

@ -33,62 +33,64 @@
<TEMP_L><FILE>main.asm</FILE><LINE>30</LINE></TEMP_L> <TEMP_L><FILE>main.asm</FILE><LINE>30</LINE></TEMP_L>
<TEMP_H><FILE>main.asm</FILE><LINE>31</LINE></TEMP_H> <TEMP_H><FILE>main.asm</FILE><LINE>31</LINE></TEMP_H>
<TEMP_F><FILE>main.asm</FILE><LINE>32</LINE></TEMP_F> <TEMP_F><FILE>main.asm</FILE><LINE>32</LINE></TEMP_F>
<RESET_vect><FILE>main.asm</FILE><LINE>186</LINE></RESET_vect> <RESET_vect><FILE>main.asm</FILE><LINE>185</LINE></RESET_vect>
<TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>91</LINE></TIMER0_COMPA_vect> <TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>90</LINE></TIMER0_COMPA_vect>
<PCINT0_vect><FILE>main.asm</FILE><LINE>53</LINE></PCINT0_vect> <PCINT0_vect><FILE>main.asm</FILE><LINE>53</LINE></PCINT0_vect>
<_PCINT0_vect_end><FILE>main.asm</FILE><LINE>81</LINE></_PCINT0_vect_end> <_PCINT0_vect_end><FILE>main.asm</FILE><LINE>80</LINE></_PCINT0_vect_end>
<_INTO_PROGRAM_STATE><FILE>main.asm</FILE><LINE>77</LINE></_INTO_PROGRAM_STATE> <_INTO_PROGRAM_STATE><FILE>main.asm</FILE><LINE>76</LINE></_INTO_PROGRAM_STATE>
<_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>103</LINE></_CLR_CURRENT_DIGIT> <_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>102</LINE></_CLR_CURRENT_DIGIT>
<_indicate_1><FILE>main.asm</FILE><LINE>107</LINE></_indicate_1> <_indicate_1><FILE>main.asm</FILE><LINE>106</LINE></_indicate_1>
<_indicate_2><FILE>main.asm</FILE><LINE>127</LINE></_indicate_2> <_indicate_2><FILE>main.asm</FILE><LINE>126</LINE></_indicate_2>
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>579</LINE></DISPLAY_DECODER> <DISPLAY_DECODER><FILE>main.asm</FILE><LINE>583</LINE></DISPLAY_DECODER>
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>392</LINE></USI_TRANSMIT> <USI_TRANSMIT><FILE>main.asm</FILE><LINE>396</LINE></USI_TRANSMIT>
<_indicate_3><FILE>main.asm</FILE><LINE>145</LINE></_indicate_3> <_indicate_3><FILE>main.asm</FILE><LINE>144</LINE></_indicate_3>
<_indicate_4><FILE>main.asm</FILE><LINE>161</LINE></_indicate_4> <_indicate_4><FILE>main.asm</FILE><LINE>160</LINE></_indicate_4>
<_indicate_exit><FILE>main.asm</FILE><LINE>173</LINE></_indicate_exit> <_indicate_exit><FILE>main.asm</FILE><LINE>172</LINE></_indicate_exit>
<MCU_INIT><FILE>main.asm</FILE><LINE>192</LINE></MCU_INIT> <MCU_INIT><FILE>main.asm</FILE><LINE>191</LINE></MCU_INIT>
<BEEP_SHORT><FILE>main.asm</FILE><LINE>595</LINE></BEEP_SHORT> <BEEP_SHORT><FILE>main.asm</FILE><LINE>599</LINE></BEEP_SHORT>
<LOOP><FILE>main.asm</FILE><LINE>234</LINE></LOOP> <LOOP><FILE>main.asm</FILE><LINE>233</LINE></LOOP>
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>238</LINE></_STATE_DEFAULT> <_STATE_DEFAULT><FILE>main.asm</FILE><LINE>237</LINE></_STATE_DEFAULT>
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>256</LINE></_STATE_PROGRAM> <_STATE_PROGRAM><FILE>main.asm</FILE><LINE>244</LINE></_STATE_PROGRAM>
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>538</LINE></DISPLAY_UPD_DIGITS> <DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>542</LINE></DISPLAY_UPD_DIGITS>
<TEMP_CONV><FILE>main.asm</FILE><LINE>372</LINE></TEMP_CONV> <TEMP_UPD><FILE>main.asm</FILE><LINE>268</LINE></TEMP_UPD>
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>613</LINE></DEBOUNCE_SW> <_STATE_ERROR><FILE>main.asm</FILE><LINE>250</LINE></_STATE_ERROR>
<TEMP_RD><FILE>main.asm</FILE><LINE>280</LINE></TEMP_RD> <SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>427</LINE></SW_CHECK_PROCESS>
<_STATE_ERROR><FILE>main.asm</FILE><LINE>262</LINE></_STATE_ERROR>
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>423</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>
<OW_PRESENCE><FILE>main.asm</FILE><LINE>447</LINE></OW_PRESENCE> <TEMP_CONV><FILE>main.asm</FILE><LINE>376</LINE></TEMP_CONV>
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>474</LINE></OW_SEND_BYTE> <DELAY_LOOP_24><FILE>main.asm</FILE><LINE>650</LINE></DELAY_LOOP_24>
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>507</LINE></OW_RD_BYTE> <TEMP_RD><FILE>main.asm</FILE><LINE>284</LINE></TEMP_RD>
<_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>315</LINE></_TEMP_RD_TO_UNSIGNED> <OW_PRESENCE><FILE>main.asm</FILE><LINE>451</LINE></OW_PRESENCE>
<_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>326</LINE></_TEMP_RD_CONTINUE> <OW_SEND_BYTE><FILE>main.asm</FILE><LINE>478</LINE></OW_SEND_BYTE>
<_TEMP_RD_END><FILE>main.asm</FILE><LINE>336</LINE></_TEMP_RD_END> <OW_RD_BYTE><FILE>main.asm</FILE><LINE>511</LINE></OW_RD_BYTE>
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>410</LINE></_USI_TRANSMIT_LOOP> <_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>319</LINE></_TEMP_RD_TO_UNSIGNED>
<_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>436</LINE></_INTO_DEFAULT_STATE> <_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>330</LINE></_TEMP_RD_CONTINUE>
<_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>439</LINE></_SW_CHECK_PROCESS_END> <_TEMP_RD_END><FILE>main.asm</FILE><LINE>340</LINE></_TEMP_RD_END>
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>639</LINE></DELAY_LOOP_16> <_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>414</LINE></_USI_TRANSMIT_LOOP>
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>463</LINE></OW_CHECK_PRESENCE> <DEBOUNCE_SW><FILE>main.asm</FILE><LINE>617</LINE></DEBOUNCE_SW>
<_EXIT><FILE>main.asm</FILE><LINE>469</LINE></_EXIT> <_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>440</LINE></_INTO_DEFAULT_STATE>
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>479</LINE></_OW_SEND_BYTE_LOOP> <_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>443</LINE></_SW_CHECK_PROCESS_END>
<_OW_SEND_0><FILE>main.asm</FILE><LINE>483</LINE></_OW_SEND_0> <DELAY_LOOP_16><FILE>main.asm</FILE><LINE>643</LINE></DELAY_LOOP_16>
<_OW_SEND_1><FILE>main.asm</FILE><LINE>491</LINE></_OW_SEND_1> <OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>467</LINE></OW_CHECK_PRESENCE>
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>498</LINE></_OW_SEND_BYTE_END> <_EXIT><FILE>main.asm</FILE><LINE>473</LINE></_EXIT>
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>513</LINE></_OW_RD_BYTE_LP> <_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>483</LINE></_OW_SEND_BYTE_LOOP>
<DIV_LOOP><FILE>main.asm</FILE><LINE>555</LINE></DIV_LOOP> <_OW_SEND_0><FILE>main.asm</FILE><LINE>487</LINE></_OW_SEND_0>
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>671</LINE></DISPLAY_SYMBOLS> <_OW_SEND_1><FILE>main.asm</FILE><LINE>495</LINE></_OW_SEND_1>
<DELAY><FILE>main.asm</FILE><LINE>646</LINE></DELAY> <_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>502</LINE></_OW_SEND_BYTE_END>
<BEEP_LONG><FILE>main.asm</FILE><LINE>603</LINE></BEEP_LONG> <_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>517</LINE></_OW_RD_BYTE_LP>
<_loop_2><FILE>main.asm</FILE><LINE>619</LINE></_loop_2> <DIV_LOOP><FILE>main.asm</FILE><LINE>559</LINE></DIV_LOOP>
<_loop_0><FILE>main.asm</FILE><LINE>621</LINE></_loop_0> <DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>683</LINE></DISPLAY_SYMBOLS>
<_dec_0><FILE>main.asm</FILE><LINE>623</LINE></_dec_0> <DELAY><FILE>main.asm</FILE><LINE>658</LINE></DELAY>
<_loop_1><FILE>main.asm</FILE><LINE>626</LINE></_loop_1> <BEEP_LONG><FILE>main.asm</FILE><LINE>607</LINE></BEEP_LONG>
<_loop_3><FILE>main.asm</FILE><LINE>629</LINE></_loop_3> <_loop_2><FILE>main.asm</FILE><LINE>623</LINE></_loop_2>
<_DELAY_0><FILE>main.asm</FILE><LINE>652</LINE></_DELAY_0> <_loop_0><FILE>main.asm</FILE><LINE>625</LINE></_loop_0>
<_DELAY_1><FILE>main.asm</FILE><LINE>654</LINE></_DELAY_1> <_dec_0><FILE>main.asm</FILE><LINE>627</LINE></_dec_0>
<_DELAY_2><FILE>main.asm</FILE><LINE>656</LINE></_DELAY_2> <_loop_1><FILE>main.asm</FILE><LINE>630</LINE></_loop_1>
<_loop_3><FILE>main.asm</FILE><LINE>633</LINE></_loop_3>
<_DELAY_0><FILE>main.asm</FILE><LINE>664</LINE></_DELAY_0>
<_DELAY_1><FILE>main.asm</FILE><LINE>666</LINE></_DELAY_1>
<_DELAY_2><FILE>main.asm</FILE><LINE>668</LINE></_DELAY_2>
</LABELS> </LABELS>
</ASSEMBLER_INFO> </ASSEMBLER_INFO>

View File

@ -1,20 +1,20 @@
.MACRO outi .MACRO outi
ldi @0, @2 ldi @0, @2
out @1, @0 out @1, @0
.ENDMACRO .ENDMACRO
.MACRO display_load .MACRO display_load
ldi DISP_NUM_L, LOW(@0) ldi DISP_NUM_L, LOW(@0)
ldi DISP_NUM_H, HIGH(@0) ldi DISP_NUM_H, HIGH(@0)
.ENDMACRO .ENDMACRO
.MACRO ow_pull .MACRO ow_pull
sbi OW_DDR, OW_LINE sbi OW_DDR, OW_LINE
.ENDMACRO .ENDMACRO
.MACRO ow_release .MACRO ow_release
cbi OW_DDR, OW_LINE cbi OW_DDR, OW_LINE
.ENDMACRO .ENDMACRO
.MACRO relay_on .MACRO relay_on
@ -25,20 +25,15 @@
cbi RELAY_PORT, RELAY_PIN cbi RELAY_PORT, RELAY_PIN
.ENDMACRO .ENDMACRO
.MACRO display_on
push r16
outi r16, TIMSK, (1<<OCIE0A)
pop r16
.ENDMACRO
.MACRO display_off
push r16
outi r16, TIMSK, (0<<OCIE0A)
pop r16
.ENDMACRO
.MACRO DELAY16 .MACRO DELAY16
ldi DELAY_16_r, HIGH(@0*F_CPU/4-2) ldi DELAY_16_r, HIGH(@0*F_CPU/4-2)
ldi DELAY_8_r, LOW(@0*F_CPU/4-2) ldi DELAY_8_r, LOW(@0*F_CPU/4-2)
rcall DELAY_LOOP_16 rcall DELAY_LOOP_16
.ENDMACRO .ENDMACRO
.MACRO DELAY24
ldi DELAY_24_r, BYTE3(@0*F_CPU/5-3)
ldi DELAY_16_r, HIGH(@0*F_CPU/5-3)
ldi DELAY_8_r, LOW(@0*F_CPU/5-3)
rcall DELAY_LOOP_24
.ENDMACRO

View File

@ -30,6 +30,7 @@ HYSTERESIS: .BYTE 1 ; Отклонение темпер
TEMP_L: .BYTE 1 ; Младший байт температуры TEMP_L: .BYTE 1 ; Младший байт температуры
TEMP_H: .BYTE 1 ; Старший байт температуры TEMP_H: .BYTE 1 ; Старший байт температуры
TEMP_F: .BYTE 1 ; Дробная часть TEMP_F: .BYTE 1 ; Дробная часть
;SETTING_INT: .BYTE 1 ; Уставка: целая часть
;//</editor-fold> ;//</editor-fold>
@ -51,7 +52,6 @@ TEMP_F: .BYTE 1 ; Дробная часть
//<editor-fold defaultstate="collapsed" desc="Прерывание: изменение состояния пина"> //<editor-fold defaultstate="collapsed" desc="Прерывание: изменение состояния пина">
PCINT0_vect: PCINT0_vect:
reti
push r16 push r16
push r17 push r17
push r18 push r18
@ -207,7 +207,7 @@ MCU_INIT:
; **** ИНИЦИАЛИЗАЦИЯ USART ************************************** ; **** ИНИЦИАЛИЗАЦИЯ USART **************************************
; outi r16, UBRRL, LOW(51) ; 9600 БОД ; outi r16, UBRRL, LOW(51) ; 9600 БОД
; outi r16, UBRRH, HIGH(51) ; 9600 БОД ; outi r16, UBRRH, HIGH(51) ; 9600 БОД
; outi r16, UCSRB, (1<<RXEN) ; Включение передачии ; outi r16, UCSRB, (1<<TXEN) ; Включение передачии
; outi r16, UCSRC, (1<<UCSZ1) | (1<<UCSZ0) ; Асинхронный режим, 8 бит фрейм, 1 стоповый бит ; outi r16, UCSRC, (1<<UCSZ1) | (1<<UCSZ0) ; Асинхронный режим, 8 бит фрейм, 1 стоповый бит
clr r1 clr r1
@ -240,19 +240,8 @@ _STATE_DEFAULT:
brne _STATE_PROGRAM brne _STATE_PROGRAM
cbi LED_ERR_PORT, LED_ERR_PIN cbi LED_ERR_PORT, LED_ERR_PIN
rcall DISPLAY_UPD_DIGITS rcall DISPLAY_UPD_DIGITS
rcall TEMP_UPD
rcall TEMP_CONV outi r16, TIMSK, (1<<OCIE0A) ; вкл. индикатор
rcall DEBOUNCE_SW
rcall DEBOUNCE_SW
rcall TEMP_RD
lds r17, TEMP_L
mov DISP_NUM_L, r17
lds r17, TEMP_H
mov DISP_NUM_H, r17
display_on
_STATE_PROGRAM: _STATE_PROGRAM:
cpi r16, MCU_STATE_PROGRAM cpi r16, MCU_STATE_PROGRAM
brne _STATE_ERROR brne _STATE_ERROR
@ -276,7 +265,23 @@ _STATE_ERROR:
; **** ПОДПРОГРАММЫ ********************************************** ; **** ПОДПРОГРАММЫ **********************************************
.INCLUDE "div16u.asm" .INCLUDE "div16u.asm"
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: чтение и опрос температуры"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: обновляем данные о температуре">
TEMP_UPD:
push r17
rcall TEMP_CONV
DELAY24 760000
rcall TEMP_RD
; обновляем данные в ячейках
lds r17, TEMP_L
mov DISP_NUM_L, r17
lds r17, TEMP_H
mov DISP_NUM_H, r17
pop r17
ret
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: опрос температуры и чтение">
TEMP_RD: TEMP_RD:
push r16 push r16
push r17 push r17
@ -640,7 +645,15 @@ DELAY_LOOP_16:
subi DELAY_8_r, 1 subi DELAY_8_r, 1
sbci DELAY_16_r, 0 sbci DELAY_16_r, 0
brcc DELAY_LOOP_16 brcc DELAY_LOOP_16
ret//</editor-fold> ret
//</editor-fold>
DELAY_LOOP_24:
subi DELAY_8_r, 1
sbci DELAY_16_r, 0
sbci DELAY_24_r, 0
brcc DELAY_LOOP_24
ret
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка">
DELAY: DELAY:

117
main.hex
View File

@ -1,64 +1,65 @@
:020000020000FC :020000020000FC
:0200000072C0CC :0200000073C0CB
:0200160018953B :0200160018953B
:10001A0015C00F931F932F933F930FB7B49908C03E :10001A0015C00F931F932F933F930FB7B49908C03E
:10002A0020916000203009F003C011E010936000B5 :10002A0020916000203009F003C011E010936000B5
:10003A000FBF3F912F911F910F9118954F935F9387 :10003A000FBF3F912F911F910F9118954F935F9387
:10004A000F935FB74091670045300CF403C0442713 :10004A000F931F935FB74091670045300CF403C0CC
:10005A0040936700403081F49398949895980EF0F5 :10005A00442740936700403081F493989498959888
:10006A0002C00BE002C000916500002311F0929AD1 :10006A000EF002C00BE002C000916500002311F0FF
:10007A0001C0929867D1E2D0413089F4929894985D :10007A00929A01C092986AD1E5D0413081F492985F
:10008A0095980091630010916400012319F000C053 :10008A00949895980091640030916500032B11F0C3
:10009A00939A01C092980091640054D1CFD0423013 :10009A00939A01C093980091640058D1D3D042300A
:1000AA0059F4929893989598949A009163004AD13A :1000AA0059F4929893989598949A009163004ED136
:1000BA00002D0F77002EC2D0433041F492989398C6 :1000BA00002D0F77002EC6D0433041F492989398C2
:1000CA009498959A00916C003DD1B8D0439540938D :1000CA009498959A00916C0041D1BCD04395409385
:1000DA0067005FBF0F915F914F9118950FED0DBFAC :1000DA0067005FBF1F910F915F914F9118950FEDC8
:1000EA000EE701BB01EE07BB0CE108BB02E000BF53 :1000EA000DBF0FE701BB01EE07BB0CE108BB02E045
:1000FA0005E003BF09E106BF01E009BF00E20BBF4B :1000FA0000BF05E003BF09E106BF01E009BF00E256
:10010A000CE100BD11241092670000E0009360002A :10010A000BBF0CE100BD37E04EE746D11124109237
:10011A00002700936A0000936B0000EF00936C00C5 :10011A00670000E000936000002700936A000093E4
:10012A001CD180E090E000916000003079F4F0D0BA :10012A006B0000EF00936C001CD180E090E000911E
:10013A0070FD969A70FF969877D01AD119D12AD065 :10013A006000003071F49698EFD07AD052E13DE831
:10014A0010916A00812F10916B00912F013011F4E8 :10014A004DEF2ED12BD010916A00812F10916B00A8
:10015A00DFD080D0023039F71BE010936300109390 :10015A00912F013019F49698DFD080D0023039F708
:10016A00640010936500109366000000DCCFEE2453 :10016A00969A1BE010936300109364001093650045
:10017A00FF1841E1001F111F4A9509F40895EE1C6A :10017A0010936600DCCFEE24FF1841E1001F111F27
:10018A00FF1CE21AF30A20F4E20EF31E8894F2CF5F :10018A004A9509F40895EE1CFF1CE21AF30A20F4BA
:10019A000894F0CF0F931F932F933F934F9368D0F8 :10019A00E20EF31E8894F2CF0894F0CF0F931F93C8
:1001AA000CEC802E7AD00EEB802E77D0AAE6B0E047 :1001AA002F933F934F9368D00CEC802E7AD00EEBAE
:1001BA0095D0ABE6B0E092D010916A0020916B0026 :1001BA00802E77D0AAE6B0E095D0ABE6B0E092D038
:1001CA002F93287F283F11F0E89409C02F91689453 :1001CA0010916A0020916B002F93287F283F11F02D
:1001DA001095209531E0130F30E0231F01C02F91B5 :1001DA00E89409C02F9168941095209531E0130F87
:1001EA002695179526951795269517952695179569 :1001EA0030E0231F01C02F91269517952695179564
:1001FA0030916A000EF43195432F3F70432F330F2D :1001FA00269517952695179530916A000EF4319534
:10020A00330F330F440F340F36953695369536959E :10020A00432F3F70432F330F330F330F440F340FF5
:10021A0010936A0020936B0030936C004F913F91CA :10021A00369536953695369510936A0020936B007D
:10022A002F911F910F9108950F9322D00CEC802EDD :10022A0030936C004F913F912F911F910F91089538
:10023A0034D004E4802E31D00F9108950F930FB873 :10023A000F9322D00CEC802E34D004E4802E31D0DF
:10024A0000E40EB90BE10DB9769BFDCFC09AC098B8 :10024A000F9108950F930FB800E40EB90BE10DB9A1
:10025A000F9108950F938CD0B29B0196B39B01978F :10025A00769BFDCFC09AC0980F9108950F938CD0CA
:10026A00B49B01C003C000E0009360000F910895A1 :10026A00B29B0196B39B0197B49B01C003C000E007
:10027A00F894B99A33E04EEB8BD0B99830E04AE85B :10027A00009360000F910895F894B99A33E04EEB19
:10028A0087D005D033E042E383D078940895B19BB8 :10028A008BD0B99830E04AE887D005D033E042E312
:10029A00716002C0B1997E7F08950F931F93082D54 :10029A0083D078940895B19B716002C0B1997E7F32
:1002AA0018E0069508F458F0F894B99A30E046E751 :1002AA0008950F931F93082D18E0069508F458F047
:1002BA006FD0B99830E042E16BD078940AC0F894D4 :1002BA00F894B99A30E046E76FD0B99830E042E155
:1002CA00B99A30E04AE064D0B99830E04EE760D09D :1002CA006BD078940AC0F894B99A30E04AE064D0C6
:1002DA0078941A9531F71F910F9108950F931F93F0 :1002DA00B99830E04EE760D078941A9531F71F91BB
:1002EA00002718E0F8940695B99A30E04AE050D011 :1002EA000F9108950F931F93002718E0F89406952D
:1002FA00B99830E040E14CD0B199006830E04CE662 :1002FA00B99A30E04AE050D0B99830E040E14CD0A9
:10030A0047D01A9581F70C9378941F910F9108950D :10030A00B199006830E04CE647D01A9581F70C9312
:10031A00F8945F9354E0A3E6B0E080936100909371 :10031A0078941F910F910895F8945F9354E0A3E69F
:10032A00620000916100109162002AE030E01FDF54 :10032A00B0E08093610090936200009161001091A7
:10033A00ED9200936100109362005A9591F75F91D4 :10033A0062002AE030E01FDFED9200936100109323
:10034A00789408950F931F93E2ECF3E01127E00FDE :10034A0062005A9591F75F91789408950F931F93DD
:10035A00F11F04901F910F910895C59A1DD0C59859 :10035A00E4EDF3E01127E00FF11F04901F910F91D4
:10036A000895C59A19D018D017D016D0C5980895EF :10036A000895C59A22D0C5980895C59A1ED01DD061
:10037A000F931F932F932AE01FEF0FEF0A95F1F7C0 :10037A001CD01BD0C59808950F931F932F932AE082
:10038A001A95D9F72A95C1F72F911F910F910895C0 :10038A001FEF0FEF0A95F1F71A95D9F72A95C1F7DA
:10039A0041503040E8F708950F931F932F9326E0BA :10039A002F911F910F91089541503040E8F7089529
:1003AA000FEF1FEF1A95F1F70A95D9F72A95C1F7BA :1003AA00415030405040E0F708950F931F932F9328
:1003BA002F911F910F910895C0F9A4B0999282F8D4 :1003BA0026E00FEF1FEF1A95F1F70A95D9F72A955C
:0403CA0080909CBFC4 :1003CA00C1F72F911F910F910895C0F9A4B0999286
:0603DA0082F880909CBF38
:00000001FF :00000001FF