Сегодня ссылки есть завтра их может и не быть. К тому же они могут и устареть.Т.ч. предпочитаю хранить доки у себя . И что бы давать ссылки на английские источники , надо быть всё таки увереным в том , что тот кому их дают , хоть чуть -чуть разумеет на сём языке. А тот так , как мертвому припарка.
Кстати последнюю версию можно найти www.atmel.com
for ILYAUL
Заниматься электроникой без знаний английского (хотя-бы со словарем) просто нереально, тем более, что попасть на сей сайт можно только с помощью компьютера, что уже подразумевает знание иностранных языков
Относительно ссылок:
если Вы их смотрели, то первая на самое последнее описание системы команд указывает, а вторая не первоисточник Вашего "Asm_AVR_rus.pdf"
При всей моей нелюбви к платному авторскому праву на публикуемое в интернет изданиях, по возможности, первоисточник надо всё-же указывать - из уважения к автору и к тем, кто первым его публикацию доступной сделал!
Другое дело - пересылка лично кому-то за пределами общественного доступа - на этом форуме для таких целей есть "ЛС" , да и e-mail никто пока еще не запрещал
А вот давать ссылку на сайт "взагали" для поиска конкретного datasheet или другого материала - не очень то и корректно - у новой редакции атмел весьма хитроумный способ построения, если первый раз посетить или не знать особенностей "где чего искать", то очень просто и не найти...
тогда начинающий спец по МК мой котейко - лапками старается детальки на столе перекладыавть и иногда кнопки на клаве нажимает, да за курсором на мониторе охотится
Может кто нибудь объяснит как изменить код что бы получить интервал 1)0-6 2)0-9
X(i+1)= ( A*X(i) + B) mod 65536
A= 77 (A mod 4= 1)
B= 1 нечетное
т.е мне надо выставить m=10 a=1 b=3 получится:
0,3,6,9,2,5,8,1,4,7,0
Длина периода 10
Но никак не получается реализовать!
Если реализовать алгоритм получения остатка от деления - то все получается просто - A mod 10 дает результат 0..9.
Чтобы не заморачиваться, оставляешь от результата младшие 4 бита, и вычитаешь из числа "10 = 0x0A" пока результат не станет меньше или равен 9. Для 4 бит это 0 или 1 раз.
Получаешь результат в виде байта 0..255 (это может быть любой частью регистра сдвига на котором основан ГСЧ), копируешь его в отдельный регистр, например в R16 (любой из R16..R31)
ANDI R16, 0x0F
loop:
CPI R16, 0x0A ; - это константа до которой надо ограничить результат.
BRLO no_correct
SUBI R16, 0x0A ; - это та же самая константа
RJMP loop ; в данном случае можно обойтись и без этой строчки
; т.к. вычитание максимум надо выполнить только один раз
; Но если применять другие параметры(константу меньше
; или ровно 8) - может понадобится
no_correct: