Вечером проверю на домашнем компе.
Закралась мысль, а что если проблема в стилях комментариев? Я вижу у Вас используется классика ";", в то время как я использую сишную нотацию "//" или блоками "/* */".
Код: Выделить всё
.include "tn2313def.inc"
.def temp =R16
.cseg
.org 0x00 rjmp init
;ТАБЛИЦА ВЕКТОРОВ ПРЕРЫВАНИЙ
.org ICP1addr rjmp T1_capt ;(0х03) Захват таймера/счетчика Т1
.org INT_VECTORS_SIZE
;НАСТРОЙКА СТЕКА И ПОРТОВ
init: ldi temp,RAMEND
out SPL,temp
ser temp
out DDRB,temp ;В на выход с 0
ldi temp,~(1<<PD6)
out DDRD,temp ;D на выход с 0, кроме PD6
ldi temp,(1<<PD6)
out PORTD,temp ;ICP на вход БЕЗ подтяжки
;НАСТРОЙКА ТАЙМЕРА T1
ldi temp,1<<ICIE1
out TIMSK,temp ;Разрешаем прерывание по захвату Т1
ldi temp,(1<<ICNC1 | 1<<ICES1 | 1<<CS12 | 0<<CS11 | 1<<CS10)
out TCCR1B,temp ;1/1024
sei
;ОСНОВНОЙ ЦИКЛ
MAIN: rjmp MAIN
;ОБРАБОТКА ПРЕРЫВАНИЯ ПО ЗАХВАТУ
T1_capt:clr temp
out TCNT1H,temp
out TCNT1L,temp ;Обнулили счетный регистр
in ZL,ICR1L
in ZH,ICR1H
out PORTD,ZH
out PORTB,ZL ;Вывели значение периода на св-диоды
reti
Частоту вращения всяких механизмов обычно измеряют в оборотах в МИНУТУ. Т.к. на герцы частота получается очень небольшой и её трудно будет измерить с достаточной точностью прямым способом. Быстрее и точнее измерять период между импульсами и потом приводить его к частоте. Для чего и нужна математика.считайте сколько придёт импульсов за 500 миллисекунд, и получите "готовую" частоту в герцах.