А простите за дурацкий вопрос. А как на ассемблере устроить десятичный счет последовательно от 0000 до 9999. Чего совсем нет никаких хороших идей Пробовал последовательно инкрементировать 4 ячейки памяти (каждую через 9 циклов) с CJNE через 9, но например, при переходе от 0019 к 0020 сначала образуется 0009, и только в следующем цикле образуется 0020 Пробовал 16-битное сложение с DA A, но это работает ужасно, пропускает числа. Пробовал 16-битное сложение с переводом результата в BCD, проверкой в десятичных числах, но результат громоздкий и тормозной. Наверняка есть есть какой-то математический метод, но с двоичной арифметикой я как бы не очень. Посоветуйте чего нибудь.
Инкремент и сложение по реакции флагов могуть отличаться (на память - шклерозь) а посему DA A неверно сработает. Нужно использовать простое сложение с единицей. Или алгоритм математики аналогично DA A и соответственно реакции флагов результата. 16-разрядное не применимо - обрабатываем два байта - один с единицами и десятками, другой с сотнями и тысячами.
Пробовал последовательно инкрементировать 4 ячейки памяти (каждую через 9 циклов) с CJNE через 9, но например, при переходе от 0019 к 0020 сначала образуется 0009, и только в следующем цикле образуется 0020
доводите до совершенства...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством
Ключевыми особенностями высоковольтных SiC MOSFET Wolfspeed являются малое сопротивление канала в открытом состоянии и минимальное значение паразитных емкостей, что позволяет максимально снизить статические и динамические потери, и, соответственно, увеличить рабочую частоту преобразователей.
Зарегистрирован: Пт фев 14, 2014 20:45:33 Сообщений: 94 Откуда: Северный Кавказ
Рейтинг сообщения:0
В журнале Радио как-то публиковалась статья про преобразование аналоговых величин МК. Скрин во вложении. Что имеется в виду под порогом переключения? Напряжение, время??? Как его узнать?
Первое семейство STM32L5 на базе ядра ARM Cortex-M33, флагман семейств ST с низким потреблением. Область применения IoT, расходомеры, умные часы, промышленные датчики и многое другое. Опубликованы материалы двух практических вебинаров по расчету энергопотребления и работой с TrustZone. Рассмотрены особенности и примеры практической реализации CAN FD на STM32L5.
напряжение, разумеется. Никак- есть диапазон для данного типа ИС в ТУ, а для конкретного экземпляра определяется только практическим путем. И да, статья в 4/2005 была про PIC12F675, а название темы немного отличается
Лучше готовые внешние ЦАП и/или АЦП использовать (из комплектации к адуринкам). Ранее метод применялся у ПИК МК - но там иное, чем у mcs51 построение выходных каскадов портов - для классики может не пойти. Относительно ЦАП на основе ШИМ попроще - там любой МК сгодится. Есть и современные от китайцев STC15F204EA с АЦП на борту (из "прощедоступных")
" Входной параметр в R2 (0-3) по кругу при каждом вызове
MOV R1,#18h что содержится в регистре R18 неизвестно MOV R3,#8 M1: MOV A,@R1 CPL A RL A RL A ANL A,#0Ch ADD A,R2 RL A ANL A,#1Eh MOVP A,@A что содержится в таблице на текущей странице памяти программ неизвестно также неизвестна сама текущая страница данного кода MOV R0,A возможно вариант стека для акумулятора MOV A,@R1 читаем регистр CPL A инверсия с последующим умножением на 4 RR A RR A ANL A,#3Fh Забиваем единицами все, кроме 6 и 7 бита INC A похоже на дополнение до двух, но с промежуточным умножением после инверсии ADD A,R0 предыдущее значение складывается с результатом MOV @R1,A засылается в регистр INC R1 и переходим на следующий элемент массива DJNZ R3,M1 ..." Возможно какой-то вариант CRC контроля с привлечением таблицы (изврат на тему CRC8 или подобного) или кодирования с определенным ключом обработки... Как версия улучшенной "контрольной суммы" ибо обрабатывается массив данных в ОЗУ с табличным ключом (табличная CRC??).
3я строка сверху с начальном сообщении указывает диапазон адресов внутри которых данный кусок находится - так как точно начального адреса не знаю (кусок выдран из более объемного кода). А как имеющийся ассемблер заставить генерить *.lst я ещё не думал. С таблицей он в одном сегменте.
Без адреса команды MOV R1,#18h обсуждение не имеет смысла. (собственно более необходим абсолютный адрес для MOVP A,@A) Т.е. NNNN mov..... где NNNN значение адреса перого байта команды. Раскладка адресов(как я уже писал ранее в другой теме) может быть получена или по *.hex файлу или по *.bin файлу (образ ПЗУ) без особого труда (делаем прожку на basic или на чем посовременнее). А сама страница памяти - это 0х0200:0х02FF, а не 0284h - 2FFh как у Вас. Диапазон целевых адресов 000хххх0 на текущей странице памяти программ 0-0x1E (0-30). Но это всего лишь компонента обработки в которой участвует 8 байт массива в ОЗУ (0x18-0x20) и компонент из R2. Задача прожки поменять значение массива согласно текущего байта данных, сменного ключа из R2 и ключа из таблицы в соответствии с значением первой части обработчика.
Так уже сказано - вариант то-ли шифровальщика, то-ли генератора контрольного кода для сравнения блока из 8 байт. Назначение определяется работой кода и устройством (общей программой и схемотехникой конкретного устройства) где тот пакет данных используется (откуда загружается и куда затем выдается).
Но - для каждого из 4х последовательных вызовов с разными входными значениями в R2 исходное содержимое 8 ячеек памяти одинаково (независимо от их содержимого после предыдущего вызова). В них не может содержаться значение 0. Полученные 32 байта есть полезная обрабатываемая информация.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения