Я - любитель и только начал разбираться с Мегой16. Глядя в книжки и даташит написал учебную программу, сигнализирующую переполнение таймера 1 в нормальном режиме хотя бы один раз. Ниже прилагаю код. Увы, эффекта нет((( Ломаю голову уже 16 часов, сил больше нет...
Прошу помощи! В чем ошибка???
; АТМега16
; Учебная программа работы с таймером 1 в нормальном режиме
; Первое прерывание по любому событию таймера 1 зажигает светодиод
.include "m16def.inc" ; Присоединение файла описаний
.list ; Включение листинга
.def temp = r16 ; Определение главного рабочего регистра
;------------------------- Вектора прерывания
rjmp RESET
reti ;rjmp Прерывание 1
reti ;rjmp Прерывание 2
reti ;rjmp Прерывание 3
reti ;rjmp Прерывание 4
rjmp TIM1 ;Прерывание 5 Захват таймера-счетчика 1
rjmp TIM1 ;Прерывание 6 Совпадение А таймера-счетчика 1
rjmp TIM1 ;Прерывание 7 Совпадение В таймера-счетчика 1
rjmp TIM1 ;Прерывание 8 Переполнение таймера-счетчика 1
reti ;rjmp Прерывание 9
reti ;rjmp Прерывание 10
reti ;rjmp Прерывание 11
reti ;rjmp Прерывание 12
reti ;rjmp Прерывание 13
reti ;rjmp Прерывание 14
reti ;rjmp Прерывание 15
reti ;rjmp Прерывание 16
reti ;rjmp Прерывание 17
reti ;rjmp Прерывание 18
reti ;rjmp Прерывание 19
reti ;rjmp Прерывание 20
RESET:
cli ; общий запрет прерываний
ldi temp, 0x80 ;Выключение компаратора
out ACSR, temp
;-------------------------- Инициализация стека
ldi temp, 0x7F ; Выбор адреса вершины стека
out SPL, temp ; Запись его в регистр стека
;-------------------------- Инициализация портов ВВ
ldi temp, 0xFF ; Запись числа $FF в регистр temp
out DDRB, temp ; Запись этого числа в DDRB (порт PB на вывод)
out PORTB, temp ; Запись то же числа в PORTB (потушить светодиод)
;--------------------------- Инициализация таймера-счетчика 1
out TIMSK, temp ;Разрешение прерываний по любому событию таймеров
ldi temp,0b00000000
out TCCR1A, temp ;Нормальный режим Таймера 1
ldi temp,0b00000011 ;Нормальный режим Таймера 1, Предделитель 1/64
out TCCR1B, temp
;---------------------------
sei ; общее разрешение прерываний
;-------------------------- Основной пустой цикл
main:
nop
rjmp main ; К началу цикла
;-------------------------- Прерывания по таймеру 1
; Если хотя бы раз происходит прерывание, загорается светодиод
TIM1:
ldi temp, 0x00 ; Записываем число $00 в регистр temp
out PORTB, temp ; Записываем число 0x00 в PORTB (включить светодиод)
reti