Зарегистрирован: Ср мар 07, 2007 22:58:02 Сообщений: 586 Откуда: Черкассы, Украина
Рейтинг сообщения:0
Итак. Хочу тахометр на МК для вентилятора ПК. Хочу на АСМе. Выбор пал мерять длину периода с таходатчика вентилятора. Меряем время одного периода, умножаем на два и делим 60 на то что получилось. Проблема в математике. Написал на Си - и нихрена не понял что там он на асме накатал. Посмотрел аппноут AVR200 и не понял как там деление получается. Надо реализовать такую формулу 60/(word*0.01024) где word - 16-разр число. полученное число я планирую переделать в BCD и вывести на LCD. А вот с такими вот действиями на асме всё стало. Прошу подробно распиать наиболее выгодный путь. Я читал тут на форуме что можно запятые потом в ответы подставлять и т.д. Поэтому неплохо было бы в ответе написать логику рассуждений - типа "ввиду того что делимое 0,01024 делить мы будем такто потому что если будем делить нетакто то получится вот так". Заранее спасибо
_________________ There is only 10 kind of people: those who understands binary code and those who dont!!!
Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.
Зарегистрирован: Ср мар 07, 2007 22:58:02 Сообщений: 586 Откуда: Черкассы, Украина
Рейтинг сообщения:0
Не - на Си я написал кусочек(ничтожный) который и вычисляет эту формулу. Написал СПЕЦИАЛЬНО чтоб потом заюзать в проэкте на асм. Написать проэкт на АСМе - дело принципа, тем более что столбко уже вложил - осталось чуть меньше половины
_________________ There is only 10 kind of people: those who understands binary code and those who dont!!!
извините, что перебиваю, но я снова остановился на проблеме...
как мне вывести число в регистре на символьный ЖКИ?
с делением проблемы...
команда FMUL дает тот же результат что и сдвиг регистра вправо
Господа, вопрос следующий
имеется рабочая прошивка для тини 2313, девайс готов и думаю что исправен. Но есть одно но! Семисегментные индикаторы я воткнул не с общим анодом, как автор статьи просил - а с общим катодом (были у меня под рукой, не стал заморачиваться). В обучалке автор писал что мол замена индикаторов - дело плёвое, 2 строчки в коде и всё ок. Но я уже второй час по форуму в поисках этих двух строчек и ничего вразумительного не нашел. Будьте любезны, не откажите в помощи.
эти строчки надо не на форуме искать, а в исходнике программы
кратко: надо инвертировать сигналы на сегменты и общие анлды/катоды. т.е. найти место в программе, где эти данные выводятся и перед выводом проинвертировать их.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Это я догодался, но проблема в том что я очень плохо знаком с синтаксисом ассемблера, потому и спрашиваю, может ли кто-нить подсказать какие комманды мне нужно дописать (или стереть) чтоб инвертировать выход портаБ
но проблема в том что я очень плохо знаком с синтаксисом ассемблера
Очень плохо.
Всё засисит от того каким образом идет взаимодействие с портом, т.е. нужные биты устанавливаются/очищаются по одиночке или все сразу.
Если по одиночке, то копайте в сторону команд SBI и CBI.
Если сразу, то чтоб инвертировать значение в регистре юзайте команду COM.
во вложении два фрагмента кода от программы (контроллер мега64)
один без использования RCALL а второй с использованием вот который без RCALL (MEG1.ASM) он работает на выводе порта D7 пролетает 0 а коде MEG2.ASM этого 0 нет объясните почему хотя компилятор ошибки не выдаёт просто хочу чтобы в основной программе были подпрограммы а неполучается
Вложения:
Комментарий к файлу: этот код не работает MEG2.ASM [1.17 KiB]
Скачиваний: 640
Комментарий к файлу: этот код работает MEG1.ASM [1.21 KiB]
Скачиваний: 656
И в MEG2.ASM и MEG1.ASM код почти одинаковый, всё должно работать и в том и в другом случае. Разница только в том, что там где используется RCALL, задержка будет на 7 тактов дольше.
в том то и дело что не работает
я сейчас просто записываю эти короткие коды в мегу и осцилом смотрю в коде где без rcall нолик пробегает а с rcall его нет вот такая вот проблема
а вот ещё если вместо файла m64def.inc подставить 8515def.inc и в коде убрать строку sts XMCRA,temp копилятор при таком раскладе ругается (т.к у 8515 нет такого регистра) всё робит но у меня же мега64
пожалуйста наведите на правильный путь когда происходит прерывание по завершению приема UART, МК перегружается или происходит прыжок в начало програмы(или другой вариант, сам не знаю).
Это видно по тому, что у меня после инициализации на ЖКИ выводится надпись "Хеллоу" и после очистки экрана должна выполняться основная програма, но у меня после очистки экрана снова появляется надпись "Хеллоу" и так происходит пока поступают даные на RXD.
для меги32 векторы прерываний описал так:
Код:
rjmp RESET reti reti reti reti reti reti reti reti reti reti reti reti rjmp USART_RXC reti reti reti reti reti reti reti
в подпрограме USART_RXC пусто:
Код:
USART_RXC: reti
и ещё вопрос: можно ли в одной подпрограме использовать несколько ret или reti ?
Сейчас этот форум просматривают: GARMIN и гости: 31
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения