Подскажите пожалуйста: SETB P1.3; (P1)=27H; (PC)=127H Команда производит запись 1 в бит. Какая используется адресация для операнда-источника и операнда-приемника? и что чему будет равно?
Непосредственная(прямая). Это команда для 51 семейства.
Вот столкнулся с одной проблемой. Есть код для управления дисплеем, но суть не в этом. В этом коде я использую C-шные команды препроцессора для определения всяких параметров. И вот проблема. Например есть объявление: #define size_x 12
Задача: Записать это число в символьном виде в flash, т. е. после развёртывания в коде должна получиться такая конструкция: .db "12",0
Как сделать? .db "size_x",0 не катит.
Была идея создать макрос вида #define _s(a) #a а затем .db _s(size_x),0 но не тут-то было - макрос _s() не обрабатывает препроцессором параметр a перед закавычинием, т.е. в результате после развёртывания получается вс ё тот же .db "size_x",0
Это постоянно то там, то сям пробегает. Нужна двойная проброска.
Код:
#define size_x 12
#define __s(a) #a #define _s(a) __s(a)
.db _s(size_x),0
В результате первого разворачивания из _s(size_x) будет получено __s(12), а уже оно даст нужную строку.
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Ну что тут сказать... Значит, в используемом Вами ассемблере С-шный препроцессор поддержан формально. Как бы и обрабатывает макросы, но по упрощённой технологии.
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 20, 2011 00:41:00
Открыл глаза
Зарегистрирован: Пн фев 07, 2011 00:42:25 Сообщений: 48 Откуда: Из затерянного мира.
Рейтинг сообщения:0
Есть вопрос. Имеем число в одном регистре. Как можно на ассемблере разделить единицы, десятки и сотни этого числа по трём разным регистрам? МК - MEGA8. Число целое, со знаком (signed).
Делить на 10, остатки забирать. Следующий вопрос будет - где взять деление. А нигде, написать И воспользоваться поиском по форуму, неоднократно обсуждалось (емнип, даже в этой теме)
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 20, 2011 11:14:18
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19990 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Switch писал(а):
Имеем число в одном регистре. Как можно на ассемблере разделить единицы, десятки и сотни этого числа по трём разным регистрам? МК - MEGA8. Число целое, со знаком (signed).
Искать апнот про BCD арифметику. Но там вроде без знака.
ploop писал(а):
Делить на 10, остатки забирать. Следующий вопрос будет - где взять деление. А нигде, написать
Вычитать сначала сотни, потом десятки, потом единицы, включив при этом три счётчика
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Вычитать сначала сотни, потом десятки, потом единицы, включив при этом три счётчика
Ну да. Когда сам столкнулся с этой проблемой, искать не стал, просто взял и написал
Советы все хорошие, но не совсем по делу. Во-первых, у человека signed. Значит первым делом надо расщепить на знак и абс. величину. И знак где-то хранить. Во-вторых : Gudd-Head, зачем три счетчика ? Когда вычли сотни и десятки, остаток уже содержит единицы. Если бы я был преподом, у меня ответивший по билету для получения "отл." прямо за столом должен был бы написать эту подпрограммку секунд за 40. Хорошо, что я не препод Да и билетов сейчас, наверное, нет - рефераты, тестирование... Дебилизм.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 20, 2011 12:29:17
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19990 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Jack_A писал(а):
Во-вторых : Gudd-Head, зачем три счетчика ? Когда вычли сотни и десятки, остаток уже содержит единицы. ... должен был бы написать эту подпрограммку секунд за 40.
Дык, я тоже ответ писал секунд 40, потому и не стал особо мозги напрягать
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 20, 2011 15:01:53
Открыл глаза
Зарегистрирован: Пн фев 07, 2011 00:42:25 Сообщений: 48 Откуда: Из затерянного мира.
Рейтинг сообщения:0
Мдаа.... Холивар устроили, но не помогли. На счёт деления - спрашивать не буду, так как гугл знает ответ на этот вопрос а вот запрос на разложение числа он не понимает. Вообще, у меня этот вопрос возник при написании программы для термодатчика DS18B20 Вообще мне надо всего 2 числа достать из двух регистров (t LSB и t MSB) и оформить их так, чтобы можно было направить их в дешифраторы 4>10. А знак нужно отобразить отдельно. Десятые и сотые доли мне ненужны. Датчик настроен на минимальную точность. Обмен 1Wire организовал, а вот это - даже в голову не приходит ничего.
ЗЫ: И причём тут преподы? Я самоучка по электронике и МК и делаю для себя. Никаких дипломных работ.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 20, 2011 15:09:43
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19990 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Switch писал(а):
Вообще, у меня этот вопрос возник при написании программы для термодатчика DS18B20.
Ё-моё, так бы сразу и сказали. А то "число со знаком"... Берёте 7 бит с датчика (2^6 ... 2^0), включаете счётчкик и начинаете вычитать по 10. Как только результат станет отрицательным, прибавляете 10. В счётчике получаете десятки, в результате - единицы.
Switch писал(а):
Мдаа.... Холивар устроили, но не помогли.
См. вложение, если настолько тяжело усваивается информация.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения