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