;---------------------------------------------------- ; Program : telemetry_rev1-1 ; Compiler : AVRA ; Chip type : ATmega328P ; System Clock : 16 MHz ; Date : 18.01.2017 ;-------------------------------------------------------------------------------------------------------------- ;Подключение библиотек и резервация места под данные .include "m328Pdef.inc " .dseg adc_data: .byte8 Trm:; Ячейки ОЗУ под показания датчиков DS18B20 .byte14 bmp_temp:; Ячейки ОЗУ под показания темп. датчика BMP180 .byte2 bmp_pres:; Ячейки ОЗУ под показания давления датчика BMP180 .byte2 bh_lux: .byte2 .cseg .include "iterrupts.asm"; Библиотека векторов прерываний .include "macr.asm"; Библиотека макросов .include "twi_lib.asm"; Библиотека работы шины TWI .include "hextobcd.asm"; Библиотека перевода чисел в неупакованный 2-10 код .include "1wire.asm"; Библиотека 1-wire устройств ;-------------------------------------------------------------------------------------------------------------- RESET: ;Начальная_инициализация ;-------------------------------------------------------------------------------------------------------------- ldi R16, Low(RAMEND); Инициализация стека out SPL, R16 ldi R16, High(RAMEND) out SPH, R16 .def try = r21 .def temp = r16 .def razr1 = r17 .def razr2 = r18 .def razr3 = r19 .equ W1_DDR = DDRB ; Присваиваем псевдоним регистрам порта датчиков DS18B20 .equ W1_PORT = PORTB .equ W1_PIN = PINB .equ W1_BIT = 0 ; Бит порта на котором датчики (8 цифровой контакт на плате Ардуино) .equ FREQ = 16000000 ; Частота процессора .equ baudrate = 38400; Рассчитываем делитель бодрейта для UART .equ bauddivider = FREQ/(16*baudrate)-1 .equ FreqSCL = 200000; Рассчитываем частоту работы шины TWI .equ FreqTWBR = ((FREQ/FreqSCL)-16)/2 ldi R16, low(bauddivider); Инициализация UART sts UBRR0L,R16 ldi R16, high(bauddivider) sts UBRR0H,R16 ldi R16,0 sts UCSR0A, R16 sts UCSR0B, R16 sts UCSR0C, R16 LDI R16, (1<