А может сначала нужно было бы описать, что Вы хотите получить? А то получается, что по коду, который не работает нужно догадаться, что же Вы хотите (трудно найти черную кошку в темной комнате, особенно, если ее там нет)
должны загаратса диоды по очереди
я использую регистр сдвига, и счечик импульсов переключает следуший диод.
(чтобы сравнение происходило в момент времени, отстоящий от запуска таймера на 125 мс.
Считаем количество тактовых импульсов, которое пройдет за это время:
125мс / 6,4 мкс = 19531 имп.
OCR1AH = 0x4c
OCR1AL = 0x4B)
ldi Temp,0b01000000 ;разрешить прерывание компаратора
out TIMSK,Temp
ldi Temp,0b00000011 ;тактовый сигнал = CK/64
out TCCR1B,Temp
ldi Temp,0x4C ;инициализация компаратора
out OCR1AH,Temp
ldi Temp,0x4B
out OCR1AL,Temp
ldi Temp, HIGH(RAMEND) ;установка указателя стека
Out sph, temp
ldi Temp, LOW(RAMEND)
Out spl, temp
ldi Temp1,0b00000001 ;инициализация индикатора
ldi Temp,0 ;обнуление таймера
out TCNT1H,Temp
out TCNT1L,Temp
sei ;разрешить прерывания
;****************************************************
; ОСНОВНОЙ ЦИКЛ
;****************************************************
Inf: rjmp Inf ;бесконечный цикл
ldi Temp,0b01000000 ;разрешить прерывание компаратора
out TIMSK,Temp
ldi Temp,0b00000011 ;тактовый сигнал = CK/64
out TCCR1B,Temp
ldi Temp,0x4C ;инициализация компаратора
out OCR1AH,Temp
ldi Temp,0x4B
out OCR1AL,Temp
ldi Temp, HIGH(RAMEND) ;установка указателя стека
Out sph, temp
ldi Temp, LOW(RAMEND)
Out spl, temp
ldi Temp1,0b00000001 ;инициализация индикатора
ldi Temp,0 ;обнуление таймера
out TCNT1H,Temp
out TCNT1L,Temp
sei ;разрешить прерывания
;****************************************************
; ОСНОВНОЙ ЦИКЛ
;****************************************************
Inf: rjmp Inf ;бесконечный цикл
Для начала - таблица векторов прерываний не соответствует таковой для меги8.
Просимулировали бы в той же студии, и понятно бы стало, куда программа перескакивает по прерыванию...
Ну да, и запись в TIMSK тоже не верная, в меге8 бит OCIE1A 4-й, а не 6-й. Писали бы через имена битов, сразу или бы ошибку выдало или заработало как надо.
ldi Temp,(1<<OCIE1A) ;разрешить прерывание компаратора
out TIMSK,Temp
И еще по-секрету, LPM можно делать сразу в любой регистр, не обязательно в R0, и можно сразу этот регистр выводить в порт. Зачем лишнее копирование регистров?