Страница 2 из 2
Добавлено: Пт янв 09, 2009 12:09:31
levon66
За вчера понял почему нужно будет переводить в 2-10 системму. )))))Однако когда это делать? Т.е. когда вычислил уже все значения и перед самым выводом на индикаторы? или с самого начала-снял с ацп и сразу переводим, а потом все операции с числом в 2-10 системе. И еще можно спросить: Точку десятичную на индикаторе просто засветил. Подал опорное на ацп 5.12 вольта. Тогда при выходе с ацп 1111111 это должно отображаться как 5.0 на индикаторе. Я эти 11111111 (256) делю на 5 и получаю как 50. А если десятичная точка горит всегда-будет 5.0. Значит нужно выводить число 50...но как? в 2-10 системе это будет 1 байт: старшие 4 бита-число 5, младшие 4-число 0. И дальше как? занулять младшие, выводить отдельно старшие на первый разряд индикатора, потом наоборот. Или как поступить?
Добавлено: Пт янв 09, 2009 13:36:37
NiTr0
levon66 писал(а):За вчера понял почему нужно будет переводить в 2-10 системму. )))))Однако когда это делать? Т.е. когда вычислил уже все значения и перед самым выводом на индикаторы?
Да.
levon66 писал(а):Подал опорное на ацп 5.12 вольта. Тогда при выходе с ацп 1111111 это должно отображаться как 5.0 на индикаторе.
Должно отображаться как 5.1
levon66 писал(а):в 2-10 системе это будет 1 байт: старшие 4 бита-число 5, младшие 4-число 0. И дальше как? занулять младшие, выводить отдельно старшие на первый разряд индикатора, потом наоборот. Или как поступить?
Отдельно выводятся старшие биты, отдельно - младшие. Стоит сделать динамическую индикацию кстати (выдается 4 бита старших на порт и подается напряжение на общий вывод диодов старшего разряда, после - обмен байтов внутри регистра, и вывод на порт + включение младшего разряда, интервал - скажем в 10 мсек между переключениями)
Добавлено: Пт янв 09, 2009 13:40:22
levon66
а отдельно, то есть побитовую адресацию делать??? то есть класть нужно будет эти результаты туда, откуда возможна побитовая адресация?
Добавлено: Пт янв 09, 2009 18:15:54
levon66
на счет страших и младших понял...читаются видимо только старшие.
а как можно сделать этот перевод из двоичной системы в двоично-десятичную? команд таких нет. а поиски написанных программ с такими оперциями не помогают. мысль о том, что каждой комбинации bin сопоставить 2-10 число это как-то пугает.
и еще вопрос. как реализовать можно вычисление среднего из 10 последних показаний. Есть мысль, что есть 10 разрядов. Вычислил среднее, потом получил новое измерение-записал вместо 1-го из тех десяти, вычислил среднее. ПОотом получил измерение записал вместо второго, вычислил и т.д. Но как это в асме сделать. Это ведь не паскаль с циклами обычными. Как-то может связываться с SP???
Добавлено: Пт янв 09, 2009 19:06:54
levon66
На счет перевода из 2 в 2-10 систему понял. но как программно реализовать можно вычисление среднего из 10 последних показаний. Есть мысль, что есть 10 разрядов. Вычислил среднее, потом получил новое измерение-записал вместо 1-го из тех десяти, вычислил среднее. ПОотом получил измерение записал вместо второго, вычислил и т.д. Но как это в асме сделать. Это ведь не паскаль с циклами обычными. Как-то может связываться с SP???
________________
а задача вот какая:с ацп с интервалом в 1с выводить-текущее, мин, макс, и среднее из 10 последних. Индикаторы 4 по 2 разряда. а еще кнопки пуск и сброс предусмотреть.
Добавлено: Пт янв 09, 2009 19:35:21
NiTr0
levon66 писал(а): но как программно реализовать можно вычисление среднего из 10 последних показаний.
Циклический буффер в памяти, допустим с адресами с 33 по 42 байт... Который заполняется по циклу, и при каждом выводе показаний - все значения из него суммируются.
Хотя рациональнее бы было делать усреднение 8 или 16 измерений.
P.S. суммирование нужно делать 16бит, подготовку к выводу на экран (деление на 5 и т.д.) - уже непосредственно перед выводом, меньше погрешность из-за рассчетов будет.
Добавлено: Пт янв 09, 2009 19:39:54
levon66
можно немного подробней и о суммировании и о цикле...пожалуйста
Добавлено: Пт янв 09, 2009 19:48:18
NiTr0
Проблема просуммировать N ячеек из диапазона памяти, а потом результат поделить на N?
Или проблема работы с указателем на ячейку памяти данных (mov a, @r0) - каждый отсчет увеличивать указатель, а при достижении 43 - менять на 33?