то, чтобы сделать задержку написать что-то типа:
- Код: Выделить всё
wait_ms:
mov r25,r24
wms_l: ldi r24,200
rcall wait_us
rcall wait_us
rcall wait_us
rcall wait_us
dec r25
brne wms_l
ret
wait_us:
dec r24
breq wus_e
nop
nop
nop
nop
rjmp wait_us
wus_e: ret
Здесь описаны две функции:
wait_ms
и
wait_us
Обе принимают один аргумент (количество милли- или микросекунд, соответственно)
в регистре r24 и обнуляют его. Функция wait_ms кроме того портит (обнуляет) регистр r25
Например, чтобы получить задержку в одну секунду можно вызвать
функцию wait_ms с аргументом 250 четыре раза подряд.
- Код: Выделить всё
ldi r24,250
rcall wait_ms
ldi r24,250
rcall wait_ms
ldi r24,250
rcall wait_ms
ldi r24,250
rcall wait_ms
Добавлено спустя 3 минуты 8 секунд:
Vovan писал(а):...судя по тому ЧТО Вы в Temp загружаете...
Дело даже не в этом - тут без вложенных циклов нереально заметные глазу задержки получить.
Кстати, у "кота" В КОНЦЕ СТРАНИЦЫ циклы-то вложенные!
Добавлено спустя 15 минут 27 секунд:
Стек проинициализировать не забудьте!!!