check sensor family code

This commit is contained in:
Sergey Yarkov 2023-06-24 17:26:41 +03:00
parent 29c3c316aa
commit aaa9318a16
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
8 changed files with 949 additions and 628 deletions

View File

@ -59,3 +59,16 @@
.EQU MCU_STATE_DEFAULT = 0x00 ; Режим измерения температуры и сравнения с заданными параметрами .EQU MCU_STATE_DEFAULT = 0x00 ; Режим измерения температуры и сравнения с заданными параметрами
.EQU MCU_STATE_PROGRAM = 0x01 ; Режим настройки параметров в EEPROM .EQU MCU_STATE_PROGRAM = 0x01 ; Режим настройки параметров в EEPROM
.EQU MCU_STATE_ERROR = 0x02 ; Режим ошибки, например когда не подключен датчик .EQU MCU_STATE_ERROR = 0x02 ; Режим ошибки, например когда не подключен датчик
; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ ***********************************
; Отдельно задается целая и дробная часть в точности до десятых
; Например: 30.5 градусов
.EQU DEFAULT_SETTING_INT = 29
.EQU DEFAULT_SETTING_F = 5 // 0.5
.EQU DEFAULT_SETTING_HYST = 5 // 0.5
.EQU HEAT_MODE = 1
.EQU COOLING_MODE = 0
.EQU DEFAULT_SETTING_MODE = HEAT_MODE

View File

@ -7,59 +7,65 @@
:10004A000F931F935FB74091670045300CF403C0CC :10004A000F931F935FB74091670045300CF403C0CC
:10005A00442740936700403081F493989498959888 :10005A00442740936700403081F493989498959888
:10006A000EF002C00BE002C000916500002311F0FF :10006A000EF002C00BE002C000916500002311F0FF
:10007A00929A01C092986BD1E6D0413081F492985D :10007A00929A01C0929898D113D1413081F4929802
:10008A00949895980091640030916500032B11F0C3 :10008A00949895980091640030916500032B11F0C3
:10009A00939A01C093980091640059D1D4D0423008 :10009A00939A01C093980091640086D101D14230AD
:1000AA0059F4929893989598949A009163004FD135 :1000AA0059F4929893989598949A009163007CD108
:1000BA00002D0F77002EC7D0433041F492989398C1 :1000BA00002D0F77002EF4D0433041F49298939894
:1000CA009498959A00916C0042D1BDD04395409383 :1000CA009498959A00916B006FD1EAD0439540932A
:1000DA0067005FBF1F910F915F914F9118950FEDC8 :1000DA0067005FBF1F910F915F914F9118950FEDC8
:1000EA000DBF0FE701BB01EE07BB0CE108BB02E045 :1000EA000DBF0FE701BB01EE07BB0CE108BB02E045
:1000FA0000BF05E003BF09E106BF00E20BBF0CE148 :1000FA0000BF05E003BF09E106BF00E20BBF0CE148
:10010A0000BD11241092670000E0009360000027F0 :10010A0000BD11241092670000E0009360000DE129
:10011A0000936A0000936B0000EF00936C0022D1F9 :10011A0000936C0005E000936D0005E000936E000B
:10012A0080E090E000916000003029F49698F5D0C4 :10012A0001E000936F0000270093690000936A00C2
:10013A0027D001E009BF013019F49698EED08FD08C :10013A0000EF00936B0050D000917000003109F479
:10014A00023081F7969A1BE01093630010936400C3 :10014A0005C012E0109360003ED101C038D180E0B2
:10015A001093650010936600E5CFEE24FF1841E185 :10015A0090E000916000003031F496980BD129D0DC
:10016A00001F111F4A9509F40895EE1CFF1CE21A9C :10016A0001E009BF25D0013019F4969803D1A4D033
:10017A00F30A20F4E20EF31E8894F2CF0894F0CF2B :10017A00023079F7969A1BE010936300109364009B
:10018A001F9357D052E13DE84DEF0BD108D01091A3 :10018A001093650010936600E4CFEE24FF1841E156
:10019A006A00812F10916B00912F1F9108950F9380 :10019A00001F111F4A9509F40895EE1CFF1CE21A6C
:1001AA001F932F933F934F9368D00CEC802E7AD0F5 :1001AA00F30A20F4E20EF31E8894F2CF0894F0CFFB
:1001BA000EEB802E77D0AAE6B0E095D0ABE6B0E0A1 :1001BA0008951F936BD05CE034E34DEF1FD15CE0F0
:1001CA0092D010916A0020916B002F93287F283FCC :1001CA0034E34DEF1BD118D010916900812F1091A3
:1001DA0011F0E89409C02F9168941095209531E0A8 :1001DA006A00912F1F9108950F937CD00CEC802E0A
:1001EA00130F30E0231F01C02F91269517952695EE :1001EA008ED00EEB802E8BD0A0E7B0E008E0A8D02E
:1001FA001795269517952695179530916A000EF44E :1001FA000A95E9F70F9108950F931F932F933F9351
:10020A003195432F3F70432F330F330F330F440F72 :10020A004F9368D00CEC802E7AD00EEB802E77D0EC
:10021A00340F369536953695369510936A002093A5 :10021A00A9E6B0E095D0AAE6B0E092D010916900C4
:10022A006B0030936C004F913F912F911F910F916A :10022A0020916A002F93287F283F11F0E89409C093
:10023A0008950F9322D00CEC802E34D004E4802E43 :10023A002F9168941095209531E0130F30E0231F19
:10024A0031D00F9108950F930FB800E40EB90BE166 :10024A0001C02F91269517952695179526951795EE
:10025A000DB9769BFDCFC09AC0980F9108950F9360 :10025A0026951795309169000EF43195432F3F701A
:10026A008CD0B29B0196B39B0197B49B01C003C08B :10026A00432F330F330F330F440F340F3695369520
:10027A0000E0009360000F910895F894B99A33E072 :10027A00369536951093690020936A0030936B0087
:10028A004EEB8BD0B99830E04AE887D005D033E0FE :10028A004F913F912F911F910F9108950F9322D073
:10029A0042E383D078940895B19B716002C0B1990A :10029A000CEC802E34D004E4802E31D00F910895D6
:1002AA007E7F08950F931F93082D18E0069508F492 :1002AA000F930FB800E40EB90BE10DB9769BFDCFA1
:1002BA0058F0F894B99A30E046E76FD0B99830E030 :1002BA00C09AC0980F9108950F938CD0B29B019663
:1002CA0042E16BD078940AC0F894B99A30E04AE0D7 :1002CA00B39B0197B49B01C003C000E00093600098
:1002DA0064D0B99830E04EE760D078941A9531F737 :1002DA000F910895F894B99A33E04EEB8BD0B99800
:1002EA001F910F9108950F931F93002718E0F89418 :1002EA0030E04AE887D005D033E042E383D07894FF
:1002FA000695B99A30E04AE050D0B99830E040E12A :1002FA000895B19B716002C0B1997E7F08950F93F2
:10030A004CD0B199006830E04CE647D01A9581F795 :10030A001F93082D18E0069508F458F0F894B99A46
:10031A000C9378941F910F910895F8945F9354E089 :10031A0030E046E76FD0B99830E042E16BD078948C
:10032A00A3E6B0E0809361009093620000916100BF :10032A000AC0F894B99A30E04AE064D0B99830E04B
:10033A00109162002AE030E010DFED920093610034 :10033A004EE760D078941A9531F71F910F9108957E
:10034A00109362005A9591F75F91789408950F93EC :10034A000F931F93002718E0F8940695B99A30E0A6
:10035A001F93E6EDF3E01127E00FF11F04901F91C0 :10035A004AE050D0B99830E040E14CD0B1990068F9
:10036A000F910895C59A22D0C5980895C59A1ED0AE :10036A0030E04CE647D01A9581F70C9378941F91A8
:10037A001DD01CD01BD0C59808950F931F932F939F :10037A000F910895F8945F9354E0A3E6B0E0809358
:10038A002AE01FEF0FEF0A95F1F71A95D9F72A9588 :10038A0061009093620000916100109162002AE07E
:10039A00C1F72F911F910F91089541503040E8F70E :10039A0030E0FBDEED9200936100109362005A9503
:1003AA000895415030405040E0F708950F931F934D :1003AA0091F75F91789408950F931F93E0E3F4E037
:1003BA002F9326E00FEF1FEF1A95F1F70A95D9F759 :1003BA001127E00FF11F04901F910F910895C59A1C
:1003CA002A95C1F72F911F910F910895C0F9A4B0F2 :1003CA0022D0C5980895C59A1ED01DD01CD01BD026
:0803DA00999282F880909CBF0B :1003DA00C59808950F931F932F932AE01FEF0FEFED
:1003EA000A95F1F71A95D9F72A95C1F72F911F9116
:1003FA000F91089541503040E8F708954150304038
:10040A005040E0F708950F931F932F9326E00FEFC4
:10041A001FEF1A95F1F70A95D9F72A95C1F72F9187
:10042A001F910F910895C0F9A4B0999282F8809013
:02043A009CBF65
: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 Fri Jun 23 16:35:36 2023 AVRASM ver. 2.2.7 main.asm Sat Jun 24 17:26:02 2023
EQU SIGNATURE_000 0000001e EQU SIGNATURE_000 0000001e
@ -526,15 +526,25 @@ 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_F 00000005
EQU DEFAULT_SETTING_HYST 00000005
EQU HEAT_MODE 00000001
EQU COOLING_MODE 00000000
EQU DEFAULT_SETTING_MODE 00000001
DSEG MCU_STATE 00000060 DSEG MCU_STATE 00000060
DSEG SRAM_TEMP_1 00000061 DSEG SRAM_TEMP_1 00000061
DSEG DIGITS 00000063 DSEG DIGITS 00000063
DSEG CURRENT_DIGIT 00000067 DSEG CURRENT_DIGIT 00000067
DSEG SW_FLAGS 00000068 DSEG SW_FLAGS 00000068
DSEG HYSTERESIS 00000069 DSEG TEMP_L 00000069
DSEG TEMP_L 0000006a DSEG TEMP_H 0000006a
DSEG TEMP_H 0000006b DSEG TEMP_F 0000006b
DSEG TEMP_F 0000006c DSEG SETTING_INT 0000006c
DSEG SETTING_F 0000006d
DSEG SETTING_HYST 0000006e
DSEG SETTING_MODE 0000006f
DSEG DEVICE_FAMILY_CODE 00000070
CSEG RESET_vect 00000074 CSEG RESET_vect 00000074
CSEG TIMER0_COMPA_vect 00000023 CSEG TIMER0_COMPA_vect 00000023
CSEG PCINT0_vect 0000000e CSEG PCINT0_vect 0000000e
@ -543,20 +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 000001ac CSEG DISPLAY_DECODER 000001d9
CSEG USI_TRANSMIT 00000128 CSEG USI_TRANSMIT 00000155
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 BEEP_SHORT 000001b7 CSEG RD_F_CODE 000000f1
CSEG LOOP 00000097 CSEG ERR_FAMILY_CODE 000000a6
CSEG _STATE_DEFAULT 00000099 CSEG START_PROGRAM 000000ab
CSEG _STATE_PROGRAM 000000a0 CSEG BEEP_LONG 000001e8
CSEG DISPLAY_UPD_DIGITS 00000192 CSEG BEEP_SHORT 000001e4
CSEG TEMP_UPD 000000c5 CSEG LOOP 000000ae
CSEG _STATE_ERROR 000000a5 CSEG _STATE_DEFAULT 000000b0
CSEG SW_CHECK_PROCESS 00000134 CSEG _STATE_PROGRAM 000000b8
CSEG DISPLAY_UPD_DIGITS 000001bf
CSEG TEMP_UPD 000000de
CSEG TEMP_COMPARSION 000000dd
CSEG _STATE_ERROR 000000bd
CSEG SW_CHECK_PROCESS 00000161
DEF drem16uL r14 DEF drem16uL r14
DEF drem16uH r15 DEF drem16uH r15
DEF dres16uL r16 DEF dres16uL r16
@ -566,42 +581,42 @@ DEF dd16uH r17
DEF dv16uL r18 DEF dv16uL r18
DEF dv16uH r19 DEF dv16uH r19
DEF dcnt16u r20 DEF dcnt16u r20
CSEG div16u 000000b2 CSEG div16u 000000ca
CSEG d16u_1 000000b5 CSEG d16u_1 000000cd
CSEG d16u_2 000000ba CSEG d16u_2 000000d2
CSEG d16u_3 000000c3 CSEG d16u_3 000000db
CSEG TEMP_CONV 0000011e CSEG TEMP_CONV 0000014b
CSEG DELAY_LOOP_24 000001d6 CSEG DELAY_LOOP_24 00000203
CSEG TEMP_RD 000000d4 CSEG TEMP_RD 00000101
CSEG OW_PRESENCE 00000142 CSEG OW_PRESENCE 0000016f
CSEG OW_SEND_BYTE 00000157 CSEG OW_SEND_BYTE 00000184
CSEG OW_RD_BYTE 00000178 CSEG _RD_L 000000fc
CSEG _TEMP_RD_TO_UNSIGNED 000000f0 CSEG OW_RD_BYTE 000001a5
CSEG _TEMP_RD_CONTINUE 000000f9 CSEG _TEMP_RD_TO_UNSIGNED 0000011d
CSEG _TEMP_RD_END 00000102 CSEG _TEMP_RD_CONTINUE 00000126
CSEG _USI_TRANSMIT_LOOP 0000012d CSEG _TEMP_RD_END 0000012f
CSEG DEBOUNCE_SW 000001c2 CSEG _USI_TRANSMIT_LOOP 0000015a
CSEG _INTO_DEFAULT_STATE 0000013d CSEG DEBOUNCE_SW 000001ef
CSEG _SW_CHECK_PROCESS_END 00000140 CSEG _INTO_DEFAULT_STATE 0000016a
CSEG DELAY_LOOP_16 000001d2 CSEG _SW_CHECK_PROCESS_END 0000016d
CSEG OW_CHECK_PRESENCE 00000151 CSEG DELAY_LOOP_16 000001ff
CSEG _EXIT 00000156 CSEG OW_CHECK_PRESENCE 0000017e
CSEG _OW_SEND_BYTE_LOOP 0000015b CSEG _EXIT 00000183
CSEG _OW_SEND_0 0000015e CSEG _OW_SEND_BYTE_LOOP 00000188
CSEG _OW_SEND_1 00000169 CSEG _OW_SEND_0 0000018b
CSEG _OW_SEND_BYTE_END 00000173 CSEG _OW_SEND_1 00000196
CSEG _OW_RD_BYTE_LP 0000017d CSEG _OW_SEND_BYTE_END 000001a0
CSEG _OW_RD_BYTE_LP 000001aa
EQU dividend 00000061 EQU dividend 00000061
EQU divisor 0000000a EQU divisor 0000000a
CSEG DIV_LOOP 0000019b CSEG DIV_LOOP 000001c8
CSEG DISPLAY_SYMBOLS 000001eb CSEG DISPLAY_SYMBOLS 00000218
CSEG DELAY 000001db CSEG DELAY 00000208
CSEG BEEP_LONG 000001bb CSEG _loop_2 000001f3
CSEG _loop_2 000001c6 CSEG _loop_0 000001f4
CSEG _loop_0 000001c7 CSEG _dec_0 000001f5
CSEG _dec_0 000001c8 CSEG _loop_1 000001f7
CSEG _loop_1 000001ca CSEG _loop_3 000001f9
CSEG _loop_3 000001cc CSEG _DELAY_0 0000020c
CSEG _DELAY_0 000001df CSEG _DELAY_1 0000020d
CSEG _DELAY_1 000001e0 CSEG _DELAY_2 0000020e
CSEG _DELAY_2 000001e1

View File

@ -29,68 +29,77 @@
<DIGITS><FILE>main.asm</FILE><LINE>26</LINE></DIGITS> <DIGITS><FILE>main.asm</FILE><LINE>26</LINE></DIGITS>
<CURRENT_DIGIT><FILE>main.asm</FILE><LINE>27</LINE></CURRENT_DIGIT> <CURRENT_DIGIT><FILE>main.asm</FILE><LINE>27</LINE></CURRENT_DIGIT>
<SW_FLAGS><FILE>main.asm</FILE><LINE>28</LINE></SW_FLAGS> <SW_FLAGS><FILE>main.asm</FILE><LINE>28</LINE></SW_FLAGS>
<HYSTERESIS><FILE>main.asm</FILE><LINE>29</LINE></HYSTERESIS> <TEMP_L><FILE>main.asm</FILE><LINE>29</LINE></TEMP_L>
<TEMP_L><FILE>main.asm</FILE><LINE>30</LINE></TEMP_L> <TEMP_H><FILE>main.asm</FILE><LINE>30</LINE></TEMP_H>
<TEMP_H><FILE>main.asm</FILE><LINE>31</LINE></TEMP_H> <TEMP_F><FILE>main.asm</FILE><LINE>31</LINE></TEMP_F>
<TEMP_F><FILE>main.asm</FILE><LINE>32</LINE></TEMP_F> <SETTING_INT><FILE>main.asm</FILE><LINE>32</LINE></SETTING_INT>
<RESET_vect><FILE>main.asm</FILE><LINE>185</LINE></RESET_vect> <SETTING_F><FILE>main.asm</FILE><LINE>33</LINE></SETTING_F>
<TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>90</LINE></TIMER0_COMPA_vect> <SETTING_HYST><FILE>main.asm</FILE><LINE>34</LINE></SETTING_HYST>
<PCINT0_vect><FILE>main.asm</FILE><LINE>53</LINE></PCINT0_vect> <SETTING_MODE><FILE>main.asm</FILE><LINE>35</LINE></SETTING_MODE>
<_PCINT0_vect_end><FILE>main.asm</FILE><LINE>80</LINE></_PCINT0_vect_end> <DEVICE_FAMILY_CODE><FILE>main.asm</FILE><LINE>36</LINE></DEVICE_FAMILY_CODE>
<_INTO_PROGRAM_STATE><FILE>main.asm</FILE><LINE>76</LINE></_INTO_PROGRAM_STATE> <RESET_vect><FILE>main.asm</FILE><LINE>189</LINE></RESET_vect>
<_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>102</LINE></_CLR_CURRENT_DIGIT> <TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>94</LINE></TIMER0_COMPA_vect>
<_indicate_1><FILE>main.asm</FILE><LINE>106</LINE></_indicate_1> <PCINT0_vect><FILE>main.asm</FILE><LINE>57</LINE></PCINT0_vect>
<_indicate_2><FILE>main.asm</FILE><LINE>126</LINE></_indicate_2> <_PCINT0_vect_end><FILE>main.asm</FILE><LINE>84</LINE></_PCINT0_vect_end>
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>583</LINE></DISPLAY_DECODER> <_INTO_PROGRAM_STATE><FILE>main.asm</FILE><LINE>80</LINE></_INTO_PROGRAM_STATE>
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>396</LINE></USI_TRANSMIT> <_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>106</LINE></_CLR_CURRENT_DIGIT>
<_indicate_3><FILE>main.asm</FILE><LINE>144</LINE></_indicate_3> <_indicate_1><FILE>main.asm</FILE><LINE>110</LINE></_indicate_1>
<_indicate_4><FILE>main.asm</FILE><LINE>160</LINE></_indicate_4> <_indicate_2><FILE>main.asm</FILE><LINE>130</LINE></_indicate_2>
<_indicate_exit><FILE>main.asm</FILE><LINE>172</LINE></_indicate_exit> <DISPLAY_DECODER><FILE>main.asm</FILE><LINE>710</LINE></DISPLAY_DECODER>
<MCU_INIT><FILE>main.asm</FILE><LINE>191</LINE></MCU_INIT> <USI_TRANSMIT><FILE>main.asm</FILE><LINE>523</LINE></USI_TRANSMIT>
<BEEP_SHORT><FILE>main.asm</FILE><LINE>599</LINE></BEEP_SHORT> <_indicate_3><FILE>main.asm</FILE><LINE>148</LINE></_indicate_3>
<LOOP><FILE>main.asm</FILE><LINE>233</LINE></LOOP> <_indicate_4><FILE>main.asm</FILE><LINE>164</LINE></_indicate_4>
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>237</LINE></_STATE_DEFAULT> <_indicate_exit><FILE>main.asm</FILE><LINE>176</LINE></_indicate_exit>
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>244</LINE></_STATE_PROGRAM> <MCU_INIT><FILE>main.asm</FILE><LINE>195</LINE></MCU_INIT>
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>542</LINE></DISPLAY_UPD_DIGITS> <RD_F_CODE><FILE>main.asm</FILE><LINE>386</LINE></RD_F_CODE>
<TEMP_UPD><FILE>main.asm</FILE><LINE>268</LINE></TEMP_UPD> <ERR_FAMILY_CODE><FILE>main.asm</FILE><LINE>247</LINE></ERR_FAMILY_CODE>
<_STATE_ERROR><FILE>main.asm</FILE><LINE>250</LINE></_STATE_ERROR> <START_PROGRAM><FILE>main.asm</FILE><LINE>252</LINE></START_PROGRAM>
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>427</LINE></SW_CHECK_PROCESS> <BEEP_LONG><FILE>main.asm</FILE><LINE>734</LINE></BEEP_LONG>
<BEEP_SHORT><FILE>main.asm</FILE><LINE>726</LINE></BEEP_SHORT>
<LOOP><FILE>main.asm</FILE><LINE>261</LINE></LOOP>
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>265</LINE></_STATE_DEFAULT>
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>273</LINE></_STATE_PROGRAM>
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>669</LINE></DISPLAY_UPD_DIGITS>
<TEMP_UPD><FILE>main.asm</FILE><LINE>369</LINE></TEMP_UPD>
<TEMP_COMPARSION><FILE>main.asm</FILE><LINE>296</LINE></TEMP_COMPARSION>
<_STATE_ERROR><FILE>main.asm</FILE><LINE>279</LINE></_STATE_ERROR>
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>554</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>376</LINE></TEMP_CONV> <TEMP_CONV><FILE>main.asm</FILE><LINE>503</LINE></TEMP_CONV>
<DELAY_LOOP_24><FILE>main.asm</FILE><LINE>650</LINE></DELAY_LOOP_24> <DELAY_LOOP_24><FILE>main.asm</FILE><LINE>777</LINE></DELAY_LOOP_24>
<TEMP_RD><FILE>main.asm</FILE><LINE>284</LINE></TEMP_RD> <TEMP_RD><FILE>main.asm</FILE><LINE>411</LINE></TEMP_RD>
<OW_PRESENCE><FILE>main.asm</FILE><LINE>451</LINE></OW_PRESENCE> <OW_PRESENCE><FILE>main.asm</FILE><LINE>578</LINE></OW_PRESENCE>
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>478</LINE></OW_SEND_BYTE> <OW_SEND_BYTE><FILE>main.asm</FILE><LINE>605</LINE></OW_SEND_BYTE>
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>511</LINE></OW_RD_BYTE> <_RD_L><FILE>main.asm</FILE><LINE>402</LINE></_RD_L>
<_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>319</LINE></_TEMP_RD_TO_UNSIGNED> <OW_RD_BYTE><FILE>main.asm</FILE><LINE>638</LINE></OW_RD_BYTE>
<_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>330</LINE></_TEMP_RD_CONTINUE> <_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>446</LINE></_TEMP_RD_TO_UNSIGNED>
<_TEMP_RD_END><FILE>main.asm</FILE><LINE>340</LINE></_TEMP_RD_END> <_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>457</LINE></_TEMP_RD_CONTINUE>
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>414</LINE></_USI_TRANSMIT_LOOP> <_TEMP_RD_END><FILE>main.asm</FILE><LINE>467</LINE></_TEMP_RD_END>
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>617</LINE></DEBOUNCE_SW> <_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>541</LINE></_USI_TRANSMIT_LOOP>
<_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>440</LINE></_INTO_DEFAULT_STATE> <DEBOUNCE_SW><FILE>main.asm</FILE><LINE>744</LINE></DEBOUNCE_SW>
<_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>443</LINE></_SW_CHECK_PROCESS_END> <_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>567</LINE></_INTO_DEFAULT_STATE>
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>643</LINE></DELAY_LOOP_16> <_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>570</LINE></_SW_CHECK_PROCESS_END>
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>467</LINE></OW_CHECK_PRESENCE> <DELAY_LOOP_16><FILE>main.asm</FILE><LINE>770</LINE></DELAY_LOOP_16>
<_EXIT><FILE>main.asm</FILE><LINE>473</LINE></_EXIT> <OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>594</LINE></OW_CHECK_PRESENCE>
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>483</LINE></_OW_SEND_BYTE_LOOP> <_EXIT><FILE>main.asm</FILE><LINE>600</LINE></_EXIT>
<_OW_SEND_0><FILE>main.asm</FILE><LINE>487</LINE></_OW_SEND_0> <_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>610</LINE></_OW_SEND_BYTE_LOOP>
<_OW_SEND_1><FILE>main.asm</FILE><LINE>495</LINE></_OW_SEND_1> <_OW_SEND_0><FILE>main.asm</FILE><LINE>614</LINE></_OW_SEND_0>
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>502</LINE></_OW_SEND_BYTE_END> <_OW_SEND_1><FILE>main.asm</FILE><LINE>622</LINE></_OW_SEND_1>
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>517</LINE></_OW_RD_BYTE_LP> <_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>629</LINE></_OW_SEND_BYTE_END>
<DIV_LOOP><FILE>main.asm</FILE><LINE>559</LINE></DIV_LOOP> <_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>644</LINE></_OW_RD_BYTE_LP>
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>683</LINE></DISPLAY_SYMBOLS> <DIV_LOOP><FILE>main.asm</FILE><LINE>686</LINE></DIV_LOOP>
<DELAY><FILE>main.asm</FILE><LINE>658</LINE></DELAY> <DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>810</LINE></DISPLAY_SYMBOLS>
<BEEP_LONG><FILE>main.asm</FILE><LINE>607</LINE></BEEP_LONG> <DELAY><FILE>main.asm</FILE><LINE>785</LINE></DELAY>
<_loop_2><FILE>main.asm</FILE><LINE>623</LINE></_loop_2> <_loop_2><FILE>main.asm</FILE><LINE>750</LINE></_loop_2>
<_loop_0><FILE>main.asm</FILE><LINE>625</LINE></_loop_0> <_loop_0><FILE>main.asm</FILE><LINE>752</LINE></_loop_0>
<_dec_0><FILE>main.asm</FILE><LINE>627</LINE></_dec_0> <_dec_0><FILE>main.asm</FILE><LINE>754</LINE></_dec_0>
<_loop_1><FILE>main.asm</FILE><LINE>630</LINE></_loop_1> <_loop_1><FILE>main.asm</FILE><LINE>757</LINE></_loop_1>
<_loop_3><FILE>main.asm</FILE><LINE>633</LINE></_loop_3> <_loop_3><FILE>main.asm</FILE><LINE>760</LINE></_loop_3>
<_DELAY_0><FILE>main.asm</FILE><LINE>664</LINE></_DELAY_0> <_DELAY_0><FILE>main.asm</FILE><LINE>791</LINE></_DELAY_0>
<_DELAY_1><FILE>main.asm</FILE><LINE>666</LINE></_DELAY_1> <_DELAY_1><FILE>main.asm</FILE><LINE>793</LINE></_DELAY_1>
<_DELAY_2><FILE>main.asm</FILE><LINE>668</LINE></_DELAY_2> <_DELAY_2><FILE>main.asm</FILE><LINE>795</LINE></_DELAY_2>
</LABELS> </LABELS>
</ASSEMBLER_INFO> </ASSEMBLER_INFO>

136
main.asm
View File

@ -26,11 +26,14 @@ SRAM_TEMP_1: .BYTE 2 ; Хранения временно
DIGITS: .BYTE 4 ; Ячейки, где хранятся символы, для вывода на индикатор DIGITS: .BYTE 4 ; Ячейки, где хранятся символы, для вывода на индикатор
CURRENT_DIGIT: .BYTE 1 ; Номер разряда индикатора, который сейчас горит CURRENT_DIGIT: .BYTE 1 ; Номер разряда индикатора, который сейчас горит
SW_FLAGS: .BYTE 1 ; Состояние кнопок SW_FLAGS: .BYTE 1 ; Состояние кнопок
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 ; Уставка: целая часть SETTING_INT: .BYTE 1 ; Уставка: целая часть
SETTING_F: .BYTE 1 ; Уставка: дробная часть
SETTING_HYST: .BYTE 1 ; Гистерезис: отклонение от уставки
SETTING_MODE: .BYTE 1 ; Режим работы: '1' - нагрев; '0' - 'охлаждение'
DEVICE_FAMILY_CODE: .BYTE 1 ; Должно быть 0x10 для DS18B20
;//</editor-fold> ;//</editor-fold>
@ -210,21 +213,45 @@ MCU_INIT:
; outi r16, UCSRB, (1<<TXEN) ; Включение передачии ; outi r16, UCSRB, (1<<TXEN) ; Включение передачии
; outi r16, UCSRC, (1<<UCSZ1) | (1<<UCSZ0) ; Асинхронный режим, 8 бит фрейм, 1 стоповый бит ; outi r16, UCSRC, (1<<UCSZ1) | (1<<UCSZ0) ; Асинхронный режим, 8 бит фрейм, 1 стоповый бит
; **** ИНИЦИАЛИЗАЦИЯ ДАННЫХ В ОЗУ ******************************
clr r1 clr r1
sts CURRENT_DIGIT, r1 sts CURRENT_DIGIT, r1
ldi r16, 0x00 ldi r16, 0x00
sts MCU_STATE, r16 ; переводим МК сразу в режим измерения температуры sts MCU_STATE, r16 ; переводим МК сразу в режим измерения температуры
ldi r16, DEFAULT_SETTING_INT
sts SETTING_INT, r16
ldi r16, DEFAULT_SETTING_F
sts SETTING_F, r16
ldi r16, DEFAULT_SETTING_HYST
sts SETTING_HYST, r16
ldi r16, DEFAULT_SETTING_MODE
sts SETTING_MODE, r16
clr r16 clr r16
sts TEMP_L, r16 sts TEMP_L, r16
sts TEMP_H, r16 sts TEMP_H, r16
ldi r16, 0xf0 ldi r16, 0xf0
sts TEMP_F, r16 sts TEMP_F, r16
rcall BEEP_SHORT ; **** СТАРТУЕМ ************************************************
display_load 0 ; загружаем число, которое нужно показать на индикатор rcall RD_F_CODE ; проверяем что датчик есть на шине
lds r16, DEVICE_FAMILY_CODE
cpi r16, 0x10
brne ERR_FAMILY_CODE
rjmp START_PROGRAM
ERR_FAMILY_CODE:
ldi r17, MCU_STATE_ERROR
sts MCU_STATE, r17
rcall BEEP_LONG
rjmp PC+2
START_PROGRAM:
rcall BEEP_SHORT
display_load 0
; sei ; sei
//</editor-fold> //</editor-fold>
@ -242,6 +269,7 @@ _STATE_DEFAULT:
rcall DISPLAY_UPD_DIGITS rcall DISPLAY_UPD_DIGITS
rcall TEMP_UPD rcall TEMP_UPD
outi r16, TIMSK, (1<<OCIE0A) ; вкл. индикатор outi r16, TIMSK, (1<<OCIE0A) ; вкл. индикатор
rcall TEMP_COMPARSION
_STATE_PROGRAM: _STATE_PROGRAM:
cpi r16, MCU_STATE_PROGRAM cpi r16, MCU_STATE_PROGRAM
brne _STATE_ERROR brne _STATE_ERROR
@ -265,11 +293,84 @@ _STATE_ERROR:
; **** ПОДПРОГРАММЫ ********************************************** ; **** ПОДПРОГРАММЫ **********************************************
.INCLUDE "div16u.asm" .INCLUDE "div16u.asm"
TEMP_COMPARSION:
; push r16
; push r17
; push r18
; push r19
; push r20
; push r21
; push r22
;
; lds r16, TEMP_L
; lds r17, TEMP_H // всегда 0?
; lds r18, TEMP_F
; lds r19, SETTING_INT
; lds r20, SETTING_F
; lds r21, SETTING_MODE
;
; brtc _START_COMPARSION
; neg r19
;
;_START_COMPARSION:
; tst r21
; brne _HEATING
;_COOLING:
; rjmp _COMPARSION_EXIT
;_HEATING:
; cp r16, r19
; brge _HEATING_GREATER_OR_E ; если целая часть текущей температуры <= уставки - продолжаем сравнение
; brtc PC+3
; relay_off
; rjmp PC+2
; relay_on ; c
; rjmp _COMPARSION_EXIT
;_HEATING_GREATER_OR_E:
; cp r16, r19
; breq _HEATING_GREATER_E
; brtc PC+3
; relay_on
; rjmp PC+2
; relay_off ; c
; rjmp _COMPARSION_EXIT
;_HEATING_GREATER_E:
; brtc PC+3
; relay_off
; rjmp PC+2
; relay_on ; c
; cp r18, r20
; brge PC+2 ; если дробная часть текущей температуры >= уставки - выключаем реле
; rjmp _COMPARSION_EXIT
;_HEATING_GREATER_OR_E_F:
; 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
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: обновляем данные о температуре"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: обновляем данные о температуре">
TEMP_UPD: TEMP_UPD:
push r17 push r17
rcall TEMP_CONV rcall TEMP_CONV
DELAY24 760000 DELAY24 500000
DELAY24 500000
rcall TEMP_RD rcall TEMP_RD
; обновляем данные в ячейках ; обновляем данные в ячейках
@ -281,6 +382,31 @@ TEMP_UPD:
ret ret
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подрограмма: чтение кода семейства датчика">
RD_F_CODE:
push r16
rcall OW_PRESENCE
ldi r16, DS18B20_CMD_SKIPROM
mov OW_CMD_r, r16
rcall OW_SEND_BYTE
ldi r16, DS18B20_CMD_RSCRATCHPAD
mov OW_CMD_r, r16
rcall OW_SEND_BYTE
ldi XL, LOW(DEVICE_FAMILY_CODE)
ldi XH, HIGH(DEVICE_FAMILY_CODE)
ldi r16, 8
_RD_L:
rcall OW_RD_BYTE
dec r16
brne _RD_L
pop r16
ret//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: опрос температуры и чтение"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: опрос температуры и чтение">
TEMP_RD: TEMP_RD:
push r16 push r16

113
main.hex
View File

@ -7,59 +7,68 @@
:10004A000F931F935FB74091670045300CF403C0CC :10004A000F931F935FB74091670045300CF403C0CC
:10005A00442740936700403081F493989498959888 :10005A00442740936700403081F493989498959888
:10006A000EF002C00BE002C000916500002311F0FF :10006A000EF002C00BE002C000916500002311F0FF
:10007A00929A01C092986AD1E5D0413081F492985F :10007A00929A01C09298B5D130D1413081F49298C8
:10008A00949895980091640030916500032B11F0C3 :10008A00949895980091640030916500032B11F0C3
:10009A00939A01C093980091640058D1D3D042300A :10009A00939A01C0939800916400A3D11ED1423073
:1000AA0059F4929893989598949A009163004ED136 :1000AA0059F4929893989598949A0091630099D1EB
:1000BA00002D0F77002EC6D0433041F492989398C2 :1000BA00002D0F77002E11D1433041F49298939876
:1000CA009498959A00916C0041D1BCD04395409385 :1000CA009498959A00916B008CD107D143954093EF
:1000DA0067005FBF1F910F915F914F9118950FEDC8 :1000DA0067005FBF1F910F915F914F9118950FEDC8
:1000EA000DBF0FE701BB01EE07BB0CE108BB02E045 :1000EA000DBF0FE701BB01EE07BB0CE108BB02E045
:1000FA0000BF05E003BF09E106BF01E009BF00E256 :1000FA0000BF05E003BF09E106BF00E20BBF0CE148
:10010A000BBF0CE100BD37E04EE746D11124109237 :10010A0000BD11241092670000E0009360000FEF19
:10011A00670000E000936000002700936A000093E4 :10011A0000936C0005E000936D0005E000936E000B
:10012A006B0000EF00936C001CD180E090E000911E :10012A0001E000936F0000270093690000936A00C2
:10013A006000003071F49698EFD07AD052E13DE831 :10013A0000EF00936B0060D180E090E000916000D6
:10014A004DEF2ED12BD010916A00812F10916B00A8 :10014A00003031F4969833D161D001E009BF25D04F
:10015A00912F013019F49698DFD080D0023039F708 :10015A00013019F496982BD1CCD0023079F7969ABF
:10016A00969A1BE010936300109364001093650045 :10016A001BE01093630010936400109365001093D2
:10017A0010936600DCCFEE24FF1841E1001F111F27 :10017A006600E4CFEE24FF1841E1001F111F4A95E3
:10018A004A9509F40895EE1CFF1CE21AF30A20F4BA :10018A0009F40895EE1CFF1CE21AF30A20F4E20EA9
:10019A00E20EF31E8894F2CF0894F0CF0F931F93C8 :10019A00F31E8894F2CF0894F0CF0F931F932F93F6
:1001AA002F933F934F9368D00CEC802E7AD00EEBAE :1001AA003F934F935F936F930091690010916A0098
:1001BA00802E77D0AAE6B0E095D0ABE6B0E092D038 :1001BA0020916B0030916C0040916D0050916F005E
:1001CA0010916A0020916B002F93287F283F11F02D :1001CA000EF43195552309F419C003172CF416F4CB
:1001DA00E89409C02F9168941095209531E0130F87 :1001DA00909801C0909A12C0031729F016F4909AC9
:1001EA0030E0231F01C02F91269517952695179564 :1001EA0001C090980BC016F4909801C0909A2417F9
:1001FA00269517952695179530916A000EF4319534 :1001FA000CF404C016F4909A01C090986F915F9124
:10020A00432F3F70432F330F330F330F440F340FF5 :10020A004F913F912F911F910F9108951F935BD0AA
:10021A00369536953695369510936A0020936B007D :10021A005CE034E34DEF0FD15CE034E34DEF0BD1FA
:10022A0030936C004F913F912F911F910F91089538 :10022A0008D010916900812F10916A00912F1F91B7
:10023A000F9322D00CEC802E34D004E4802E31D0DF :10023A0008950F931F932F933F934F9368D00CEC1D
:10024A000F9108950F930FB800E40EB90BE10DB9A1 :10024A00802E7AD00EEB802E77D0A9E6B0E095D03A
:10025A00769BFDCFC09AC0980F9108950F938CD0CA :10025A00AAE6B0E092D01091690020916A002F932B
:10026A00B29B0196B39B0197B49B01C003C000E007 :10026A00287F283F11F0E89409C02F9168941095CF
:10027A00009360000F910895F894B99A33E04EEB19 :10027A00209531E0130F30E0231F01C02F912695FE
:10028A008BD0B99830E04AE887D005D033E042E312 :10028A0017952695179526951795269517953091C2
:10029A0083D078940895B19B716002C0B1997E7F32 :10029A0069000EF43195432F3F70432F330F330F0C
:1002AA0008950F931F93082D18E0069508F458F047 :1002AA00330F440F340F369536953695369510939D
:1002BA00F894B99A30E046E76FD0B99830E042E155 :1002BA00690020936A0030936B004F913F912F9110
:1002CA006BD078940AC0F894B99A30E04AE064D0C6 :1002CA001F910F9108950F9322D00CEC802E34D0F9
:1002DA00B99830E04EE760D078941A9531F71F91BB :1002DA0004E4802E31D00F9108950F930FB800E4F3
:1002EA000F9108950F931F93002718E0F89406952D :1002EA000EB90BE10DB9769BFDCFC09AC0980F915C
:1002FA00B99A30E04AE050D0B99830E040E14CD0A9 :1002FA0008950F938CD0B29B0196B39B0197B49B40
:10030A00B199006830E04CE647D01A9581F70C9312 :10030A0001C003C000E0009360000F910895F894C3
:10031A0078941F910F910895F8945F9354E0A3E69F :10031A00B99A33E04EEB8BD0B99830E04AE887D0EF
:10032A00B0E08093610090936200009161001091A7 :10032A0005D033E042E383D078940895B19B71609D
:10033A0062002AE030E01FDFED9200936100109323 :10033A0002C0B1997E7F08950F931F93082D18E08C
:10034A0062005A9591F75F91789408950F931F93DD :10034A00069508F458F0F894B99A30E046E76FD069
:10035A00E4EDF3E01127E00FF11F04901F910F91D4 :10035A00B99830E042E16BD078940AC0F894B99A1F
:10036A000895C59A22D0C5980895C59A1ED01DD061 :10036A0030E04AE064D0B99830E04EE760D0789443
:10037A001CD01BD0C59808950F931F932F932AE082 :10037A001A9531F71F910F9108950F931F93002734
:10038A001FEF0FEF0A95F1F71A95D9F72A95C1F7DA :10038A0018E0F8940695B99A30E04AE050D0B99846
:10039A002F911F910F91089541503040E8F7089529 :10039A0030E040E14CD0B199006830E04CE647D0FB
:1003AA00415030405040E0F708950F931F932F9328 :1003AA001A9581F70C9378941F910F910895F894F8
:1003BA0026E00FEF1FEF1A95F1F70A95D9F72A955C :1003BA005F9354E0A3E6B0E08093610090936200FB
:1003CA00C1F72F911F910F910895C0F9A4B0999286 :1003CA0000916100109162002AE030E0D3DEED92E4
:0603DA0082F880909CBF38 :1003DA0000936100109362005A9591F75F917894A7
:1003EA0008950F931F93EAE6F4E01127E00FF11F37
:1003FA0004901F910F910895C59A22D0C598089527
:10040A00C59A1ED01DD01CD01BD0C59808950F9335
:10041A001F932F932AE01FEF0FEF0A95F1F71A9512
:10042A00D9F72A95C1F72F911F910F91089541503D
:10043A003040E8F70895415030405040E0F70895C1
:10044A000F931F932F9326E00FEF1FEF1A95F1F7E3
:10045A000A95D9F72A95C1F72F911F910F910895FF
:0C046A00C0F9A4B0999282F880909CBF69
:00000001FF :00000001FF