Страница 223 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 10:19:56
Engineer_Keen
Да хоть 100 флагов, главное чтобы регистров хватило...
Спойлер
Код: Выделить всё
.def FLR1=R16 ;регистры под флаги, 2 шт.
.def FLR2=R17
.equ FLAG0=0 ;сами флаги, обзывайте как хотите
.equ FLAG1=1 ;желательно учитывая функциональность
.equ FLAG2=2
.equ FLAG3=3
.equ FLAG4=4
.equ FLAG5=5
.equ FLAG6=6
.equ FLAG7=7
.equ FLAG8=0
.equ FLAG9=1
.equ FLAG10=2
.equ FLAG11=3
.equ FLAG12=4
.equ FLAG13=5
.equ FLAG14=6
.equ FLAG15=7
.cseg
...
...
SBR FLR1,(1<<FLAG2) ;пример установки флагов
SBR FLR2,(1<<FLAG14)
SBRC FLR1,FLAG3 ;пример проверки флага
RCALL FLAG3_FUNCTION
А чтобы не путать какие флаги в каком регистре, имена флагов можно писать с префиксами: FL1_FLAG0, FL1_FLAG1,...,FL2_FLAG8,FL2_FLAG9.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 10:22:21
Мikа
Ааа, разные имена для одинаковых цифр. Всё гениальное просто

Спасибо!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 12:19:34
Alexeyslav
#define в ассемблере тоже работает. Привязать имя бита к регистру? да нет проблем... указывайте регистр вместе с номером бита.
например #define zero_cross R25, 0
через EQU и SET сделать это невозможно да... #define мощнее этих директив, но и ответственность выше.(наворотить можно ууууу)
Что-то вроде такого:
Еще есть макросы... определяешь один раз макрос и используешь каждый раз его имя вместо набора команд, а внутри макроса один раз указывается что делать с каким регистром и битом. #define по сути это тот же макрос только однострочный и без параметров. Уж использовать его для команд установки очистки битов - самое то.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 12:29:18
ИС-пытатель
Это в каком компиляторе так дефайн на асме работает?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 13:39:27
Alexeyslav
Стандартный AtmelStudio, всегда использую. Только надо иметь в виду - препроцессор регистрочувствительный, #DEFINE не сработает, будет писать "неизвестная директива" использовать нужно только #define. Я по началу путался, и не понимал почему не прокатывает, а оно вона как.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 13:46:02
Engineer_Keen
В 4.19 тоже работает, впрочем дело тут не в версии студии, а в версии ассемблера, например директивы с '#' это фишки avrasm2.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 14:24:04
ИС-пытатель
А как тогда это в коде использовать, если мы тут и регистр обозначаем, и бит сразу?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 14:53:58
Alexeyslav
Код: Выделить всё
#define WORK_DONE OCR0A, 1
#define zero_cross R25, 0
#define strobe PORTA, 4
SBRC zero_cross
SET
BST zero_cross
CBI WORK_DONE
CBI strobe
SBI strobe
Разве не удобно? Никакой путаницы какой бит какому регистру принадлежит - ты сам придумываешь имена и способ группировки этих флагов. Префиксами, например.
Так может быть группа из 12 бит распределенная по разным частям 2-3-5 регистров, а не только по 8.
Для работы с битами в регистрах правда, приходится использовать уже макросы т.к. нужно минимум 2 команды чтобы установить/сбросить бит в регистре.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 15:20:01
ИС-пытатель
А.. Ну, это получается только для команд работы с битами такое определение.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 15:24:27
Alexeyslav
Для чего еще надо?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 15:55:26
ARV
а какие возможности макросов в avr-as!

я об ассемблере GNU, который в комплекте avr-gcc присутствует.
в свое время сделал и использовал макросы для написания такого вида кода:
Код: Выделить всё
pushreg r1, r2, r16, r17 ; особый макрос сохранения в стеке списка регистров
... тут юзаем эти регистры
popreg ; а этот макрос сам восстанавливает из стека ранее сохраненные регистры в нужном порядке
; и не надо запоминать, в каком порядке их в стек сохраняли!
ret
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 16:00:15
ИС-пытатель
А количество аргументов в макросе стандартно (допустим, равно исключительно 4)? или же оно плавает (может быть любым, но не меньше 1)?

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 16:09:03
ARV
ИС-пытатель писал(а):А количество аргументов в макросе стандартно (допустим, равно исключительно 4)?
если этот вопрос по поводу моего сообщения, то отвечаю: может быть любым (за стопицот не поручусь, конечно

)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 16:18:15
akl
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 16:23:15
ИС-пытатель
ARV писал(а):количество аргументов в макросе может быть любым (за стопицот не поручусь, конечно

)
А можете привести текст макроса? Вы набиваете в него миллион аргументов (32, как максимум), которые могут использоваться или нет? Или как-то по красивому это организуете?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 16:28:33
ARV
ИС-пытатель писал(а):А можете привести текст макроса? Вы набиваете в него миллион аргументов (32, как максимум), которые могут использоваться или нет? Или как-то по красивому это организуете?
вот
моя статья, которую написал в припадке эйфории от возможностей этого ассемблера, там есть упоминаемые макросы (и не только), сами скажите, красиво все это или нет

главное - весьма полезно.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 16:29:25
Engineer_Keen
ИС-пытатель писал(а):А количество аргументов в макросе стандартно (допустим, равно исключительно 4)? или же оно плавает (может быть любым, но не меньше 1)?

В родном атмелевском ассемблере кстати всего максимум 10 (минимум 0)...
AVR Assembler help писал(а):
A Macro can take up to 10 parameters. These parameters are referred to as @0-@9 within the Macro definition.
ARV писал(а):вот
моя статья, которую написал в припадке эйфории от возможностей этого ассемблера
Блииииннннн...... Ну где вы раньше были

Все, срочно перехожу на AVR-AS

Вот так живешь себе, горя не знаешь, а оказывается все можно делать еще проще, удобнее и быстрее...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 16:55:39
ИС-пытатель
МЛЯЯЯЯЯЯЯЯуууууу...

Перехожу обратно с Сей на Асм!! )))))
P.S. раньше пользовался макросами в асме (репит тоже был, помнится), но ТАКОГО, как свободное количество аргументов и т.п.... Еще не было.. КРУТЬ!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт апр 22, 2014 18:34:28
ARV
Engineer_Keen писал(а):Блииииннннн...... Ну где вы раньше были

Все, срочно перехожу на AVR-AS

Вот так живешь себе, горя не знаешь, а оказывается все можно делать еще проще, удобнее и быстрее...
а бывает и наоборот: знаешь, что есть проще, удобнее, быстрее, а корячишься с тем, что есть... так вот со мной и было: помня
tasm для x86-ых, и даже
asm51 оn Intel для MCS51 я долго не мог понять, почему ассемблер для AVR такой убогий... пока не познакомился с avr-as

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср апр 23, 2014 01:56:07
Alexeyslav
Да, настоящий макроязык, язык для программирования компилятора. Почему для ассемблера нет такого?