Страница 1 из 1
Формирование временных задержек в AVR (ASM)
Добавлено: Пт май 11, 2007 12:22:09
Ruslan
Добрый день, коллеги. Всех с наступившим праздником!
Вопрос такой. Работаю с контроллером AVR 1200.
Внешний генератор не подключал. Работаю, соответственно, только от внутреннего - 1 МГц.
Помогите достать ассемблерный код для формирования задержки в 1 сек при данной частоте генератора.
Добавлено: Пт май 11, 2007 13:29:42
tych
Назовите тему подробней ! плиззз
Это в компиляторе удобно сделать и посмотреть листинг на АСМе.
=============
Вот в IAR накрапал паузу в 1 млн. тактов проца
Код: Выделить всё
#include <ioavr>
#include <intrinsics>
int main( void )
{
__delay_cycles(1000000); //
while(1);
}
=============
Вот листинг
Код: Выделить всё
5 int main( void )
\ main:
6 {
7 __delay_cycles(1000000); //
\ 00000000 E30F LDI R16, 63
\ 00000002 E01D LDI R17, 13
\ 00000004 E023 LDI R18, 3
\ 00000006 5001 SUBI R16, 1
\ 00000008 4010 SBCI R17, 0
\ 0000000A 4020 SBCI R18, 0
\ 0000000C F7E1 BRNE $-6
\ 0000000E C000 RJMP $+2
\ 00000010 0000 NOP
8
9 while(1);
\ ??main_0:
\ 00000012 CFFF RJMP ??main_0
10 }
=============
Вот АСМ паузы
Код: Выделить всё
LDI R16, 63
LDI R17, 13
LDI R18, 3
SUBI R16, 1
SBCI R17, 0
SBCI R18, 0
BRNE $-6
RJMP $+2
NOP
Надеюсь будет работать
