send data to uart

This commit is contained in:
Sergey Yarkov 2023-06-26 12:30:38 +03:00
parent 54571b0e23
commit 482bb3794c
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
8 changed files with 890 additions and 798 deletions

View File

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

View File

@ -7,77 +7,79 @@
:10004A000F931F935FB74091670045300CF403C0CC :10004A000F931F935FB74091670045300CF403C0CC
:10005A00442740936700403081F493989498959888 :10005A00442740936700403081F493989498959888
:10006A000EF002C00BE002C000916500002311F0FF :10006A000EF002C00BE002C000916500002311F0FF
:10007A00929A01C09298F8D173D1413081F4929842 :10007A00929A01C092980FD28CD1413081F4929811
:10008A00949895980091640030916500032B11F0C3 :10008A00949895980091640030916500032B11F0C3
:10009A00939A01C0939800916400E6D161D14230ED :10009A00939A01C0939800916400FDD17AD14230BD
:1000AA0059F4929893989598949A00916300DCD1A8 :1000AA0059F4929893989598949A00916300F3D191
:1000BA00002D0F77002E54D1433041F49298939833 :1000BA00002D0F77002E6DD1433041F4929893981A
:1000CA009498959A00916B00CFD14AD14395409369 :1000CA009498959A00916B00E6D163D14395409339
:1000DA0067005FBF1F910F915F914F9118950FEDC8 :1000DA0067005FBF1F910F915F914F9118950FEDC8
:1000EA000DBF0FE701BB01EE07BB0CE108BB02E045 :1000EA000DBF0FE701BB01EE07BB0CE108BB02E045
:1000FA0000BF05E003BF09E106BF00E20BBF0CE148 :1000FA0000BF05E003BF09E106BF00E20BBF0CE148
:10010A0000BD11241092670000E0009360000CE229 :10010A0000BD03E309B900E002B908E00AB906E054
:10011A0000936D0001E000936C0005E000936E000F :10011A0003B911241092670000E0009360000CE21A
:10012A0001E000936F0000270093690000936A00C2 :10012A0000936D0001E000936C0005E000936E00FF
:10013A0000EF00936B00B6D000917000083209F40A :10013A0001E000936F0000270093690000936A00B2
:10014A0005C012E0109360009ED101C098D180E0F2 :10014A0000EF00936B00C5D000917000083209F4EB
:10015A0090E000916000003031F496986BD18FD016 :10015A0005C012E010936000ADD101C0A7D180E0C4
:10016A0001E009BF39D0013019F4969863D104D15E :10016A0090E000916000003039F496987AD1A2D0DC
:10017A00023079F7969AEDCFEE24FF1841E1001F7D :10017A0001E009BF50D039D0013019F4969871D1F5
:10018A00111F4A9509F40895EE1CFF1CE21AF30A9E :10018A0014D1023071F7969AECCFEE24FF1841E1B0
:10019A0020F4E20EF31E8894F2CF0894F0CFFF18F1 :10019A00001F111F4A9509F40895EE1CFF1CE21A6C
:1001AA0029E0001F2A9509F40895FF1CF11A18F492 :1001AA00F30A20F4E20EF31E8894F2CF0894F0CFFB
:1001BA00F10E8894F6CF0894F4CF5527442760E1CE :1001BA00FF1829E0001F2A9509F40895FF1CF11A77
:1001CA003695279510F4400F511F57954795379547 :1001CA0018F4F10E8894F6CF0894F4CF55274427F3
:1001DA0027956A95B9F708950F931F932F933F9325 :1001DA0060E13695279510F4400F511F57954795C2
:1001EA004F935F936F937F930091690010916A0018 :1001EA00379527956A95B9F708950F930091690095
:1001FA002AE030E0E2DF022F132F20916B00332731 :1001FA00502E0DD000916B00502E09D000B3017023
:10020A00020F131F109371000093720040916D004A :10020A00502E05D004E0502E02D00F9108955D9B28
:10021A0050916C0060916E004F935F937727461B55 :10021A00FECF5CB808950F931F932F933F934F938C
:10022A00570BB42EA52E5F914F917727460F571F74 :10022A005F930091690010916A002AE030E0CEDF06
:10023A00D42EC52E0EF004C0009510950F5F1F4FE7 :10023A00022F132F20916B003327020F131F1093E5
:10024A00B016A10624F40D151C054CF40FC04091FC :10024A0071000093720040916D0050916C006091B2
:10025A006F00442311F4909801C0909A07C040910E :10025A006E004F935F937727461B570BB42EA52E3C
:10026A006F00442311F4909A01C090987F916F9186 :10026A005F914F917727460F571FD42EC52E0EF058
:10027A005F914F913F912F911F910F9108951F9375 :10027A0004C0009510950F5F1F4FB016A10624F415
:10028A0065D05CE034E34DEF19D15CE034E34DEF27 :10028A000D151C054CF40FC040916F00442311F466
:10029A0015D112D010916900812F10916A00912F07 :10029A00909801C0909A07C040916F00442311F4CE
:1002AA001F9108950F9376D003E3802E88D0A0E79C :1002AA00909A01C090985F914F913F912F911F9121
:1002BA00B0E0A6D00F9108950F931F932F933F9309 :1002BA000F9108951F9361D053E137E84DEF15D19F
:1002CA004F9368D00CEC802E7AD00EEB802E77D02C :1002CA0012D010916900812F10916A00912F1F910D
:1002DA00A9E6B0E095D0AAE6B0E092D01091690004 :1002DA0008950F9378D003E3802E8AD0A0E7B0E088
:1002EA0020916A002F93287F283F11F0E89409C0D3 :1002EA00A6D00F9108950F931F932F933F934F9387
:1002FA002F9168941095209531E0130F30E0231F59 :1002FA006AD070FF3CC00CEC802E7AD00EEB802EB8
:10030A0001C02F912695179526951795269517952D :10030A0077D0A9E6B0E093D0AAE6B0E090D01091F9
:10031A0026951795309169000EF43195432F3F7059 :10031A00690020916A002F93287F283F11F0E89402
:10032A00432F330F330F330F440F340F369536955F :10032A0007C02F916894109520951F5F2F4F01C029
:10033A00369536951093690020936A0030936B00C6 :10033A002F91269517952695179526951795269503
:10034A004F913F912F911F910F9108950F9322D0B2 :10034A001795309169000EF43195432F3F70432F72
:10035A000CEC802E34D004E4802E31D00F91089515 :10035A00330F330F330F440F340F369536953695D6
:10036A000F930FB800E40EB90BE10DB9769BFDCFE0 :10036A0036951093690020936A0030936B004F9181
:10037A00C09AC0980F9108950F938CD0B29B0196A2 :10037A003F912F911F910F9108950F9324D070FFF1
:10038A00B39B0197B49B01C003C000E000936000D7 :10038A0006C00CEC802E34D004E4802E31D00F91BC
:10039A000F910895F894B99A33E04EEB8BD0B9983F :10039A0008950F930FB800E40EB90BE10DB9769BDF
:1003AA0030E04AE887D005D033E042E383D078943E :1003AA00FDCFC09AC0980F9108950F938AD0B29B3F
:1003BA000895B19B716002C0B1997E7F08950F9331 :1003BA000196B39B0197B49B01C003C000E0009370
:1003CA001F93082D18E0069508F458F0F894B99A86 :1003CA0060000F910895F894B99A33E04EEB89D002
:1003DA0030E046E76FD0B99830E042E16BD07894CC :1003DA00B99830E04AE885D005D033E042E381D0CD
:1003EA000AC0F894B99A30E04AE064D0B99830E08B :1003EA0078940895B19B716002C0B1997E7F089597
:1003FA004EE760D078941A9531F71F910F910895BE :1003FA000F931F93F894082D18E0069508F448F017
:10040A000F931F93002718E0F8940695B99A30E0E5 :10040A00B99A30E046E76DD0B99830E042E169D058
:10041A004AE050D0B99830E040E14CD0B199006838 :10041A0008C0B99A30E04AE064D0B99830E04EE7B3
:10042A0030E04CE647D01A9581F70C9378941F91E7 :10042A0060D01A9551F778941F910F9108950F9300
:10043A000F910895F8945F9354E0A3E6B0E0809397 :10043A001F93F894002718E00695B99A30E04AE02D
:10044A0061009093620000916100109162002AE0BD :10044A0050D0B99830E040E14CD0B199006830E022
:10045A0030E092DEED9200936100109362005A95AB :10045A004CE647D01A9581F70C9378941F910F9127
:10046A0091F75F91789408950F931F93E0EFF4E06A :10046A000895F8945F9354E0A3E6B0E080936100A6
:10047A001127E00FF11F04901F910F910895C59A5B :10047A009093620000916100109162002AE030E0DE
:10048A0022D0C5980895C59A1ED01DD01CD01BD065 :10048A0084DEED9200936100109362005A9591F711
:10049A00C59808950F931F932F932AE01FEF0FEF2C :10049A005F91789408950F931F93EEE1F5E0112789
:1004AA000A95F1F71A95D9F72A95C1F72F911F9155 :1004AA00E00FF11F04901F910F910895C59A22D071
:1004BA000F91089541503040E8F708954150304077 :1004BA00C5980895C59A1ED01DD01CD01BD0C598CA
:1004CA005040E0F708950F931F932F9326E00FEF04 :1004CA0008950F931F932F932AE01FEF0FEF0A95BA
:1004DA001FEF1A95F1F70A95D9F72A95C1F72F91C7 :1004DA00F1F71A95D9F72A95C1F72F911F910F9124
:1004EA001F910F910895C0F9A4B0999282F8809053 :1004EA00089541503040E8F7089541503040504057
:0204FA009CBFA5 :1004FA00E0F708950F931F932F9326E00FEF1FEF56
:10050A001A95F1F70A95D9F72A95C1F72F911F91F4
:10051A000F910895C0F9A4B0999282F880909CBF77
: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 Mon Jun 26 09:43:03 2023 AVRASM ver. 2.2.7 main.asm Mon Jun 26 12:19:45 2023
EQU SIGNATURE_000 0000001e EQU SIGNATURE_000 0000001e
@ -558,25 +558,26 @@ 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 00000239 CSEG DISPLAY_DECODER 00000250
CSEG USI_TRANSMIT 000001b5 CSEG USI_TRANSMIT 000001ce
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 00000157 CSEG RD_F_CODE 0000016e
CSEG ERR_FAMILY_CODE 000000a6 CSEG ERR_FAMILY_CODE 000000ae
CSEG START_PROGRAM 000000ab CSEG START_PROGRAM 000000b3
CSEG BEEP_LONG 00000248 CSEG BEEP_LONG 0000025f
CSEG BEEP_SHORT 00000244 CSEG BEEP_SHORT 0000025b
CSEG LOOP 000000ae CSEG LOOP 000000b6
CSEG _STATE_DEFAULT 000000b0 CSEG _STATE_DEFAULT 000000b8
CSEG _STATE_PROGRAM 000000b8 CSEG _STATE_PROGRAM 000000c1
CSEG DISPLAY_UPD_DIGITS 0000021f CSEG DISPLAY_UPD_DIGITS 00000236
CSEG TEMP_UPD 00000144 CSEG TEMP_UPD 0000015f
CSEG TEMP_COMPARSION 000000f1 CSEG TEMP_COMPARSION 00000110
CSEG _STATE_ERROR 000000bd CSEG TEMP_SEND_UART 000000fa
CSEG SW_CHECK_PROCESS 000001c1 CSEG _STATE_ERROR 000000c6
CSEG SW_CHECK_PROCESS 000001da
DEF drem16uL r14 DEF drem16uL r14
DEF drem16uH r15 DEF drem16uH r15
DEF dres16uL r16 DEF dres16uL r16
@ -586,19 +587,19 @@ DEF dd16uH r17
DEF dv16uL r18 DEF dv16uL r18
DEF dv16uH r19 DEF dv16uH r19
DEF dcnt16u r20 DEF dcnt16u r20
CSEG div16u 000000c1 CSEG div16u 000000ca
CSEG d16u_1 000000c4 CSEG d16u_1 000000cd
CSEG d16u_2 000000c9 CSEG d16u_2 000000d2
CSEG d16u_3 000000d2 CSEG d16u_3 000000db
DEF drem8u r15 DEF drem8u r15
DEF dres8u r16 DEF dres8u r16
DEF dd8u r16 DEF dd8u r16
DEF dv8u r17 DEF dv8u r17
DEF dcnt8u r18 DEF dcnt8u r18
CSEG div8u 000000d4 CSEG div8u 000000dd
CSEG d8u_1 000000d6 CSEG d8u_1 000000df
CSEG d8u_2 000000da CSEG d8u_2 000000e3
CSEG d8u_3 000000e0 CSEG d8u_3 000000e9
DEF mc16uL r16 DEF mc16uL r16
DEF mc16uH r17 DEF mc16uH r17
DEF mp16uL r18 DEF mp16uL r18
@ -608,51 +609,54 @@ DEF m16u1 r19
DEF m16u2 r20 DEF m16u2 r20
DEF m16u3 r21 DEF m16u3 r21
DEF mcnt16u r22 DEF mcnt16u r22
CSEG mpy16u 000000e2 CSEG mpy16u 000000eb
CSEG m16u_1 000000e7 CSEG m16u_1 000000f0
CSEG noad8 000000ea CSEG noad8 000000f3
CSEG UART_WR_BYTE 0000010c
DEF temp_r_l r16 DEF temp_r_l r16
DEF temp_r_h r17 DEF temp_r_h r17
DEF min_r_trhd_l r11 DEF min_r_trhd_l r11
DEF min_r_trhd_h r10 DEF min_r_trhd_h r10
DEF max_r_trhd_l r13 DEF max_r_trhd_l r13
DEF max_r_trhd_h r12 DEF max_r_trhd_h r12
CSEG _NEGATE_TEMP 00000121 CSEG _NEGATE_TEMP 0000013e
CSEG _COMPARE 00000125 CSEG _COMPARE 00000142
CSEG _MIN_THRESHOLD 0000012c CSEG _MIN_THRESHOLD 00000149
CSEG _MAX_THRESHOLD 00000134 CSEG _MAX_THRESHOLD 00000151
CSEG _COMPARSION_EXIT 0000013b CSEG _COMPARSION_EXIT 00000158
CSEG TEMP_CONV 000001ab CSEG TEMP_CONV 000001c2
CSEG DELAY_LOOP_24 00000263 CSEG DELAY_LOOP_24 0000027a
CSEG TEMP_RD 00000161 CSEG TEMP_RD 00000178
CSEG OW_PRESENCE 000001cf CSEG OW_PRESENCE 000001e8
CSEG OW_SEND_BYTE 000001e4 CSEG OW_SEND_BYTE 000001fd
CSEG OW_RD_BYTE 00000205 CSEG OW_RD_BYTE 0000021c
CSEG _TEMP_RD_TO_UNSIGNED 0000017d CSEG _TEMP_RD_EXIT 000001bc
CSEG _TEMP_RD_CONTINUE 00000186 CSEG _TEMP_RD_TO_UNSIGNED 00000196
CSEG _TEMP_RD_END 0000018f CSEG _TEMP_RD_CONTINUE 0000019d
CSEG _USI_TRANSMIT_LOOP 000001ba CSEG _TEMP_RD_END 000001a6
CSEG DEBOUNCE_SW 0000024f CSEG _TEMP_CONV_EXIT 000001cc
CSEG _INTO_DEFAULT_STATE 000001ca CSEG _USI_TRANSMIT_LOOP 000001d3
CSEG _SW_CHECK_PROCESS_END 000001cd CSEG DEBOUNCE_SW 00000266
CSEG DELAY_LOOP_16 0000025f CSEG _INTO_DEFAULT_STATE 000001e3
CSEG OW_CHECK_PRESENCE 000001de CSEG _SW_CHECK_PROCESS_END 000001e6
CSEG _EXIT 000001e3 CSEG DELAY_LOOP_16 00000276
CSEG _OW_SEND_BYTE_LOOP 000001e8 CSEG OW_CHECK_PRESENCE 000001f7
CSEG _OW_SEND_0 000001eb CSEG _EXIT 000001fc
CSEG _OW_SEND_1 000001f6 CSEG _OW_SEND_BYTE_LOOP 00000202
CSEG _OW_SEND_BYTE_END 00000200 CSEG _OW_SEND_0 00000205
CSEG _OW_RD_BYTE_LP 0000020a CSEG _OW_SEND_1 0000020e
CSEG _OW_SEND_BYTE_END 00000216
CSEG _OW_RD_BYTE_LP 00000221
EQU dividend 00000061 EQU dividend 00000061
EQU divisor 0000000a EQU divisor 0000000a
CSEG DIV_LOOP 00000228 CSEG DIV_LOOP 0000023f
CSEG DISPLAY_SYMBOLS 00000278 CSEG DISPLAY_SYMBOLS 0000028f
CSEG DELAY 00000268 CSEG DELAY 0000027f
CSEG _loop_2 00000253 CSEG _loop_2 0000026a
CSEG _loop_0 00000254 CSEG _loop_0 0000026b
CSEG _dec_0 00000255 CSEG _dec_0 0000026c
CSEG _loop_1 00000257 CSEG _loop_1 0000026e
CSEG _loop_3 00000259 CSEG _loop_3 00000270
CSEG _DELAY_0 0000026c CSEG _DELAY_0 00000283
CSEG _DELAY_1 0000026d CSEG _DELAY_1 00000284
CSEG _DELAY_2 0000026e CSEG _DELAY_2 00000285

View File

@ -49,25 +49,26 @@
<_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>108</LINE></_CLR_CURRENT_DIGIT> <_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>108</LINE></_CLR_CURRENT_DIGIT>
<_indicate_1><FILE>main.asm</FILE><LINE>112</LINE></_indicate_1> <_indicate_1><FILE>main.asm</FILE><LINE>112</LINE></_indicate_1>
<_indicate_2><FILE>main.asm</FILE><LINE>132</LINE></_indicate_2> <_indicate_2><FILE>main.asm</FILE><LINE>132</LINE></_indicate_2>
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>741</LINE></DISPLAY_DECODER> <DISPLAY_DECODER><FILE>main.asm</FILE><LINE>778</LINE></DISPLAY_DECODER>
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>554</LINE></USI_TRANSMIT> <USI_TRANSMIT><FILE>main.asm</FILE><LINE>595</LINE></USI_TRANSMIT>
<_indicate_3><FILE>main.asm</FILE><LINE>150</LINE></_indicate_3> <_indicate_3><FILE>main.asm</FILE><LINE>150</LINE></_indicate_3>
<_indicate_4><FILE>main.asm</FILE><LINE>166</LINE></_indicate_4> <_indicate_4><FILE>main.asm</FILE><LINE>166</LINE></_indicate_4>
<_indicate_exit><FILE>main.asm</FILE><LINE>178</LINE></_indicate_exit> <_indicate_exit><FILE>main.asm</FILE><LINE>178</LINE></_indicate_exit>
<MCU_INIT><FILE>main.asm</FILE><LINE>197</LINE></MCU_INIT> <MCU_INIT><FILE>main.asm</FILE><LINE>197</LINE></MCU_INIT>
<RD_F_CODE><FILE>main.asm</FILE><LINE>426</LINE></RD_F_CODE> <RD_F_CODE><FILE>main.asm</FILE><LINE>457</LINE></RD_F_CODE>
<ERR_FAMILY_CODE><FILE>main.asm</FILE><LINE>253</LINE></ERR_FAMILY_CODE> <ERR_FAMILY_CODE><FILE>main.asm</FILE><LINE>253</LINE></ERR_FAMILY_CODE>
<START_PROGRAM><FILE>main.asm</FILE><LINE>258</LINE></START_PROGRAM> <START_PROGRAM><FILE>main.asm</FILE><LINE>258</LINE></START_PROGRAM>
<BEEP_LONG><FILE>main.asm</FILE><LINE>765</LINE></BEEP_LONG> <BEEP_LONG><FILE>main.asm</FILE><LINE>802</LINE></BEEP_LONG>
<BEEP_SHORT><FILE>main.asm</FILE><LINE>757</LINE></BEEP_SHORT> <BEEP_SHORT><FILE>main.asm</FILE><LINE>794</LINE></BEEP_SHORT>
<LOOP><FILE>main.asm</FILE><LINE>267</LINE></LOOP> <LOOP><FILE>main.asm</FILE><LINE>267</LINE></LOOP>
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>271</LINE></_STATE_DEFAULT> <_STATE_DEFAULT><FILE>main.asm</FILE><LINE>271</LINE></_STATE_DEFAULT>
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>279</LINE></_STATE_PROGRAM> <_STATE_PROGRAM><FILE>main.asm</FILE><LINE>280</LINE></_STATE_PROGRAM>
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>700</LINE></DISPLAY_UPD_DIGITS> <DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>737</LINE></DISPLAY_UPD_DIGITS>
<TEMP_UPD><FILE>main.asm</FILE><LINE>409</LINE></TEMP_UPD> <TEMP_UPD><FILE>main.asm</FILE><LINE>441</LINE></TEMP_UPD>
<TEMP_COMPARSION><FILE>main.asm</FILE><LINE>298</LINE></TEMP_COMPARSION> <TEMP_COMPARSION><FILE>main.asm</FILE><LINE>334</LINE></TEMP_COMPARSION>
<_STATE_ERROR><FILE>main.asm</FILE><LINE>285</LINE></_STATE_ERROR> <TEMP_SEND_UART><FILE>main.asm</FILE><LINE>300</LINE></TEMP_SEND_UART>
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>585</LINE></SW_CHECK_PROCESS> <_STATE_ERROR><FILE>main.asm</FILE><LINE>286</LINE></_STATE_ERROR>
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>626</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>
@ -79,42 +80,45 @@
<mpy16u><FILE>mpy16u.asm</FILE><LINE>31</LINE></mpy16u> <mpy16u><FILE>mpy16u.asm</FILE><LINE>31</LINE></mpy16u>
<m16u_1><FILE>mpy16u.asm</FILE><LINE>37</LINE></m16u_1> <m16u_1><FILE>mpy16u.asm</FILE><LINE>37</LINE></m16u_1>
<noad8><FILE>mpy16u.asm</FILE><LINE>40</LINE></noad8> <noad8><FILE>mpy16u.asm</FILE><LINE>40</LINE></noad8>
<_NEGATE_TEMP><FILE>main.asm</FILE><LINE>365</LINE></_NEGATE_TEMP> <UART_WR_BYTE><FILE>main.asm</FILE><LINE>327</LINE></UART_WR_BYTE>
<_COMPARE><FILE>main.asm</FILE><LINE>371</LINE></_COMPARE> <_NEGATE_TEMP><FILE>main.asm</FILE><LINE>399</LINE></_NEGATE_TEMP>
<_MIN_THRESHOLD><FILE>main.asm</FILE><LINE>381</LINE></_MIN_THRESHOLD> <_COMPARE><FILE>main.asm</FILE><LINE>405</LINE></_COMPARE>
<_MAX_THRESHOLD><FILE>main.asm</FILE><LINE>390</LINE></_MAX_THRESHOLD> <_MIN_THRESHOLD><FILE>main.asm</FILE><LINE>415</LINE></_MIN_THRESHOLD>
<_COMPARSION_EXIT><FILE>main.asm</FILE><LINE>397</LINE></_COMPARSION_EXIT> <_MAX_THRESHOLD><FILE>main.asm</FILE><LINE>424</LINE></_MAX_THRESHOLD>
<TEMP_CONV><FILE>main.asm</FILE><LINE>534</LINE></TEMP_CONV> <_COMPARSION_EXIT><FILE>main.asm</FILE><LINE>431</LINE></_COMPARSION_EXIT>
<DELAY_LOOP_24><FILE>main.asm</FILE><LINE>809</LINE></DELAY_LOOP_24> <TEMP_CONV><FILE>main.asm</FILE><LINE>571</LINE></TEMP_CONV>
<TEMP_RD><FILE>main.asm</FILE><LINE>442</LINE></TEMP_RD> <DELAY_LOOP_24><FILE>main.asm</FILE><LINE>846</LINE></DELAY_LOOP_24>
<OW_PRESENCE><FILE>main.asm</FILE><LINE>609</LINE></OW_PRESENCE> <TEMP_RD><FILE>main.asm</FILE><LINE>473</LINE></TEMP_RD>
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>636</LINE></OW_SEND_BYTE> <OW_PRESENCE><FILE>main.asm</FILE><LINE>650</LINE></OW_PRESENCE>
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>669</LINE></OW_RD_BYTE> <OW_SEND_BYTE><FILE>main.asm</FILE><LINE>677</LINE></OW_SEND_BYTE>
<_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>477</LINE></_TEMP_RD_TO_UNSIGNED> <OW_RD_BYTE><FILE>main.asm</FILE><LINE>708</LINE></OW_RD_BYTE>
<_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>488</LINE></_TEMP_RD_CONTINUE> <_TEMP_RD_EXIT><FILE>main.asm</FILE><LINE>563</LINE></_TEMP_RD_EXIT>
<_TEMP_RD_END><FILE>main.asm</FILE><LINE>498</LINE></_TEMP_RD_END> <_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>511</LINE></_TEMP_RD_TO_UNSIGNED>
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>572</LINE></_USI_TRANSMIT_LOOP> <_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>524</LINE></_TEMP_RD_CONTINUE>
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>775</LINE></DEBOUNCE_SW> <_TEMP_RD_END><FILE>main.asm</FILE><LINE>534</LINE></_TEMP_RD_END>
<_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>598</LINE></_INTO_DEFAULT_STATE> <_TEMP_CONV_EXIT><FILE>main.asm</FILE><LINE>588</LINE></_TEMP_CONV_EXIT>
<_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>601</LINE></_SW_CHECK_PROCESS_END> <_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>613</LINE></_USI_TRANSMIT_LOOP>
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>801</LINE></DELAY_LOOP_16> <DEBOUNCE_SW><FILE>main.asm</FILE><LINE>812</LINE></DEBOUNCE_SW>
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>625</LINE></OW_CHECK_PRESENCE> <_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>639</LINE></_INTO_DEFAULT_STATE>
<_EXIT><FILE>main.asm</FILE><LINE>631</LINE></_EXIT> <_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>642</LINE></_SW_CHECK_PROCESS_END>
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>641</LINE></_OW_SEND_BYTE_LOOP> <DELAY_LOOP_16><FILE>main.asm</FILE><LINE>838</LINE></DELAY_LOOP_16>
<_OW_SEND_0><FILE>main.asm</FILE><LINE>645</LINE></_OW_SEND_0> <OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>666</LINE></OW_CHECK_PRESENCE>
<_OW_SEND_1><FILE>main.asm</FILE><LINE>653</LINE></_OW_SEND_1> <_EXIT><FILE>main.asm</FILE><LINE>672</LINE></_EXIT>
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>660</LINE></_OW_SEND_BYTE_END> <_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>683</LINE></_OW_SEND_BYTE_LOOP>
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>675</LINE></_OW_RD_BYTE_LP> <_OW_SEND_0><FILE>main.asm</FILE><LINE>687</LINE></_OW_SEND_0>
<DIV_LOOP><FILE>main.asm</FILE><LINE>717</LINE></DIV_LOOP> <_OW_SEND_1><FILE>main.asm</FILE><LINE>693</LINE></_OW_SEND_1>
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>843</LINE></DISPLAY_SYMBOLS> <_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>698</LINE></_OW_SEND_BYTE_END>
<DELAY><FILE>main.asm</FILE><LINE>818</LINE></DELAY> <_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>714</LINE></_OW_RD_BYTE_LP>
<_loop_2><FILE>main.asm</FILE><LINE>781</LINE></_loop_2> <DIV_LOOP><FILE>main.asm</FILE><LINE>754</LINE></DIV_LOOP>
<_loop_0><FILE>main.asm</FILE><LINE>783</LINE></_loop_0> <DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>880</LINE></DISPLAY_SYMBOLS>
<_dec_0><FILE>main.asm</FILE><LINE>785</LINE></_dec_0> <DELAY><FILE>main.asm</FILE><LINE>855</LINE></DELAY>
<_loop_1><FILE>main.asm</FILE><LINE>788</LINE></_loop_1> <_loop_2><FILE>main.asm</FILE><LINE>818</LINE></_loop_2>
<_loop_3><FILE>main.asm</FILE><LINE>791</LINE></_loop_3> <_loop_0><FILE>main.asm</FILE><LINE>820</LINE></_loop_0>
<_DELAY_0><FILE>main.asm</FILE><LINE>824</LINE></_DELAY_0> <_dec_0><FILE>main.asm</FILE><LINE>822</LINE></_dec_0>
<_DELAY_1><FILE>main.asm</FILE><LINE>826</LINE></_DELAY_1> <_loop_1><FILE>main.asm</FILE><LINE>825</LINE></_loop_1>
<_DELAY_2><FILE>main.asm</FILE><LINE>828</LINE></_DELAY_2> <_loop_3><FILE>main.asm</FILE><LINE>828</LINE></_loop_3>
<_DELAY_0><FILE>main.asm</FILE><LINE>861</LINE></_DELAY_0>
<_DELAY_1><FILE>main.asm</FILE><LINE>863</LINE></_DELAY_1>
<_DELAY_2><FILE>main.asm</FILE><LINE>865</LINE></_DELAY_2>
</LABELS> </LABELS>
</ASSEMBLER_INFO> </ASSEMBLER_INFO>

View File

@ -210,10 +210,10 @@ MCU_INIT:
outi r16, PCMSK0, (1<<PCINT2) | (1<<PCINT3) | (1<<PCINT4) ; для кнопок outi r16, PCMSK0, (1<<PCINT2) | (1<<PCINT3) | (1<<PCINT4) ; для кнопок
; **** ИНИЦИАЛИЗАЦИЯ 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<<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
@ -266,16 +266,17 @@ START_PROGRAM:
; **** ГЛАВНЫЙ ЦИКЛ ********************************************** ; **** ГЛАВНЫЙ ЦИКЛ **********************************************
LOOP: LOOP:
; rcall DISPLAY_UPD_DIGITS ; rcall DISPLAY_UPD_DIGITS
lds r16, MCU_STATE ; получаем текущее состояние МК lds r16, MCU_STATE ; получаем текущее состояние МК
_STATE_DEFAULT: _STATE_DEFAULT:
cpi r16, MCU_STATE_DEFAULT cpi r16, MCU_STATE_DEFAULT
brne _STATE_PROGRAM brne _STATE_PROGRAM
cbi LED_ERR_PORT, LED_ERR_PIN cbi LED_ERR_PORT, LED_ERR_PIN
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 rcall TEMP_COMPARSION ; логика термостата
rcall TEMP_SEND_UART ; отпрака данных в UART
_STATE_PROGRAM: _STATE_PROGRAM:
cpi r16, MCU_STATE_PROGRAM cpi r16, MCU_STATE_PROGRAM
brne _STATE_ERROR brne _STATE_ERROR
@ -295,6 +296,41 @@ _STATE_ERROR:
.INCLUDE "div8u.asm" .INCLUDE "div8u.asm"
.INCLUDE "mpy16u.asm" .INCLUDE "mpy16u.asm"
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: отправка данных в UART">
TEMP_SEND_UART:
push r16
; целая часть
lds r16, TEMP_L
mov r5, r16
rcall UART_WR_BYTE
; дробная часть
lds r16, TEMP_F
mov r5, r16
rcall UART_WR_BYTE
; состояние реле
in r16, PIND
andi r16, (1<<RELAY_PIN)
mov r5, r16
rcall UART_WR_BYTE
ldi r16, 0x04 ; EOT (End Of Transmission)
mov r5, r16
rcall UART_WR_BYTE
pop r16
ret
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: отправка байта в UART из регистра r5">
UART_WR_BYTE:
sbis UCSRA, UDRE
rjmp UART_WR_BYTE
out UDR, r5
ret//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: сравнение температуры с уставкой">
TEMP_COMPARSION: TEMP_COMPARSION:
push r16 push r16
push r17 push r17
@ -302,8 +338,6 @@ TEMP_COMPARSION:
push r19 push r19
push r20 push r20
push r21 push r21
push r22
push r23
; ;
; lds dd8u, SETTING_HYST ; lds dd8u, SETTING_HYST
; ldi dv8u, 10 ; ldi dv8u, 10
@ -395,22 +429,19 @@ _MAX_THRESHOLD:
rjmp PC+2 rjmp PC+2
relay_off relay_off
_COMPARSION_EXIT: _COMPARSION_EXIT:
pop r23
pop r22
pop r21 pop r21
pop r20 pop r20
pop r19 pop r19
pop r18 pop r18
pop r17 pop r17
pop r16 pop r16
ret ret//</editor-fold>
//<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 500000 DELAY24 800000
DELAY24 500000
rcall TEMP_RD rcall TEMP_RD
; обновляем данные в ячейках ; обновляем данные в ячейках
@ -448,6 +479,9 @@ TEMP_RD:
; cli ; cli
rcall OW_PRESENCE rcall OW_PRESENCE
sbrs OWFR, OWPRF
rjmp _TEMP_RD_EXIT
ldi r16, DS18B20_CMD_SKIPROM ldi r16, DS18B20_CMD_SKIPROM
mov OW_CMD_r, r16 mov OW_CMD_r, r16
rcall OW_SEND_BYTE rcall OW_SEND_BYTE
@ -475,14 +509,16 @@ TEMP_RD:
rjmp _TEMP_RD_CONTINUE ; если нет то преобразуем значение АЦП в температуру (делим на 16) rjmp _TEMP_RD_CONTINUE ; если нет то преобразуем значение АЦП в температуру (делим на 16)
_TEMP_RD_TO_UNSIGNED: _TEMP_RD_TO_UNSIGNED:
pop r18 pop r18
set set
com r17 com r17
com r18 com r18
ldi r19, 1 subi r17, low(-1)
add r17, r19 sbci r18, high(-1)
ldi r19, 0 ; ldi r19, 1
adc r18, r19 ; add r17, r19
; ldi r19, 0
; adc r18, r19
rjmp PC+2 rjmp PC+2
_TEMP_RD_CONTINUE: ; Температура = Число с АЦП / 16 (сдвиг вправо 4) _TEMP_RD_CONTINUE: ; Температура = Число с АЦП / 16 (сдвиг вправо 4)
@ -524,6 +560,7 @@ _TEMP_RD_END:
sts TEMP_F, r19 sts TEMP_F, r19
; sei ; sei
_TEMP_RD_EXIT:
pop r20 pop r20
pop r19 pop r19
pop r18 pop r18
@ -536,6 +573,9 @@ TEMP_CONV:
; cli ; cli
rcall OW_PRESENCE rcall OW_PRESENCE
sbrs OWFR, OWPRF
rjmp _TEMP_CONV_EXIT
ldi r16, DS18B20_CMD_SKIPROM ldi r16, DS18B20_CMD_SKIPROM
mov OW_CMD_r, r16 mov OW_CMD_r, r16
rcall OW_SEND_BYTE rcall OW_SEND_BYTE
@ -545,6 +585,7 @@ TEMP_CONV:
rcall OW_SEND_BYTE rcall OW_SEND_BYTE
; sei ; sei
_TEMP_CONV_EXIT:
pop r16 pop r16
ret ret
//</editor-fold> //</editor-fold>
@ -636,6 +677,7 @@ _EXIT:
OW_SEND_BYTE: OW_SEND_BYTE:
push r16 push r16
push r17 push r17
cli
mov r16, OW_CMD_r mov r16, OW_CMD_r
ldi r17, 8 ldi r17, 8
_OW_SEND_BYTE_LOOP: _OW_SEND_BYTE_LOOP:
@ -643,23 +685,20 @@ _OW_SEND_BYTE_LOOP:
brcc _OW_SEND_0 brcc _OW_SEND_0
brcs _OW_SEND_1 brcs _OW_SEND_1
_OW_SEND_0: _OW_SEND_0:
cli
ow_pull ow_pull
DELAY16 60 DELAY16 60
ow_release ow_release
DELAY16 10 DELAY16 10
sei
rjmp _OW_SEND_BYTE_END rjmp _OW_SEND_BYTE_END
_OW_SEND_1: _OW_SEND_1:
cli
ow_pull ow_pull
DELAY16 6 DELAY16 6
ow_release ow_release
DELAY16 64 DELAY16 64
sei
_OW_SEND_BYTE_END: _OW_SEND_BYTE_END:
dec r17 dec r17
brne _OW_SEND_BYTE_LOOP brne _OW_SEND_BYTE_LOOP
sei
pop r17 pop r17
pop r16 pop r16
ret ret
@ -669,9 +708,9 @@ _OW_SEND_BYTE_END:
OW_RD_BYTE: OW_RD_BYTE:
push r16 push r16
push r17 push r17
cli
clr r16 clr r16
ldi r17, 8 ldi r17, 8
cli
_OW_RD_BYTE_LP: _OW_RD_BYTE_LP:
lsr r16 lsr r16
ow_pull ow_pull
@ -689,8 +728,6 @@ _OW_RD_BYTE_LP:
pop r16 pop r16
ret ret
//</editor-fold> //</editor-fold>
//</editor-fold> //</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: обновление ячеек в SRAM для индикатора"> //<editor-fold defaultstate="collapsed" desc="Подпрограмма: обновление ячеек в SRAM для индикатора">

126
main.hex
View File

@ -7,69 +7,77 @@
:10004A000F931F935FB74091670045300CF403C0CC :10004A000F931F935FB74091670045300CF403C0CC
:10005A00442740936700403081F493989498959888 :10005A00442740936700403081F493989498959888
:10006A000EF002C00BE002C000916500002311F0FF :10006A000EF002C00BE002C000916500002311F0FF
:10007A00929A01C09298BDD138D1413081F49298B8 :10007A00929A01C09298FED17BD1413081F4929834
:10008A00949895980091640030916500032B11F0C3 :10008A00949895980091640030916500032B11F0C3
:10009A00939A01C0939800916400ABD126D1423063 :10009A00939A01C0939800916400ECD169D14230DF
:1000AA0059F4929893989598949A00916300A1D1E3 :1000AA0059F4929893989598949A00916300E2D1A2
:1000BA00002D0F77002E19D1433041F4929893986E :1000BA00002D0F77002E5CD1433041F4929893982B
:1000CA009498959A00916B0094D10FD143954093DF :1000CA009498959A00916B00D5D152D1439540935B
:1000DA0067005FBF1F910F915F914F9118950FEDC8 :1000DA0067005FBF1F910F915F914F9118950FEDC8
:1000EA000DBF0FE701BB01EE07BB0CE108BB02E045 :1000EA000DBF0FE701BB01EE07BB0CE108BB02E045
:1000FA0000BF05E003BF09E106BF00E20BBF0CE148 :1000FA0000BF05E003BF09E106BF00E20BBF0CE148
:10010A0000BD11241092670000E0009360000CE229 :10010A0000BD11241092670000E0009360000CE229
:10011A0000936D0001E000936C0005E000936E000F :10011A0000936D0001E000936C0005E000936E000F
:10012A0001E000936F0008E1102F000F000F000F8D :10012A0001E000936F0000270093690000936A00C2
:10013A00110F010F009371000027009369000093CB :10013A0000EF00936B0053E137E84DEFC5D15CE067
:10014A006A0000EF00936B0072D0009170000832D1 :10014A0034E34DEFC1D1B2D000917000083209F406
:10015A0009F405C012E0109360005AD101C054D1CD :10015A0005C012E0109360009CD101C096D180E0E6
:10016A0080E090E000916000003031F4969827D149 :10016A0090E000916000003031F4969869D18BD00C
:10017A004BD001E009BF39D0013019F496981FD14C :10017A0001E009BF39D0013019F4969861D104D150
:10018A00C0D0023079F7969AEDCFEE24FF1841E1FC :10018A00023079F7969AEDCFEE24FF1841E1001F6D
:10019A00001F111F4A9509F40895EE1CFF1CE21A6C :10019A00111F4A9509F40895EE1CFF1CE21AF30A8E
:1001AA00F30A20F4E20EF31E8894F2CF0894F0CFFB :1001AA0020F4E20EF31E8894F2CF0894F0CFFF18E1
:1001BA00FF1829E0001F2A9509F40895FF1CF11A77 :1001BA0029E0001F2A9509F40895FF1CF11A18F482
:1001CA0018F4F10E8894F6CF0894F4CF55274427F3 :1001CA00F10E8894F6CF0894F4CF5527442760E1BE
:1001DA0060E13695279510F4400F511F57954795C2 :1001DA003695279510F4400F511F57954795379537
:1001EA00379527956A95B9F708950F931F932F931B :1001EA0027956A95B9F708950F931F932F933F9315
:1001FA003F934F935F936F936F915F914F913F91AD :1001FA004F935F930091690010916A002AE030E002
:10020A002F911F910F9108951F9365D05CE034E3FD :10020A00E4DF022F132F20916B003327020F131FF5
:10021A004DEF19D15CE034E34DEF15D112D01091B6 :10021A00109371000093720040916D0050916C0030
:10022A006900812F10916A00912F1F9108950F93F1 :10022A0060916E004F935F937727461B570BB42E4E
:10023A0076D003E3802E88D0A0E7B0E0A6D00F9155 :10023A00A52E5F914F917727460F571FD42EC52EB3
:10024A0008950F931F932F933F934F9368D00CEC0D :10024A000EF004C0009510950F5F1F4FB016A1065F
:10025A00802E7AD00EEB802E77D0A9E6B0E095D02A :10025A0024F40D151C054CF40FC040916F00442383
:10026A00AAE6B0E092D01091690020916A002F931B :10026A0011F4909801C0909A07C040916F004423FE
:10027A00287F283F11F0E89409C02F9168941095BF :10027A0011F4909A01C090985F914F913F912F91FC
:10028A00209531E0130F30E0231F01C02F912695EE :10028A001F910F9108951F9367D05CE034E34DEFFF
:10029A0017952695179526951795269517953091B2 :10029A001BD15CE034E34DEF17D112D01091690005
:1002AA0069000EF43195432F3F70432F330F330FFC :1002AA00812F10916A00912F1F9108950F937AD090
:1002BA00330F440F340F369536953695369510938D :1002BA0003E3802E8CD0A0E7B0E0A8D00F91089578
:1002CA00690020936A0030936B004F913F912F9100 :1002CA000F931F932F933F934F936CD070FF3EC0B1
:1002DA001F910F9108950F9322D00CEC802E34D0E9 :1002DA000CEC802E7CD00EEB802E79D0A9E6B0E013
:1002EA0004E4802E31D00F9108950F930FB800E4E3 :1002EA0095D0AAE6B0E092D01091690020916A00F8
:1002FA000EB90BE10DB9769BFDCFC09AC0980F914C :1002FA002F93287F283F11F0E89409C02F91689422
:10030A0008950F938CD0B29B0196B39B0197B49B2F :10030A001095209531E0130F30E0231F01C02F9183
:10031A0001C003C000E0009360000F910895F894B3 :10031A002695179526951795269517952695179537
:10032A00B99A33E04EEB8BD0B99830E04AE887D0DF :10032A00309169000EF43195432F3F70432F330FFC
:10033A0005D033E042E383D078940895B19B71608D :10033A00330F330F440F340F36953695369536956D
:10034A0002C0B1997E7F08950F931F93082D18E07C :10034A001093690020936A0030936B004F913F919C
:10035A00069508F458F0F894B99A30E046E76FD059 :10035A002F911F910F9108950F9324D070FF06C01B
:10036A00B99830E042E16BD078940AC0F894B99A0F :10036A000CEC802E34D004E4802E31D00F91089505
:10037A0030E04AE064D0B99830E04EE760D0789433 :10037A000F930FB800E40EB90BE10DB9769BFDCFD0
:10038A001A9531F71F910F9108950F931F93002724 :10038A00C09AC0980F9108950F938AD0B29B019694
:10039A0018E0F8940695B99A30E04AE050D0B99836 :10039A00B39B0197B49B01C003C000E000936000C7
:1003AA0030E040E14CD0B199006830E04CE647D0EB :1003AA000F910895F894B99A33E04EEB89D0B99831
:1003BA001A9581F70C9378941F910F910895F894E8 :1003BA0030E04AE885D005D033E042E381D0789432
:1003CA005F9354E0A3E6B0E08093610090936200EB :1003CA000895B19B716002C0B1997E7F08950F9321
:1003DA0000916100109162002AE030E0D6DEED92D1 :1003DA001F93F894082D18E0069508F448F0B99A86
:1003EA0000936100109362005A9591F75F91789497 :1003EA0030E046E76DD0B99830E042E169D008C004
:1003FA0008950F931F93EAE7F4E01127E00FF11F26 :1003FA00B99A30E04AE064D0B99830E04EE760D06C
:10040A0004901F910F910895C59A22D0C598089516 :10040A001A9551F778941F910F9108950F931F939E
:10041A00C59A1ED01DD01CD01BD0C59808950F9325 :10041A00F894002718E00695B99A30E04AE050D0DF
:10042A001F932F932AE01FEF0FEF0A95F1F71A9502 :10042A00B99830E040E14CD0B199006830E04CE630
:10043A00D9F72A95C1F72F911F910F91089541502D :10043A0047D01A9581F70C9378941F910F910895DC
:10044A003040E8F70895415030405040E0F70895B1 :10044A00F8945F9354E0A3E6B0E080936100909340
:10045A000F931F932F9326E00FEF1FEF1A95F1F7D3 :10045A00620000916100109162002AE030E094DEAF
:10046A000A95D9F72A95C1F72F911F910F910895EF :10046A00ED9200936100109362005A9591F75F91A3
:0C047A00C0F9A4B0999282F880909CBF59 :10047A00789408950F931F93ECEFF4E01127E00F9F
:10048A00F11F04901F910F910895C59A22D0C59823
:10049A000895C59A1ED01DD01CD01BD0C5980895AA
:1004AA000F931F932F932AE01FEF0FEF0A95F1F78F
:1004BA001A95D9F72A95C1F72F911F910F9108958F
:1004CA0041503040E8F70895415030405040E0F73D
:1004DA0008950F931F932F9326E00FEF1FEF1A959E
:1004EA00F1F70A95D9F72A95C1F72F911F910F9124
:0E04FA000895C0F9A4B0999282F880909CBF3A
:00000001FF :00000001FF