Страница 138 из 400

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт май 25, 2012 13:48:25
shads
ILYAUL писал(а):

Код: Выделить всё

Sbr Flags,1<<MSB|1<<LSB|1<<3
Плиз. А сдвиги Вам считать не надо , компил сам разберётся
Я имел ввиду, в моем варианте, несколько бит за раз не получится..... Если пользоваться макросами:

Код: Выделить всё

BITSET Flags,MSB
BITRES Flags,MSB

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт май 25, 2012 13:54:46
ploop
SBR - Set Bit in Register
CBR - Clear Bit in Register

ИМХО не сложно запомнить...

Можно продолжить:
SBRS - Skip if Bit in Register Set
SBRC - Skip if Bit in Register Clear

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт май 25, 2012 13:57:09
ILYAUL
shads писал(а):Я имел ввиду, в моем варианте, несколько бит за раз не получится..... Если пользоваться макросами:

Код: Выделить всё

BITSET Flags,MSB
BITRES Flags,MSB
Во , точно . уберите их нафинг. Столько места сразу спасёте во flash

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт май 25, 2012 13:59:06
shads
ploop писал(а):SBR - Set Bit in Register
CBR - Clear Bit in Register

ИМХО не сложно запомнить...
Да это то понятно, я имел ввиду эти: стрелочки, скобочки, палочки.....

Хотя для винды когда на С пишу, они меня не напрягают..... Странно :)

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт май 25, 2012 14:07:02
ILYAUL
shads писал(а):Да это то понятно, я имел ввиду эти: стрелочки, скобочки, палочки.....
Есть такое понятие в ASМ - Операторы вот читайте

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт май 25, 2012 14:13:19
shads
ILYAUL писал(а):Есть такое понятие в ASМ - Операторы вот читайте
Прикольная справка, с примерчиками, надо будет подтянуться.....

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт май 25, 2012 14:20:03
ILYAUL
Предупреждение получили, а правила опять нарушаем?
ploop

Плиз

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт май 25, 2012 14:26:17
shads
ILYAUL писал(а):Система команд AVR RISC8.pdf
Интересно, а что было до 165 страницы?

Какие здесь модераторы внимательные, прям муха не проскочит.....
Предупреждение получили, а правила опять нарушаем?
Что называется в раж входим.....

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Пт май 25, 2012 14:37:12
ILYAUL
shads писал(а):интересно, а что было до 165 страницы?

Что называется в раж входим.....
Не знаю , так достался.
Чувствую забанят нас сегодня :)))

Просто чаще надо нажимать эту кнопку: Изображение
Тогда не забанят. А так да, скоро кто-то нарвётся.
ploop

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб май 26, 2012 08:01:55
BOB51

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Сб май 26, 2012 21:48:05
ILYAUL
BOB51 писал(а):а просто дать ссылки:
Сегодня ссылки есть завтра их может и не быть. К тому же они могут и устареть.Т.ч. предпочитаю хранить доки у себя . И что бы давать ссылки на английские источники , надо быть всё таки увереным в том , что тот кому их дают , хоть чуть -чуть разумеет на сём языке. А тот так , как мертвому припарка.
Кстати последнюю версию можно найти www.atmel.com

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс май 27, 2012 11:34:32
BOB51
for ILYAUL
Заниматься электроникой без знаний английского (хотя-бы со словарем) просто нереально, тем более, что попасть на сей сайт можно только с помощью компьютера, что уже подразумевает знание иностранных языков :tea:
Относительно ссылок:
если Вы их смотрели, то первая на самое последнее описание системы команд указывает, а вторая не первоисточник Вашего "Asm_AVR_rus.pdf" :wink:
При всей моей нелюбви к платному авторскому праву на публикуемое в интернет изданиях, по возможности, первоисточник надо всё-же указывать - из уважения к автору и к тем, кто первым его публикацию доступной сделал!
Другое дело - пересылка лично кому-то за пределами общественного доступа - на этом форуме для таких целей есть "ЛС" , да и e-mail никто пока еще не запрещал :beer:
А вот давать ссылку на сайт "взагали" для поиска конкретного datasheet или другого материала - не очень то и корректно - у новой редакции атмел весьма хитроумный способ построения, если первый раз посетить или не знать особенностей "где чего искать", то очень просто и не найти... 8)

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс май 27, 2012 11:45:48
Alexeyslav
что уже подразумевает знание иностранных языков
Все что нужно чтобы выйти в интернет на современном компьютере - это выбрать язык в UEFI-BIOS... при этом даже не заходя в операционную систему.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс май 27, 2012 12:33:35
BOB51
тогда начинающий спец по МК мой котейко - лапками старается детальки на столе перекладыавть и иногда кнопки на клаве нажимает, да за курсором на мониторе охотится :)))

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс май 27, 2012 17:53:53
мелкая

Код: Выделить всё

randomize:   MOV R30,random1   ;N=X
         MOV R31,random2

         LSL   random1      
         ROL   random2
         LSL   random1     
         ROL   random2

         ADD   R30,random1  
         ADC   R31,random2

         LSL   random1    
         ROL   random2
   
         ADD   R30,random1   
         ADC   R31,random2

         LSL   random1     
         ROL   random2
         LSL   random1      
         ROL   random2
         LSL   random1    
         ROL   random2

         ADD   R30,random1   
         ADC   R31,random2

         ADIW   R30,1   
      
         MOV   random1,R30  
         MOV   random2,R31
         

         ANDI   R31,0xFE  
         CPI   R31,0xC0

         BRCC   randomize
                           
         SWAP  R31
         LSR   R31
         INC   R31           
         MOV   random,R31
Может кто нибудь объяснит как изменить код что бы получить интервал 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
Но никак не получается реализовать!

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс май 27, 2012 19:34:58
Alexeyslav
Если реализовать алгоритм получения остатка от деления - то все получается просто - A mod 10 дает результат 0..9.

Чтобы не заморачиваться, оставляешь от результата младшие 4 бита, и вычитаешь из числа "10 = 0x0A" пока результат не станет меньше или равен 9. Для 4 бит это 0 или 1 раз.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс май 27, 2012 19:40:32
мелкая
А можно сразу на моем примере расписать??? а то очень нужно...... боюсь напутать....

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс май 27, 2012 19:58:06
Alexeyslav
Результат куда ложится?

Получаешь результат в виде байта 0..255 (это может быть любой частью регистра сдвига на котором основан ГСЧ), копируешь его в отдельный регистр, например в R16 (любой из R16..R31)

Затем...

Код: Выделить всё

ANDI R16, 0x0F
loop:
CPI R16, 0x0A      ; - это константа до которой надо ограничить результат.
BRLO no_correct
SUBI R16, 0x0A   ; - это та же самая константа
RJMP loop            ; в данном случае можно обойтись и без этой строчки 
                          ; т.к. вычитание максимум надо выполнить только один раз
                          ; Но если применять другие параметры(константу меньше 
                          ; или ровно 8) - может понадобится
no_correct:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс май 27, 2012 20:49:23
мелкая

Код: Выделить всё

randomize:	MOV R30,random1   ;N=X
			MOV R31,random2

			LSL   random1      ;*2
			ROL   random2
			LSL   random1      ;*4
			ROL   random2

			ADD   R30,random1   ;N=N+X*4
			ADC   R31,random2

			LSL   random1     ;*8
			ROL   random2
   
			ADD   R30,random1   ;N=N+X*8
			ADC   R31,random2

			LSL   random1     ;*16
			ROL   random2
			LSL   random1      ;*32
			ROL   random2
			LSL   random1      ;*64
			ROL   random2

			ADD   R30,random1   ;N=N+X*64  èòîãî N= X*77
			ADC   R31,random2

			ADIW   R30,1   ;N=N + 1

			MOV   random1,R30   ;X=N
			MOV   random2,R31

		;	ANDI   R31,0xE0   ;xxx0 0000
		;	CPI   R31,0xC0

		;	BRCC   randomize
			                  ; 0...5,0 0000
		
			ANDI R31, 0x0F
loop:		        CPI R31, 0x0A     
			BRLO next
			SUBI R31, 0x0A 
			rjmp loop

next:		SWAP  R31
			LSR   R31
		;	INC   R31            ;0000 0,1...6
			MOV   random,R31
Я правильно сделала? числа выводится только 0,5,8(

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Добавлено: Вс май 27, 2012 21:09:58
Alkul
мелкая писал(а):Может кто нибудь объяснит как изменить код что бы получить интервал 1)0-6 2)0-9
под "интервалом" тут понимается количество итераций?