mirror of
https://github.com/sergeyyarkov/attiny2313a_thermostat.git
synced 2026-10-11 02:08:52 +03:00
temperature comparsion
This commit is contained in:
parent
a1518d41fc
commit
cced58c312
@ -63,12 +63,15 @@
|
||||
; **** СТАНДАРТНЫЕ ПАРАМЕТРЫ ***********************************
|
||||
|
||||
; Отдельно задается целая и дробная часть в точности до десятых
|
||||
; Например: 30.5 градусов
|
||||
.EQU DEFAULT_SETTING_INT = 0
|
||||
.EQU DEFAULT_SETTING_F = 5 // 0.5
|
||||
|
||||
.EQU DEFAULT_SETTING_HYST = 15 // 1.5
|
||||
.EQU DEFAULT_TEMP = 150 ; 30.5 градусов
|
||||
.EQU DEFAULT_HYST = 8 ; 1.2 градуса гистерезис
|
||||
|
||||
.EQU HEAT_MODE = 1
|
||||
.EQU COOLING_MODE = 0
|
||||
.EQU DEFAULT_SETTING_MODE = HEAT_MODE
|
||||
.EQU DEFAULT_MODE = HEAT_MODE
|
||||
|
||||
|
||||
.EQU DEFAULT_SETTING_TEMP_L = LOW(DEFAULT_TEMP)
|
||||
.EQU DEFAULT_SETTING_TEMP_H = HIGH(DEFAULT_TEMP)
|
||||
.EQU DEFAULT_SETTING_HYST = DEFAULT_HYST
|
||||
.EQU DEFAULT_SETTING_MODE = DEFAULT_MODE
|
||||
@ -7,68 +7,76 @@
|
||||
:10004A000F931F935FB74091670045300CF403C0CC
|
||||
:10005A00442740936700403081F493989498959888
|
||||
:10006A000EF002C00BE002C000916500002311F0FF
|
||||
:10007A00929A01C09298B0D12BD1413081F49298D2
|
||||
:10007A00929A01C09298F0D16BD1413081F4929852
|
||||
:10008A00949895980091640030916500032B11F0C3
|
||||
:10009A00939A01C09398009164009ED119D142307D
|
||||
:1000AA0059F4929893989598949A0091630094D1F0
|
||||
:1000BA00002D0F77002E0CD1433041F4929893987B
|
||||
:1000CA009498959A00916B0087D102D143954093F9
|
||||
:10009A00939A01C0939800916400DED159D14230FD
|
||||
:1000AA0059F4929893989598949A00916300D4D1B0
|
||||
:1000BA00002D0F77002E4CD1433041F4929893983B
|
||||
:1000CA009498959A00916B00C7D142D14395409379
|
||||
:1000DA0067005FBF1F910F915F914F9118950FEDC8
|
||||
:1000EA000DBF0FE701BB01EE07BB0CE108BB02E045
|
||||
:1000FA0000BF05E003BF09E106BF00E20BBF0CE148
|
||||
:10010A0000BD11241092670000E00093600000E037
|
||||
:10011A0000936C0005E000936D000FE000936E0001
|
||||
:10010A0000BD11241092670000E00093600006E928
|
||||
:10011A0000936D0000E000936C0008E000936E000D
|
||||
:10012A0001E000936F0000270093690000936A00C2
|
||||
:10013A0000EF00936B006ED000917000083209F452
|
||||
:10014A0005C012E01093600056D101C050D180E082
|
||||
:10015A0090E000916000003031F4969823D147D0A6
|
||||
:10016A0001E009BF1CD0013019F496981BD1BCD00C
|
||||
:10013A0000EF00936B00AED000917000083209F412
|
||||
:10014A0005C012E01093600096D101C090D180E002
|
||||
:10015A0090E000916000003031F4969863D187D026
|
||||
:10016A0001E009BF39D0013019F496985BD1FCD06F
|
||||
:10017A00023079F7969AEDCFEE24FF1841E1001F7D
|
||||
:10018A00111F4A9509F40895EE1CFF1CE21AF30A9E
|
||||
:10019A0020F4E20EF31E8894F2CF0894F0CF0F9366
|
||||
:1001AA001F932F933F934F935F936F93009169002F
|
||||
:1001BA0010916A0020916B003CE140E250916F007F
|
||||
:1001CA000EF001C00195552309F409C030170CF44B
|
||||
:1001DA0002C0909A04C004170CF401C090986F9161
|
||||
:1001EA005F914F913F912F911F910F9108951F9306
|
||||
:1001FA0065D05CE034E34DEF19D15CE034E34DEFB8
|
||||
:10020A0015D112D010916900812F10916A00912F97
|
||||
:10021A001F9108950F9376D003E3802E88D0A0E72C
|
||||
:10022A00B0E0A6D00F9108950F931F932F933F9399
|
||||
:10023A004F9368D00CEC802E7AD00EEB802E77D0BC
|
||||
:10024A00A9E6B0E095D0AAE6B0E092D01091690094
|
||||
:10025A0020916A002F93287F283F11F0E89409C063
|
||||
:10026A002F9168941095209531E0130F30E0231FE9
|
||||
:10027A0001C02F91269517952695179526951795BE
|
||||
:10028A0026951795309169000EF43195432F3F70EA
|
||||
:10029A00432F330F330F330F440F340F36953695F0
|
||||
:1002AA00369536951093690020936A0030936B0057
|
||||
:1002BA004F913F912F911F910F9108950F9322D043
|
||||
:1002CA000CEC802E34D004E4802E31D00F910895A6
|
||||
:1002DA000F930FB800E40EB90BE10DB9769BFDCF71
|
||||
:1002EA00C09AC0980F9108950F938CD0B29B019633
|
||||
:1002FA00B39B0197B49B01C003C000E00093600068
|
||||
:10030A000F910895F894B99A33E04EEB8BD0B998CF
|
||||
:10031A0030E04AE887D005D033E042E383D07894CE
|
||||
:10032A000895B19B716002C0B1997E7F08950F93C1
|
||||
:10033A001F93082D18E0069508F458F0F894B99A16
|
||||
:10034A0030E046E76FD0B99830E042E16BD078945C
|
||||
:10035A000AC0F894B99A30E04AE064D0B99830E01B
|
||||
:10036A004EE760D078941A9531F71F910F9108954E
|
||||
:10037A000F931F93002718E0F8940695B99A30E076
|
||||
:10038A004AE050D0B99830E040E14CD0B1990068C9
|
||||
:10039A0030E04CE647D01A9581F70C9378941F9178
|
||||
:1003AA000F910895F8945F9354E0A3E6B0E0809328
|
||||
:1003BA0061009093620000916100109162002AE04E
|
||||
:1003CA0030E0DADEED9200936100109362005A95F4
|
||||
:1003DA0091F75F91789408950F931F93E0E6F4E004
|
||||
:1003EA001127E00FF11F04901F910F910895C59AEC
|
||||
:1003FA0022D0C5980895C59A1ED01DD01CD01BD0F6
|
||||
:10040A00C59808950F931F932F932AE01FEF0FEFBC
|
||||
:10041A000A95F1F71A95D9F72A95C1F72F911F91E5
|
||||
:10042A000F91089541503040E8F708954150304007
|
||||
:10043A005040E0F708950F931F932F9326E00FEF94
|
||||
:10044A001FEF1A95F1F70A95D9F72A95C1F72F9157
|
||||
:10045A001F910F910895C0F9A4B0999282F88090E3
|
||||
:02046A009CBF35
|
||||
:10019A0020F4E20EF31E8894F2CF0894F0CFFF18F1
|
||||
:1001AA0029E0001F2A9509F40895FF1CF11A18F492
|
||||
:1001BA00F10E8894F6CF0894F4CF5527442760E1CE
|
||||
:1001CA003695279510F4400F511F57954795379547
|
||||
:1001DA0027956A95B9F708950F931F932F933F9325
|
||||
:1001EA004F935F936F937F930091690010916A0018
|
||||
:1001FA002AE030E0E2DF022F132F20916B00332731
|
||||
:10020A00020F131F109371000093720040916D004A
|
||||
:10021A0050916C0060916E004F935F937727461B55
|
||||
:10022A00570BB42EA52E5F914F917727460F571F74
|
||||
:10023A00D42EC52E0EF004C0009510950F5F1F4FE7
|
||||
:10024A0040916F00442301F4B016A10624F40D1561
|
||||
:10025A001C051CF403C0909A01C090987F916F917D
|
||||
:10026A005F914F913F912F911F910F9108951F9385
|
||||
:10027A0065D05CE034E34DEF19D15CE034E34DEF37
|
||||
:10028A0015D112D010916900812F10916A00912F17
|
||||
:10029A001F9108950F9376D003E3802E88D0A0E7AC
|
||||
:1002AA00B0E0A6D00F9108950F931F932F933F9319
|
||||
:1002BA004F9368D00CEC802E7AD00EEB802E77D03C
|
||||
:1002CA00A9E6B0E095D0AAE6B0E092D01091690014
|
||||
:1002DA0020916A002F93287F283F11F0E89409C0E3
|
||||
:1002EA002F9168941095209531E0130F30E0231F69
|
||||
:1002FA0001C02F912695179526951795269517953E
|
||||
:10030A0026951795309169000EF43195432F3F7069
|
||||
:10031A00432F330F330F330F440F340F369536956F
|
||||
:10032A00369536951093690020936A0030936B00D6
|
||||
:10033A004F913F912F911F910F9108950F9322D0C2
|
||||
:10034A000CEC802E34D004E4802E31D00F91089525
|
||||
:10035A000F930FB800E40EB90BE10DB9769BFDCFF0
|
||||
:10036A00C09AC0980F9108950F938CD0B29B0196B2
|
||||
:10037A00B39B0197B49B01C003C000E000936000E7
|
||||
:10038A000F910895F894B99A33E04EEB8BD0B9984F
|
||||
:10039A0030E04AE887D005D033E042E383D078944E
|
||||
:1003AA000895B19B716002C0B1997E7F08950F9341
|
||||
:1003BA001F93082D18E0069508F458F0F894B99A96
|
||||
:1003CA0030E046E76FD0B99830E042E16BD07894DC
|
||||
:1003DA000AC0F894B99A30E04AE064D0B99830E09B
|
||||
:1003EA004EE760D078941A9531F71F910F910895CE
|
||||
:1003FA000F931F93002718E0F8940695B99A30E0F6
|
||||
:10040A004AE050D0B99830E040E14CD0B199006848
|
||||
:10041A0030E04CE647D01A9581F70C9378941F91F7
|
||||
:10042A000F910895F8945F9354E0A3E6B0E08093A7
|
||||
:10043A0061009093620000916100109162002AE0CD
|
||||
:10044A0030E09ADEED9200936100109362005A95B3
|
||||
:10045A0091F75F91789408950F931F93E0EEF4E07B
|
||||
:10046A001127E00FF11F04901F910F910895C59A6B
|
||||
:10047A0022D0C5980895C59A1ED01DD01CD01BD075
|
||||
:10048A00C59808950F931F932F932AE01FEF0FEF3C
|
||||
:10049A000A95F1F71A95D9F72A95C1F72F911F9165
|
||||
:1004AA000F91089541503040E8F708954150304087
|
||||
:1004BA005040E0F708950F931F932F9326E00FEF14
|
||||
:1004CA001FEF1A95F1F70A95D9F72A95C1F72F91D7
|
||||
:1004DA001F910F910895C0F9A4B0999282F8809063
|
||||
:0204EA009CBFB5
|
||||
:00000001FF
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
|
||||
AVRASM ver. 2.2.7 main.asm Sun Jun 25 15:01:25 2023
|
||||
AVRASM ver. 2.2.7 main.asm Sun Jun 25 23:20:09 2023
|
||||
|
||||
|
||||
EQU SIGNATURE_000 0000001e
|
||||
@ -526,11 +526,14 @@ EQU UART_TX_PIN 00000001
|
||||
EQU MCU_STATE_DEFAULT 00000000
|
||||
EQU MCU_STATE_PROGRAM 00000001
|
||||
EQU MCU_STATE_ERROR 00000002
|
||||
EQU DEFAULT_SETTING_INT 00000000
|
||||
EQU DEFAULT_SETTING_F 00000005
|
||||
EQU DEFAULT_SETTING_HYST 0000000f
|
||||
EQU DEFAULT_TEMP 00000096
|
||||
EQU DEFAULT_HYST 00000008
|
||||
EQU HEAT_MODE 00000001
|
||||
EQU COOLING_MODE 00000000
|
||||
EQU DEFAULT_MODE 00000001
|
||||
EQU DEFAULT_SETTING_TEMP_L 00000096
|
||||
EQU DEFAULT_SETTING_TEMP_H 00000000
|
||||
EQU DEFAULT_SETTING_HYST 00000008
|
||||
EQU DEFAULT_SETTING_MODE 00000001
|
||||
DSEG MCU_STATE 00000060
|
||||
DSEG SRAM_TEMP_1 00000061
|
||||
@ -540,11 +543,13 @@ DSEG SW_FLAGS 00000068
|
||||
DSEG TEMP_L 00000069
|
||||
DSEG TEMP_H 0000006a
|
||||
DSEG TEMP_F 0000006b
|
||||
DSEG SETTING_INT 0000006c
|
||||
DSEG SETTING_F 0000006d
|
||||
DSEG SETTING_TEMP_H 0000006c
|
||||
DSEG SETTING_TEMP_L 0000006d
|
||||
DSEG SETTING_HYST 0000006e
|
||||
DSEG SETTING_MODE 0000006f
|
||||
DSEG DEVICE_FAMILY_CODE 00000070
|
||||
DSEG SRAM_TEMP_2 00000071
|
||||
DSEG SRAM_TEMP_3 00000072
|
||||
CSEG RESET_vect 00000074
|
||||
CSEG TIMER0_COMPA_vect 00000023
|
||||
CSEG PCINT0_vect 0000000e
|
||||
@ -553,25 +558,25 @@ CSEG _INTO_PROGRAM_STATE 0000001a
|
||||
CSEG _CLR_CURRENT_DIGIT 0000002d
|
||||
CSEG _indicate_1 00000030
|
||||
CSEG _indicate_2 00000042
|
||||
CSEG DISPLAY_DECODER 000001f1
|
||||
CSEG USI_TRANSMIT 0000016d
|
||||
CSEG DISPLAY_DECODER 00000231
|
||||
CSEG USI_TRANSMIT 000001ad
|
||||
CSEG _indicate_3 00000054
|
||||
CSEG _indicate_4 00000061
|
||||
CSEG _indicate_exit 0000006b
|
||||
CSEG MCU_INIT 00000076
|
||||
CSEG RD_F_CODE 0000010f
|
||||
CSEG RD_F_CODE 0000014f
|
||||
CSEG ERR_FAMILY_CODE 000000a6
|
||||
CSEG START_PROGRAM 000000ab
|
||||
CSEG BEEP_LONG 00000200
|
||||
CSEG BEEP_SHORT 000001fc
|
||||
CSEG BEEP_LONG 00000240
|
||||
CSEG BEEP_SHORT 0000023c
|
||||
CSEG LOOP 000000ae
|
||||
CSEG _STATE_DEFAULT 000000b0
|
||||
CSEG _STATE_PROGRAM 000000b8
|
||||
CSEG DISPLAY_UPD_DIGITS 000001d7
|
||||
CSEG TEMP_UPD 000000fc
|
||||
CSEG TEMP_COMPARSION 000000d4
|
||||
CSEG DISPLAY_UPD_DIGITS 00000217
|
||||
CSEG TEMP_UPD 0000013c
|
||||
CSEG TEMP_COMPARSION 000000f1
|
||||
CSEG _STATE_ERROR 000000bd
|
||||
CSEG SW_CHECK_PROCESS 00000179
|
||||
CSEG SW_CHECK_PROCESS 000001b9
|
||||
DEF drem16uL r14
|
||||
DEF drem16uH r15
|
||||
DEF dres16uL r16
|
||||
@ -585,41 +590,70 @@ CSEG div16u 000000c1
|
||||
CSEG d16u_1 000000c4
|
||||
CSEG d16u_2 000000c9
|
||||
CSEG d16u_3 000000d2
|
||||
CSEG _HEATING_MODE 000000eb
|
||||
CSEG _COMPARSION_EXIT 000000f4
|
||||
CSEG _HEATING_ON 000000ee
|
||||
CSEG _HEATING_OFF 000000f0
|
||||
CSEG TEMP_CONV 00000163
|
||||
CSEG DELAY_LOOP_24 0000021b
|
||||
CSEG TEMP_RD 00000119
|
||||
CSEG OW_PRESENCE 00000187
|
||||
CSEG OW_SEND_BYTE 0000019c
|
||||
CSEG OW_RD_BYTE 000001bd
|
||||
CSEG _TEMP_RD_TO_UNSIGNED 00000135
|
||||
CSEG _TEMP_RD_CONTINUE 0000013e
|
||||
CSEG _TEMP_RD_END 00000147
|
||||
CSEG _USI_TRANSMIT_LOOP 00000172
|
||||
CSEG DEBOUNCE_SW 00000207
|
||||
CSEG _INTO_DEFAULT_STATE 00000182
|
||||
CSEG _SW_CHECK_PROCESS_END 00000185
|
||||
CSEG DELAY_LOOP_16 00000217
|
||||
CSEG OW_CHECK_PRESENCE 00000196
|
||||
CSEG _EXIT 0000019b
|
||||
CSEG _OW_SEND_BYTE_LOOP 000001a0
|
||||
CSEG _OW_SEND_0 000001a3
|
||||
CSEG _OW_SEND_1 000001ae
|
||||
CSEG _OW_SEND_BYTE_END 000001b8
|
||||
CSEG _OW_RD_BYTE_LP 000001c2
|
||||
DEF drem8u r15
|
||||
DEF dres8u r16
|
||||
DEF dd8u r16
|
||||
DEF dv8u r17
|
||||
DEF dcnt8u r18
|
||||
CSEG div8u 000000d4
|
||||
CSEG d8u_1 000000d6
|
||||
CSEG d8u_2 000000da
|
||||
CSEG d8u_3 000000e0
|
||||
DEF mc16uL r16
|
||||
DEF mc16uH r17
|
||||
DEF mp16uL r18
|
||||
DEF mp16uH r19
|
||||
DEF m16u0 r18
|
||||
DEF m16u1 r19
|
||||
DEF m16u2 r20
|
||||
DEF m16u3 r21
|
||||
DEF mcnt16u r22
|
||||
CSEG mpy16u 000000e2
|
||||
CSEG m16u_1 000000e7
|
||||
CSEG noad8 000000ea
|
||||
DEF temp_r_l r16
|
||||
DEF temp_r_h r17
|
||||
DEF min_r_trhd_l r11
|
||||
DEF min_r_trhd_h r10
|
||||
DEF max_r_trhd_l r13
|
||||
DEF max_r_trhd_h r12
|
||||
CSEG _NEGATE_TEMP 00000121
|
||||
CSEG _CHECK_MODE 00000125
|
||||
CSEG _HEATING_MODE 00000129
|
||||
CSEG _HEATING_ON 00000130
|
||||
CSEG _HEATING_OFF 00000132
|
||||
CSEG _COMPARSION_EXIT 00000133
|
||||
CSEG TEMP_CONV 000001a3
|
||||
CSEG DELAY_LOOP_24 0000025b
|
||||
CSEG TEMP_RD 00000159
|
||||
CSEG OW_PRESENCE 000001c7
|
||||
CSEG OW_SEND_BYTE 000001dc
|
||||
CSEG OW_RD_BYTE 000001fd
|
||||
CSEG _TEMP_RD_TO_UNSIGNED 00000175
|
||||
CSEG _TEMP_RD_CONTINUE 0000017e
|
||||
CSEG _TEMP_RD_END 00000187
|
||||
CSEG _USI_TRANSMIT_LOOP 000001b2
|
||||
CSEG DEBOUNCE_SW 00000247
|
||||
CSEG _INTO_DEFAULT_STATE 000001c2
|
||||
CSEG _SW_CHECK_PROCESS_END 000001c5
|
||||
CSEG DELAY_LOOP_16 00000257
|
||||
CSEG OW_CHECK_PRESENCE 000001d6
|
||||
CSEG _EXIT 000001db
|
||||
CSEG _OW_SEND_BYTE_LOOP 000001e0
|
||||
CSEG _OW_SEND_0 000001e3
|
||||
CSEG _OW_SEND_1 000001ee
|
||||
CSEG _OW_SEND_BYTE_END 000001f8
|
||||
CSEG _OW_RD_BYTE_LP 00000202
|
||||
EQU dividend 00000061
|
||||
EQU divisor 0000000a
|
||||
CSEG DIV_LOOP 000001e0
|
||||
CSEG DISPLAY_SYMBOLS 00000230
|
||||
CSEG DELAY 00000220
|
||||
CSEG _loop_2 0000020b
|
||||
CSEG _loop_0 0000020c
|
||||
CSEG _dec_0 0000020d
|
||||
CSEG _loop_1 0000020f
|
||||
CSEG _loop_3 00000211
|
||||
CSEG _DELAY_0 00000224
|
||||
CSEG _DELAY_1 00000225
|
||||
CSEG _DELAY_2 00000226
|
||||
CSEG DIV_LOOP 00000220
|
||||
CSEG DISPLAY_SYMBOLS 00000270
|
||||
CSEG DELAY 00000260
|
||||
CSEG _loop_2 0000024b
|
||||
CSEG _loop_0 0000024c
|
||||
CSEG _dec_0 0000024d
|
||||
CSEG _loop_1 0000024f
|
||||
CSEG _loop_3 00000251
|
||||
CSEG _DELAY_0 00000264
|
||||
CSEG _DELAY_1 00000265
|
||||
CSEG _DELAY_2 00000266
|
||||
|
||||
Binary file not shown.
@ -12,6 +12,8 @@
|
||||
<FILE>definitions.asm</FILE>
|
||||
<FILE>macros.asm</FILE>
|
||||
<FILE>div16u.asm</FILE>
|
||||
<FILE>div8u.asm</FILE>
|
||||
<FILE>mpy16u.asm</FILE>
|
||||
</INCLUDED_FILES>
|
||||
<OBJECT_FILES>
|
||||
<FILE>dist/default/production/attiny2313a_thermostat.X.production.obj</FILE>
|
||||
@ -32,77 +34,88 @@
|
||||
<TEMP_L><FILE>main.asm</FILE><LINE>29</LINE></TEMP_L>
|
||||
<TEMP_H><FILE>main.asm</FILE><LINE>30</LINE></TEMP_H>
|
||||
<TEMP_F><FILE>main.asm</FILE><LINE>31</LINE></TEMP_F>
|
||||
<SETTING_INT><FILE>main.asm</FILE><LINE>32</LINE></SETTING_INT>
|
||||
<SETTING_F><FILE>main.asm</FILE><LINE>33</LINE></SETTING_F>
|
||||
<SETTING_TEMP_H><FILE>main.asm</FILE><LINE>32</LINE></SETTING_TEMP_H>
|
||||
<SETTING_TEMP_L><FILE>main.asm</FILE><LINE>33</LINE></SETTING_TEMP_L>
|
||||
<SETTING_HYST><FILE>main.asm</FILE><LINE>34</LINE></SETTING_HYST>
|
||||
<SETTING_MODE><FILE>main.asm</FILE><LINE>35</LINE></SETTING_MODE>
|
||||
<DEVICE_FAMILY_CODE><FILE>main.asm</FILE><LINE>36</LINE></DEVICE_FAMILY_CODE>
|
||||
<RESET_vect><FILE>main.asm</FILE><LINE>189</LINE></RESET_vect>
|
||||
<TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>94</LINE></TIMER0_COMPA_vect>
|
||||
<PCINT0_vect><FILE>main.asm</FILE><LINE>57</LINE></PCINT0_vect>
|
||||
<_PCINT0_vect_end><FILE>main.asm</FILE><LINE>84</LINE></_PCINT0_vect_end>
|
||||
<_INTO_PROGRAM_STATE><FILE>main.asm</FILE><LINE>80</LINE></_INTO_PROGRAM_STATE>
|
||||
<_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>106</LINE></_CLR_CURRENT_DIGIT>
|
||||
<_indicate_1><FILE>main.asm</FILE><LINE>110</LINE></_indicate_1>
|
||||
<_indicate_2><FILE>main.asm</FILE><LINE>130</LINE></_indicate_2>
|
||||
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>674</LINE></DISPLAY_DECODER>
|
||||
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>487</LINE></USI_TRANSMIT>
|
||||
<_indicate_3><FILE>main.asm</FILE><LINE>148</LINE></_indicate_3>
|
||||
<_indicate_4><FILE>main.asm</FILE><LINE>164</LINE></_indicate_4>
|
||||
<_indicate_exit><FILE>main.asm</FILE><LINE>176</LINE></_indicate_exit>
|
||||
<MCU_INIT><FILE>main.asm</FILE><LINE>195</LINE></MCU_INIT>
|
||||
<RD_F_CODE><FILE>main.asm</FILE><LINE>359</LINE></RD_F_CODE>
|
||||
<ERR_FAMILY_CODE><FILE>main.asm</FILE><LINE>247</LINE></ERR_FAMILY_CODE>
|
||||
<START_PROGRAM><FILE>main.asm</FILE><LINE>252</LINE></START_PROGRAM>
|
||||
<BEEP_LONG><FILE>main.asm</FILE><LINE>698</LINE></BEEP_LONG>
|
||||
<BEEP_SHORT><FILE>main.asm</FILE><LINE>690</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>633</LINE></DISPLAY_UPD_DIGITS>
|
||||
<TEMP_UPD><FILE>main.asm</FILE><LINE>342</LINE></TEMP_UPD>
|
||||
<TEMP_COMPARSION><FILE>main.asm</FILE><LINE>290</LINE></TEMP_COMPARSION>
|
||||
<_STATE_ERROR><FILE>main.asm</FILE><LINE>279</LINE></_STATE_ERROR>
|
||||
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>518</LINE></SW_CHECK_PROCESS>
|
||||
<SRAM_TEMP_2><FILE>main.asm</FILE><LINE>37</LINE></SRAM_TEMP_2>
|
||||
<SRAM_TEMP_3><FILE>main.asm</FILE><LINE>38</LINE></SRAM_TEMP_3>
|
||||
<RESET_vect><FILE>main.asm</FILE><LINE>191</LINE></RESET_vect>
|
||||
<TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>96</LINE></TIMER0_COMPA_vect>
|
||||
<PCINT0_vect><FILE>main.asm</FILE><LINE>59</LINE></PCINT0_vect>
|
||||
<_PCINT0_vect_end><FILE>main.asm</FILE><LINE>86</LINE></_PCINT0_vect_end>
|
||||
<_INTO_PROGRAM_STATE><FILE>main.asm</FILE><LINE>82</LINE></_INTO_PROGRAM_STATE>
|
||||
<_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_2><FILE>main.asm</FILE><LINE>132</LINE></_indicate_2>
|
||||
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>740</LINE></DISPLAY_DECODER>
|
||||
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>553</LINE></USI_TRANSMIT>
|
||||
<_indicate_3><FILE>main.asm</FILE><LINE>150</LINE></_indicate_3>
|
||||
<_indicate_4><FILE>main.asm</FILE><LINE>166</LINE></_indicate_4>
|
||||
<_indicate_exit><FILE>main.asm</FILE><LINE>178</LINE></_indicate_exit>
|
||||
<MCU_INIT><FILE>main.asm</FILE><LINE>197</LINE></MCU_INIT>
|
||||
<RD_F_CODE><FILE>main.asm</FILE><LINE>425</LINE></RD_F_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>
|
||||
<BEEP_LONG><FILE>main.asm</FILE><LINE>764</LINE></BEEP_LONG>
|
||||
<BEEP_SHORT><FILE>main.asm</FILE><LINE>756</LINE></BEEP_SHORT>
|
||||
<LOOP><FILE>main.asm</FILE><LINE>267</LINE></LOOP>
|
||||
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>271</LINE></_STATE_DEFAULT>
|
||||
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>279</LINE></_STATE_PROGRAM>
|
||||
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>699</LINE></DISPLAY_UPD_DIGITS>
|
||||
<TEMP_UPD><FILE>main.asm</FILE><LINE>408</LINE></TEMP_UPD>
|
||||
<TEMP_COMPARSION><FILE>main.asm</FILE><LINE>298</LINE></TEMP_COMPARSION>
|
||||
<_STATE_ERROR><FILE>main.asm</FILE><LINE>285</LINE></_STATE_ERROR>
|
||||
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>584</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>
|
||||
<_HEATING_MODE><FILE>main.asm</FILE><LINE>319</LINE></_HEATING_MODE>
|
||||
<_COMPARSION_EXIT><FILE>main.asm</FILE><LINE>331</LINE></_COMPARSION_EXIT>
|
||||
<_HEATING_ON><FILE>main.asm</FILE><LINE>323</LINE></_HEATING_ON>
|
||||
<_HEATING_OFF><FILE>main.asm</FILE><LINE>326</LINE></_HEATING_OFF>
|
||||
<TEMP_CONV><FILE>main.asm</FILE><LINE>467</LINE></TEMP_CONV>
|
||||
<DELAY_LOOP_24><FILE>main.asm</FILE><LINE>742</LINE></DELAY_LOOP_24>
|
||||
<TEMP_RD><FILE>main.asm</FILE><LINE>375</LINE></TEMP_RD>
|
||||
<OW_PRESENCE><FILE>main.asm</FILE><LINE>542</LINE></OW_PRESENCE>
|
||||
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>569</LINE></OW_SEND_BYTE>
|
||||
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>602</LINE></OW_RD_BYTE>
|
||||
<_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>410</LINE></_TEMP_RD_TO_UNSIGNED>
|
||||
<_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>421</LINE></_TEMP_RD_CONTINUE>
|
||||
<_TEMP_RD_END><FILE>main.asm</FILE><LINE>431</LINE></_TEMP_RD_END>
|
||||
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>505</LINE></_USI_TRANSMIT_LOOP>
|
||||
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>708</LINE></DEBOUNCE_SW>
|
||||
<_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>531</LINE></_INTO_DEFAULT_STATE>
|
||||
<_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>534</LINE></_SW_CHECK_PROCESS_END>
|
||||
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>734</LINE></DELAY_LOOP_16>
|
||||
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>558</LINE></OW_CHECK_PRESENCE>
|
||||
<_EXIT><FILE>main.asm</FILE><LINE>564</LINE></_EXIT>
|
||||
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>574</LINE></_OW_SEND_BYTE_LOOP>
|
||||
<_OW_SEND_0><FILE>main.asm</FILE><LINE>578</LINE></_OW_SEND_0>
|
||||
<_OW_SEND_1><FILE>main.asm</FILE><LINE>586</LINE></_OW_SEND_1>
|
||||
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>593</LINE></_OW_SEND_BYTE_END>
|
||||
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>608</LINE></_OW_RD_BYTE_LP>
|
||||
<DIV_LOOP><FILE>main.asm</FILE><LINE>650</LINE></DIV_LOOP>
|
||||
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>776</LINE></DISPLAY_SYMBOLS>
|
||||
<DELAY><FILE>main.asm</FILE><LINE>751</LINE></DELAY>
|
||||
<_loop_2><FILE>main.asm</FILE><LINE>714</LINE></_loop_2>
|
||||
<_loop_0><FILE>main.asm</FILE><LINE>716</LINE></_loop_0>
|
||||
<_dec_0><FILE>main.asm</FILE><LINE>718</LINE></_dec_0>
|
||||
<_loop_1><FILE>main.asm</FILE><LINE>721</LINE></_loop_1>
|
||||
<_loop_3><FILE>main.asm</FILE><LINE>724</LINE></_loop_3>
|
||||
<_DELAY_0><FILE>main.asm</FILE><LINE>757</LINE></_DELAY_0>
|
||||
<_DELAY_1><FILE>main.asm</FILE><LINE>759</LINE></_DELAY_1>
|
||||
<_DELAY_2><FILE>main.asm</FILE><LINE>761</LINE></_DELAY_2>
|
||||
<div8u><FILE>div8u.asm</FILE><LINE>26</LINE></div8u>
|
||||
<d8u_1><FILE>div8u.asm</FILE><LINE>28</LINE></d8u_1>
|
||||
<d8u_2><FILE>div8u.asm</FILE><LINE>32</LINE></d8u_2>
|
||||
<d8u_3><FILE>div8u.asm</FILE><LINE>38</LINE></d8u_3>
|
||||
<mpy16u><FILE>mpy16u.asm</FILE><LINE>31</LINE></mpy16u>
|
||||
<m16u_1><FILE>mpy16u.asm</FILE><LINE>37</LINE></m16u_1>
|
||||
<noad8><FILE>mpy16u.asm</FILE><LINE>40</LINE></noad8>
|
||||
<_NEGATE_TEMP><FILE>main.asm</FILE><LINE>364</LINE></_NEGATE_TEMP>
|
||||
<_CHECK_MODE><FILE>main.asm</FILE><LINE>370</LINE></_CHECK_MODE>
|
||||
<_HEATING_MODE><FILE>main.asm</FILE><LINE>381</LINE></_HEATING_MODE>
|
||||
<_HEATING_ON><FILE>main.asm</FILE><LINE>391</LINE></_HEATING_ON>
|
||||
<_HEATING_OFF><FILE>main.asm</FILE><LINE>394</LINE></_HEATING_OFF>
|
||||
<_COMPARSION_EXIT><FILE>main.asm</FILE><LINE>396</LINE></_COMPARSION_EXIT>
|
||||
<TEMP_CONV><FILE>main.asm</FILE><LINE>533</LINE></TEMP_CONV>
|
||||
<DELAY_LOOP_24><FILE>main.asm</FILE><LINE>808</LINE></DELAY_LOOP_24>
|
||||
<TEMP_RD><FILE>main.asm</FILE><LINE>441</LINE></TEMP_RD>
|
||||
<OW_PRESENCE><FILE>main.asm</FILE><LINE>608</LINE></OW_PRESENCE>
|
||||
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>635</LINE></OW_SEND_BYTE>
|
||||
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>668</LINE></OW_RD_BYTE>
|
||||
<_TEMP_RD_TO_UNSIGNED><FILE>main.asm</FILE><LINE>476</LINE></_TEMP_RD_TO_UNSIGNED>
|
||||
<_TEMP_RD_CONTINUE><FILE>main.asm</FILE><LINE>487</LINE></_TEMP_RD_CONTINUE>
|
||||
<_TEMP_RD_END><FILE>main.asm</FILE><LINE>497</LINE></_TEMP_RD_END>
|
||||
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>571</LINE></_USI_TRANSMIT_LOOP>
|
||||
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>774</LINE></DEBOUNCE_SW>
|
||||
<_INTO_DEFAULT_STATE><FILE>main.asm</FILE><LINE>597</LINE></_INTO_DEFAULT_STATE>
|
||||
<_SW_CHECK_PROCESS_END><FILE>main.asm</FILE><LINE>600</LINE></_SW_CHECK_PROCESS_END>
|
||||
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>800</LINE></DELAY_LOOP_16>
|
||||
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>624</LINE></OW_CHECK_PRESENCE>
|
||||
<_EXIT><FILE>main.asm</FILE><LINE>630</LINE></_EXIT>
|
||||
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>640</LINE></_OW_SEND_BYTE_LOOP>
|
||||
<_OW_SEND_0><FILE>main.asm</FILE><LINE>644</LINE></_OW_SEND_0>
|
||||
<_OW_SEND_1><FILE>main.asm</FILE><LINE>652</LINE></_OW_SEND_1>
|
||||
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>659</LINE></_OW_SEND_BYTE_END>
|
||||
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>674</LINE></_OW_RD_BYTE_LP>
|
||||
<DIV_LOOP><FILE>main.asm</FILE><LINE>716</LINE></DIV_LOOP>
|
||||
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>842</LINE></DISPLAY_SYMBOLS>
|
||||
<DELAY><FILE>main.asm</FILE><LINE>817</LINE></DELAY>
|
||||
<_loop_2><FILE>main.asm</FILE><LINE>780</LINE></_loop_2>
|
||||
<_loop_0><FILE>main.asm</FILE><LINE>782</LINE></_loop_0>
|
||||
<_dec_0><FILE>main.asm</FILE><LINE>784</LINE></_dec_0>
|
||||
<_loop_1><FILE>main.asm</FILE><LINE>787</LINE></_loop_1>
|
||||
<_loop_3><FILE>main.asm</FILE><LINE>790</LINE></_loop_3>
|
||||
<_DELAY_0><FILE>main.asm</FILE><LINE>823</LINE></_DELAY_0>
|
||||
<_DELAY_1><FILE>main.asm</FILE><LINE>825</LINE></_DELAY_1>
|
||||
<_DELAY_2><FILE>main.asm</FILE><LINE>827</LINE></_DELAY_2>
|
||||
</LABELS>
|
||||
</ASSEMBLER_INFO>
|
||||
|
||||
39
div8u.asm
Normal file
39
div8u.asm
Normal file
@ -0,0 +1,39 @@
|
||||
;***************************************************************************
|
||||
;*
|
||||
;* "div8u" - 8/8 Bit Unsigned Division
|
||||
;*
|
||||
;* This subroutine divides the two register variables "dd8u" (dividend) and
|
||||
;* "dv8u" (divisor). The result is placed in "dres8u" and the remainder in
|
||||
;* "drem8u".
|
||||
;*
|
||||
;* Number of words :14
|
||||
;* Number of cycles :97
|
||||
;* Low registers used :1 (drem8u)
|
||||
;* High registers used :3 (dres8u/dd8u,dv8u,dcnt8u)
|
||||
;*
|
||||
;***************************************************************************
|
||||
|
||||
;***** Subroutine Register Variables
|
||||
|
||||
.def drem8u =r15 ;remainder
|
||||
.def dres8u =r16 ;result
|
||||
.def dd8u =r16 ;dividend
|
||||
.def dv8u =r17 ;divisor
|
||||
.def dcnt8u =r18 ;loop counter
|
||||
|
||||
;***** Code
|
||||
|
||||
div8u: sub drem8u,drem8u ;clear remainder and carry
|
||||
ldi dcnt8u,9 ;init loop counter
|
||||
d8u_1: rol dd8u ;shift left dividend
|
||||
dec dcnt8u ;decrement counter
|
||||
brne d8u_2 ;if done
|
||||
ret ; return
|
||||
d8u_2: rol drem8u ;shift dividend into remainder
|
||||
sub drem8u,dv8u ;remainder = remainder - divisor
|
||||
brcc d8u_3 ;if result negative
|
||||
add drem8u,dv8u ; restore remainder
|
||||
clc ; clear carry to be shifted into result
|
||||
rjmp d8u_1 ;else
|
||||
d8u_3: sec ; set carry to be shifted into result
|
||||
rjmp d8u_1
|
||||
4
div8u.hex
Normal file
4
div8u.hex
Normal file
@ -0,0 +1,4 @@
|
||||
:020000020000FC
|
||||
:10000000FF1829E0001F2A9509F40895FF1CF11A32
|
||||
:0C00100018F4F10E8894F6CF0894F4CF99
|
||||
:00000001FF
|
||||
114
main.asm
114
main.asm
@ -29,11 +29,13 @@ SW_FLAGS: .BYTE 1 ; Состояние кнопок
|
||||
TEMP_L: .BYTE 1 ; Младший байт температуры
|
||||
TEMP_H: .BYTE 1 ; Старший байт температуры
|
||||
TEMP_F: .BYTE 1 ; Дробная часть
|
||||
SETTING_INT: .BYTE 1 ; Уставка: целая часть
|
||||
SETTING_F: .BYTE 1 ; Уставка: дробная часть
|
||||
SETTING_TEMP_H: .BYTE 1 ; Уставка температуры (старший байт)
|
||||
SETTING_TEMP_L: .BYTE 1 ; Уставка температуры (младший байт)
|
||||
SETTING_HYST: .BYTE 1 ; Гистерезис: отклонение от уставки
|
||||
SETTING_MODE: .BYTE 1 ; Режим работы: '1' - нагрев; '0' - 'охлаждение'
|
||||
DEVICE_FAMILY_CODE: .BYTE 1 ; Должно быть 0x10 для DS18B20
|
||||
SRAM_TEMP_2: .BYTE 1
|
||||
SRAM_TEMP_3: .BYTE 1
|
||||
;//</editor-fold>
|
||||
|
||||
|
||||
@ -220,14 +222,18 @@ MCU_INIT:
|
||||
ldi r16, 0x00
|
||||
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_TEMP_L
|
||||
sts SETTING_TEMP_L, r16 ; уставка LOW
|
||||
|
||||
ldi r16, DEFAULT_SETTING_TEMP_H
|
||||
sts SETTING_TEMP_H, r16 ; уставка HIGH
|
||||
|
||||
ldi r16, DEFAULT_SETTING_HYST
|
||||
sts SETTING_HYST, r16
|
||||
sts SETTING_HYST, r16 ; гистерезис
|
||||
|
||||
ldi r16, DEFAULT_SETTING_MODE
|
||||
sts SETTING_MODE, r16
|
||||
sts SETTING_MODE, r16 ; режим работы
|
||||
|
||||
clr r16
|
||||
sts TEMP_L, r16
|
||||
@ -286,6 +292,8 @@ _STATE_ERROR:
|
||||
|
||||
; **** ПОДПРОГРАММЫ **********************************************
|
||||
.INCLUDE "div16u.asm"
|
||||
.INCLUDE "div8u.asm"
|
||||
.INCLUDE "mpy16u.asm"
|
||||
|
||||
TEMP_COMPARSION:
|
||||
push r16
|
||||
@ -295,40 +303,94 @@ TEMP_COMPARSION:
|
||||
push r20
|
||||
push r21
|
||||
push r22
|
||||
|
||||
lds r16, TEMP_L
|
||||
lds r17, TEMP_H // всегда 0?
|
||||
lds r18, TEMP_F
|
||||
push r23
|
||||
;
|
||||
; lds dd8u, SETTING_HYST
|
||||
; ldi dv8u, 10
|
||||
; rcall div8u
|
||||
;
|
||||
; ; определение нижнего и верхнего порого срабатывания
|
||||
; lds r19, SETTING_INT
|
||||
; lds r20, SETTING_F
|
||||
; mov r20, r19
|
||||
; sub r19, dres8u ; MIN = SET - HYST_INT
|
||||
; add r20, dres8u ; MAX = SET + HYST_INT
|
||||
;
|
||||
.DEF temp_r_l = r16
|
||||
.DEF temp_r_h = r17
|
||||
|
||||
.DEF min_r_trhd_l = r11
|
||||
.DEF min_r_trhd_h = r10
|
||||
|
||||
.DEF max_r_trhd_l = r13
|
||||
.DEF max_r_trhd_h = r12
|
||||
; умножаем температуру на 10
|
||||
lds mc16uL, TEMP_L // r16
|
||||
lds mc16uH, TEMP_H // r17
|
||||
ldi mp16uL, LOW(10)
|
||||
ldi mp16uH, HIGH(10)
|
||||
rcall mpy16u
|
||||
mov temp_r_l, m16u0 ; L
|
||||
mov temp_r_h, m16u1 ; H
|
||||
; добавляем дробную часть
|
||||
lds r18, TEMP_F
|
||||
clr r19
|
||||
add temp_r_l, r18
|
||||
adc temp_r_h, r19
|
||||
sts SRAM_TEMP_2, temp_r_h
|
||||
sts SRAM_TEMP_3, temp_r_l
|
||||
|
||||
ldi r19, 28 ; min
|
||||
ldi r20, 32 ; max
|
||||
lds r21, SETTING_MODE ; mode
|
||||
; определяем нижний и верхний пороги
|
||||
lds r20, SETTING_TEMP_L
|
||||
lds r21, SETTING_TEMP_H
|
||||
lds r22, SETTING_HYST
|
||||
push r20
|
||||
push r21
|
||||
clr r23
|
||||
sub r20, r22
|
||||
sbc r21, r23
|
||||
mov min_r_trhd_l, r20
|
||||
mov min_r_trhd_h, r21
|
||||
pop r21
|
||||
pop r20
|
||||
clr r23
|
||||
add r20, r22
|
||||
adc r21, r23
|
||||
mov max_r_trhd_l, r20
|
||||
mov max_r_trhd_h, r21
|
||||
|
||||
brts PC+2
|
||||
rjmp PC+2
|
||||
neg r16
|
||||
; определяем знак температуры
|
||||
brts _NEGATE_TEMP
|
||||
rjmp _CHECK_MODE
|
||||
|
||||
tst r21
|
||||
_NEGATE_TEMP:
|
||||
com temp_r_l
|
||||
com temp_r_h
|
||||
subi temp_r_l, low(-1)
|
||||
sbci temp_r_h, high(-1)
|
||||
|
||||
_CHECK_MODE:
|
||||
; определяем режим работы
|
||||
lds r20, SETTING_MODE
|
||||
tst r20
|
||||
brne _HEATING_MODE
|
||||
rjmp _COMPARSION_EXIT
|
||||
|
||||
_HEATING_MODE:
|
||||
cp r19, r16
|
||||
; проверяем нижний порог
|
||||
cp min_r_trhd_l, temp_r_l
|
||||
cpc min_r_trhd_h, temp_r_h
|
||||
brge _HEATING_ON ; TEMP <= MIN
|
||||
rjmp _HEATING_OFF
|
||||
; проверяем верхний порог
|
||||
cp temp_r_l, max_r_trhd_l
|
||||
cpc temp_r_h, max_r_trhd_h
|
||||
brge _HEATING_OFF ; TEMP >= TOP
|
||||
rjmp _COMPARSION_EXIT
|
||||
_HEATING_ON:
|
||||
relay_on
|
||||
rjmp _COMPARSION_EXIT
|
||||
_HEATING_OFF:
|
||||
cp r16, r20
|
||||
brge PC+2 ; TEMP >= MAX
|
||||
rjmp _COMPARSION_EXIT
|
||||
relay_off
|
||||
_COMPARSION_EXIT:
|
||||
pop r23
|
||||
pop r22
|
||||
pop r21
|
||||
pop r20
|
||||
|
||||
121
main.hex
121
main.hex
@ -7,68 +7,69 @@
|
||||
:10004A000F931F935FB74091670045300CF403C0CC
|
||||
:10005A00442740936700403081F493989498959888
|
||||
:10006A000EF002C00BE002C000916500002311F0FF
|
||||
:10007A00929A01C09298B5D130D1413081F49298C8
|
||||
:10007A00929A01C09298BDD138D1413081F49298B8
|
||||
:10008A00949895980091640030916500032B11F0C3
|
||||
:10009A00939A01C0939800916400A3D11ED1423073
|
||||
:1000AA0059F4929893989598949A0091630099D1EB
|
||||
:1000BA00002D0F77002E11D1433041F49298939876
|
||||
:1000CA009498959A00916B008CD107D143954093EF
|
||||
:10009A00939A01C0939800916400ABD126D1423063
|
||||
:1000AA0059F4929893989598949A00916300A1D1E3
|
||||
:1000BA00002D0F77002E19D1433041F4929893986E
|
||||
:1000CA009498959A00916B0094D10FD143954093DF
|
||||
:1000DA0067005FBF1F910F915F914F9118950FEDC8
|
||||
:1000EA000DBF0FE701BB01EE07BB0CE108BB02E045
|
||||
:1000FA0000BF05E003BF09E106BF00E20BBF0CE148
|
||||
:10010A0000BD11241092670000E0009360000FEF19
|
||||
:10011A0000936C0005E000936D0005E000936E000B
|
||||
:10012A0001E000936F0000270093690000936A00C2
|
||||
:10013A0000EF00936B0060D180E090E000916000D6
|
||||
:10014A00003031F4969833D161D001E009BF25D04F
|
||||
:10015A00013019F496982BD1CCD0023079F7969ABF
|
||||
:10016A001BE01093630010936400109365001093D2
|
||||
:10017A006600E4CFEE24FF1841E1001F111F4A95E3
|
||||
:10018A0009F40895EE1CFF1CE21AF30A20F4E20EA9
|
||||
:10019A00F31E8894F2CF0894F0CF0F931F932F93F6
|
||||
:1001AA003F934F935F936F930091690010916A0098
|
||||
:1001BA0020916B0030916C0040916D0050916F005E
|
||||
:1001CA000EF43195552309F419C003172CF416F4CB
|
||||
:1001DA00909801C0909A12C0031729F016F4909AC9
|
||||
:1001EA0001C090980BC016F4909801C0909A2417F9
|
||||
:1001FA000CF404C016F4909A01C090986F915F9124
|
||||
:10020A004F913F912F911F910F9108951F935BD0AA
|
||||
:10021A005CE034E34DEF0FD15CE034E34DEF0BD1FA
|
||||
:10022A0008D010916900812F10916A00912F1F91B7
|
||||
:10023A0008950F931F932F933F934F9368D00CEC1D
|
||||
:10024A00802E7AD00EEB802E77D0A9E6B0E095D03A
|
||||
:10025A00AAE6B0E092D01091690020916A002F932B
|
||||
:10026A00287F283F11F0E89409C02F9168941095CF
|
||||
:10027A00209531E0130F30E0231F01C02F912695FE
|
||||
:10028A0017952695179526951795269517953091C2
|
||||
:10029A0069000EF43195432F3F70432F330F330F0C
|
||||
:1002AA00330F440F340F369536953695369510939D
|
||||
:1002BA00690020936A0030936B004F913F912F9110
|
||||
:1002CA001F910F9108950F9322D00CEC802E34D0F9
|
||||
:1002DA0004E4802E31D00F9108950F930FB800E4F3
|
||||
:1002EA000EB90BE10DB9769BFDCFC09AC0980F915C
|
||||
:1002FA0008950F938CD0B29B0196B39B0197B49B40
|
||||
:10030A0001C003C000E0009360000F910895F894C3
|
||||
:10031A00B99A33E04EEB8BD0B99830E04AE887D0EF
|
||||
:10032A0005D033E042E383D078940895B19B71609D
|
||||
:10033A0002C0B1997E7F08950F931F93082D18E08C
|
||||
:10034A00069508F458F0F894B99A30E046E76FD069
|
||||
:10035A00B99830E042E16BD078940AC0F894B99A1F
|
||||
:10036A0030E04AE064D0B99830E04EE760D0789443
|
||||
:10037A001A9531F71F910F9108950F931F93002734
|
||||
:10038A0018E0F8940695B99A30E04AE050D0B99846
|
||||
:10039A0030E040E14CD0B199006830E04CE647D0FB
|
||||
:1003AA001A9581F70C9378941F910F910895F894F8
|
||||
:1003BA005F9354E0A3E6B0E08093610090936200FB
|
||||
:1003CA0000916100109162002AE030E0D3DEED92E4
|
||||
:1003DA0000936100109362005A9591F75F917894A7
|
||||
:1003EA0008950F931F93EAE6F4E01127E00FF11F37
|
||||
:1003FA0004901F910F910895C59A22D0C598089527
|
||||
:10040A00C59A1ED01DD01CD01BD0C59808950F9335
|
||||
:10041A001F932F932AE01FEF0FEF0A95F1F71A9512
|
||||
:10042A00D9F72A95C1F72F911F910F91089541503D
|
||||
:10043A003040E8F70895415030405040E0F70895C1
|
||||
:10044A000F931F932F9326E00FEF1FEF1A95F1F7E3
|
||||
:10045A000A95D9F72A95C1F72F911F910F910895FF
|
||||
:0C046A00C0F9A4B0999282F880909CBF69
|
||||
:10010A0000BD11241092670000E0009360000CE229
|
||||
:10011A0000936D0001E000936C0005E000936E000F
|
||||
:10012A0001E000936F0008E1102F000F000F000F8D
|
||||
:10013A00110F010F009371000027009369000093CB
|
||||
:10014A006A0000EF00936B0072D0009170000832D1
|
||||
:10015A0009F405C012E0109360005AD101C054D1CD
|
||||
:10016A0080E090E000916000003031F4969827D149
|
||||
:10017A004BD001E009BF39D0013019F496981FD14C
|
||||
:10018A00C0D0023079F7969AEDCFEE24FF1841E1FC
|
||||
:10019A00001F111F4A9509F40895EE1CFF1CE21A6C
|
||||
:1001AA00F30A20F4E20EF31E8894F2CF0894F0CFFB
|
||||
:1001BA00FF1829E0001F2A9509F40895FF1CF11A77
|
||||
:1001CA0018F4F10E8894F6CF0894F4CF55274427F3
|
||||
:1001DA0060E13695279510F4400F511F57954795C2
|
||||
:1001EA00379527956A95B9F708950F931F932F931B
|
||||
:1001FA003F934F935F936F936F915F914F913F91AD
|
||||
:10020A002F911F910F9108951F9365D05CE034E3FD
|
||||
:10021A004DEF19D15CE034E34DEF15D112D01091B6
|
||||
:10022A006900812F10916A00912F1F9108950F93F1
|
||||
:10023A0076D003E3802E88D0A0E7B0E0A6D00F9155
|
||||
:10024A0008950F931F932F933F934F9368D00CEC0D
|
||||
:10025A00802E7AD00EEB802E77D0A9E6B0E095D02A
|
||||
:10026A00AAE6B0E092D01091690020916A002F931B
|
||||
:10027A00287F283F11F0E89409C02F9168941095BF
|
||||
:10028A00209531E0130F30E0231F01C02F912695EE
|
||||
:10029A0017952695179526951795269517953091B2
|
||||
:1002AA0069000EF43195432F3F70432F330F330FFC
|
||||
:1002BA00330F440F340F369536953695369510938D
|
||||
:1002CA00690020936A0030936B004F913F912F9100
|
||||
:1002DA001F910F9108950F9322D00CEC802E34D0E9
|
||||
:1002EA0004E4802E31D00F9108950F930FB800E4E3
|
||||
:1002FA000EB90BE10DB9769BFDCFC09AC0980F914C
|
||||
:10030A0008950F938CD0B29B0196B39B0197B49B2F
|
||||
:10031A0001C003C000E0009360000F910895F894B3
|
||||
:10032A00B99A33E04EEB8BD0B99830E04AE887D0DF
|
||||
:10033A0005D033E042E383D078940895B19B71608D
|
||||
:10034A0002C0B1997E7F08950F931F93082D18E07C
|
||||
:10035A00069508F458F0F894B99A30E046E76FD059
|
||||
:10036A00B99830E042E16BD078940AC0F894B99A0F
|
||||
:10037A0030E04AE064D0B99830E04EE760D0789433
|
||||
:10038A001A9531F71F910F9108950F931F93002724
|
||||
:10039A0018E0F8940695B99A30E04AE050D0B99836
|
||||
:1003AA0030E040E14CD0B199006830E04CE647D0EB
|
||||
:1003BA001A9581F70C9378941F910F910895F894E8
|
||||
:1003CA005F9354E0A3E6B0E08093610090936200EB
|
||||
:1003DA0000916100109162002AE030E0D6DEED92D1
|
||||
:1003EA0000936100109362005A9591F75F91789497
|
||||
:1003FA0008950F931F93EAE7F4E01127E00FF11F26
|
||||
:10040A0004901F910F910895C59A22D0C598089516
|
||||
:10041A00C59A1ED01DD01CD01BD0C59808950F9325
|
||||
:10042A001F932F932AE01FEF0FEF0A95F1F71A9502
|
||||
:10043A00D9F72A95C1F72F911F910F91089541502D
|
||||
:10044A003040E8F70895415030405040E0F70895B1
|
||||
:10045A000F931F932F9326E00FEF1FEF1A95F1F7D3
|
||||
:10046A000A95D9F72A95C1F72F911F910F910895EF
|
||||
:0C047A00C0F9A4B0999282F880909CBF59
|
||||
:00000001FF
|
||||
|
||||
46
mpy16u.asm
Normal file
46
mpy16u.asm
Normal file
@ -0,0 +1,46 @@
|
||||
;***************************************************************************
|
||||
;*
|
||||
;* "mpy16u" - 16x16 Bit Unsigned Multiplication
|
||||
;*
|
||||
;* This subroutine multiplies the two 16-bit register variables
|
||||
;* mp16uH:mp16uL and mc16uH:mc16uL.
|
||||
;* The result is placed in m16u3:m16u2:m16u1:m16u0.
|
||||
;*
|
||||
;* Number of words :14 + return
|
||||
;* Number of cycles :153 + return
|
||||
;* Low registers used :None
|
||||
;* High registers used :7 (mp16uL,mp16uH,mc16uL/m16u0,mc16uH/m16u1,m16u2,
|
||||
;* m16u3,mcnt16u)
|
||||
;*
|
||||
;***************************************************************************
|
||||
|
||||
;***** Subroutine Register Variables
|
||||
|
||||
.def mc16uL =r16 ;multiplicand low byte
|
||||
.def mc16uH =r17 ;multiplicand high byte
|
||||
.def mp16uL =r18 ;multiplier low byte
|
||||
.def mp16uH =r19 ;multiplier high byte
|
||||
.def m16u0 =r18 ;result byte 0 (LSB)
|
||||
.def m16u1 =r19 ;result byte 1
|
||||
.def m16u2 =r20 ;result byte 2
|
||||
.def m16u3 =r21 ;result byte 3 (MSB)
|
||||
.def mcnt16u =r22 ;loop counter
|
||||
|
||||
;***** Code
|
||||
|
||||
mpy16u: clr m16u3 ;clear 2 highest bytes of result
|
||||
clr m16u2
|
||||
ldi mcnt16u,16 ;init loop counter
|
||||
lsr mp16uH
|
||||
ror mp16uL
|
||||
|
||||
m16u_1: brcc noad8 ;if bit 0 of multiplier set
|
||||
add m16u2,mc16uL ;add multiplicand Low to byte 2 of res
|
||||
adc m16u3,mc16uH ;add multiplicand high to byte 3 of res
|
||||
noad8: ror m16u3 ;shift right result byte 3
|
||||
ror m16u2 ;rotate right result byte 2
|
||||
ror m16u1 ;rotate result byte 1 and multiplier High
|
||||
ror m16u0 ;rotate result byte 0 and multiplier Low
|
||||
dec mcnt16u ;decrement loop counter
|
||||
brne m16u_1 ;if not done, loop more
|
||||
ret
|
||||
4
mpy16u.hex
Normal file
4
mpy16u.hex
Normal file
@ -0,0 +1,4 @@
|
||||
:020000020000FC
|
||||
:100000005527442760E13695279510F4400F511F7E
|
||||
:0E00100057954795379527956A95B9F7089546
|
||||
:00000001FF
|
||||
@ -1,12 +1,12 @@
|
||||
#
|
||||
#Thu Jun 22 06:29:23 MSK 2023
|
||||
#Sun Jun 25 21:34:52 MSK 2023
|
||||
default.languagetoolchain.version=2.2.7
|
||||
default.Pack.dfplocation=/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151
|
||||
default.com-microchip-mplab-mdbcore-simulator-Simulator.md5=19e4dc0f223322f74cda227c3c12c71c
|
||||
conf.ids=default
|
||||
default.languagetoolchain.dir=/usr/bin
|
||||
host.id=2l3s-yrgx-1d
|
||||
configurations-xml=cdd4b69d8607063199baa35f45d5db2e
|
||||
configurations-xml=6a01ab9659d148a99244ed826cfd39c3
|
||||
default.com-microchip-mplab-nbide-toolchain-avrasm-AVRASMLanguageToolchain.md5=0e94da8ed93e9650ffef50929833a79f
|
||||
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=6e02ca5e9f5042ffd365b42ab82d3a9b
|
||||
user-defined-mime-resolver-xml=none
|
||||
|
||||
@ -16,6 +16,8 @@
|
||||
<itemPath>div16u.asm</itemPath>
|
||||
<itemPath>definitions.asm</itemPath>
|
||||
<itemPath>macros.asm</itemPath>
|
||||
<itemPath>div8u.asm</itemPath>
|
||||
<itemPath>mpy16u.asm</itemPath>
|
||||
</logicalFolder>
|
||||
<logicalFolder name="ExternalFiles"
|
||||
displayName="Important Files"
|
||||
@ -1033,12 +1035,16 @@
|
||||
<AVR-Global>
|
||||
</AVR-Global>
|
||||
</item>
|
||||
<item path="div8u.asm" ex="true" overriding="false">
|
||||
</item>
|
||||
<item path="macros.asm" ex="true" overriding="false">
|
||||
<AVR-ASM>
|
||||
</AVR-ASM>
|
||||
<AVR-Global>
|
||||
</AVR-Global>
|
||||
</item>
|
||||
<item path="mpy16u.asm" ex="true" overriding="false">
|
||||
</item>
|
||||
</conf>
|
||||
</confs>
|
||||
</configurationDescriptor>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user