Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср июл 16, 2025 00:22:32

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 393, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт дек 10, 2024 16:58:58 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 38
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
BOB51 писал(а):
Может про мой ""слэнг" в работе с многофайловыми проектами" под ассемблером потрындеть?
Поддерживаю :beer:

Добавлено after 2 minutes 6 seconds:
BOB51 писал(а):
мой ""слэнг"
главное, что бы в "слэнге" слов неприличных не было :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср дек 11, 2024 11:50:20 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15093
Откуда: ДОНЕЦК
Рейтинг сообщения: 3
Так меня порой за "отступление от стандартных наименований" и матюкают.
8)
В общем то ...
Исходная проблема стандарта применения нескольких файлов вытекает из необходимости прописывать все файлы в запускающей командной строке компилятора... А мне то оченно вломуушки было...
Да и работа с "быстрым переходом" между тремя компиляторами - mcs51, PIC и AVR требовала использования максимально удобного обобщения для работы с исходниками для всех применяемых компиляторов. Вроде таки получилось относительно удобненько.
Для АВРок еще одно интересное замечание - "карта переназначения регистров регистрового банка" - собственно с теми регистрами можно выбрать модель, соответствующую раскладке и функционалу регистров других МК/МП (аналогия воде только у ПИК24 - но те я лишь очень бегло смотрел - могу и ошибиться).
Плюс карты- подсказки по системам команд, чтоб быстрее вспоминалось "недавно забытое" и на закусь конспекты по самим МК и системам команд.
:write:
Начну с той карты...
Собственно добавляю ее в каждый проект в разделе дефайнов (или позже отдельным файлом дефайнов*)
Спойлер
Код:
;_____
;таблица объявленных имен - переназначение регистров РОН
;
;             принята базовая модель:
; область ограниченного функционала
; .def mfr0 = r0  ; (математика и обмен с ПЗУ/самопрограммирование)
; .def mfr1 = r1  ; (математика и обмен с ПЗУ/самопрограммирование)
; .def  = r2 ;(ограниченный функционал)
; .def  = r3  ;(ограниченный функционал)
; .def  = r4  ;(ограниченный функционал)
; .def = r5  ;(ограниченный функционал)
; .def = r6  ;(ограниченный функционал)
; .def = r7  ;(ограниченный функционал)
; .def  = r8  ;(ограниченный функционал)
; .def  = r9 ;(ограниченный функционал)
; .def  = r10  ;(ограниченный функционал)
; .def  = r11  ;(ограниченный функционал)
; .def  = r12 ;(ограниченный функционал)
; .def  = r13 ;(ограниченный функционал)
; .def  = r14 ;(ограниченный функционал)
; .def  = r15 ;(ограниченный функционал)
; область полного функционала
 .def tmp0 = r16 ; рабочий регистр (полный функционал)
 .def tmp1 = r17 ; рабочий регистр (полный функционал)
; .def  = r18 ;(полный функционал)
; .def  = r19 ;(полный функционал)
; .def  = r20 ;(полный функционал)
; .def  = r21 ;(полный функционал)
; .def  = r22 ;(полный функционал)
; .def  = r23 ;(полный функционал)
; .def  = r24 ;("указатель базы" полный функционал)
; .def  = r25 ;("указатель базы" полный функционал)
;     Xl = r26 ; адрес сегмента Х (полный функционал)
;     Xh = r27 ; адрес сегмента Х (полный функционал)
;     Yl = r28 ; адрес сегмента Y (полный функционал)
;     Yh = r29 ; адрес сегмента Y (полный функционал)
;     Zl = r30 ; адрес сегмента Z (полный функционал ПЗУ/самопрограммирование)
;     Zh = r31 ; адрес сегмента Z (полный функционал ПЗУ/самопрограммирование)
; регистры Xh:Xl, Yh:Yl, Zh:Zl определены в дефайне изготовителя и в системе команд
; изменение их имени хотя и возможно, но нежелательно -
; возникает путаница с интегрированной абревиатурой системы команд
;  в случае с "малой моделью" допускающей/достаточной для размещения ВСЕХ
; используемых ВСЕМИ подпрограммами регистров в области СОЗУ регистрового
; файла одновременно (без "подкачки" наборов параметров через ОЗУ)
; рекомендовано переназначение индивидуальных имен регистров
; согласно текущей задачи
;

собственно регистру присваиваем условное имя для последующего использования в проекте уже по тому имени.
Даже для тиньки 13 можно переделить так, как удобнее (с учетом особенности работы каждой группы регистров в системе команд АВР) для прикладного проекта.
Можно модель распределения регистров и под 51ю и под 580 и под Z80 и под ПИК чего другого самодельного "прировнять"...
А уж затем и применяемые алгоритмы легче переносить в другую систему команд.
Воть как то так для начала...
Если интересно - дальше продолжу...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср дек 11, 2024 12:32:01 
Грызет канифоль
Аватар пользователя

Карма: 4
Рейтинг сообщений: 96
Зарегистрирован: Вс окт 25, 2020 22:13:25
Сообщений: 298
Откуда: Смоленск
Рейтинг сообщения: 1
BOB51 писал(а):
Если интересно

Конечно интересно!

В своих проектах один из регистров "делаю нулевым" (для AVR)
Код:
.def    rZero           = R15   ; всегда ноль


Очень пригождается в математике, оперативного обнуления переменных в памяти (sts var, rZero), в команде CPSE.


Последний раз редактировалось ДядяВован Ср дек 11, 2024 15:55:24, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср дек 11, 2024 13:15:14 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15093
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Там много интересного можно делать - к примеру "область быстрого стека" с использованием mov/movw...
Единственно аккуратно относиться к использованию R0-R1 и адресно - индексных R26-R31. Они могут в очень многих интересно-полезных случаях использоваться.
8)
Второй добавкой, является использование в заголовке главного файла описания конфигурационных бит применяемого МК как "по умолчанию", так и то, что в текущем проекте использоваться будет.
Эта "шапка" заимствована из практики ПИКов. Хоть практически фузы не меняет - такой приятности у avrasm2 нету, но позволяет заранее знать конфигурацию проекта (и сохранить в документации).
Минус - пришлось посидеть за даташитами на свой комплект "проработанных" МК...
К примеру "шапки" шаблонов главного файла проекта для тинек:
Вложение:
shaps_tn13prj.asm [4.02 KiB]
Скачиваний: 46

Вложение:
shaps_tn2313prj.asm [4.34 KiB]
Скачиваний: 47

и меги8515
Вложение:
shaps_m8515prj.asm [3.33 KiB]
Скачиваний: 40

Есть еще для нескольких МК, но те пока не проверялись в проектах.
8)
Ну и выкопировка *.inc файлов описания ресурсов из каталога
ДИСК:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes
это обычный минимум для любого варианта написания.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср дек 11, 2024 14:50:19 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4331
Откуда: Ижевск
Рейтинг сообщения: 3
...Очень пригождается в математике, сравнении с нулем "младших" регистров (cp r2, rZero), оперативного обнуления переменных в памяти (sts var, rZero), в команде CPSE.
Тоже использую R15=0, главное не только дефайнить, но и обнулять его :) Для сравнения с 0 и определения знака использую команду TST.
Нравится команда сравнения слова с нулем ADIW RL,0 (RL может R24, XL,Y,L,ZL)


Последний раз редактировалось akl Ср дек 11, 2024 15:10:34, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср дек 11, 2024 14:54:40 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6024
Откуда: Minsk
Рейтинг сообщения: 1
сравнении с нулем "младших" регистров (cp r2, rZero)

Для этого есть специальная команда TST Rn - хоть для младших, хоть для старших.

_________________
Изображение


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср дек 11, 2024 16:00:41 
Грызет канифоль
Аватар пользователя

Карма: 4
Рейтинг сообщений: 96
Зарегистрирован: Вс окт 25, 2020 22:13:25
Сообщений: 298
Откуда: Смоленск
Рейтинг сообщения: 0
Jack_A писал(а):
специальная команда TST Rn

Хорошо, этот вариант применения вычеркиваем!

Добавлено after 5 minutes 53 seconds:
akl писал(а):
не только дефайнить, но и обнулять его

Это обязательное условие!!!.
Вставляю в начало кода макро: установка стека и обнуление регистров.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср дек 11, 2024 16:05:45 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 38
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
BOB51 писал(а):
Есть еще для нескольких МК, но те пока не проверялись в проектах.
AT90S2313 ?

Уселся вчера изучать :facepalm: . Продавец давно вместо тиньки этих подсунул.. :))
Два проектика под них придумал.. Нужно распаять, да место освободить..))

Добавлено after 1 minute 40 seconds:
Да пойдут для мелочёвки, типа часы/кухонный_таймер и т.п.. :dont_know:


PS
сижу пока, медитирую :))

Изображение
Думаю, может стенд хороший замутить.. или ну его.. :facepalm: :))


Последний раз редактировалось shonty Ср дек 11, 2024 17:34:40, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср дек 11, 2024 17:15:44 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15093
Откуда: ДОНЕЦК
Рейтинг сообщения: 1
Нет - ATtiny2313...
AT90S2313 это вроде из самых старых... Такой даже в "пробниках" не было.
Заготовки вот на эти (не факт, что без возможных ошибок - не проверял пока):
Вложение:
shaps_tnX5prj.txt [4.99 KiB]
Скачиваний: 45

Вложение:
shaps_m8_8aprj.asm [7.41 KiB]
Скачиваний: 41

Вложение:
shaps_m48_88_168prj.asm [7.5 KiB]
Скачиваний: 30

Вложение:
shaps_m162prj.asm [3.98 KiB]
Скачиваний: 25

Просто делалось только то, на что распечатка док и сами кристаллы имелись.
Собственно цель ассемблерных конструкций прикладная самодельная периферия.
:roll:
Далее уже было изменение самой структуры файлов проекта.
Для "слишком мелких" простых конечно и одного файла достаточно. А вот для более крупных используется та шапка и несколько дополнительных файликов:
собственно *.inc из комплекта компилятора (иногда и его корректировать приходится, но крайне осторожно) ;
файл распределения ресурсов mdf_avr.txt (включает и карту регистров и карту разметки ОЗУ и чего там еще ...);
Спойлер
Код:
;
;   "mdf_avr.txt"  файл объявленных имен, бит и констант
;       (шаблон основного файла определений проекта)
;
;----------
; variable definitions
;(таблица обьявленных имен)
;
; определение метки многофайлового проекта
; ставится только в основном файле определений проекта
 #ifndef disposit
 #define disposit
 #endif
;
;
;_____
;таблица обьявленных имен - пользовательские константы
;
;   .equ name/label = const / expr
;             define datas
 
;_____
; блок определений
;
;таблица обьявленных имен - переназначение регистров РОН
;
;
;             принята базовая модель:
; область ограниченного функционала
; .def mfr0 = r0  ; (математика и обмен с ПЗУ/самопрограммирование)
; .def mfr1 = r1  ; (математика и обмен с ПЗУ/самопрограммирование)
; .def s_sreg = r2 ; зеркало SREG(ограниченный функционал)
; .def sys_flag = r3 ; системные флаги(ограниченный функционал)
; .def  = r4 ; (ограниченный функционал)
; .def  = r5 ; (ограниченный функционал)
; .def  = r6 ; (ограниченный функционал)
; .def  = r7 ; (ограниченный функционал)
;
; .def  = r8 ; (ограниченный функционал)
; .def  = r9 ; (ограниченный функционал)
; .def  = r10 ;  (ограниченный функционал)
; .def  = r11 ; (ограниченный функционал)
; .def  = r12 ;(ограниченный функционал)
; .def  = r13 ;(ограниченный функционал)
; .def  = r14 ;(ограниченный функционал)
; .def  = r15 ;(ограниченный функционал)
;
; область полного функционала
 .def tmp0 = r16 ; рабочий регистр(полный функционал)
 .def tmp1 = r17 ; рабочий регистр(полный функционал)
 .def tmp2 = r18 ; рабочий регистр(полный функционал)
 .def tmp3 = r19 ; рабочий регистр(полный функционал)
 .def tmp4 = r20 ; рабочий регистр(полный функционал)
 .def tmp5 = r21 ; рабочий регистр(полный функционал)
 .def tmp6 = r22 ; рабочий регистр(полный функционал)
 .def tmp7 = r23 ; рабочий регистр полный функционал)
;
 .def Bl = r24 ; "указатель базы"(полный функционал)
 .def Bh = r25 ; "указатель базы"(полный функционал)
;     Xl = r26 ; адрес сегмента Х (полный функционал)
;     Xh = r27 ; адрес сегмента Х (полный функционал)
;     Yl = r28 ; адрес сегмента Y (полный функционал)
;     Yh = r29 ; адрес сегмента Y (полный функционал)
;     Zl = r30 ; адрес сегмента Z (полный функционал ПЗУ/самопрограммирование)
;     Zh = r31 ; адрес сегмента Z (полный функционал ПЗУ/самопрограммирование)
; регистры Xh:Xl, Yh:Yl, Zh:Zl определены в дефайне изготовителя и в системе команд
; изменение их имени хотя и возможно, но нежелательно -
; возникает путаница с интегрированной абревиатурой системы команд
;  в случае с "малой моделью" допускающей/достаточной для размещения ВСЕХ
; используемых ВСЕМИ подпрограммами регистров в области СОЗУ регистрового
; файла одновременно (без "подкачки" наборов параметров через ОЗУ)
; рекомендовано переназначение индивидуальных имен регистров
; согласно текущей задачи
;
;_____
;таблица обьявленных имен - секция флагов пользователя
;
; .equ name/label = expr
;
; флаги в регистре flags



;_____
;таблица обьявленных имен - секция определенных данных (ОЗУ)
;
  .dseg
    .org SRAM_START
;
; label: .byte expr


;_____
;таблица обьявленных имен - секция определенных данных (EEPROM)
;
  .eseg
; label: .byte expr
;_____

файл макросов macros_proto.txt (или как-то иначе называть можно)...
Спойлер
Код:
;
;         "macross__proto.txt" ; файл описания макросов (шаблон)
;
 .macro xchrr ; псевдокоманда "обмен регистра/акумулятора/ с регистром"
     eor @0,@1 ; вызывается как xchrr rd,rs
     eor @1,@0
     eor @0,@1
  .endmacro
;
 .macro ldiw ; псевдокоманда "загрузка слова в регистровую пару /X,Y,Z/"
     ldi @0l,low(@1) ; вызывается как ldiw rp,0xnnnn или ldiw rp,name
     ldi @0h,high(@1) ; (где name=0xnnnn, rp=x,y,z)
  .endmacro
;

Далее собственно файлы программ подключаются - тоже с расширением*.txt
Для расширения используются именно *.txt, а не *.inc, *.asm или *.s - чтоб компилятор их не путал и не матюкался.
Собственно идет подстановка в *.asm файл текстовых вставок (компилятор их так и воспринимает).
Сама папка проекта также разделена на несколько подразделов...
К примеру вот такой проектик (из старых):
Вложение:
tnX5_2812_mm.rar [26.27 KiB]
Скачиваний: 46

Правда из него вся графика и дополнительная документация удалены (слишком велики) - просто для понимания как все стыкуется и обзывается.
Вобшчемссс... посмотрямс на интерес - может еще чего добавлю...
:tea:
Или выслушаю матюков со вниманием.
:wink:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 12, 2024 08:40:54 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2917
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18739
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 3
Медали: 1
Лучший человек Форума 2017 (1)
ДядяВован писал(а):
В своих проектах один из регистров "делаю нулевым" (для AVR)
в проектах для АТмега8 я нулевым делаю ZH, так как все данные у меня лежат в начале ОЗУ (0x60 - 0xFF), когда ZH = 0. поэтому у меня нет необходимости выделять отдельный регистр для нуля.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 12, 2024 10:38:33 
Грызет канифоль
Аватар пользователя

Карма: 4
Рейтинг сообщений: 96
Зарегистрирован: Вс окт 25, 2020 22:13:25
Сообщений: 298
Откуда: Смоленск
Рейтинг сообщения: 0
Starichok51 писал(а):
нулевым делаю ZH

Мудро!!!
Но в этом случае ИМХО лучше ограничить использование ОЗУ адресом (0xFF - 1), иначе может "что-то пойти не так" после команд RD Rx, Z+ / ST Z+, Rx.
Хотя, обычно в конце ОЗУ стек, поэтому способ безопасный.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 12, 2024 10:55:18 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 38
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 2
Starichok51 писал(а):
в проектах для АТмега8 я нулевым делаю ZH, так как все данные у меня лежат в начале ОЗУ
Это если не обращаться к данным во флэше или индексные переходы не использовать.

Нее.. Z по прямому назначению.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 12, 2024 11:09:32 
Грызет канифоль
Аватар пользователя

Карма: 4
Рейтинг сообщений: 96
Зарегистрирован: Вс окт 25, 2020 22:13:25
Сообщений: 298
Откуда: Смоленск
Рейтинг сообщения: 0
Ценное замечание!
Для большей свободы действий нулевым лучше оставить XH или YH


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 12, 2024 11:20:37 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15093
Откуда: ДОНЕЦК
Рейтинг сообщения: 2
Нуль можно и в варианте константы определить.
Да и весь младший блок регистров с ограниченным функционалом за исключением R0-R1 вполне сгодиться.
Зачем полнофункциональные занимать?
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 12, 2024 13:40:33 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
А я бы советовал использовать распределение регистров полностью совпадающее с распределением GCC. Тогда меньше проблем, если вдруг приспичит поработать с ассемблерными модулями в Си.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 12, 2024 14:11:21 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15093
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Это хорошо, если используется модель АВР.
Но ведь возможно и иное переназначение регистров файла под наиболее удобную модель распределения регистров...
это все таки "чистый ассемблер".
К примеру тот же "быстрый стек" под отдельные подпрограммы в младшей части регистрового банка...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 12, 2024 15:28:35 
Грызет канифоль
Аватар пользователя

Карма: 4
Рейтинг сообщений: 96
Зарегистрирован: Вс окт 25, 2020 22:13:25
Сообщений: 298
Откуда: Смоленск
Рейтинг сообщения: 0
BOB51 писал(а):
Зачем полнофункциональные занимать?

С этой точки зрения и выбрал R15.
Идея Старичка хороша тем, что при малом объеме ОЗУ ноль образуется "автоматически" (XH,YH,ZH) и вообще не нужно выделять отдельный регистр.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 12, 2024 15:51:00 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 38
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
По ресет, после инициализации стёка:
Код:
; Очистка регистров R0-R31
   ldi ZL, (0x1F-2)      ; Адрес регистра R29
   clr ZH
   st Z, ZH
   dec ZL
   brne PC-2
   clr ZL
   clr ZH
все регистры в ноль
(код не мой)

Добавлено after 2 minutes 20 seconds:
последняя строка "clr ZH" походу лишняя даже..

Добавлено after 2 minutes 27 seconds:
Да, лишняя

Добавлено after 5 minutes 12 seconds:
Тогда законченная композиция:
Код:
; Очистка регистров R0-R31
   ldi ZL, (0x1F-2)      ; Адрес регистра R29
   clr ZH
   st Z, ZH
   dec ZL
   brne PC-2
   clr ZL
; ----------
; Выключить аналоговый компаратор
   ldi R16, (1<<ACD)
   out ACSR, R16
(по мотивам данного форума)
:))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 12, 2024 15:57:52 
Грызет канифоль
Аватар пользователя

Карма: 4
Рейтинг сообщений: 96
Зарегистрирован: Вс окт 25, 2020 22:13:25
Сообщений: 298
Откуда: Смоленск
Рейтинг сообщения: 1
Аналогично. Подобный (и тоже не мой) код добавляю при старте сразу после установки стека
Код:
    .ifdef SPH
                LDI   R16, High ( RAMEND )
                OUT   SPH, R16
    .endif
                LDI   R16, Low ( RAMEND )
                OUT   SPL, R16
                ; очистка регистров
                LDI   ZL, 30                   
                CLR   ZH
                DEC   ZL
                ST    Z, ZH
                BRNE  PC - 2


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 12, 2024 16:08:54 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 38
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 2
ДядяВован писал(а):
Аналогично. Подобный
Точно.. :facepalm: "clr ZL" же тоже лишняя в конце


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 393, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y