Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Чт фев 15, 2018 12:17:04

А простите за дурацкий вопрос. А как на ассемблере устроить десятичный счет последовательно от 0000 до 9999. Чего совсем нет никаких хороших идей
Пробовал последовательно инкрементировать 4 ячейки памяти (каждую через 9 циклов) с CJNE через 9, но например, при переходе от 0019 к 0020 сначала образуется 0009, и только в следующем цикле образуется 0020
Пробовал 16-битное сложение с DA A, но это работает ужасно, пропускает числа.
Пробовал 16-битное сложение с переводом результата в BCD, проверкой в десятичных числах, но результат громоздкий и тормозной.
Наверняка есть есть какой-то математический метод, но с двоичной арифметикой я как бы не очень.
Посоветуйте чего нибудь.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Чт фев 15, 2018 12:39:02

Инкремент и сложение по реакции флагов могуть отличаться (на память - шклерозь) а посему
DA A неверно сработает. Нужно использовать простое сложение с единицей.
Или алгоритм математики аналогично DA A и соответственно реакции флагов результата.
16-разрядное не применимо - обрабатываем два байта - один с единицами и десятками, другой с сотнями и тысячами.
8)

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Чт фев 22, 2018 15:06:09

А как на ассемблере устроить десятичный счет последовательно от 0000 до 9999.


Разделите задачи, у вас их две :
счетчик от 0000 до 9999
и
вывод информации в понятном пользователю виде

счетчик - инкремент младшего байта + сложение старшего байта с битом переноса и контроль достижения максимума.

а вот уже в выводе городите что вам приспичит, вплоть до реализации ITOA на асме...

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Чт фев 22, 2018 15:24:50

если перевод в BCD труден то
Пробовал последовательно инкрементировать 4 ячейки памяти (каждую через 9 циклов) с CJNE через 9, но например, при переходе от 0019 к 0020 сначала образуется 0009, и только в следующем цикле образуется 0020
доводите до совершенства...

Преобразование аналоговых величин ...

Пт май 04, 2018 21:59:03

В журнале Радио как-то публиковалась статья про преобразование аналоговых величин МК. Скрин во вложении. Что имеется в виду под порогом переключения? Напряжение, время??? Как его узнать?
Вложения
1234567.jpg
(103.08 KiB) Скачиваний: 391

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Пт май 04, 2018 22:36:53

напряжение, разумеется. Никак- есть диапазон для данного типа ИС в ТУ, а для конкретного экземпляра определяется только практическим путем. И да, статья в 4/2005 была про PIC12F675, а название темы немного отличается

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сб май 05, 2018 06:34:45

Лучше готовые внешние ЦАП и/или АЦП использовать (из комплектации к адуринкам).
Ранее метод применялся у ПИК МК - но там иное, чем у mcs51 построение выходных каскадов портов - для классики может не пойти.
Относительно ЦАП на основе ШИМ попроще - там любой МК сгодится.
Есть и современные от китайцев STC15F204EA с АЦП на борту (из "прощедоступных")
8)

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сб май 05, 2018 11:35:49

напряжение, разумеется. Никак- есть диапазон для данного типа ИС в ТУ

Например, в статейном варианте: 25 Вольт, мВ? И разве на импортные микросхемы есть ТУ? И как практически тогда определить?

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс май 06, 2018 14:55:44

где Вы в той формуле увидели В или мВ? Это т.н. эмпирическая формула. На имп. ИС есть datasheet, это ничего не меняет с точки зрения вопроса

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс май 06, 2018 17:48:38

Так вопрос в том и заключался: какой параметр из даташита для конкретной микросхемы нужно подсталять в формулу? Есть ли у него англоязычное название?

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс май 06, 2018 19:02:12

Этот параметр называется Input Low Voltage.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Пн май 07, 2018 16:20:10

Люди - помогите разобраться с тем что делает данный участок кода :

Именно не что делает каждая команда, а что делает с математической и логической стороны над значениями в ячейках ОЗУ 0018h-001Fh

Код в формате i8035 выполняется в адресах 0284h - 2FFh

Входной параметр в R2 (0-3) по кругу при каждом вызове

MOV R1,#18h
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
RR A
RR A
ANL A,#3Fh
INC A
ADD A,R0
MOV @R1,A
INC R1
DJNZ R3,M1

Начальные значения в ячейках от 1 до FF, 0 не бывает.

С адреса 0200h имеется таблица

db 01h, 00h, 00h, 00h, 00h, 00h, 00h, 00h,
db 01h, 00h, 00h, 00h, 01h, 00h, 00h, 00h,
db 01h, 00h, 01h, 00h, 01h, 00h, 00h, 00h,
db 01h, 00h, 01h, 00h, 01h, 00h, 01h, 00h,
db 01h, 00h, 01h, 01h, 01h, 00h, 01h, 00h,
db 01h, 00h, 01h, 01h, 01h, 00h, 01h, 01h,
db 01h, 01h, 01h, 01h, 01h, 00h, 01h, 01h,
db 01h, 01h, 01h, 01h, 01h, 01h, 01h, 01h

Есть предположение что в коде ошибка. Возможно преднамеренная, но без понимания того, что код делает сложновато.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Пн май 07, 2018 18:50:42

" Входной параметр в 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??).
:dont_know:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вт май 08, 2018 09:25:45

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

Адреса расположения программного кода и таблицы указаны

Предположений что это у меня много - нужно больше конкретики или какая-то свежая мысль.

Что значит каждая команда я знаю.

ANL на забивает единицами - а забивает нулями те поля, где в параметре "0" AND же функция...

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вт май 08, 2018 09:41:11

Wladimir_TS
Че-то я строки с адресами слева от команд в упор и под лупой не наблюдаю...
:wink:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вт май 08, 2018 10:49:19

3я строка сверху с начальном сообщении указывает диапазон адресов внутри которых данный кусок находится - так как точно начального адреса не знаю (кусок выдран из более объемного кода). А как имеющийся ассемблер заставить генерить *.lst я ещё не думал. С таблицей он в одном сегменте.

Над таблицей дан конкретный адрес.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вт май 08, 2018 12:25:11

Без адреса команды MOV R1,#18h обсуждение не имеет смысла.
(собственно более необходим абсолютный адрес для MOVP A,@A)
Т.е.
NNNN mov..... где NNNN значение адреса перого байта команды.
8)
Раскладка адресов(как я уже писал ранее в другой теме) может быть получена или по *.hex файлу или по *.bin файлу (образ ПЗУ) без особого труда (делаем прожку на basic или на чем посовременнее).
8)
А сама страница памяти - это 0х0200:0х02FF, а не 0284h - 2FFh как у Вас.
:tea:
Диапазон целевых адресов 000хххх0 на текущей странице памяти программ 0-0x1E (0-30).
Но это всего лишь компонента обработки в которой участвует 8 байт массива в ОЗУ (0x18-0x20) и компонент из R2.
Задача прожки поменять значение массива согласно текущего байта данных, сменного ключа из R2 и ключа из таблицы в соответствии с значением первой части обработчика.
:wink:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Ср май 09, 2018 15:18:41

Можно считать, что адрес первой команды MOV R1, #18h = 0284h

Основной вопрос как раз с точки зрения назначения куска кода, а не того, как он работает.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Ср май 09, 2018 15:43:30

Так уже сказано - вариант то-ли шифровальщика, то-ли генератора контрольного кода для сравнения блока из 8 байт.
8)
Назначение определяется работой кода и устройством (общей программой и схемотехникой конкретного устройства) где тот пакет данных используется (откуда загружается и куда затем выдается).
:tea:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Ср май 09, 2018 16:34:11

Если-б было все так просто.

Но - для каждого из 4х последовательных вызовов с разными входными значениями в R2 исходное содержимое 8 ячеек памяти одинаково (независимо от их содержимого после предыдущего вызова). В них не может содержаться значение 0. Полученные 32 байта есть полезная обрабатываемая информация.
Ответить