Как переводчик может перепутать: "out TCNT0,temp" и "in temp,TCNT0"??? Да и вообще зачем переводчику править текст проги? Как говорится "если в слове МИР перепутать 3 буквы, то получится нецензурщина". Это явный косяк автора. Причём похоже на всю голову.
Исходя из приведенного вами текста (с учётом замены out на in) мы видим следующее:
1) TCNT не устанавливается в цикле. Таким образом после сравнения он продолжает считать дальше.
2) Mark80 вычитается по 80, что вообще необъяснимо.
Первое сравнение получим при значении таймера 80
Последующие сравнения будут происходить ч/з 176
Таким образом округлённо получим задержку 176*30+80=5380. При делителе 1024 это составит чуть больше 2 сек.
Даже если предположить, что я ошибся в расчётах и задержка высчитана правильно, то это всё равно из ряда вон выходящий пример с дурным стилем.
Стандартным видом задержки является что-то в виде следующего.
Код
wait:
ldi w1,high(FCnt) ; Загрузить счётчик задержки
ldi w2,low(FCnt); Загрузить счётчик задержки
wt01:
; rjmp pc+1
; rjmp pc+1
; rjmp pc+1
; rjmp pc+1
; rjmp pc+1
; rjmp pc+1
subi w2,1
sbci w1,0
brcc wt01
Где длительность приблизительно равна (1+1+2)*FCnt -1+2 такта (без учёта прерываний).
Если к примеру мы разрэмим 2 rjmp, то результат будет (2+2+1+1+2)*FCnt -1+2 такта и так далее.
В качестве ядра (там где стоят rjmp) мы можем считать события. В том числе переполнения таймера или элементарные отсчёты таймера. Например при частоте 2.4576 при делителе 1024 один такт таймера составит 0.416666 мс соответственно секунда составит 2400 тактов. Если мы возьмём по 80 (как в примере), то получим 30*80=2400.
Соответственно прога быдет выглядеть так (без инициализации таймера и сохраняя стилистику автора)
Код
wait_1s:
ldi w1,30 ; Загрузить счётчик задержки
ldi temp,0
out TCNT0,w2
ldi w2,80
wt01:
in temp,TCNT
cp temp,w2
brne wt01
ldi temp,0
out TCNT0,w2
dec w1
brne wt01
Реально обычно так не делают. Обычно исходят из того, что 2400 / 256 = 9.... Итого получается 9 полных циклов + 96 тактов.
Задержка выглядит так:
Код
wait_1s:
ldi temp,-96 ; Загрузить счётчик задержки
out TCNT0,temp
sbi TIFR,TOV0
ldi temp,9
wt01:
sbis TIFR,TOV0
rjmp wt01
sbi TIFR,TOV0
dec temp
brne wt01