mirror of
https://github.com/sergeyyarkov/attiny2313a_thermostat.git
synced 2026-10-11 10:18:56 +03:00
read temperature
This commit is contained in:
parent
6011384e01
commit
59b71a21d6
@ -1,4 +1,4 @@
|
|||||||
.EQU F_CPU = 8 ; 8 Mhz
|
.EQU F_CPU = 8 ; 8 Mhz (для задержки)
|
||||||
|
|
||||||
.DEF TEMP_REG_A = r16
|
.DEF TEMP_REG_A = r16
|
||||||
.DEF TEMP_REG_B = r17
|
.DEF TEMP_REG_B = r17
|
||||||
|
|||||||
@ -2,46 +2,48 @@
|
|||||||
:0200000049C0F5
|
:0200000049C0F5
|
||||||
:10001A0000C04F935F930F935FB7409167004530DD
|
:10001A0000C04F935F930F935FB7409167004530DD
|
||||||
:10002A000CF403C0442740936700403041F493988E
|
:10002A000CF403C0442740936700403041F493988E
|
||||||
:10003A0094989598929A0091660016D19FD0413073
|
:10003A0094989598929A009166002BD1B6D0413047
|
||||||
:10004A0041F4929894989598939A009165000CD1EE
|
:10004A0041F4929894989598939A0091650021D1D9
|
||||||
:10005A0095D0423041F4929893989598949A009149
|
:10005A00ACD0423041F4929893989598949A009132
|
||||||
:10006A00640002D18BD0433041F4929893989498CB
|
:10006A00640017D1A2D0433041F49298939894989F
|
||||||
:10007A00959A00916300F8D081D043954093670028
|
:10007A00959A009163000DD198D0439540936700FB
|
||||||
:10008A005FBF0F915F914F9118950FED0DBF0EE76E
|
:10008A005FBF0F915F914F9118950FED0DBF0EE76E
|
||||||
:10009A0001BB01EC07BB0CE108BB02E000BF05E0B5
|
:10009A0001BB01EC07BB0CE108BB02E000BF05E0B5
|
||||||
:1000AA0003BF09E106BF01E009BF112410926700EE
|
:1000AA0003BF09E106BF01E009BF112410926700EE
|
||||||
:1000BA0000E000936000002700936A0080E090E06F
|
:1000BA0000E000936000002700936A0000936B0041
|
||||||
:1000CA0051D0DDD0DCD0DBD0DAD03FD000916A004D
|
:1000CA0080E090E000916A00802F90E0009160004B
|
||||||
:1000DA00802F90E000916000003079F4ABD070FD81
|
:1000DA00003089F4C4D070FD969A70FF969859D072
|
||||||
:1000EA00969A70FF96983ED0CAD0C9D0C8D0C7D0C9
|
:1000EA00E3D0E2D0E1D0E0D02ED010916A00812F87
|
||||||
:1000FA002CD010916A00812F90E0013011F49AD02F
|
:1000FA0010916B00912F013011F4B1D062D002300F
|
||||||
:10010A0049D0023039F71BE0109363001093640062
|
:10010A0029F71BE0109363001093640010936500B5
|
||||||
:10011A0010936500109366000000DCCFEE24FF18F0
|
:10011A00109366000000DACFEE24FF1841E1001FB9
|
||||||
:10012A0041E1001F111F4A9509F40895EE1CFF1CB6
|
:10012A00111F4A9509F40895EE1CFF1CE21AF30AFE
|
||||||
:10013A00E21AF30A20F4E20EF31E8894F2CF08942E
|
:10013A0020F4E20EF31E8894F2CF0894F0CF4150D7
|
||||||
:10014A00F0CF41503040E8F708950F93F89428D043
|
:10014A003040E8F708950F931F932F93F8943FD008
|
||||||
:10015A000CEC802E38D00EEB802E35D051D078940E
|
:10015A000CEC802E4FD00EEB802E4CD0AAE6B0E0ED
|
||||||
:10016A000F9108950F93F8941BD00CEC802E2BD08E
|
:10016A0066D0ABE6B0E063D010916A0020916B00D4
|
||||||
:10017A0004E4802E28D078940F9108950F930FB835
|
:10017A0026951795269517952695179526951795D9
|
||||||
:10018A0000E40EB90BE10DB9769BFDCFC09AC09879
|
:10018A0010936A0020936B0078942F911F910F911E
|
||||||
:10019A000F91089574D0B29B0196B39B019708956D
|
:10019A0008950F93F8941BD00CEC802E2BD004E416
|
||||||
:1001AA00B99A33E04EEBCDDFB99830E04AE8C9DFBF
|
:1001AA00802E28D078940F9108950F930FB800E409
|
||||||
:1001BA0004D033E042E3C5DF0895B19B716002C009
|
:1001BA000EB90BE10DB9769BFDCFC09AC0980F918D
|
||||||
:1001CA00B1997E7F08950F931F93082D18E0069525
|
:1001CA00089572D0B29B0196B39B01970895B99A8C
|
||||||
:1001DA0008F448F0B99A30E046E7B3DFB99830E05E
|
:1001DA0033E04EEBB4DFB99830E04AE8B0DF04D040
|
||||||
:1001EA0042E1AFDF08C0B99A30E04AE0AADFB99825
|
:1001EA0033E042E3ACDF0895B19B716002C0B1997C
|
||||||
:1001FA0030E04EE7A6DF1A9551F71F910F91089547
|
:1001FA007E7F08950F931F93082D18E0069508F443
|
||||||
:10020A000F931F9308E0B99A30E04AE09ADFB99851
|
:10020A0048F0B99A30E046E79ADFB99830E042E11F
|
||||||
:10021A0030E040E196DF10916A001695B1991068B6
|
:10021A0096DF08C0B99A30E04AE091DFB99830E039
|
||||||
:10022A0010936A0030E04CE68CDF0A9561F71F9163
|
:10022A004EE78DDF1A9551F71F910F9108950F939D
|
||||||
:10023A000F910895F8945F9354E0A3E6B0E0809399
|
:10023A001F93002718E00695B99A30E04AE07FDF5D
|
||||||
:10024A0061009093620000916100109162002AE0BF
|
:10024A00B99830E040E17BDFB199006830E04CE6D4
|
||||||
:10025A0030E064DFED9200936100109362005A95DA
|
:10025A0076DF1A9581F70C931F910F910895F89400
|
||||||
:10026A0091F75F91789408950F931F93E4ECF2E06D
|
:10026A005F9354E0A3E6B0E080936100909362004C
|
||||||
:10027A001127E00FF11F04901F910F9108950F931A
|
:10027A0000916100109162002AE030E04DDFED92BA
|
||||||
:10028A001F932F932AE01FEF0FEF0A95F1F71A95A4
|
:10028A0000936100109362005A9591F75F917894F8
|
||||||
:10029A00D9F72A95C1F72F911F910F9108950F93BE
|
:10029A0008950F931F93EEEEF2E01127E00FF11F7E
|
||||||
:1002AA001F930FEF1FEF1A95000000000000D9F707
|
:1002AA0004901F910F9108950F931F932F932AE0A3
|
||||||
:1002BA000A95C1F71F910F910895C0F9A4B09992B8
|
:1002BA001FEF0FEF0A95F1F71A95D9F72A95C1F7AB
|
||||||
:0602CA0082F880909CBF49
|
:1002CA002F911F910F9108950F931F930FEF1FEF17
|
||||||
|
:1002DA001A95000000000000D9F70A95C1F71F918E
|
||||||
|
:1002EA000F910895C0F9A4B0999282F880909CBFAA
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|||||||
@ -1,26 +1,26 @@
|
|||||||
|
|
||||||
AVRASM ver. 2.2.7 main.asm Mon Jun 19 15:34:12 2023
|
AVRASM ver. 2.2.7 main.asm Mon Jun 19 19:48:15 2023
|
||||||
|
|
||||||
[builtin](2): Including file '/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/avrasm/inc\tn2313Adef.inc'
|
[builtin](2): Including file '/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/avrasm/inc\tn2313Adef.inc'
|
||||||
main.asm(15): Including file 'definitions.asm'
|
main.asm(15): Including file 'definitions.asm'
|
||||||
main.asm(16): Including file 'macros.asm'
|
main.asm(16): Including file 'macros.asm'
|
||||||
main.asm(244): Including file 'div16u.asm'
|
main.asm(215): Including file 'div16u.asm'
|
||||||
div16u.asm(22): warning: Register r16 already defined by the .DEF directive
|
div16u.asm(22): warning: Register r16 already defined by the .DEF directive
|
||||||
main.asm(244): 'div16u.asm' included form here
|
main.asm(215): 'div16u.asm' included form here
|
||||||
div16u.asm(23): warning: Register r17 already defined by the .DEF directive
|
div16u.asm(23): warning: Register r17 already defined by the .DEF directive
|
||||||
main.asm(244): 'div16u.asm' included form here
|
main.asm(215): 'div16u.asm' included form here
|
||||||
div16u.asm(24): warning: Register r16 already defined by the .DEF directive
|
div16u.asm(24): warning: Register r16 already defined by the .DEF directive
|
||||||
main.asm(244): 'div16u.asm' included form here
|
main.asm(215): 'div16u.asm' included form here
|
||||||
div16u.asm(25): warning: Register r17 already defined by the .DEF directive
|
div16u.asm(25): warning: Register r17 already defined by the .DEF directive
|
||||||
main.asm(244): 'div16u.asm' included form here
|
main.asm(215): 'div16u.asm' included form here
|
||||||
div16u.asm(27): warning: Register r19 already defined by the .DEF directive
|
div16u.asm(27): warning: Register r19 already defined by the .DEF directive
|
||||||
main.asm(244): 'div16u.asm' included form here
|
main.asm(215): 'div16u.asm' included form here
|
||||||
div16u.asm(28): warning: Register r20 already defined by the .DEF directive
|
div16u.asm(28): warning: Register r20 already defined by the .DEF directive
|
||||||
main.asm(244): 'div16u.asm' included form here
|
main.asm(215): 'div16u.asm' included form here
|
||||||
[builtin](2): Including file '/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/avrasm/inc\tn2313Adef.inc'
|
[builtin](2): Including file '/home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/avrasm/inc\tn2313Adef.inc'
|
||||||
main.asm(15): Including file 'definitions.asm'
|
main.asm(15): Including file 'definitions.asm'
|
||||||
main.asm(16): Including file 'macros.asm'
|
main.asm(16): Including file 'macros.asm'
|
||||||
main.asm(244): Including file 'div16u.asm'
|
main.asm(215): Including file 'div16u.asm'
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -826,7 +826,8 @@ main.asm(244): Including file 'div16u.asm'
|
|||||||
000067 CURRENT_DIGIT: .BYTE 1 ; Номер разряда индикатора, который сейчас горит
|
000067 CURRENT_DIGIT: .BYTE 1 ; Номер разряда индикатора, который сейчас горит
|
||||||
000068 SW_FLAGS: .BYTE 1 ; Состояние кнопок
|
000068 SW_FLAGS: .BYTE 1 ; Состояние кнопок
|
||||||
000069 HYSTERESIS: .BYTE 1 ; Отклонение температуры от уставки
|
000069 HYSTERESIS: .BYTE 1 ; Отклонение температуры от уставки
|
||||||
00006a OW_RECEIVE: .BYTE 1
|
00006a TEMP_L: .BYTE 1
|
||||||
|
00006b TEMP_H: .BYTE 1
|
||||||
;//</editor-fold>
|
;//</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
@ -869,8 +870,8 @@ main.asm(244): Including file 'div16u.asm'
|
|||||||
00001e 9895 cbi PORTD, DIGIT_4_PIN
|
00001e 9895 cbi PORTD, DIGIT_4_PIN
|
||||||
00001f 9a92 sbi PORTD, DIGIT_1_PIN
|
00001f 9a92 sbi PORTD, DIGIT_1_PIN
|
||||||
000020 9100 0066 lds TEMP_REG_A, DIGITS+3
|
000020 9100 0066 lds TEMP_REG_A, DIGITS+3
|
||||||
000022 d116 rcall DISPLAY_DECODER
|
000022 d12b rcall DISPLAY_DECODER
|
||||||
000023 d09f rcall USI_TRANSMIT
|
000023 d0b6 rcall USI_TRANSMIT
|
||||||
|
|
||||||
_indicate_2:
|
_indicate_2:
|
||||||
000024 3041 cpi r20, 1
|
000024 3041 cpi r20, 1
|
||||||
@ -881,8 +882,8 @@ main.asm(244): Including file 'div16u.asm'
|
|||||||
000028 9895 cbi PORTD, DIGIT_4_PIN
|
000028 9895 cbi PORTD, DIGIT_4_PIN
|
||||||
000029 9a93 sbi PORTD, DIGIT_2_PIN
|
000029 9a93 sbi PORTD, DIGIT_2_PIN
|
||||||
00002a 9100 0065 lds TEMP_REG_A, DIGITS+2
|
00002a 9100 0065 lds TEMP_REG_A, DIGITS+2
|
||||||
00002c d10c rcall DISPLAY_DECODER
|
00002c d121 rcall DISPLAY_DECODER
|
||||||
00002d d095 rcall USI_TRANSMIT
|
00002d d0ac rcall USI_TRANSMIT
|
||||||
|
|
||||||
_indicate_3:
|
_indicate_3:
|
||||||
00002e 3042 cpi r20, 2
|
00002e 3042 cpi r20, 2
|
||||||
@ -893,8 +894,8 @@ main.asm(244): Including file 'div16u.asm'
|
|||||||
000032 9895 cbi PORTD, DIGIT_4_PIN
|
000032 9895 cbi PORTD, DIGIT_4_PIN
|
||||||
000033 9a94 sbi PORTD, DIGIT_3_PIN
|
000033 9a94 sbi PORTD, DIGIT_3_PIN
|
||||||
000034 9100 0064 lds TEMP_REG_A, DIGITS+1
|
000034 9100 0064 lds TEMP_REG_A, DIGITS+1
|
||||||
000036 d102 rcall DISPLAY_DECODER
|
000036 d117 rcall DISPLAY_DECODER
|
||||||
000037 d08b rcall USI_TRANSMIT
|
000037 d0a2 rcall USI_TRANSMIT
|
||||||
|
|
||||||
_indicate_4:
|
_indicate_4:
|
||||||
000038 3043 cpi r20, 3
|
000038 3043 cpi r20, 3
|
||||||
@ -905,8 +906,8 @@ main.asm(244): Including file 'div16u.asm'
|
|||||||
00003c 9894 cbi PORTD, DIGIT_3_PIN
|
00003c 9894 cbi PORTD, DIGIT_3_PIN
|
||||||
00003d 9a95 sbi PORTD, DIGIT_4_PIN
|
00003d 9a95 sbi PORTD, DIGIT_4_PIN
|
||||||
00003e 9100 0063 lds TEMP_REG_A, DIGITS
|
00003e 9100 0063 lds TEMP_REG_A, DIGITS
|
||||||
000040 d0f8 rcall DISPLAY_DECODER
|
000040 d10d rcall DISPLAY_DECODER
|
||||||
000041 d081 rcall USI_TRANSMIT
|
000041 d098 rcall USI_TRANSMIT
|
||||||
|
|
||||||
_indicate_exit:
|
_indicate_exit:
|
||||||
000042 9543 inc r20
|
000042 9543 inc r20
|
||||||
@ -958,46 +959,15 @@ main.asm(244): Including file 'div16u.asm'
|
|||||||
00005e 9300 0060 sts MCU_STATE, r16 ; переводим МК сразу в режим измерения температуры
|
00005e 9300 0060 sts MCU_STATE, r16 ; переводим МК сразу в режим измерения температуры
|
||||||
|
|
||||||
000060 2700 clr r16
|
000060 2700 clr r16
|
||||||
000061 9300 006a sts OW_RECEIVE, r16
|
000061 9300 006a sts TEMP_L, r16
|
||||||
|
000063 9300 006b sts TEMP_H, r16
|
||||||
|
|
||||||
000063 e080
|
000065 e080
|
||||||
000064 e090 display_load 0 ; загружаем число, которое нужно показать на индикатор
|
000066 e090 display_load 0 ; загружаем число, которое нужно показать на индикатор
|
||||||
|
|
||||||
; ldi r16, 0b10000000
|
000067 9100 006a lds r16, TEMP_L
|
||||||
; lsr r16
|
000069 2f80 mov DISP_NUM_L, r16
|
||||||
; sbr r16, (1<<7)
|
00006a e090 ldi DISP_NUM_H, 0
|
||||||
|
|
||||||
; sbrc OWFR, OWPRF
|
|
||||||
|
|
||||||
; ldi r16, DS18B20_CMD_SKIPROM
|
|
||||||
; mov r8, r16
|
|
||||||
; rcall OW_PRESENCE
|
|
||||||
; rcall OW_SEND_BYTE
|
|
||||||
;
|
|
||||||
; ldi r16, DS18B20_CMD_RSCRATCHPAD
|
|
||||||
; mov r8, r16
|
|
||||||
;;; rcall OW_PRESENCE
|
|
||||||
; rcall OW_SEND_BYTE
|
|
||||||
;
|
|
||||||
; rcall OW_RD_BYTE
|
|
||||||
;; rcall OW_RD_BYTE
|
|
||||||
; rcall TEMP_CONV
|
|
||||||
; rcall OW_PRESENCE
|
|
||||||
|
|
||||||
000065 d051 rcall TEMP_CONV
|
|
||||||
|
|
||||||
000066 d0dd rcall DEBOUNCE_SW
|
|
||||||
000067 d0dc rcall DEBOUNCE_SW
|
|
||||||
000068 d0db rcall DEBOUNCE_SW
|
|
||||||
000069 d0da rcall DEBOUNCE_SW
|
|
||||||
|
|
||||||
00006a d03f rcall TEMP_RD
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
00006b 9100 006a lds r16, OW_RECEIVE
|
|
||||||
00006d 2f80 mov DISP_NUM_L, r16
|
|
||||||
00006e e090 ldi DISP_NUM_H, 0
|
|
||||||
|
|
||||||
|
|
||||||
; sei
|
; sei
|
||||||
@ -1007,43 +977,44 @@ main.asm(244): Including file 'div16u.asm'
|
|||||||
; **** ГЛАВНЫЙ ЦИКЛ **********************************************
|
; **** ГЛАВНЫЙ ЦИКЛ **********************************************
|
||||||
LOOP:
|
LOOP:
|
||||||
; rcall DISPLAY_UPD_DIGITS
|
; rcall DISPLAY_UPD_DIGITS
|
||||||
00006f 9100 0060 lds r16, MCU_STATE ; получаем текущее состояние МК
|
00006b 9100 0060 lds r16, MCU_STATE ; получаем текущее состояние МК
|
||||||
|
|
||||||
_STATE_DEFAULT:
|
_STATE_DEFAULT:
|
||||||
000071 3000 cpi r16, MCU_STATE_DEFAULT
|
00006d 3000 cpi r16, MCU_STATE_DEFAULT
|
||||||
000072 f479 brne _STATE_PROGRAM
|
00006e f489 brne _STATE_PROGRAM
|
||||||
000073 d0ab rcall DISPLAY_UPD_DIGITS
|
00006f d0c4 rcall DISPLAY_UPD_DIGITS
|
||||||
; rcall TEMP_RD
|
000070 fd70 sbrc OWFR, OWPRF
|
||||||
000074 fd70 sbrc OWFR, OWPRF
|
000071 9a96 sbi PORTD, PD6
|
||||||
000075 9a96 sbi PORTD, PD6
|
000072 ff70 sbrs OWFR, OWPRF
|
||||||
000076 ff70 sbrs OWFR, OWPRF
|
000073 9896 cbi PORTD, PD6
|
||||||
000077 9896 cbi PORTD, PD6
|
|
||||||
000078 d03e rcall TEMP_CONV
|
000074 d059 rcall TEMP_CONV
|
||||||
000079 d0ca rcall DEBOUNCE_SW
|
000075 d0e3 rcall DEBOUNCE_SW
|
||||||
00007a d0c9 rcall DEBOUNCE_SW
|
000076 d0e2 rcall DEBOUNCE_SW
|
||||||
00007b d0c8 rcall DEBOUNCE_SW
|
000077 d0e1 rcall DEBOUNCE_SW
|
||||||
00007c d0c7 rcall DEBOUNCE_SW
|
000078 d0e0 rcall DEBOUNCE_SW
|
||||||
00007d d02c rcall TEMP_RD
|
000079 d02e rcall TEMP_RD
|
||||||
00007e 9110 006a lds r17, OW_RECEIVE
|
00007a 9110 006a lds r17, TEMP_L
|
||||||
000080 2f81 mov DISP_NUM_L, r17
|
00007c 2f81 mov DISP_NUM_L, r17
|
||||||
000081 e090 ldi DISP_NUM_H, 0
|
00007d 9110 006b lds r17, TEMP_H
|
||||||
|
00007f 2f91 mov DISP_NUM_H, r17
|
||||||
|
|
||||||
_STATE_PROGRAM:
|
_STATE_PROGRAM:
|
||||||
000082 3001 cpi r16, MCU_STATE_PROGRAM
|
000080 3001 cpi r16, MCU_STATE_PROGRAM
|
||||||
000083 f411 brne _STATE_ERROR
|
000081 f411 brne _STATE_ERROR
|
||||||
000084 d09a rcall DISPLAY_UPD_DIGITS
|
000082 d0b1 rcall DISPLAY_UPD_DIGITS
|
||||||
000085 d049 rcall SW_CHECK_PROCESS
|
000083 d062 rcall SW_CHECK_PROCESS
|
||||||
_STATE_ERROR:
|
_STATE_ERROR:
|
||||||
000086 3002 cpi r16, MCU_STATE_ERROR
|
000084 3002 cpi r16, MCU_STATE_ERROR
|
||||||
000087 f739 brne LOOP
|
000085 f729 brne LOOP
|
||||||
000088 e01b ldi r17, 11
|
000086 e01b ldi r17, 11
|
||||||
000089 9310 0063 sts DIGITS, r17
|
000087 9310 0063 sts DIGITS, r17
|
||||||
00008b 9310 0064 sts DIGITS+1, r17
|
000089 9310 0064 sts DIGITS+1, r17
|
||||||
00008d 9310 0065 sts DIGITS+2, r17
|
00008b 9310 0065 sts DIGITS+2, r17
|
||||||
00008f 9310 0066 sts DIGITS+3, r17
|
00008d 9310 0066 sts DIGITS+3, r17
|
||||||
000091 0000 nop
|
00008f 0000 nop
|
||||||
|
|
||||||
000092 cfdc rjmp LOOP
|
000090 cfda rjmp LOOP
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
@ -1081,82 +1052,108 @@ main.asm(244): Including file 'div16u.asm'
|
|||||||
;***** Code
|
;***** Code
|
||||||
|
|
||||||
div16u:
|
div16u:
|
||||||
000093 24ee clr drem16uL ; clear remainder Low byte
|
000091 24ee clr drem16uL ; clear remainder Low byte
|
||||||
000094 18ff sub drem16uH,drem16uH ; clear remainder High byte and carry
|
000092 18ff sub drem16uH,drem16uH ; clear remainder High byte and carry
|
||||||
000095 e141 ldi dcnt16u,17 ; init loop counter
|
000093 e141 ldi dcnt16u,17 ; init loop counter
|
||||||
d16u_1:
|
d16u_1:
|
||||||
000096 1f00 rol dd16uL ; shift left dividend
|
000094 1f00 rol dd16uL ; shift left dividend
|
||||||
000097 1f11 rol dd16uH
|
000095 1f11 rol dd16uH
|
||||||
000098 954a dec dcnt16u ; decrement counter
|
000096 954a dec dcnt16u ; decrement counter
|
||||||
000099 f409 brne d16u_2 ; if done
|
000097 f409 brne d16u_2 ; if done
|
||||||
00009a 9508 ret ; return
|
000098 9508 ret ; return
|
||||||
d16u_2:
|
d16u_2:
|
||||||
00009b 1cee rol drem16uL ; shift dividend into remainder
|
000099 1cee rol drem16uL ; shift dividend into remainder
|
||||||
00009c 1cff rol drem16uH
|
00009a 1cff rol drem16uH
|
||||||
00009d 1ae2 sub drem16uL,dv16uL ; remainder = remainder - divisor
|
00009b 1ae2 sub drem16uL,dv16uL ; remainder = remainder - divisor
|
||||||
00009e 0af3 sbc drem16uH,dv16uH
|
00009c 0af3 sbc drem16uH,dv16uH
|
||||||
00009f f420 brcc d16u_3 ; if result negative
|
00009d f420 brcc d16u_3 ; if result negative
|
||||||
0000a0 0ee2 add drem16uL,dv16uL ; restore remainder
|
00009e 0ee2 add drem16uL,dv16uL ; restore remainder
|
||||||
0000a1 1ef3 adc drem16uH,dv16uH
|
00009f 1ef3 adc drem16uH,dv16uH
|
||||||
0000a2 9488 clc ; clear carry to be shifted into result
|
0000a0 9488 clc ; clear carry to be shifted into result
|
||||||
0000a3 cff2 rjmp d16u_1 ; else
|
0000a1 cff2 rjmp d16u_1 ; else
|
||||||
d16u_3:
|
d16u_3:
|
||||||
0000a4 9408 sec ; set carry to be shifted into result
|
0000a2 9408 sec ; set carry to be shifted into result
|
||||||
0000a5 cff0
|
0000a3 cff0
|
||||||
DELAY_LOOP_16:
|
DELAY_LOOP_16:
|
||||||
0000a6 5041 subi DELAY_8_r, 1
|
0000a4 5041 subi DELAY_8_r, 1
|
||||||
0000a7 4030 sbci DELAY_16_r, 0
|
0000a5 4030 sbci DELAY_16_r, 0
|
||||||
0000a8 f7e8 brcc DELAY_LOOP_16
|
0000a6 f7e8 brcc DELAY_LOOP_16
|
||||||
0000a9 9508 ret
|
0000a7 9508 ret
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: чтение и опрос температуры">
|
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: чтение и опрос температуры">
|
||||||
TEMP_RD:
|
TEMP_RD:
|
||||||
0000aa 930f push r16
|
0000a8 930f push r16
|
||||||
|
0000a9 931f push r17
|
||||||
|
0000aa 932f push r18
|
||||||
0000ab 94f8 cli
|
0000ab 94f8 cli
|
||||||
|
|
||||||
0000ac d028 rcall OW_PRESENCE
|
0000ac d03f rcall OW_PRESENCE
|
||||||
0000ad ec0c ldi r16, DS18B20_CMD_SKIPROM
|
0000ad ec0c ldi r16, DS18B20_CMD_SKIPROM
|
||||||
0000ae 2e80 mov OW_CMD_r, r16
|
0000ae 2e80 mov OW_CMD_r, r16
|
||||||
0000af d038 rcall OW_SEND_BYTE
|
0000af d04f rcall OW_SEND_BYTE
|
||||||
|
|
||||||
0000b0 eb0e ldi r16, DS18B20_CMD_RSCRATCHPAD
|
0000b0 eb0e ldi r16, DS18B20_CMD_RSCRATCHPAD
|
||||||
0000b1 2e80 mov OW_CMD_r, r16
|
0000b1 2e80 mov OW_CMD_r, r16
|
||||||
0000b2 d035 rcall OW_SEND_BYTE
|
0000b2 d04c rcall OW_SEND_BYTE
|
||||||
|
|
||||||
0000b3 d051 rcall OW_RD_BYTE
|
0000b3 e6aa ldi XL, LOW(TEMP_L)
|
||||||
|
0000b4 e0b0 ldi XH, HIGH(TEMP_L)
|
||||||
|
0000b5 d066 rcall OW_RD_BYTE
|
||||||
|
|
||||||
0000b4 9478 sei
|
0000b6 e6ab ldi XL, LOW(TEMP_H)
|
||||||
0000b5 910f pop r16
|
0000b7 e0b0 ldi XH, HIGH(TEMP_H)
|
||||||
0000b6 9508 ret
|
0000b8 d063 rcall OW_RD_BYTE
|
||||||
|
|
||||||
|
0000b9 9110 006a lds r17, TEMP_L
|
||||||
|
0000bb 9120 006b lds r18, TEMP_H
|
||||||
|
|
||||||
|
0000bd 9526 lsr r18
|
||||||
|
0000be 9517 ror r17
|
||||||
|
0000bf 9526 lsr r18
|
||||||
|
0000c0 9517 ror r17
|
||||||
|
0000c1 9526 lsr r18
|
||||||
|
0000c2 9517 ror r17
|
||||||
|
0000c3 9526 lsr r18
|
||||||
|
0000c4 9517 ror r17
|
||||||
|
|
||||||
|
0000c5 9310 006a sts TEMP_L, r17
|
||||||
|
0000c7 9320 006b sts TEMP_H, r18
|
||||||
|
|
||||||
|
|
||||||
|
0000c9 9478 sei
|
||||||
|
0000ca 912f pop r18
|
||||||
|
0000cb 911f pop r17
|
||||||
|
0000cc 910f pop r16
|
||||||
|
0000cd 9508 ret
|
||||||
;
|
;
|
||||||
TEMP_CONV:
|
TEMP_CONV:
|
||||||
0000b7 930f push r16
|
0000ce 930f push r16
|
||||||
0000b8 94f8 cli
|
0000cf 94f8 cli
|
||||||
|
|
||||||
0000b9 d01b rcall OW_PRESENCE
|
0000d0 d01b rcall OW_PRESENCE
|
||||||
0000ba ec0c ldi r16, DS18B20_CMD_SKIPROM
|
0000d1 ec0c ldi r16, DS18B20_CMD_SKIPROM
|
||||||
0000bb 2e80 mov OW_CMD_r, r16
|
0000d2 2e80 mov OW_CMD_r, r16
|
||||||
0000bc d02b rcall OW_SEND_BYTE
|
0000d3 d02b rcall OW_SEND_BYTE
|
||||||
|
|
||||||
0000bd e404 ldi r16, DS18B20_CMD_CONVERTTEMP
|
0000d4 e404 ldi r16, DS18B20_CMD_CONVERTTEMP
|
||||||
0000be 2e80 mov OW_CMD_r, r16
|
0000d5 2e80 mov OW_CMD_r, r16
|
||||||
0000bf d028 rcall OW_SEND_BYTE
|
0000d6 d028 rcall OW_SEND_BYTE
|
||||||
|
|
||||||
0000c0 9478 sei
|
0000d7 9478 sei
|
||||||
0000c1 910f pop r16
|
0000d8 910f pop r16
|
||||||
0000c2 9508 ret
|
0000d9 9508 ret
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: отправка байта в сдвиговый регистр">
|
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: отправка байта в сдвиговый регистр">
|
||||||
; **** ОТПРАВКА БАЙТА В СДВИГОВЫЙ РЕГИСТР *************************
|
; **** ОТПРАВКА БАЙТА В СДВИГОВЫЙ РЕГИСТР *************************
|
||||||
USI_TRANSMIT:
|
USI_TRANSMIT:
|
||||||
0000c3 930f push r16
|
0000da 930f push r16
|
||||||
0000c4 b80f out USIDR, r0 ; Байт для отправки всегда находится в регистре r0. Помещаем данные в регистр USIDR.
|
0000db b80f out USIDR, r0 ; Байт для отправки всегда находится в регистре r0. Помещаем данные в регистр USIDR.
|
||||||
|
|
||||||
; Enable USI Overflow Interrupt Flag (will be 0 if transfer is not compeleted)
|
; Enable USI Overflow Interrupt Flag (will be 0 if transfer is not compeleted)
|
||||||
0000c5 e400 ldi TEMP_REG_A, (1<<USIOIF)
|
0000dc e400 ldi TEMP_REG_A, (1<<USIOIF)
|
||||||
0000c6 b90e out USISR, TEMP_REG_A
|
0000dd b90e out USISR, TEMP_REG_A
|
||||||
|
|
||||||
; Load settings of USI into temp register
|
; Load settings of USI into temp register
|
||||||
; This will setup USI to Three-wire mode, Software clock strobe (USITC)
|
; This will setup USI to Three-wire mode, Software clock strobe (USITC)
|
||||||
@ -1166,49 +1163,49 @@ main.asm(244): Including file 'div16u.asm'
|
|||||||
; USICS1 <--------------> USI Clock Source Select
|
; USICS1 <--------------> USI Clock Source Select
|
||||||
; USICLK <--------------> USI Clock Strobe
|
; USICLK <--------------> USI Clock Strobe
|
||||||
; USITC <--------------> USI Toggle Clock (Enable clock generation)
|
; USITC <--------------> USI Toggle Clock (Enable clock generation)
|
||||||
0000c7 e10b ldi TEMP_REG_A, (1<<USIWM0) | (1<<USICS1) | (1<<USICLK) | (1<<USITC)
|
0000de e10b ldi TEMP_REG_A, (1<<USIWM0) | (1<<USICS1) | (1<<USICLK) | (1<<USITC)
|
||||||
|
|
||||||
_USI_TRANSMIT_LOOP: ; Execute loop when USIOIF is 0
|
_USI_TRANSMIT_LOOP: ; Execute loop when USIOIF is 0
|
||||||
0000c8 b90d out USICR, TEMP_REG_A ; Load settings from temp register into USI Control Register
|
0000df b90d out USICR, TEMP_REG_A ; Load settings from temp register into USI Control Register
|
||||||
0000c9 9b76 sbis USISR, USIOIF ; If transfer is comleted then move out of loop
|
0000e0 9b76 sbis USISR, USIOIF ; If transfer is comleted then move out of loop
|
||||||
0000ca cffd rjmp _USI_TRANSMIT_LOOP
|
0000e1 cffd rjmp _USI_TRANSMIT_LOOP
|
||||||
|
|
||||||
; Send pulse into LATCH pin.
|
; Send pulse into LATCH pin.
|
||||||
; This will copy byte from 74hc595 shift register into 74hc595 storage register
|
; This will copy byte from 74hc595 shift register into 74hc595 storage register
|
||||||
0000cb 9ac0 sbi PORTB, USI_LATCH_PIN
|
0000e2 9ac0 sbi PORTB, USI_LATCH_PIN
|
||||||
0000cc 98c0 cbi PORTB, USI_LATCH_PIN
|
0000e3 98c0 cbi PORTB, USI_LATCH_PIN
|
||||||
0000cd 910f pop r16
|
0000e4 910f pop r16
|
||||||
0000ce 9508 ret//</editor-fold>
|
0000e5 9508 ret//</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: опрос кнопок">
|
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: опрос кнопок">
|
||||||
SW_CHECK_PROCESS:
|
SW_CHECK_PROCESS:
|
||||||
0000cf d074 rcall DEBOUNCE_SW
|
0000e6 d072 rcall DEBOUNCE_SW
|
||||||
0000d0 9bb2 sbis SW_PIN, SW_PLUS_PIN
|
0000e7 9bb2 sbis SW_PIN, SW_PLUS_PIN
|
||||||
0000d1 9601 adiw DISP_NUM_L, 1
|
0000e8 9601 adiw DISP_NUM_L, 1
|
||||||
|
|
||||||
0000d2 9bb3 sbis SW_PIN, SW_MINUS_PIN
|
0000e9 9bb3 sbis SW_PIN, SW_MINUS_PIN
|
||||||
0000d3 9701 sbiw DISP_NUM_L, 1
|
0000ea 9701 sbiw DISP_NUM_L, 1
|
||||||
0000d4 9508 ret//</editor-fold>
|
0000eb 9508 ret//</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="Реализация интерфеса 1-Wire">
|
//<editor-fold defaultstate="collapsed" desc="Реализация интерфеса 1-Wire">
|
||||||
//<editor-fold defaultstate="collapsed" desc="1-Wire: оспрос присутствия">
|
//<editor-fold defaultstate="collapsed" desc="1-Wire: оспрос присутствия">
|
||||||
; **** ОПРОС ПРИСУТСТВИЯ УСТРОЙСТВА ******************************
|
; **** ОПРОС ПРИСУТСТВИЯ УСТРОЙСТВА ******************************
|
||||||
OW_PRESENCE:
|
OW_PRESENCE:
|
||||||
0000d5 9ab9 ow_pull
|
0000ec 9ab9 ow_pull
|
||||||
0000d6 e033
|
0000ed e033
|
||||||
0000d7 eb4e
|
0000ee eb4e
|
||||||
0000d8 dfcd DELAY16 480
|
0000ef dfb4 DELAY16 480
|
||||||
0000d9 98b9 ow_release
|
0000f0 98b9 ow_release
|
||||||
0000da e030
|
0000f1 e030
|
||||||
0000db e84a
|
0000f2 e84a
|
||||||
0000dc dfc9 DELAY16 70
|
0000f3 dfb0 DELAY16 70
|
||||||
0000dd d004 rcall OW_CHECK_PRESENCE
|
0000f4 d004 rcall OW_CHECK_PRESENCE
|
||||||
0000de e033
|
0000f5 e033
|
||||||
0000df e342
|
0000f6 e342
|
||||||
0000e0 dfc5 DELAY16 410
|
0000f7 dfac DELAY16 410
|
||||||
0000e1 9508 ret
|
0000f8 9508 ret
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="1-Wire: проверка наличия устройства">
|
//<editor-fold defaultstate="collapsed" desc="1-Wire: проверка наличия устройства">
|
||||||
@ -1216,79 +1213,99 @@ main.asm(244): Including file 'div16u.asm'
|
|||||||
; Если подчиненное устройство притянет шину, то устанавливаем флаг OWPRF в единицу в регистре флагов
|
; Если подчиненное устройство притянет шину, то устанавливаем флаг OWPRF в единицу в регистре флагов
|
||||||
;
|
;
|
||||||
OW_CHECK_PRESENCE:
|
OW_CHECK_PRESENCE:
|
||||||
0000e2 9bb1 sbis OW_PIN, OW_LINE
|
0000f9 9bb1 sbis OW_PIN, OW_LINE
|
||||||
0000e3 6071 sbr OWFR, (1<<OWPRF)
|
0000fa 6071 sbr OWFR, (1<<OWPRF)
|
||||||
0000e4 c002 rjmp _EXIT
|
0000fb c002 rjmp _EXIT
|
||||||
0000e5 99b1 sbic OW_PIN, OW_LINE
|
0000fc 99b1 sbic OW_PIN, OW_LINE
|
||||||
0000e6 7f7e cbr OWFR, (1<<OWPRF)
|
0000fd 7f7e cbr OWFR, (1<<OWPRF)
|
||||||
_EXIT:
|
_EXIT:
|
||||||
0000e7 9508 ret
|
0000fe 9508 ret
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="1-Wire: отправка байта">
|
//<editor-fold defaultstate="collapsed" desc="1-Wire: отправка байта">
|
||||||
OW_SEND_BYTE:
|
OW_SEND_BYTE:
|
||||||
0000e8 930f push r16
|
0000ff 930f push r16
|
||||||
0000e9 931f push r17
|
000100 931f push r17
|
||||||
0000ea 2d08 mov r16, OW_CMD_r
|
000101 2d08 mov r16, OW_CMD_r
|
||||||
0000eb e018 ldi r17, 8
|
000102 e018 ldi r17, 8
|
||||||
_OW_SEND_BYTE_LOOP:
|
_OW_SEND_BYTE_LOOP:
|
||||||
0000ec 9506 lsr r16
|
000103 9506 lsr r16
|
||||||
0000ed f408 brcc _OW_SEND_0
|
000104 f408 brcc _OW_SEND_0
|
||||||
0000ee f048 brcs _OW_SEND_1
|
000105 f048 brcs _OW_SEND_1
|
||||||
_OW_SEND_0:
|
_OW_SEND_0:
|
||||||
0000ef 9ab9 ow_pull
|
000106 9ab9 ow_pull
|
||||||
0000f0 e030
|
000107 e030
|
||||||
0000f1 e746
|
000108 e746
|
||||||
0000f2 dfb3 DELAY16 60
|
000109 df9a DELAY16 60
|
||||||
0000f3 98b9 ow_release
|
00010a 98b9 ow_release
|
||||||
0000f4 e030
|
00010b e030
|
||||||
0000f5 e142
|
00010c e142
|
||||||
0000f6 dfaf DELAY16 10
|
00010d df96 DELAY16 10
|
||||||
0000f7 c008 rjmp _OW_SEND_BYTE_END
|
00010e c008 rjmp _OW_SEND_BYTE_END
|
||||||
_OW_SEND_1:
|
_OW_SEND_1:
|
||||||
0000f8 9ab9 ow_pull
|
00010f 9ab9 ow_pull
|
||||||
0000f9 e030
|
000110 e030
|
||||||
0000fa e04a
|
000111 e04a
|
||||||
0000fb dfaa DELAY16 6
|
000112 df91 DELAY16 6
|
||||||
0000fc 98b9 ow_release
|
000113 98b9 ow_release
|
||||||
0000fd e030
|
000114 e030
|
||||||
0000fe e74e
|
000115 e74e
|
||||||
0000ff dfa6 DELAY16 64
|
000116 df8d DELAY16 64
|
||||||
_OW_SEND_BYTE_END:
|
_OW_SEND_BYTE_END:
|
||||||
000100 951a dec r17
|
000117 951a dec r17
|
||||||
000101 f751 brne _OW_SEND_BYTE_LOOP
|
000118 f751 brne _OW_SEND_BYTE_LOOP
|
||||||
000102 911f pop r17
|
000119 911f pop r17
|
||||||
000103 910f pop r16
|
00011a 910f pop r16
|
||||||
000104 9508 ret
|
00011b 9508 ret
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="1-Wire: чтение байта">
|
//<editor-fold defaultstate="collapsed" desc="1-Wire: чтение байта">
|
||||||
|
;OW_RD_BYTE:
|
||||||
|
; push r16
|
||||||
|
; push r17
|
||||||
|
; ldi r16, 8
|
||||||
|
;_OW_RD_BYTE_LP:
|
||||||
|
; ow_pull
|
||||||
|
; DELAY16 6
|
||||||
|
; ow_release
|
||||||
|
; DELAY16 9
|
||||||
|
; lds r17, TEMP_L
|
||||||
|
; lsr r17
|
||||||
|
; sbic OW_PIN, OW_LINE
|
||||||
|
; sbr r17, (1<<7)
|
||||||
|
; sts TEMP_L, r17
|
||||||
|
; DELAY16 55
|
||||||
|
; dec r16
|
||||||
|
; brne _OW_RD_BYTE_LP
|
||||||
|
; pop r17
|
||||||
|
; pop r16
|
||||||
|
; ret
|
||||||
OW_RD_BYTE:
|
OW_RD_BYTE:
|
||||||
000105 930f push r16
|
00011c 930f push r16
|
||||||
000106 931f push r17
|
00011d 931f push r17
|
||||||
000107 e008 ldi r16, 8
|
00011e 2700 clr r16
|
||||||
|
00011f e018 ldi r17, 8
|
||||||
_OW_RD_BYTE_LP:
|
_OW_RD_BYTE_LP:
|
||||||
000108 9ab9 ow_pull
|
000120 9506 lsr r16
|
||||||
000109 e030
|
000121 9ab9 ow_pull
|
||||||
00010a e04a
|
000122 e030
|
||||||
00010b df9a DELAY16 6
|
000123 e04a
|
||||||
00010c 98b9 ow_release
|
000124 df7f DELAY16 6
|
||||||
00010d e030
|
000125 98b9 ow_release
|
||||||
00010e e140
|
000126 e030
|
||||||
00010f df96 DELAY16 9
|
000127 e140
|
||||||
000110 9110 006a lds r17, OW_RECEIVE
|
000128 df7b DELAY16 9
|
||||||
000112 9516 lsr r17
|
000129 99b1 sbic OW_PIN, OW_LINE
|
||||||
000113 99b1 sbic OW_PIN, OW_LINE
|
00012a 6800 sbr r16, (1<<7)
|
||||||
000114 6810 sbr r17, (1<<7)
|
00012b e030
|
||||||
000115 9310 006a sts OW_RECEIVE, r17
|
00012c e64c
|
||||||
000117 e030
|
00012d df76 DELAY16 55
|
||||||
000118 e64c
|
00012e 951a dec r17
|
||||||
000119 df8c DELAY16 55
|
00012f f781 brne _OW_RD_BYTE_LP
|
||||||
00011a 950a dec r16
|
000130 930c st X, r16
|
||||||
00011b f761 brne _OW_RD_BYTE_LP
|
000131 911f pop r17
|
||||||
00011c 911f pop r17
|
000132 910f pop r16
|
||||||
00011d 910f pop r16
|
000133 9508 ret
|
||||||
00011e 9508 ret
|
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
@ -1300,122 +1317,122 @@ main.asm(244): Including file 'div16u.asm'
|
|||||||
; Описание: Перемещает цифры числа в соответствующие ячейки памяти в SRAM
|
; Описание: Перемещает цифры числа в соответствующие ячейки памяти в SRAM
|
||||||
; путем деления этого числа несколько раз
|
; путем деления этого числа несколько раз
|
||||||
DISPLAY_UPD_DIGITS:
|
DISPLAY_UPD_DIGITS:
|
||||||
00011f 94f8 cli
|
000134 94f8 cli
|
||||||
000120 935f push r21
|
000135 935f push r21
|
||||||
000121 e054 ldi r21, 4 ; (4 раза делим) т.к индикатор четырех разрядный
|
000136 e054 ldi r21, 4 ; (4 раза делим) т.к индикатор четырех разрядный
|
||||||
|
|
||||||
; инициализация указателя (за каждый проход цикла будет инкрементироваться)
|
; инициализация указателя (за каждый проход цикла будет инкрементироваться)
|
||||||
000122 e6a3 ldi XL, LOW(DIGITS)
|
000137 e6a3 ldi XL, LOW(DIGITS)
|
||||||
000123 e0b0 ldi XH, HIGH(DIGITS)
|
000138 e0b0 ldi XH, HIGH(DIGITS)
|
||||||
|
|
||||||
.equ dividend = SRAM_TEMP_1 ; число которе будем делить
|
.equ dividend = SRAM_TEMP_1 ; число которе будем делить
|
||||||
.equ divisor = 10 ; на что делим
|
.equ divisor = 10 ; на что делим
|
||||||
|
|
||||||
; загружаем число которое хотим поделить в адрес SRAM делимого
|
; загружаем число которое хотим поделить в адрес SRAM делимого
|
||||||
000124 9380 0061 sts dividend, DISP_NUM_L
|
000139 9380 0061 sts dividend, DISP_NUM_L
|
||||||
000126 9390 0062 sts dividend+1, DISP_NUM_H
|
00013b 9390 0062 sts dividend+1, DISP_NUM_H
|
||||||
|
|
||||||
; четыре раза производим деление для получения остатков
|
; четыре раза производим деление для получения остатков
|
||||||
DIV_LOOP:
|
DIV_LOOP:
|
||||||
; заполняем нужные регистры
|
; заполняем нужные регистры
|
||||||
000128 9100 0061 lds dd16uL, dividend
|
00013d 9100 0061 lds dd16uL, dividend
|
||||||
00012a 9110 0062 lds dd16uH, dividend+1
|
00013f 9110 0062 lds dd16uH, dividend+1
|
||||||
00012c e02a ldi dv16uL, LOW(divisor)
|
000141 e02a ldi dv16uL, LOW(divisor)
|
||||||
00012d e030 ldi dv16uH, HIGH(divisor)
|
000142 e030 ldi dv16uH, HIGH(divisor)
|
||||||
|
|
||||||
00012e df64 rcall div16u ; делим
|
000143 df4d rcall div16u ; делим
|
||||||
|
|
||||||
00012f 92ed st X+, drem16uL ; сохраняем остаток в ячейку по указателю и увеличиваем его
|
000144 92ed st X+, drem16uL ; сохраняем остаток в ячейку по указателю и увеличиваем его
|
||||||
|
|
||||||
; обновляем делимое
|
; обновляем делимое
|
||||||
000130 9300 0061 sts dividend, dres16uL
|
000145 9300 0061 sts dividend, dres16uL
|
||||||
000132 9310 0062 sts dividend+1, dres16uH
|
000147 9310 0062 sts dividend+1, dres16uH
|
||||||
|
|
||||||
000134 955a dec r21 ; декрементируем счетчик цикла
|
000149 955a dec r21 ; декрементируем счетчик цикла
|
||||||
000135 f791 brne DIV_LOOP ; делим еще раз если не 0
|
00014a f791 brne DIV_LOOP ; делим еще раз если не 0
|
||||||
000136 915f pop r21
|
00014b 915f pop r21
|
||||||
000137 9478 sei
|
00014c 9478 sei
|
||||||
000138 9508 ret
|
00014d 9508 ret
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: получение символа для индикатора">
|
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: получение символа для индикатора">
|
||||||
; **** ЗАГРУЖАЕТ НУЖНЫЙ АДРЕС СИМВОЛА В R0 ***********************
|
; **** ЗАГРУЖАЕТ НУЖНЫЙ АДРЕС СИМВОЛА В R0 ***********************
|
||||||
DISPLAY_DECODER:
|
DISPLAY_DECODER:
|
||||||
000139 930f push r16
|
00014e 930f push r16
|
||||||
00013a 931f push r17
|
00014f 931f push r17
|
||||||
00013b ece4 ldi ZL, LOW(2*DISPLAY_SYMBOLS)
|
000150 eeee ldi ZL, LOW(2*DISPLAY_SYMBOLS)
|
||||||
00013c e0f2 ldi ZH, HIGH(2*DISPLAY_SYMBOLS)
|
000151 e0f2 ldi ZH, HIGH(2*DISPLAY_SYMBOLS)
|
||||||
|
|
||||||
00013d 2711 clr TEMP_REG_B
|
000152 2711 clr TEMP_REG_B
|
||||||
00013e 0fe0 add ZL, TEMP_REG_A
|
000153 0fe0 add ZL, TEMP_REG_A
|
||||||
00013f 1ff1 adc ZH, TEMP_REG_B
|
000154 1ff1 adc ZH, TEMP_REG_B
|
||||||
|
|
||||||
000140 9004 lpm r0, Z
|
000155 9004 lpm r0, Z
|
||||||
000141 911f pop r17
|
000156 911f pop r17
|
||||||
000142 910f pop r16
|
000157 910f pop r16
|
||||||
000143 9508 ret//</editor-fold>
|
000158 9508 ret//</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: устранение дребезга кнопки">
|
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: устранение дребезга кнопки">
|
||||||
DEBOUNCE_SW:
|
DEBOUNCE_SW:
|
||||||
000144 930f push r16
|
000159 930f push r16
|
||||||
000145 931f push r17
|
00015a 931f push r17
|
||||||
000146 932f push r18
|
00015b 932f push r18
|
||||||
|
|
||||||
000147 e02a ldi r18, 10
|
00015c e02a ldi r18, 10
|
||||||
_loop_2:
|
_loop_2:
|
||||||
000148 ef1f ldi r17, 255
|
00015d ef1f ldi r17, 255
|
||||||
_loop_0:
|
_loop_0:
|
||||||
000149 ef0f ldi r16, 255
|
00015e ef0f ldi r16, 255
|
||||||
_dec_0:
|
_dec_0:
|
||||||
00014a 950a dec r16
|
00015f 950a dec r16
|
||||||
00014b f7f1 brne _dec_0
|
000160 f7f1 brne _dec_0
|
||||||
_loop_1:
|
_loop_1:
|
||||||
00014c 951a dec r17
|
000161 951a dec r17
|
||||||
00014d f7d9 brne _loop_0
|
000162 f7d9 brne _loop_0
|
||||||
_loop_3:
|
_loop_3:
|
||||||
00014e 952a dec r18
|
000163 952a dec r18
|
||||||
00014f f7c1 brne _loop_2
|
000164 f7c1 brne _loop_2
|
||||||
|
|
||||||
000150 912f pop r18
|
000165 912f pop r18
|
||||||
000151 911f pop r17
|
000166 911f pop r17
|
||||||
000152 910f pop r16
|
000167 910f pop r16
|
||||||
000153 9508 ret//</editor-fold>
|
000168 9508 ret//</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка">
|
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: задержка">
|
||||||
DELAY:
|
DELAY:
|
||||||
000154 930f push r16
|
000169 930f push r16
|
||||||
000155 931f push r17
|
00016a 931f push r17
|
||||||
|
|
||||||
000156 ef0f ldi r16, 255
|
00016b ef0f ldi r16, 255
|
||||||
_DELAY_1:
|
_DELAY_1:
|
||||||
000157 ef1f ldi r17, 255
|
00016c ef1f ldi r17, 255
|
||||||
_DELAY_2:
|
_DELAY_2:
|
||||||
000158 951a dec r17
|
00016d 951a dec r17
|
||||||
000159 0000 nop
|
00016e 0000 nop
|
||||||
00015a 0000 nop
|
00016f 0000 nop
|
||||||
00015b 0000 nop
|
000170 0000 nop
|
||||||
00015c f7d9 brne _DELAY_2
|
000171 f7d9 brne _DELAY_2
|
||||||
|
|
||||||
00015d 950a dec r16
|
000172 950a dec r16
|
||||||
00015e f7c1 brne _DELAY_1
|
000173 f7c1 brne _DELAY_1
|
||||||
|
|
||||||
00015f 911f pop r17
|
000174 911f pop r17
|
||||||
000160 910f pop r16
|
000175 910f pop r16
|
||||||
000161 9508 ret //</editor-fold>
|
000176 9508 ret //</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="Символы для индикатора">
|
//<editor-fold defaultstate="collapsed" desc="Символы для индикатора">
|
||||||
DISPLAY_SYMBOLS:
|
DISPLAY_SYMBOLS:
|
||||||
; HGFEDCBA HGFEDCBA
|
; HGFEDCBA HGFEDCBA
|
||||||
000162 f9c0 .DB 0b11000000, 0b11111001 ; 0, 1
|
000177 f9c0 .DB 0b11000000, 0b11111001 ; 0, 1
|
||||||
000163 b0a4 .DB 0b10100100, 0b10110000 ; 2, 3
|
000178 b0a4 .DB 0b10100100, 0b10110000 ; 2, 3
|
||||||
000164 9299 .DB 0b10011001, 0b10010010 ; 4, 5
|
000179 9299 .DB 0b10011001, 0b10010010 ; 4, 5
|
||||||
000165 f882 .DB 0b10000010, 0b11111000 ; 6, 7
|
00017a f882 .DB 0b10000010, 0b11111000 ; 6, 7
|
||||||
000166 9080 .DB 0b10000000, 0b10010000 ; 8, 9
|
00017b 9080 .DB 0b10000000, 0b10010000 ; 8, 9
|
||||||
000167 bf9c .DB 0b10011100, 0b10111111 ; °, -//</editor-fold>
|
00017c bf9c .DB 0b10011100, 0b10111111 ; °, -//</editor-fold>
|
||||||
|
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
@ -1441,10 +1458,10 @@ counted separately from r26..r31 here.
|
|||||||
.dseg memory usage only counts static data declared with .byte
|
.dseg memory usage only counts static data declared with .byte
|
||||||
|
|
||||||
"ATtiny2313A" register use summary:
|
"ATtiny2313A" register use summary:
|
||||||
x : 1 y : 0 z : 1 r0 : 2 r1 : 2 r2 : 0 r3 : 0 r4 : 0
|
x : 2 y : 0 z : 1 r0 : 2 r1 : 2 r2 : 0 r3 : 0 r4 : 0
|
||||||
r5 : 0 r6 : 0 r7 : 0 r8 : 5 r9 : 0 r10: 0 r11: 0 r12: 0
|
r5 : 0 r6 : 0 r7 : 0 r8 : 5 r9 : 0 r10: 0 r11: 0 r12: 0
|
||||||
r13: 0 r14: 5 r15: 5 r16: 72 r17: 32 r18: 7 r19: 14 r20: 25
|
r13: 0 r14: 5 r15: 5 r16: 75 r17: 40 r18: 15 r19: 14 r20: 25
|
||||||
r21: 8 r22: 0 r23: 4 r24: 6 r25: 4 r26: 1 r27: 1 r28: 0
|
r21: 8 r22: 0 r23: 4 r24: 6 r25: 4 r26: 3 r27: 3 r28: 0
|
||||||
r29: 0 r30: 2 r31: 2
|
r29: 0 r30: 2 r31: 2
|
||||||
Registers used: 20 out of 35 (57.1%)
|
Registers used: 20 out of 35 (57.1%)
|
||||||
|
|
||||||
@ -1455,25 +1472,25 @@ brcc : 3 brcs : 1 break : 0 breq : 0 brge : 1 brhc : 0
|
|||||||
brhs : 0 brid : 0 brie : 0 brlo : 0 brlt : 0 brmi : 0
|
brhs : 0 brid : 0 brie : 0 brlo : 0 brlt : 0 brmi : 0
|
||||||
brne : 16 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
|
brne : 16 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
|
||||||
brvs : 0 bset : 0 bst : 0 cbi : 18 cbr : 1 clc : 1
|
brvs : 0 bset : 0 bst : 0 cbi : 18 cbr : 1 clc : 1
|
||||||
clh : 0 cli : 3 cln : 0 clr : 5 cls : 0 clt : 0
|
clh : 0 cli : 3 cln : 0 clr : 6 cls : 0 clt : 0
|
||||||
clv : 0 clz : 0 com : 0 cp : 0 cpc : 0 cpi : 8
|
clv : 0 clz : 0 com : 0 cp : 0 cpc : 0 cpi : 8
|
||||||
cpse : 0 dec : 9 eor : 0 icall : 0 ijmp : 0 in : 1
|
cpse : 0 dec : 9 eor : 0 icall : 0 ijmp : 0 in : 1
|
||||||
inc : 1 ld : 0 ldd : 0 ldi : 55 lds : 11 lpm : 2
|
inc : 1 ld : 0 ldd : 0 ldi : 58 lds : 13 lpm : 2
|
||||||
lsl : 0 lsr : 2 mov : 7 movw : 0 neg : 0 nop : 4
|
lsl : 0 lsr : 6 mov : 8 movw : 0 neg : 0 nop : 4
|
||||||
or : 0 ori : 0 out : 12 pop : 18 push : 18 rcall : 43
|
or : 0 ori : 0 out : 12 pop : 20 push : 20 rcall : 38
|
||||||
ret : 14 reti : 1 rjmp : 9 rol : 4 ror : 0 sbc : 1
|
ret : 14 reti : 1 rjmp : 9 rol : 4 ror : 4 sbc : 1
|
||||||
sbci : 1 sbi : 10 sbic : 2 sbis : 4 sbiw : 1 sbr : 2
|
sbci : 1 sbi : 10 sbic : 2 sbis : 4 sbiw : 1 sbr : 2
|
||||||
sbrc : 1 sbrs : 1 sec : 1 seh : 0 sei : 3 sen : 0
|
sbrc : 1 sbrs : 1 sec : 1 seh : 0 sei : 3 sen : 0
|
||||||
ser : 0 ses : 0 set : 0 sev : 0 sez : 0 sleep : 0
|
ser : 0 ses : 0 set : 0 sev : 0 sez : 0 sleep : 0
|
||||||
spm : 0 st : 1 std : 0 sts : 14 sub : 2 subi : 1
|
spm : 0 st : 2 std : 0 sts : 16 sub : 2 subi : 1
|
||||||
swap : 0 tst : 0 wdr : 0
|
swap : 0 tst : 0 wdr : 0
|
||||||
Instructions used: 45 out of 105 (42.9%)
|
Instructions used: 46 out of 105 (43.8%)
|
||||||
|
|
||||||
"ATtiny2313A" memory use summary [bytes]:
|
"ATtiny2313A" memory use summary [bytes]:
|
||||||
Segment Begin End Code Data Used Size Use%
|
Segment Begin End Code Data Used Size Use%
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
[.cseg] 0x000000 0x0002d0 684 12 696 2048 34.0%
|
[.cseg] 0x000000 0x0002fa 726 12 738 2048 36.0%
|
||||||
[.dseg] 0x000060 0x00006b 0 11 11 128 8.6%
|
[.dseg] 0x000060 0x00006c 0 12 12 128 9.4%
|
||||||
[.eseg] 0x000000 0x000000 0 0 0 128 0.0%
|
[.eseg] 0x000000 0x000000 0 0 0 128 0.0%
|
||||||
|
|
||||||
Assembly complete, 0 errors, 6 warnings
|
Assembly complete, 0 errors, 6 warnings
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
AVRASM ver. 2.2.7 main.asm Mon Jun 19 15:34:12 2023
|
AVRASM ver. 2.2.7 main.asm Mon Jun 19 19:48:15 2023
|
||||||
|
|
||||||
|
|
||||||
EQU SIGNATURE_000 0000001e
|
EQU SIGNATURE_000 0000001e
|
||||||
@ -527,27 +527,28 @@ DSEG DIGITS 00000063
|
|||||||
DSEG CURRENT_DIGIT 00000067
|
DSEG CURRENT_DIGIT 00000067
|
||||||
DSEG SW_FLAGS 00000068
|
DSEG SW_FLAGS 00000068
|
||||||
DSEG HYSTERESIS 00000069
|
DSEG HYSTERESIS 00000069
|
||||||
DSEG OW_RECEIVE 0000006a
|
DSEG TEMP_L 0000006a
|
||||||
|
DSEG TEMP_H 0000006b
|
||||||
CSEG RESET_vect 0000004a
|
CSEG RESET_vect 0000004a
|
||||||
CSEG TIMER0_COMPA_vect 0000000e
|
CSEG TIMER0_COMPA_vect 0000000e
|
||||||
CSEG _CLR_CURRENT_DIGIT 00000017
|
CSEG _CLR_CURRENT_DIGIT 00000017
|
||||||
CSEG _indicate_1 0000001a
|
CSEG _indicate_1 0000001a
|
||||||
CSEG _indicate_2 00000024
|
CSEG _indicate_2 00000024
|
||||||
CSEG DISPLAY_DECODER 00000139
|
CSEG DISPLAY_DECODER 0000014e
|
||||||
CSEG USI_TRANSMIT 000000c3
|
CSEG USI_TRANSMIT 000000da
|
||||||
CSEG _indicate_3 0000002e
|
CSEG _indicate_3 0000002e
|
||||||
CSEG _indicate_4 00000038
|
CSEG _indicate_4 00000038
|
||||||
CSEG _indicate_exit 00000042
|
CSEG _indicate_exit 00000042
|
||||||
CSEG MCU_INIT 0000004c
|
CSEG MCU_INIT 0000004c
|
||||||
CSEG TEMP_CONV 000000b7
|
CSEG LOOP 0000006b
|
||||||
CSEG DEBOUNCE_SW 00000144
|
CSEG _STATE_DEFAULT 0000006d
|
||||||
CSEG TEMP_RD 000000aa
|
CSEG _STATE_PROGRAM 00000080
|
||||||
CSEG LOOP 0000006f
|
CSEG DISPLAY_UPD_DIGITS 00000134
|
||||||
CSEG _STATE_DEFAULT 00000071
|
CSEG TEMP_CONV 000000ce
|
||||||
CSEG _STATE_PROGRAM 00000082
|
CSEG DEBOUNCE_SW 00000159
|
||||||
CSEG DISPLAY_UPD_DIGITS 0000011f
|
CSEG TEMP_RD 000000a8
|
||||||
CSEG _STATE_ERROR 00000086
|
CSEG _STATE_ERROR 00000084
|
||||||
CSEG SW_CHECK_PROCESS 000000cf
|
CSEG SW_CHECK_PROCESS 000000e6
|
||||||
DEF drem16uL r14
|
DEF drem16uL r14
|
||||||
DEF drem16uH r15
|
DEF drem16uH r15
|
||||||
DEF dres16uL r16
|
DEF dres16uL r16
|
||||||
@ -557,31 +558,31 @@ DEF dd16uH r17
|
|||||||
DEF dv16uL r18
|
DEF dv16uL r18
|
||||||
DEF dv16uH r19
|
DEF dv16uH r19
|
||||||
DEF dcnt16u r20
|
DEF dcnt16u r20
|
||||||
CSEG div16u 00000093
|
CSEG div16u 00000091
|
||||||
CSEG d16u_1 00000096
|
CSEG d16u_1 00000094
|
||||||
CSEG d16u_2 0000009b
|
CSEG d16u_2 00000099
|
||||||
CSEG d16u_3 000000a4
|
CSEG d16u_3 000000a2
|
||||||
CSEG DELAY_LOOP_16 000000a6
|
CSEG DELAY_LOOP_16 000000a4
|
||||||
CSEG OW_PRESENCE 000000d5
|
CSEG OW_PRESENCE 000000ec
|
||||||
CSEG OW_SEND_BYTE 000000e8
|
CSEG OW_SEND_BYTE 000000ff
|
||||||
CSEG OW_RD_BYTE 00000105
|
CSEG OW_RD_BYTE 0000011c
|
||||||
CSEG _USI_TRANSMIT_LOOP 000000c8
|
CSEG _USI_TRANSMIT_LOOP 000000df
|
||||||
CSEG OW_CHECK_PRESENCE 000000e2
|
CSEG OW_CHECK_PRESENCE 000000f9
|
||||||
CSEG _EXIT 000000e7
|
CSEG _EXIT 000000fe
|
||||||
CSEG _OW_SEND_BYTE_LOOP 000000ec
|
CSEG _OW_SEND_BYTE_LOOP 00000103
|
||||||
CSEG _OW_SEND_0 000000ef
|
CSEG _OW_SEND_0 00000106
|
||||||
CSEG _OW_SEND_1 000000f8
|
CSEG _OW_SEND_1 0000010f
|
||||||
CSEG _OW_SEND_BYTE_END 00000100
|
CSEG _OW_SEND_BYTE_END 00000117
|
||||||
CSEG _OW_RD_BYTE_LP 00000108
|
CSEG _OW_RD_BYTE_LP 00000120
|
||||||
EQU dividend 00000061
|
EQU dividend 00000061
|
||||||
EQU divisor 0000000a
|
EQU divisor 0000000a
|
||||||
CSEG DIV_LOOP 00000128
|
CSEG DIV_LOOP 0000013d
|
||||||
CSEG DISPLAY_SYMBOLS 00000162
|
CSEG DISPLAY_SYMBOLS 00000177
|
||||||
CSEG _loop_2 00000148
|
CSEG _loop_2 0000015d
|
||||||
CSEG _loop_0 00000149
|
CSEG _loop_0 0000015e
|
||||||
CSEG _dec_0 0000014a
|
CSEG _dec_0 0000015f
|
||||||
CSEG _loop_1 0000014c
|
CSEG _loop_1 00000161
|
||||||
CSEG _loop_3 0000014e
|
CSEG _loop_3 00000163
|
||||||
CSEG DELAY 00000154
|
CSEG DELAY 00000169
|
||||||
CSEG _DELAY_1 00000157
|
CSEG _DELAY_1 0000016c
|
||||||
CSEG _DELAY_2 00000158
|
CSEG _DELAY_2 0000016d
|
||||||
|
|||||||
Binary file not shown.
@ -30,52 +30,53 @@
|
|||||||
<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>
|
<HYSTERESIS><FILE>main.asm</FILE><LINE>29</LINE></HYSTERESIS>
|
||||||
<OW_RECEIVE><FILE>main.asm</FILE><LINE>30</LINE></OW_RECEIVE>
|
<TEMP_L><FILE>main.asm</FILE><LINE>30</LINE></TEMP_L>
|
||||||
<RESET_vect><FILE>main.asm</FILE><LINE>124</LINE></RESET_vect>
|
<TEMP_H><FILE>main.asm</FILE><LINE>31</LINE></TEMP_H>
|
||||||
<TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>49</LINE></TIMER0_COMPA_vect>
|
<RESET_vect><FILE>main.asm</FILE><LINE>125</LINE></RESET_vect>
|
||||||
<_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>60</LINE></_CLR_CURRENT_DIGIT>
|
<TIMER0_COMPA_vect><FILE>main.asm</FILE><LINE>50</LINE></TIMER0_COMPA_vect>
|
||||||
<_indicate_1><FILE>main.asm</FILE><LINE>64</LINE></_indicate_1>
|
<_CLR_CURRENT_DIGIT><FILE>main.asm</FILE><LINE>61</LINE></_CLR_CURRENT_DIGIT>
|
||||||
<_indicate_2><FILE>main.asm</FILE><LINE>76</LINE></_indicate_2>
|
<_indicate_1><FILE>main.asm</FILE><LINE>65</LINE></_indicate_1>
|
||||||
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>464</LINE></DISPLAY_DECODER>
|
<_indicate_2><FILE>main.asm</FILE><LINE>77</LINE></_indicate_2>
|
||||||
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>293</LINE></USI_TRANSMIT>
|
<DISPLAY_DECODER><FILE>main.asm</FILE><LINE>481</LINE></DISPLAY_DECODER>
|
||||||
<_indicate_3><FILE>main.asm</FILE><LINE>88</LINE></_indicate_3>
|
<USI_TRANSMIT><FILE>main.asm</FILE><LINE>290</LINE></USI_TRANSMIT>
|
||||||
<_indicate_4><FILE>main.asm</FILE><LINE>100</LINE></_indicate_4>
|
<_indicate_3><FILE>main.asm</FILE><LINE>89</LINE></_indicate_3>
|
||||||
<_indicate_exit><FILE>main.asm</FILE><LINE>112</LINE></_indicate_exit>
|
<_indicate_4><FILE>main.asm</FILE><LINE>101</LINE></_indicate_4>
|
||||||
<MCU_INIT><FILE>main.asm</FILE><LINE>130</LINE></MCU_INIT>
|
<_indicate_exit><FILE>main.asm</FILE><LINE>113</LINE></_indicate_exit>
|
||||||
<TEMP_CONV><FILE>main.asm</FILE><LINE>272</LINE></TEMP_CONV>
|
<MCU_INIT><FILE>main.asm</FILE><LINE>131</LINE></MCU_INIT>
|
||||||
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>481</LINE></DEBOUNCE_SW>
|
<LOOP><FILE>main.asm</FILE><LINE>171</LINE></LOOP>
|
||||||
<TEMP_RD><FILE>main.asm</FILE><LINE>253</LINE></TEMP_RD>
|
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>175</LINE></_STATE_DEFAULT>
|
||||||
<LOOP><FILE>main.asm</FILE><LINE>201</LINE></LOOP>
|
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>195</LINE></_STATE_PROGRAM>
|
||||||
<_STATE_DEFAULT><FILE>main.asm</FILE><LINE>205</LINE></_STATE_DEFAULT>
|
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>439</LINE></DISPLAY_UPD_DIGITS>
|
||||||
<_STATE_PROGRAM><FILE>main.asm</FILE><LINE>224</LINE></_STATE_PROGRAM>
|
<TEMP_CONV><FILE>main.asm</FILE><LINE>269</LINE></TEMP_CONV>
|
||||||
<DISPLAY_UPD_DIGITS><FILE>main.asm</FILE><LINE>422</LINE></DISPLAY_UPD_DIGITS>
|
<DEBOUNCE_SW><FILE>main.asm</FILE><LINE>498</LINE></DEBOUNCE_SW>
|
||||||
<_STATE_ERROR><FILE>main.asm</FILE><LINE>229</LINE></_STATE_ERROR>
|
<TEMP_RD><FILE>main.asm</FILE><LINE>224</LINE></TEMP_RD>
|
||||||
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>325</LINE></SW_CHECK_PROCESS>
|
<_STATE_ERROR><FILE>main.asm</FILE><LINE>200</LINE></_STATE_ERROR>
|
||||||
|
<SW_CHECK_PROCESS><FILE>main.asm</FILE><LINE>322</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>
|
||||||
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>246</LINE></DELAY_LOOP_16>
|
<DELAY_LOOP_16><FILE>main.asm</FILE><LINE>217</LINE></DELAY_LOOP_16>
|
||||||
<OW_PRESENCE><FILE>main.asm</FILE><LINE>338</LINE></OW_PRESENCE>
|
<OW_PRESENCE><FILE>main.asm</FILE><LINE>335</LINE></OW_PRESENCE>
|
||||||
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>363</LINE></OW_SEND_BYTE>
|
<OW_SEND_BYTE><FILE>main.asm</FILE><LINE>360</LINE></OW_SEND_BYTE>
|
||||||
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>392</LINE></OW_RD_BYTE>
|
<OW_RD_BYTE><FILE>main.asm</FILE><LINE>409</LINE></OW_RD_BYTE>
|
||||||
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>311</LINE></_USI_TRANSMIT_LOOP>
|
<_USI_TRANSMIT_LOOP><FILE>main.asm</FILE><LINE>308</LINE></_USI_TRANSMIT_LOOP>
|
||||||
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>352</LINE></OW_CHECK_PRESENCE>
|
<OW_CHECK_PRESENCE><FILE>main.asm</FILE><LINE>349</LINE></OW_CHECK_PRESENCE>
|
||||||
<_EXIT><FILE>main.asm</FILE><LINE>358</LINE></_EXIT>
|
<_EXIT><FILE>main.asm</FILE><LINE>355</LINE></_EXIT>
|
||||||
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>368</LINE></_OW_SEND_BYTE_LOOP>
|
<_OW_SEND_BYTE_LOOP><FILE>main.asm</FILE><LINE>365</LINE></_OW_SEND_BYTE_LOOP>
|
||||||
<_OW_SEND_0><FILE>main.asm</FILE><LINE>372</LINE></_OW_SEND_0>
|
<_OW_SEND_0><FILE>main.asm</FILE><LINE>369</LINE></_OW_SEND_0>
|
||||||
<_OW_SEND_1><FILE>main.asm</FILE><LINE>378</LINE></_OW_SEND_1>
|
<_OW_SEND_1><FILE>main.asm</FILE><LINE>375</LINE></_OW_SEND_1>
|
||||||
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>383</LINE></_OW_SEND_BYTE_END>
|
<_OW_SEND_BYTE_END><FILE>main.asm</FILE><LINE>380</LINE></_OW_SEND_BYTE_END>
|
||||||
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>396</LINE></_OW_RD_BYTE_LP>
|
<_OW_RD_BYTE_LP><FILE>main.asm</FILE><LINE>414</LINE></_OW_RD_BYTE_LP>
|
||||||
<DIV_LOOP><FILE>main.asm</FILE><LINE>439</LINE></DIV_LOOP>
|
<DIV_LOOP><FILE>main.asm</FILE><LINE>456</LINE></DIV_LOOP>
|
||||||
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>531</LINE></DISPLAY_SYMBOLS>
|
<DISPLAY_SYMBOLS><FILE>main.asm</FILE><LINE>548</LINE></DISPLAY_SYMBOLS>
|
||||||
<_loop_2><FILE>main.asm</FILE><LINE>487</LINE></_loop_2>
|
<_loop_2><FILE>main.asm</FILE><LINE>504</LINE></_loop_2>
|
||||||
<_loop_0><FILE>main.asm</FILE><LINE>489</LINE></_loop_0>
|
<_loop_0><FILE>main.asm</FILE><LINE>506</LINE></_loop_0>
|
||||||
<_dec_0><FILE>main.asm</FILE><LINE>491</LINE></_dec_0>
|
<_dec_0><FILE>main.asm</FILE><LINE>508</LINE></_dec_0>
|
||||||
<_loop_1><FILE>main.asm</FILE><LINE>494</LINE></_loop_1>
|
<_loop_1><FILE>main.asm</FILE><LINE>511</LINE></_loop_1>
|
||||||
<_loop_3><FILE>main.asm</FILE><LINE>497</LINE></_loop_3>
|
<_loop_3><FILE>main.asm</FILE><LINE>514</LINE></_loop_3>
|
||||||
<DELAY><FILE>main.asm</FILE><LINE>508</LINE></DELAY>
|
<DELAY><FILE>main.asm</FILE><LINE>525</LINE></DELAY>
|
||||||
<_DELAY_1><FILE>main.asm</FILE><LINE>513</LINE></_DELAY_1>
|
<_DELAY_1><FILE>main.asm</FILE><LINE>530</LINE></_DELAY_1>
|
||||||
<_DELAY_2><FILE>main.asm</FILE><LINE>515</LINE></_DELAY_2>
|
<_DELAY_2><FILE>main.asm</FILE><LINE>532</LINE></_DELAY_2>
|
||||||
</LABELS>
|
</LABELS>
|
||||||
</ASSEMBLER_INFO>
|
</ASSEMBLER_INFO>
|
||||||
|
|||||||
85
main.asm
85
main.asm
@ -27,7 +27,8 @@ DIGITS: .BYTE 4 ; Ячейки, где хранят
|
|||||||
CURRENT_DIGIT: .BYTE 1 ; Номер разряда индикатора, который сейчас горит
|
CURRENT_DIGIT: .BYTE 1 ; Номер разряда индикатора, который сейчас горит
|
||||||
SW_FLAGS: .BYTE 1 ; Состояние кнопок
|
SW_FLAGS: .BYTE 1 ; Состояние кнопок
|
||||||
HYSTERESIS: .BYTE 1 ; Отклонение температуры от уставки
|
HYSTERESIS: .BYTE 1 ; Отклонение температуры от уставки
|
||||||
OW_RECEIVE: .BYTE 1
|
TEMP_L: .BYTE 1
|
||||||
|
TEMP_H: .BYTE 1
|
||||||
;//</editor-fold>
|
;//</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
@ -152,43 +153,12 @@ MCU_INIT:
|
|||||||
sts MCU_STATE, r16 ; переводим МК сразу в режим измерения температуры
|
sts MCU_STATE, r16 ; переводим МК сразу в режим измерения температуры
|
||||||
|
|
||||||
clr r16
|
clr r16
|
||||||
sts OW_RECEIVE, r16
|
sts TEMP_L, r16
|
||||||
|
sts TEMP_H, r16
|
||||||
|
|
||||||
display_load 0 ; загружаем число, которое нужно показать на индикатор
|
display_load 0 ; загружаем число, которое нужно показать на индикатор
|
||||||
|
|
||||||
; ldi r16, 0b10000000
|
lds r16, TEMP_L
|
||||||
; lsr r16
|
|
||||||
; sbr r16, (1<<7)
|
|
||||||
|
|
||||||
; sbrc OWFR, OWPRF
|
|
||||||
|
|
||||||
; ldi r16, DS18B20_CMD_SKIPROM
|
|
||||||
; mov r8, r16
|
|
||||||
; rcall OW_PRESENCE
|
|
||||||
; rcall OW_SEND_BYTE
|
|
||||||
;
|
|
||||||
; ldi r16, DS18B20_CMD_RSCRATCHPAD
|
|
||||||
; mov r8, r16
|
|
||||||
;;; rcall OW_PRESENCE
|
|
||||||
; rcall OW_SEND_BYTE
|
|
||||||
;
|
|
||||||
; rcall OW_RD_BYTE
|
|
||||||
;; rcall OW_RD_BYTE
|
|
||||||
; rcall TEMP_CONV
|
|
||||||
; rcall OW_PRESENCE
|
|
||||||
|
|
||||||
rcall TEMP_CONV
|
|
||||||
|
|
||||||
rcall DEBOUNCE_SW
|
|
||||||
rcall DEBOUNCE_SW
|
|
||||||
rcall DEBOUNCE_SW
|
|
||||||
rcall DEBOUNCE_SW
|
|
||||||
|
|
||||||
rcall TEMP_RD
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lds r16, OW_RECEIVE
|
|
||||||
mov DISP_NUM_L, r16
|
mov DISP_NUM_L, r16
|
||||||
ldi DISP_NUM_H, 0
|
ldi DISP_NUM_H, 0
|
||||||
|
|
||||||
@ -206,20 +176,21 @@ _STATE_DEFAULT:
|
|||||||
cpi r16, MCU_STATE_DEFAULT
|
cpi r16, MCU_STATE_DEFAULT
|
||||||
brne _STATE_PROGRAM
|
brne _STATE_PROGRAM
|
||||||
rcall DISPLAY_UPD_DIGITS
|
rcall DISPLAY_UPD_DIGITS
|
||||||
; rcall TEMP_RD
|
|
||||||
sbrc OWFR, OWPRF
|
sbrc OWFR, OWPRF
|
||||||
sbi PORTD, PD6
|
sbi PORTD, PD6
|
||||||
sbrs OWFR, OWPRF
|
sbrs OWFR, OWPRF
|
||||||
cbi PORTD, PD6
|
cbi PORTD, PD6
|
||||||
|
|
||||||
rcall TEMP_CONV
|
rcall TEMP_CONV
|
||||||
rcall DEBOUNCE_SW
|
rcall DEBOUNCE_SW
|
||||||
rcall DEBOUNCE_SW
|
rcall DEBOUNCE_SW
|
||||||
rcall DEBOUNCE_SW
|
rcall DEBOUNCE_SW
|
||||||
rcall DEBOUNCE_SW
|
rcall DEBOUNCE_SW
|
||||||
rcall TEMP_RD
|
rcall TEMP_RD
|
||||||
lds r17, OW_RECEIVE
|
lds r17, TEMP_L
|
||||||
mov DISP_NUM_L, r17
|
mov DISP_NUM_L, r17
|
||||||
ldi DISP_NUM_H, 0
|
lds r17, TEMP_H
|
||||||
|
mov DISP_NUM_H, r17
|
||||||
|
|
||||||
_STATE_PROGRAM:
|
_STATE_PROGRAM:
|
||||||
cpi r16, MCU_STATE_PROGRAM
|
cpi r16, MCU_STATE_PROGRAM
|
||||||
@ -252,6 +223,8 @@ DELAY_LOOP_16:
|
|||||||
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: чтение и опрос температуры">
|
//<editor-fold defaultstate="collapsed" desc="Подпрограмма: чтение и опрос температуры">
|
||||||
TEMP_RD:
|
TEMP_RD:
|
||||||
push r16
|
push r16
|
||||||
|
push r17
|
||||||
|
push r18
|
||||||
cli
|
cli
|
||||||
|
|
||||||
rcall OW_PRESENCE
|
rcall OW_PRESENCE
|
||||||
@ -263,9 +236,33 @@ TEMP_RD:
|
|||||||
mov OW_CMD_r, r16
|
mov OW_CMD_r, r16
|
||||||
rcall OW_SEND_BYTE
|
rcall OW_SEND_BYTE
|
||||||
|
|
||||||
|
ldi XL, LOW(TEMP_L)
|
||||||
|
ldi XH, HIGH(TEMP_L)
|
||||||
rcall OW_RD_BYTE
|
rcall OW_RD_BYTE
|
||||||
|
|
||||||
|
ldi XL, LOW(TEMP_H)
|
||||||
|
ldi XH, HIGH(TEMP_H)
|
||||||
|
rcall OW_RD_BYTE
|
||||||
|
|
||||||
|
lds r17, TEMP_L
|
||||||
|
lds r18, TEMP_H
|
||||||
|
|
||||||
|
lsr r18
|
||||||
|
ror r17
|
||||||
|
lsr r18
|
||||||
|
ror r17
|
||||||
|
lsr r18
|
||||||
|
ror r17
|
||||||
|
lsr r18
|
||||||
|
ror r17
|
||||||
|
|
||||||
|
sts TEMP_L, r17
|
||||||
|
sts TEMP_H, r18
|
||||||
|
|
||||||
|
|
||||||
sei
|
sei
|
||||||
|
pop r18
|
||||||
|
pop r17
|
||||||
pop r16
|
pop r16
|
||||||
ret
|
ret
|
||||||
;
|
;
|
||||||
@ -392,20 +389,20 @@ _OW_SEND_BYTE_END:
|
|||||||
OW_RD_BYTE:
|
OW_RD_BYTE:
|
||||||
push r16
|
push r16
|
||||||
push r17
|
push r17
|
||||||
ldi r16, 8
|
clr r16
|
||||||
|
ldi r17, 8
|
||||||
_OW_RD_BYTE_LP:
|
_OW_RD_BYTE_LP:
|
||||||
|
lsr r16
|
||||||
ow_pull
|
ow_pull
|
||||||
DELAY16 6
|
DELAY16 6
|
||||||
ow_release
|
ow_release
|
||||||
DELAY16 9
|
DELAY16 9
|
||||||
lds r17, OW_RECEIVE
|
|
||||||
lsr r17
|
|
||||||
sbic OW_PIN, OW_LINE
|
sbic OW_PIN, OW_LINE
|
||||||
sbr r17, (1<<7)
|
sbr r16, (1<<7)
|
||||||
sts OW_RECEIVE, r17
|
|
||||||
DELAY16 55
|
DELAY16 55
|
||||||
dec r16
|
dec r17
|
||||||
brne _OW_RD_BYTE_LP
|
brne _OW_RD_BYTE_LP
|
||||||
|
st X, r16
|
||||||
pop r17
|
pop r17
|
||||||
pop r16
|
pop r16
|
||||||
ret
|
ret
|
||||||
|
|||||||
73
main.hex
73
main.hex
@ -2,43 +2,46 @@
|
|||||||
:0200000049C0F5
|
:0200000049C0F5
|
||||||
:10001A0000C04F935F930F935FB7409167004530DD
|
:10001A0000C04F935F930F935FB7409167004530DD
|
||||||
:10002A000CF403C0442740936700403041F493988E
|
:10002A000CF403C0442740936700403041F493988E
|
||||||
:10003A0094989598929A00916600FED087D04130A4
|
:10003A0094989598929A0091660015D19FD0413074
|
||||||
:10004A0041F4929894989598939A00916500F4D007
|
:10004A0041F4929894989598939A009165000BD1EF
|
||||||
:10005A007DD0423041F4929893989598949A009161
|
:10005A0095D0423041F4929893989598949A009149
|
||||||
:10006A006400EAD073D0433041F4929893989498FC
|
:10006A00640001D18BD0433041F4929893989498CC
|
||||||
:10007A00959A00916300E0D069D043954093670058
|
:10007A00959A00916300F7D081D043954093670029
|
||||||
:10008A005FBF0F915F914F9118950FED0DBF0EE76E
|
:10008A005FBF0F915F914F9118950FED0DBF0EE76E
|
||||||
:10009A0001BB01EC07BB0CE108BB02E000BF05E0B5
|
:10009A0001BB01EC07BB0CE108BB02E000BF05E0B5
|
||||||
:1000AA0003BF09E106BF01E009BF112410926700EE
|
:1000AA0003BF09E106BF01E009BF112410926700EE
|
||||||
:1000BA0000E000936000002700936A0080E090E06F
|
:1000BA0000E000936000002700936A0080E090E06F
|
||||||
:1000CA00C6D056D00CEC802E66D004E4802E63D0C5
|
:1000CA0051D0DCD0DBD0DAD0D9D03FD000916A0051
|
||||||
:1000DA004FD00CEC802E5FD00EEB802E5CD00091BE
|
:1000DA00802F90E000916000003079F4AAD070FD82
|
||||||
:1000EA006A00802F90E000916000003039F48AD0D5
|
:1000EA00969A70FF96983ED0C9D0C8D0C7D0C6D0CD
|
||||||
:1000FA0070FD969A70FF9698AAD0A9D0013011F493
|
:1000FA002CD010916A00812F90E0013011F499D030
|
||||||
:10010A0081D030D0023079F71BE01093630010934E
|
:10010A0049D0023039F71BE0109363001093640062
|
||||||
:10011A00640010936500109366000000E4CFEE249B
|
:10011A0010936500109366000000DCCFEE24FF18F0
|
||||||
:10012A00FF1841E1001F111F4A9509F40895EE1CBA
|
:10012A0041E1001F111F4A9509F40895EE1CFF1CB6
|
||||||
:10013A00FF1CE21AF30A20F4E20EF31E8894F2CFAF
|
:10013A00E21AF30A20F4E20EF31E8894F2CF08942E
|
||||||
:10014A000894F0CF41503040E8F708950F930FB864
|
:10014A00F0CF41503040E8F708950F93F89428D043
|
||||||
:10015A0000E40EB90BE10DB9769BFDCFC09AC098A9
|
:10015A000CEC802E38D00EEB802E35D050D078940F
|
||||||
:10016A000F91089574D0B29B0196B39B019708959D
|
:10016A000F9108950F93F8941BD00CEC802E2BD08E
|
||||||
:10017A00B99A33E04EEBE6DFB99830E04AE8E2DFBD
|
:10017A0004E4802E28D078940F9108950F930FB835
|
||||||
:10018A0004D033E042E3DEDF0895B19B716002C020
|
:10018A0000E40EB90BE10DB9769BFDCFC09AC09879
|
||||||
:10019A00B1997E7F08950F931F93082D18E0069555
|
:10019A000F91089573D0B29B0196B39B019708956E
|
||||||
:1001AA0008F448F0B99A30E046E7CCDFB99830E075
|
:1001AA00B99A33E04EEBCDDFB99830E04AE8C9DFBF
|
||||||
:1001BA0042E1C8DF08C0B99A30E04AE0C3DFB99823
|
:1001BA0004D033E042E3C5DF0895B19B716002C009
|
||||||
:1001CA0030E04EE7BFDF1A9551F71F910F9108955E
|
:1001CA00B1997E7F08950F931F93082D017049F00E
|
||||||
:1001DA000F931F9308E0B99A30E04AE0B3DFB99869
|
:1001DA00B99A30E04AE0B5DFB99830E04EE7B1DFCE
|
||||||
:1001EA0030E040E1AFDF10916A001695B1991068CE
|
:1001EA0008C0B99A30E046E7ACDFB99830E042E19E
|
||||||
:1001FA0010936A0030E04CE6A5DF0A9561F71F917B
|
:1001FA00A8DF8694882049F71F910F9108950F93DD
|
||||||
:10020A000F910895F8945F9354E0A3E6B0E08093C9
|
:10020A001F9308E0B99A30E04AE09BDFB99830E0E2
|
||||||
:10021A0061009093620000916100109162002AE0EF
|
:10021A0040E197DF10916A001695B1991068109322
|
||||||
:10022A0030E07DDFED9200936100109362005A95F1
|
:10022A006A0030E04CE68DDF0A9561F71F910F9165
|
||||||
:10023A0091F75F91789408950F931F93E4E9F2E0A0
|
:10023A000895F8945F9354E0A3E6B0E080936100D8
|
||||||
:10024A001127E00FF11F04901F910F9108950F934A
|
:10024A009093620000916100109162002AE030E010
|
||||||
:10025A001F932F932AE01FEF0FEF0A95F1F71A95D4
|
:10025A0065DFED9200936100109362005A9591F761
|
||||||
:10026A00D9F72A95C1F72F911F910F9108950F93EE
|
:10026A005F91789408950F931F93E2ECF2E01127BF
|
||||||
:10027A001F930FEF1FEF1A95000000000000D9F737
|
:10027A00E00FF11F04901F910F9108950F931F93A0
|
||||||
:10028A000A95C1F71F910F910895C0F9A4B09992E8
|
:10028A002F932AE01FEF0FEF0A95F1F71A95D9F786
|
||||||
:06029A0082F880909CBF79
|
:10029A002A95C1F72F911F910F9108950F931F93DC
|
||||||
|
:1002AA000FEF1FEF1A95000000000000D9F70A951A
|
||||||
|
:1002BA00C1F71F910F910895C0F9A4B0999282F8DD
|
||||||
|
:0402CA0080909CBFC5
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user