Точное значение зависит от того какая инструкция и какие обстоятельства сложились при её выполнении.
Раздел Instruction Set Summary даташита на любую AVR.
Параметр VOL:CB1 писал(а):в каких пределах колеблется напряжение низкого уровня(логический 0) в микроконтро ллерах Atmega8
Тупо стоят у стены...Z_h_e писал(а):как там Ваши двести полочек?
Z_h_e писал(а):Вы фьюзы то покажите.
Код: Выделить всё
; ******************************************************
; * Автор: СКАЗОЧНИК *
; * Дата: 31.05.2013 *
; * Версия: 130531 *
; * Имя файла: Управление датчиком температуры DS18B20 *
; * Для AVR: ATTiny13 *
; * Тактовая частота: 4,8 MHz (внутренняя RC) *
; * Среда разработки: AVR Studio 4.19 *
; * *
; * Выполняемые функции: Программа тест для управления *
; * датчиком температуры по 1-Ваер интерфейсу и *
; * семисегментными индикаторами (4 штуки) *
; ******************************************************
; ================
; ПОДКЛЮЧАЕМЫЕ БИБЛИОТЕКИ (.include)
; ================
.include "tn13Adef.inc"
; .include "1W.inc"
; ============
; ТИП МИКРОКОНТРОЛЛЕРА (.device)
; ============
.device ATtiny13A
; =================
; ОБЪЯВЛЕНИЯ И КОНСТАНТЫ (.def, .equ)
; =================
.def temp = R16
.def error = R17 ; Переменная ошибки
.def DATA = R18 ; Данные между датчиком температуры и МК
.def temp1 = R19
.def REGISTR = R20 ; Данные для отправки в регистр на вывод индикторов
.def RAZR = R21 ; Разряд индикатора (номер прерывания счетчик)
.def RAZ2 = R22
.def RAZ3 = R23
.def RAZ4 = R24
; .def RAZ4 = R25
.equ DQPORT = PORTB ; Указать порт, к которому подключен вывод DQ
.equ DQDDR = DDRB ; Указать регистр напраавления порта, к которому подключен вывод DQ
.equ DQPIN = PINB ; Указать регистр чтения порта, к которому подключен вывод DQ
.equ DQ = 1 ; Указать номер бита порта, к которому подключен DQ
.equ DSPORT = PORTB ; Указать порт, к которому подключен вывод DQ
.equ DSDDR = DDRB ; Указать регистр напраавления порта, к которому подключен вывод DQ
.equ DSPIN = PINB ; Указать регистр чтения порта, к которому подключен вывод DQ
.equ DS = 0 ; Указать номер бита порта, к которому подключен DQ
; .equ xtal = 4800000
; .equ DVAL = xtal/100000
; ====
; МАССИВЫ И Т.Д. (.eseg) EEPROM (.db, .dw)
; ====
.eseg
; ******************************
; НАЧАЛО ПРОГРАММЫ (.cseg) FLASH
; ******************************
.cseg
; ------------------
; ВЕКТОРЫ ПРЕРЫВАНИЙ
; ------------------
rjmp RESET ; Reset Handler
rjmp INT0add ; External Interrupt0 Handler
rjmp PCI0add
rjmp OVF0add
rjmp ERDYadd
rjmp ACIadd
rjmp OC0Aadd
rjmp OC0Badd
rjmp WDTadd
rjmp ADCCadd
;RESET: ; Reset Handler
INT0add: ; External Interrupt0 Handler
PCI0add:
OVF0add:
ERDYadd:
ACIadd:
OC0Aadd:
OC0Badd:
WDTadd:
ADCCadd:
reti ; Выход из прерываний, которые не используются
; ----------------------
; ОБРАБОТЧИКИ ПРЕРЫВАНИЙ
; ----------------------
; **************************************************************************************************
; ИНИЦИАЛИЗАЦИЯ МК (логическое начало основной программы) ******************************************
; **************************************************************************************************
; --------- конфигурация портов -----------------------------------------------
Reset: ldi temp, 0b00011101 ; Конфигурируем порт B
out DDRB, temp
ldi temp, 0b00011101 ; Выводим в порт В
out PORTB, temp
; ldi RAZR, 0b00001000
; ldi RAZ2, 1
; ldi RAZ3, 2
; ldi RAZ4, 3
; ---------- начальные значения переменных, массивы ---------------------------
; 0 1 2 3 4 5 6 7 8 9 t E r o C -
; Cifri: .db 0xBF, 0xA1, 0xDB, 0xF3, 0xE5, 0x77, 0x7F, 0xA3, 0xFF, 0xF7;, 0x19, 0x18, 0x3B, 0x68, 0x1C, 0x7B, 0x7F
; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
; ----- конфигурация прерываний, стека, аналогового компаратора, таймеров -----
ldi temp, 0xFF ; Сбросить флаги внешних прерываний
out GIFR, temp
ldi temp, RAMEND ; Загрузка указателя стека
out SPL, temp
; ldi temp, 1<<TOIE0 ; Разрешить прерывание при переполнении таймера
; out TIMSK0, temp
;
; ldi temp, 120 ; Закидываем в счетчик изначальное значение (приблизительно, чтобы получить 4 милисекунды)
; out TCNT0, temp
; ldi temp, (1<<CS02)|(0<<CS01)|(0<<CS00) ; Тактовый сигнал = CK/256 (Запустили таймер)
; out TCCR0B, temp
; ---------- разрешение прерываний --------------------------------------------
; sei ; Разрешаем прерывания
; *******************************************************************************************************************
; ОСНОВНАЯ ПРОГРАММА (основной цикл) ********************************************************************************
; *******************************************************************************************************************
Start:
sbi DSPORT, DS
nop
nop
cbi DSPORT, DS
rjmp Start ; Конец программы, переход на началоКод: Выделить всё
out OSCCAL, "нужное значение"Тут я ошибся в расчетах и еще кое где . Я почему то посчитал что у Вас цикл за 6 тактов выполняется (пора в первый класс обратно)Z_h_e писал(а):У вас на выходе 530кГц, что означает тактовую частоту 3,180 МГц