nibiluk, я оттуда и начал учить.............., дошел вот сюда http://easyelectronics.ru/avr-uchebnyj-kurs-makroassembler.html#more-19 и начал задавать знатокам вопросы о .CSEG и .ORG address................, короче забуксовал........, там автор излагает не для тех кто в танке..........., где б найти материал в котором бы это излагалось для таких непонятливых как я....................
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт июл 15, 2011 08:40:10
Друг Кота
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19734 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
FreshMan писал(а):
начал задавать знатокам вопросы о .CSEG и .ORG address................, короче забуксовал........,
Что тут непонятного? У вас программа по умолчанию помещается начиная с нулевого адреса флэш-памяти. Если вы хотите изменить адрес — пишете .ОРГ адрес.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Ну так там всё слишком просто, что бы писать целые книги об этом. Вот этого вне хватило, всё расписано просто и понятно, хоть на стену перед монитором вешай: http://dfe3300.karelia.ru/koi/posob/avr ... sm-rus.htm А вот на счёт периферии, это я уже по даташитам конкретного микроконтроллера смотрю. Там тоже, если представляешь себе примерно ход работы данного устройства, то достаточно взглянуть на структуры настроечных регистров и писать код.
Ну ещё по поводу .xSEG-ов всяких. Тут следует учитывать, что у атмелок архитектура Гарвардская, т.е. участок памяти с кодом и с ОЗУ (и с EEPROM) полностью разделены друг от друга и не имеют общей шины (у каждого блока своя шина и, соответственно, адрес начало каждого блока равен 0) и напрямую из одного блока в другой общаться нельзя (если из FLASH в ОЗУ общаться, так тут это организовывает сам процессор, а что бы в EEPROM, то тут вообще обращение через периферию идёт). Вот .xSEG указывают с каким блоком идёт дальше работа, а .ORG устанавливает адрес конкретно в этом блоке.
вопрос такой: мог бы кто небесплатно разумеется (но и не очень дорого) написать программку для мега32 для термометра на дс18б20 с несколько хитрой индикацией?
_________________ Ищу тиратрон ТХИ1-2000/4, ГРИ ИН-23, ФЭУ-103; 134; 135, 138, 155, 157, лампу ИСШ-7. Любые ГИС серий 203, 225, 233, 244, 250, 296, 801, 838 в любом состоянии. Компоненты и детали от миниатюрных твердотельных лазеров.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пн июл 18, 2011 12:47:50
Друг Кота
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19734 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
suslogon писал(а):
вопрос такой: мог бы кто небесплатно разумеется (но и не очень дорого) написать программку для мега32 для термометра на дс18б20 с несколько хитрой индикацией?
Дык, это на "Из лап в лапы" попахивает
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Доброй ночи Пишу для Attiny2313 Как организовать побитовый вывод регистра общего назначения в 1 выход порта микроконтроллера? при этом свободно по своему усмотрению использовать другие биты этого же порта?
_________________ Не умеешь - не берись, но не взявшись не научишься...
Как организовать побитовый вывод регистра общего назначения в 1 выход порта микроконтроллера?
Анализировать крайний бит РОН (левый или правый, смотря с какой стороны выводить), в зависимости от его состояния устанавливать или сбрасывать бит порта, затем сдвигать содержимое РОН влево/вправо
Цитата:
при этом свободно по своему усмотрению использовать другие биты этого же порта?
А при чём тут они? Как их настроите, так и будут работать.
----------
Во, даже отрыл пример вывода 6 байт из памяти на сдвиговый регистр:
Код:
print: ldi XH,high(display_buf+6) ldi XL,low(display_buf+6) ldi rx1,6 ; выводим 6 байт с конца
print_0: ld rx3,-X ; в rx3 - выводимый байт ldi rx2,8 ; в rx2 - счётчик до 8 print_1: ; data_port,data_bit - куда выводим sbrc rx3,0 sbi data_port,data_bit sbrs rx3,0 cbi data_port,data_bit push_imp lsr rx3 dec rx2 brne print_1 dec rx1 brne print_0 ret
Как организовать побитовый вывод регистра общего назначения в 1 выход порта микроконтроллера?
Анализировать крайний бит РОН (левый или правый, смотря с какой стороны выводить), в зависимости от его состояния устанавливать или сбрасывать бит порта, затем сдвигать содержимое РОН влево/вправо
Т.е. преобразовать параллельный код в последовательный. Можно закинуть его в регистр данных SPI, и он сделает это автоматически. Конечно, SPI должен быть настроен и ничем другим не занят.
Спасибо за помощь Вчера еще организовал так: копирует младший бит регистра в бит Т SREG, а потом сдвигаем содержимое регистра, вставляем этот бит в другой регистр - надеваем на него маску - и выводим на порт:)
_________________ Не умеешь - не берись, но не взявшись не научишься...
копирует младший бит регистра в бит Т SREG, а потом сдвигаем содержимое регистра, вставляем этот бит в другой регистр - надеваем на него маску - и выводим на порт:)
Можно и так, но посчитай количество тактов на один проход Самым оптимальным (что я смог придумать) оказалось это:
Вчера еще организовал так: копирует младший бит регистра в бит Т SREG, а потом сдвигаем содержимое регистра, вставляем этот бит в другой регистр - надеваем на него маску - и выводим на порт:)
Бит Т может обмениваться содержимым не только с младшим, но с любым битом РОН. Правда, если речь идет о передаче всех битов РОН, то вышесказанное в цикле не катит. Остается решить - что важнее: быстродействие или затраты памяти. В первом случае -- повторить эту пару команд BST - BLD 8 раз
Директива -- это приказ транслятору что-то там сделать (выделить память под переменную, установить адрес, с которого будет размещаться следующий код и т.д.). А инструкция или команда -- то, что будет выполняться процессором при работе программы.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср июл 20, 2011 18:17:22
Друг Кота
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19734 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
john_rise писал(а):
Эдакая задачка для эрудиции
Собсно, где задача?
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Вариант с занулённым регистром может быть оптимальным. Регистров довольно много, а при частых операциях var16 += var8 экономия одной команды может быть существенной.
john_rise писал(а):
Или при помощи инструкций типа BRxx, но здесь растёт число инструкций, что тоже не греет душу.
Не сильно и растёт
Код:
add XL,indx brcc noinc inc XH noinc:
Ни по словам, ни по тактам не длиннее
john_rise писал(а):
Код:
add XL,indx clr r16 adc XH,r16
А ещё вопрос -- откуда взялись значения XL, XH. Если они только что загрузились константами, то, как я уже писал в этой теме несколько страниц назад, лучше всего не так
По длине как второй вариант, но не требует постоянно выделенного доп. регистра. По сравнению с первым вариантом и короче, и даже временно не требует доп регистра.
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
справедливо если table расположено во флеше, а вот если в EEPROMе или RAMе...
При этом надо учитывать, конечно, что в случае EEPROM это решает только часть проблемы - ставит указатель на нужный адрес, а достучаться до этого адреса все равно только с помощью установленного ритуала, а не просто ld, st. Интересно, что в очень примитивном МК ST6260 ( от STM ) доступ к EEPROM был намного проще : там было окно, в которое настройкой битов в регистре можно было "высунуть" то ли часть ОЗУ, то ли EEPROM, и можно было адресоваться как к обычному ОЗУ.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения