Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2010, 23:42   #1
papos
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 37
По умолчанию Цикл в AVR+ASM

Осваиваю AVR+ASM, необходимо сделать цикл N число раз, N считывается из порта C. Как считать N в регистр я понял, а как можно организовать цикл выполнения некоторых команд? Подозреваю что через джамп, но как тогда организовать условие If? Система команд необходимого мне микроконтроллера прикреплена, заранее спасибо.
Вложения
Тип файла: doc AVR_cmd.doc (440.0 Кб, 18 просмотров)
papos вне форума Ответить с цитированием
Старый 21.09.2010, 10:45   #2
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Максимум числа N какой?
*PB* вне форума Ответить с цитированием
Старый 21.09.2010, 11:03   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Код:
ldi R0, N
loop:
...
dec R0
cpi R0, 0
brne loop
Как-то так... Может почитать матчасть?
p51x вне форума Ответить с цитированием
Старый 21.09.2010, 12:08   #4
papos
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 37
По умолчанию

максимум N не оговаривался, но я думаю не очень большой ))
papos вне форума Ответить с цитированием
Старый 21.09.2010, 13:55   #5
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Цитата:
максимум N не оговаривался, но я думаю не очень большой ))
Я не просто так спросил.
Дело в том, что дешевые модели AVRов являются 8-ми разрядными. Это значит что процессор исконно поддерживает только однобайтные переменные, в которых можно хранить числа от 0 до 255.
Вариант, предложеный p51x сможет выполнить до 256 раз, код внутри цикла. Если нужно больше, тогда этот код нужно модифицировать - программно наростить разрядность переменной-счетчика цикла.
Вот поэтому нужно знать максимальное число N, чтобы во первых, сильно не усложнять программу, а во вторых, чтобы это число поместилось в переменной.
*PB* вне форума Ответить с цитированием
Старый 21.09.2010, 18:42   #6
papos
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 37
По умолчанию

Ну да, так и есть, 8-разрядные регистры )) Но число будет явно до 256, поэтому не страшно )) Спасибо за помощь.
papos вне форума Ответить с цитированием
Старый 21.09.2010, 18:59   #7
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Порты на авр-ках восьмиразрядные, так же как и регистры, так что все ок.
Цитата:
ldi R0, N
Цитата:
in R0, PORTC
Levsha100 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
avr usb ацп wanes101 Микроконтроллеры, робототехника, схемотехника, 3D принтеры 5 20.09.2010 10:04
AVR Sparky Микроконтроллеры, робототехника, схемотехника, 3D принтеры 6 31.12.2009 16:53
с/c++ для avr gaka1995 Общие вопросы C/C++ 1 25.10.2009 13:55
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34