relay pin

This commit is contained in:
Sergey Yarkov 2023-06-22 19:51:58 +03:00
parent 3891e13bea
commit ab5a9cedf6
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
9 changed files with 698 additions and 637 deletions

12
NOTES.md Normal file
View File

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

View File

@ -13,6 +13,7 @@
.EQU DIGIT_4_PIN = PD5 ; Пин разряда индикатора 4
.EQU LED_ERR_PIN = PD6 ; Светодиод который говорит о том, что МК в состоянии ошибки
.EQU LED_ERR_PORT = PORTD
.EQU OW_LINE = PB1 ; Пин шины 1-Wire
.EQU OW_DDR = DDRB

View File

@ -1,64 +1,64 @@
:020000020000FC
:0200000073C0CB
:0200000074C0CA
:0200160018953B
:10001A0015C00F931F932F933F930FB7B49908C03E
:10002A0020916000203009F003C011E010936000B5
:10003A000FBF3F912F911F910F9118954F935F9387
:10004A000F931F935FB74091670045300CF403C0CC
:10005A00442740936700403081F493989498959888
:10006A000EF002C00BE002C000916500002311F0FF
:10007A00929A01C0929867D1E2D0413081F4929865
:10008A00949895980091640030916500032B11F0C3
:10009A00939A01C093980091640055D1D0D0423010
:1000AA0059F4929893989598949A009163004BD139
:1000BA00002D0F77002EC3D0433041F492989398C5
:1000CA009498959A00916C003ED1B9D0439540938B
:1000DA0067005FBF1F910F915F914F9118950FEDC8
:1000EA000DBF0EE701BB01EE07BB0CE108BB02E046
:1000FA0000BF05E003BF09E106BF01E009BF00E256
:10010A000BBF0CE100BD11241092670000E00093C0
:10011A006000002700936A0000936B0000EF0093D1
:10012A006C001CD180E090E000916000003079F40E
:10013A00F0D070FD969A70FF969877D01AD119D19F
:10014A002AD010916A00812F10916B00912F0130F3
:10015A0011F4DFD080D0023039F71BE0109363002E
:10016A001093640010936500109366000000DCCFC2
:10017A00EE24FF1841E1001F111F4A9509F4089562
:10018A00EE1CFF1CE21AF30A20F4E20EF31E889416
:10019A00F2CF0894F0CF0F931F932F933F934F936F
:1001AA0068D00CEC802E7AD00EEB802E77D0AAE69F
:1001BA00B0E095D0ABE6B0E092D010916A00209101
:1001CA006B002F93287F283F11F0E89409C02F91E4
:1001DA0068941095209531E0130F30E0231F01C079
:1001EA002F91269517952695179526951795269555
:1001FA00179530916A000EF43195432F3F70432FC3
:10020A00330F330F330F440F340F36953695369527
:10021A00369510936A0020936B0030936C004F91CF
:10022A003F912F911F910F9108950F9322D00CECBB
:10023A00802E34D004E4802E31D00F9108950F938C
:10024A000FB800E40EB90BE10DB9769BFDCFC09A49
:10025A00C0980F9108950F938CD0B29B0196B39BCF
:10026A000197B49B01C003C000E0009360000F91A6
:10027A000895F894B99A33E04EEB8BD0B99830E0F0
:10028A004AE887D005D033E042E383D078940895D2
:10029A00B19B716002C0B1997E7F08950F931F933D
:1002AA00082D18E0069508F458F0F894B99A30E049
:1002BA0046E76FD0B99830E042E16BD078940AC033
:1002CA00F894B99A30E04AE064D0B99830E04EE741
:1002DA0060D078941A9531F71F910F9108950F9372
:1002EA001F93002718E0F8940695B99A30E04AE07F
:1002FA0050D0B99830E040E14CD0B199006830E074
:10030A004CE647D01A9581F70C9378941F910F9178
:10031A000895F8945F9354E0A3E6B0E080936100F7
:10032A009093620000916100109162002AE030E02F
:10033A001FDFED9200936100109362005A9591F7C6
:10034A005F91789408950F931F93E4ECF3E01127DB
:10035A00E00FF11F04901F910F910895C59A1DD0C7
:10036A00C5980895C59A19D018D017D016D0C5982F
:10037A0008950F931F932F932AE01FEF0FEF0A950B
:10038A00F1F71A95D9F72A95C1F72F911F910F9175
:10039A00089541503040E8F708950F931F932F9323
:1003AA0026E00FEF1FEF1A95F1F70A95D9F72A956C
:1003BA00C1F72F911F910F910895C0F9A4B0999296
:0603CA0082F880909CBF48
:10001A0016C018950F931F932F933F930FB7B49958
:10002A0008C020916000203009F003C011E010934D
:10003A0060000FBF3F912F911F910F9118954F9319
:10004A005F930F931F935FB74091670045300CF49D
:10005A0003C0442740936700403081F493989498F2
:10006A0095980EF002C00BE002C0009165000023D3
:10007A0011F0929A01C0929867D1E2D0413081F48E
:10008A009298949895980091640030916500032B9A
:10009A0011F0939A01C093980091640055D1D0D081
:1000AA00423059F4929893989598949A00916300E3
:1000BA004BD1002D0F77002EC3D0433041F49298D4
:1000CA0093989498959A00916C003ED1B9D0439533
:1000DA00409367005FBF1F910F915F914F911895F1
:1000EA000FED0DBF0FE701BB01EE07BB0CE108BB2B
:1000FA0002E000BF05E003BF09E106BF00E20BBF53
:10010A000CE100BD11241092670000E0009360002A
:10011A00002700936A0000936B0000EF00936C00C5
:10012A001ED180E090E000916000003081F4969842
:10013A00F1D07CD01FD11ED12FD010916A00812F0F
:10014A0010916B00912F0F9301E009BF0F910130BD
:10015A0019F49698DFD080D0023029F7969A1BE0DE
:10016A001093630010936400109365001093660067
:10017A00DACFEE24FF1841E1001F111F4A9509F456
:10018A000895EE1CFF1CE21AF30A20F4E20EF31E95
:10019A008894F2CF0894F0CF0F931F932F933F9335
:1001AA004F9368D00CEC802E7AD00EEB802E77D04D
:1001BA00AAE6B0E095D0ABE6B0E092D010916A0022
:1001CA0020916B002F93287F283F11F0E89409C0F3
:1001DA002F9168941095209531E0130F30E0231F7A
:1001EA0001C02F912695179526951795269517954F
:1001FA002695179530916A000EF43195432F3F707A
:10020A00432F330F330F330F440F340F3695369580
:10021A003695369510936A0020936B0030936C00E4
:10022A004F913F912F911F910F9108950F9322D0D3
:10023A000CEC802E34D004E4802E31D00F91089536
:10024A000F930FB800E40EB90BE10DB9769BFDCF01
:10025A00C09AC0980F9108950F938CD0B29B0196C3
:10026A00B39B0197B49B01C003C000E000936000F8
:10027A000F910895F894B99A33E04EEB8BD0B99860
:10028A0030E04AE887D005D033E042E383D078945F
:10029A000895B19B716002C0B1997E7F08950F9352
:1002AA001F93082D18E0069508F458F0F894B99AA7
:1002BA0030E046E76FD0B99830E042E16BD07894ED
:1002CA000AC0F894B99A30E04AE064D0B99830E0AC
:1002DA004EE760D078941A9531F71F910F910895DF
:1002EA000F931F93002718E0F8940695B99A30E007
:1002FA004AE050D0B99830E040E14CD0B19900685A
:10030A0030E04CE647D01A9581F70C9378941F9108
:10031A000F910895F8945F9354E0A3E6B0E08093B8
:10032A0061009093620000916100109162002AE0DE
:10033A0030E01FDFED9200936100109362005A953E
:10034A0091F75F91789408950F931F93E6ECF3E089
:10035A001127E00FF11F04901F910F910895C59A7C
:10036A001DD0C5980895C59A19D018D017D016D09F
:10037A00C59808950F931F932F932AE01FEF0FEF4D
:10038A000A95F1F71A95D9F72A95C1F72F911F9176
:10039A000F91089541503040E8F708950F931F9345
:1003AA002F9326E00FEF1FEF1A95F1F70A95D9F769
:1003BA002A95C1F72F911F910F910895C0F9A4B002
:0803CA00999282F880909CBF1B
: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 12:07:49 2023
AVRASM ver. 2.2.7 main.asm Thu Jun 22 18:27:57 2023
EQU SIGNATURE_000 0000001e
@ -490,6 +490,7 @@ EQU DIGIT_2_PIN 00000003
EQU DIGIT_3_PIN 00000004
EQU DIGIT_4_PIN 00000005
EQU LED_ERR_PIN 00000006
EQU LED_ERR_PORT 00000012
EQU OW_LINE 00000001
EQU OW_DDR 00000017
EQU OW_PIN 00000016
@ -533,30 +534,30 @@ DSEG HYSTERESIS 00000069
DSEG TEMP_L 0000006a
DSEG TEMP_H 0000006b
DSEG TEMP_F 0000006c
CSEG RESET_vect 00000074
CSEG TIMER0_COMPA_vect 00000023
CSEG RESET_vect 00000075
CSEG TIMER0_COMPA_vect 00000024
CSEG PCINT0_vect 0000000e
CSEG _PCINT0_vect_end 0000001d
CSEG _INTO_PROGRAM_STATE 0000001a
CSEG _CLR_CURRENT_DIGIT 0000002d
CSEG _indicate_1 00000030
CSEG _indicate_2 00000042
CSEG DISPLAY_DECODER 000001a8
CSEG USI_TRANSMIT 00000124
CSEG _indicate_3 00000054
CSEG _indicate_4 00000061
CSEG _indicate_exit 0000006b
CSEG MCU_INIT 00000076
CSEG BEEP_SHORT 000001b3
CSEG LOOP 00000099
CSEG _STATE_DEFAULT 0000009b
CSEG _PCINT0_vect_end 0000001e
CSEG _INTO_PROGRAM_STATE 0000001b
CSEG _CLR_CURRENT_DIGIT 0000002e
CSEG _indicate_1 00000031
CSEG _indicate_2 00000043
CSEG DISPLAY_DECODER 000001a9
CSEG USI_TRANSMIT 00000125
CSEG _indicate_3 00000055
CSEG _indicate_4 00000062
CSEG _indicate_exit 0000006c
CSEG MCU_INIT 00000077
CSEG BEEP_SHORT 000001b4
CSEG LOOP 00000098
CSEG _STATE_DEFAULT 0000009a
CSEG _STATE_PROGRAM 000000ac
CSEG DISPLAY_UPD_DIGITS 0000018e
CSEG TEMP_CONV 0000011a
CSEG DEBOUNCE_SW 000001be
CSEG TEMP_RD 000000d0
CSEG _STATE_ERROR 000000b0
CSEG SW_CHECK_PROCESS 00000130
CSEG DISPLAY_UPD_DIGITS 0000018f
CSEG TEMP_CONV 0000011b
CSEG DEBOUNCE_SW 000001bf
CSEG TEMP_RD 000000d1
CSEG _STATE_ERROR 000000b1
CSEG SW_CHECK_PROCESS 00000131
DEF drem16uL r14
DEF drem16uH r15
DEF dres16uL r16
@ -566,38 +567,38 @@ DEF dd16uH r17
DEF dv16uL r18
DEF dv16uH r19
DEF dcnt16u r20
CSEG div16u 000000bd
CSEG d16u_1 000000c0
CSEG d16u_2 000000c5
CSEG d16u_3 000000ce
CSEG OW_PRESENCE 0000013e
CSEG OW_SEND_BYTE 00000153
CSEG OW_RD_BYTE 00000174
CSEG _TEMP_RD_TO_UNSIGNED 000000ec
CSEG _TEMP_RD_CONTINUE 000000f5
CSEG _TEMP_RD_END 000000fe
CSEG _USI_TRANSMIT_LOOP 00000129
CSEG _INTO_DEFAULT_STATE 00000139
CSEG _SW_CHECK_PROCESS_END 0000013c
CSEG DELAY_LOOP_16 000001ce
CSEG OW_CHECK_PRESENCE 0000014d
CSEG _EXIT 00000152
CSEG _OW_SEND_BYTE_LOOP 00000157
CSEG _OW_SEND_0 0000015a
CSEG _OW_SEND_1 00000165
CSEG _OW_SEND_BYTE_END 0000016f
CSEG _OW_RD_BYTE_LP 00000179
CSEG div16u 000000be
CSEG d16u_1 000000c1
CSEG d16u_2 000000c6
CSEG d16u_3 000000cf
CSEG OW_PRESENCE 0000013f
CSEG OW_SEND_BYTE 00000154
CSEG OW_RD_BYTE 00000175
CSEG _TEMP_RD_TO_UNSIGNED 000000ed
CSEG _TEMP_RD_CONTINUE 000000f6
CSEG _TEMP_RD_END 000000ff
CSEG _USI_TRANSMIT_LOOP 0000012a
CSEG _INTO_DEFAULT_STATE 0000013a
CSEG _SW_CHECK_PROCESS_END 0000013d
CSEG DELAY_LOOP_16 000001cf
CSEG OW_CHECK_PRESENCE 0000014e
CSEG _EXIT 00000153
CSEG _OW_SEND_BYTE_LOOP 00000158
CSEG _OW_SEND_0 0000015b
CSEG _OW_SEND_1 00000166
CSEG _OW_SEND_BYTE_END 00000170
CSEG _OW_RD_BYTE_LP 0000017a
EQU dividend 00000061
EQU divisor 0000000a
CSEG DIV_LOOP 00000197
CSEG DISPLAY_SYMBOLS 000001e2
CSEG DELAY 000001d2
CSEG BEEP_LONG 000001b7
CSEG _loop_2 000001c2
CSEG _loop_0 000001c3
CSEG _dec_0 000001c4
CSEG _loop_1 000001c6
CSEG _loop_3 000001c8
CSEG _DELAY_0 000001d6
CSEG _DELAY_1 000001d7
CSEG _DELAY_2 000001d8
CSEG DIV_LOOP 00000198
CSEG DISPLAY_SYMBOLS 000001e3
CSEG DELAY 000001d3
CSEG BEEP_LONG 000001b8
CSEG _loop_2 000001c3
CSEG _loop_0 000001c4
CSEG _dec_0 000001c5
CSEG _loop_1 000001c7
CSEG _loop_3 000001c9
CSEG _DELAY_0 000001d7
CSEG _DELAY_1 000001d8
CSEG _DELAY_2 000001d9

View File

@ -33,62 +33,62 @@
<TEMP_L><FILE>main.asm</FILE><LINE>30</LINE></TEMP_L>
<TEMP_H><FILE>main.asm</FILE><LINE>31</LINE></TEMP_H>
<TEMP_F><FILE>main.asm</FILE><LINE>32</LINE></TEMP_F>
<RESET_vect><FILE>main.asm</FILE><LINE>183</LINE></RESET_vect>
<TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>88</LINE></TIMER0_COMPA_vect>
<RESET_vect><FILE>main.asm</FILE><LINE>186</LINE></RESET_vect>
<TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>91</LINE></TIMER0_COMPA_vect>
<PCINT0_vect><FILE>main.asm</FILE><LINE>53</LINE></PCINT0_vect>
<_PCINT0_vect_end><FILE>main.asm</FILE><LINE>78</LINE></_PCINT0_vect_end>
<_INTO_PROGRAM_STATE><FILE>main.asm</FILE><LINE>74</LINE></_INTO_PROGRAM_STATE>
<_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>100</LINE></_CLR_CURRENT_DIGIT>
<_indicate_1><FILE>main.asm</FILE><LINE>104</LINE></_indicate_1>
<_indicate_2><FILE>main.asm</FILE><LINE>124</LINE></_indicate_2>
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>577</LINE></DISPLAY_DECODER>
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>390</LINE></USI_TRANSMIT>
<_indicate_3><FILE>main.asm</FILE><LINE>142</LINE></_indicate_3>
<_indicate_4><FILE>main.asm</FILE><LINE>158</LINE></_indicate_4>
<_indicate_exit><FILE>main.asm</FILE><LINE>170</LINE></_indicate_exit>
<MCU_INIT><FILE>main.asm</FILE><LINE>189</LINE></MCU_INIT>
<BEEP_SHORT><FILE>main.asm</FILE><LINE>593</LINE></BEEP_SHORT>
<LOOP><FILE>main.asm</FILE><LINE>232</LINE></LOOP>
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>236</LINE></_STATE_DEFAULT>
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>255</LINE></_STATE_PROGRAM>
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>536</LINE></DISPLAY_UPD_DIGITS>
<TEMP_CONV><FILE>main.asm</FILE><LINE>370</LINE></TEMP_CONV>
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>611</LINE></DEBOUNCE_SW>
<TEMP_RD><FILE>main.asm</FILE><LINE>278</LINE></TEMP_RD>
<_STATE_ERROR><FILE>main.asm</FILE><LINE>260</LINE></_STATE_ERROR>
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>421</LINE></SW_CHECK_PROCESS>
<_PCINT0_vect_end><FILE>main.asm</FILE><LINE>81</LINE></_PCINT0_vect_end>
<_INTO_PROGRAM_STATE><FILE>main.asm</FILE><LINE>77</LINE></_INTO_PROGRAM_STATE>
<_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>103</LINE></_CLR_CURRENT_DIGIT>
<_indicate_1><FILE>main.asm</FILE><LINE>107</LINE></_indicate_1>
<_indicate_2><FILE>main.asm</FILE><LINE>127</LINE></_indicate_2>
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>579</LINE></DISPLAY_DECODER>
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>392</LINE></USI_TRANSMIT>
<_indicate_3><FILE>main.asm</FILE><LINE>145</LINE></_indicate_3>
<_indicate_4><FILE>main.asm</FILE><LINE>161</LINE></_indicate_4>
<_indicate_exit><FILE>main.asm</FILE><LINE>173</LINE></_indicate_exit>
<MCU_INIT><FILE>main.asm</FILE><LINE>192</LINE></MCU_INIT>
<BEEP_SHORT><FILE>main.asm</FILE><LINE>595</LINE></BEEP_SHORT>
<LOOP><FILE>main.asm</FILE><LINE>234</LINE></LOOP>
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>238</LINE></_STATE_DEFAULT>
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>256</LINE></_STATE_PROGRAM>
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>538</LINE></DISPLAY_UPD_DIGITS>
<TEMP_CONV><FILE>main.asm</FILE><LINE>372</LINE></TEMP_CONV>
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>613</LINE></DEBOUNCE_SW>
<TEMP_RD><FILE>main.asm</FILE><LINE>280</LINE></TEMP_RD>
<_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>
<d16u_1><FILE>div16u.asm</FILE><LINE>36</LINE></d16u_1>
<d16u_2><FILE>div16u.asm</FILE><LINE>42</LINE></d16u_2>
<d16u_3><FILE>div16u.asm</FILE><LINE>52</LINE></d16u_3>
<OW_PRESENCE><FILE>main.asm</FILE><LINE>445</LINE></OW_PRESENCE>
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>472</LINE></OW_SEND_BYTE>
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>505</LINE></OW_RD_BYTE>
<_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>313</LINE></_TEMP_RD_TO_UNSIGNED>
<_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>324</LINE></_TEMP_RD_CONTINUE>
<_TEMP_RD_END><FILE>main.asm</FILE><LINE>334</LINE></_TEMP_RD_END>
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>408</LINE></_USI_TRANSMIT_LOOP>
<_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>434</LINE></_INTO_DEFAULT_STATE>
<_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>437</LINE></_SW_CHECK_PROCESS_END>
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>637</LINE></DELAY_LOOP_16>
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>461</LINE></OW_CHECK_PRESENCE>
<_EXIT><FILE>main.asm</FILE><LINE>467</LINE></_EXIT>
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>477</LINE></_OW_SEND_BYTE_LOOP>
<_OW_SEND_0><FILE>main.asm</FILE><LINE>481</LINE></_OW_SEND_0>
<_OW_SEND_1><FILE>main.asm</FILE><LINE>489</LINE></_OW_SEND_1>
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>496</LINE></_OW_SEND_BYTE_END>
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>511</LINE></_OW_RD_BYTE_LP>
<DIV_LOOP><FILE>main.asm</FILE><LINE>553</LINE></DIV_LOOP>
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>669</LINE></DISPLAY_SYMBOLS>
<DELAY><FILE>main.asm</FILE><LINE>644</LINE></DELAY>
<BEEP_LONG><FILE>main.asm</FILE><LINE>601</LINE></BEEP_LONG>
<_loop_2><FILE>main.asm</FILE><LINE>617</LINE></_loop_2>
<_loop_0><FILE>main.asm</FILE><LINE>619</LINE></_loop_0>
<_dec_0><FILE>main.asm</FILE><LINE>621</LINE></_dec_0>
<_loop_1><FILE>main.asm</FILE><LINE>624</LINE></_loop_1>
<_loop_3><FILE>main.asm</FILE><LINE>627</LINE></_loop_3>
<_DELAY_0><FILE>main.asm</FILE><LINE>650</LINE></_DELAY_0>
<_DELAY_1><FILE>main.asm</FILE><LINE>652</LINE></_DELAY_1>
<_DELAY_2><FILE>main.asm</FILE><LINE>654</LINE></_DELAY_2>
<OW_PRESENCE><FILE>main.asm</FILE><LINE>447</LINE></OW_PRESENCE>
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>474</LINE></OW_SEND_BYTE>
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>507</LINE></OW_RD_BYTE>
<_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>315</LINE></_TEMP_RD_TO_UNSIGNED>
<_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>326</LINE></_TEMP_RD_CONTINUE>
<_TEMP_RD_END><FILE>main.asm</FILE><LINE>336</LINE></_TEMP_RD_END>
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>410</LINE></_USI_TRANSMIT_LOOP>
<_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>436</LINE></_INTO_DEFAULT_STATE>
<_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>439</LINE></_SW_CHECK_PROCESS_END>
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>639</LINE></DELAY_LOOP_16>
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>463</LINE></OW_CHECK_PRESENCE>
<_EXIT><FILE>main.asm</FILE><LINE>469</LINE></_EXIT>
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>479</LINE></_OW_SEND_BYTE_LOOP>
<_OW_SEND_0><FILE>main.asm</FILE><LINE>483</LINE></_OW_SEND_0>
<_OW_SEND_1><FILE>main.asm</FILE><LINE>491</LINE></_OW_SEND_1>
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>498</LINE></_OW_SEND_BYTE_END>
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>513</LINE></_OW_RD_BYTE_LP>
<DIV_LOOP><FILE>main.asm</FILE><LINE>555</LINE></DIV_LOOP>
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>671</LINE></DISPLAY_SYMBOLS>
<DELAY><FILE>main.asm</FILE><LINE>646</LINE></DELAY>
<BEEP_LONG><FILE>main.asm</FILE><LINE>603</LINE></BEEP_LONG>
<_loop_2><FILE>main.asm</FILE><LINE>619</LINE></_loop_2>
<_loop_0><FILE>main.asm</FILE><LINE>621</LINE></_loop_0>
<_dec_0><FILE>main.asm</FILE><LINE>623</LINE></_dec_0>
<_loop_1><FILE>main.asm</FILE><LINE>626</LINE></_loop_1>
<_loop_3><FILE>main.asm</FILE><LINE>629</LINE></_loop_3>
<_DELAY_0><FILE>main.asm</FILE><LINE>652</LINE></_DELAY_0>
<_DELAY_1><FILE>main.asm</FILE><LINE>654</LINE></_DELAY_1>
<_DELAY_2><FILE>main.asm</FILE><LINE>656</LINE></_DELAY_2>
</LABELS>
</ASSEMBLER_INFO>

View File

@ -17,6 +17,26 @@
cbi OW_DDR, OW_LINE
.ENDMACRO
.MACRO relay_on
sbi RELAY_PORT, RELAY_PIN
.ENDMACRO
.MACRO relay_off
cbi RELAY_PORT, RELAY_PIN
.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
ldi DELAY_16_r, HIGH(@0*F_CPU/4-2)
ldi DELAY_8_r, LOW(@0*F_CPU/4-2)

View File

@ -51,12 +51,15 @@ TEMP_F: .BYTE 1 ; Дробная часть
//<editor-fold defaultstate="collapsed" desc="Прерывание: изменение состояния пина">
PCINT0_vect:
reti
push r16
push r17
push r18
push r19
in r16, SREG
; display_off
; in r17, SW_PIN
; clr r18
; ldi r18, (1<<SW_PLUS_PIN) | (1<<SW_MINUS_PIN)
@ -188,7 +191,7 @@ RESET_vect:
; **** ПРОЦЕСС ИНИЦИАЛИЗАЦИИ МК **********************************
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)
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, 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)
@ -196,7 +199,6 @@ MCU_INIT:
outi r16, TCCR0A, (1<<WGM01) ; режим CTC Compare A
outi r16, TCCR0B, (1<<CS02) | (1<<CS00) ; 1024 делитель
outi r16, OCR0A, 25 ; число для сравнения. (60Hz)
outi r16, TIMSK, (1<<OCIE0A) ; включение прерывания по совпадению
; **** ПРЕРЫВАНИЕ ПО ИЗМЕНЕНИЮ СОСТОЯНИЯ ПИНОВ ******************
outi r16, GIMSK, (1<<PCIE0)
@ -236,11 +238,8 @@ LOOP:
_STATE_DEFAULT:
cpi r16, MCU_STATE_DEFAULT
brne _STATE_PROGRAM
cbi LED_ERR_PORT, LED_ERR_PIN
rcall DISPLAY_UPD_DIGITS
sbrc OWFR, OWPRF
sbi PORTD, PD6
sbrs OWFR, OWPRF
cbi PORTD, PD6
rcall TEMP_CONV
rcall DEBOUNCE_SW
@ -252,20 +251,23 @@ _STATE_DEFAULT:
lds r17, TEMP_H
mov DISP_NUM_H, r17
display_on
_STATE_PROGRAM:
cpi r16, MCU_STATE_PROGRAM
brne _STATE_ERROR
cbi LED_ERR_PORT, LED_ERR_PIN
rcall DISPLAY_UPD_DIGITS
rcall SW_CHECK_PROCESS
_STATE_ERROR:
cpi r16, MCU_STATE_ERROR
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
nop
rjmp LOOP
//</editor-fold>