![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| quarz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 7.1.2005 Репутация: нет Всего: 3 |
У меня есть переменная. 1 байт. Ее мне нужно вывести на семисегментный индикатор.
Я знаю как перекинуть бинарную переменную на индикатор если она не больше .9
а если больше, то придется подключать второй индикатор, третий, и так до 255? |
|||
|
||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: нет Всего: 2 |
Что то я не понял твой вопрос. Если больше, чем 9, то эту обнуляешь, а к старшей +1. А потом уже на дешифрацию.
|
|||
|
||||
| PILOT |
|
||||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Это преобразование в семисегментный код:
Это преобразование из бинарного в BCD формат (для вывода на 7LEDs):
СУВ. -------------------- тут могла быть Ваша реклама... |
||||
|
|||||
| quarz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 7.1.2005 Репутация: нет Всего: 3 |
PILOT насколько я понимаю это не пиковский асм. Как эта штука работает? Или хотя бы объясни, где в этом коде исходный регистр, который мы преобразовываем и в каких переменных выходные данные? Что значит команда Ldi? Покопался, аналогов у i286 асма не нашел.
|
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Это ассемблер AVR.
Вот документация с алгоритмами. СУВ. Присоединённый файл ( Кол-во скачиваний: 12 )
AVR204_BCD.pdf-------------------- тут могла быть Ваша реклама... |
|||
|
||||
| quarz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 7.1.2005 Репутация: нет Всего: 3 |
Спасибо буду разбираться
|
|||
|
||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: нет Всего: 2 |
А вот какой способ переделать байт в несколько десятичных цифр придумал я. Это метод может и не очень крассив с точки зраения алгоритма, он он работает. На вход нашей процедуре подаем байт, который и нужно преобразовать. Это должна быть копия стчетчика TMR0. Еще должно быть например 3 переменные, хранящие в себе двоичное значение цифр, которые нужно отобразить на индикаторе.
Мы инкрементируем полученный байт дотех пор, пока он не будет равн нулю. То есть столько раз, какое хранится в байте число. А в теле цикла инкрементируем самую младшую переменную индикатора, пусть это будет ind_1 - переменная первого индикатора. А после инкремента проверяем на равно сть 10. Если это так, то мы ее обнуляем и инкрементируем более старшую и опять проверяем на 10 и так до тех пор, пока не кончатся разряды. То есть по сути это то же, что и следить за таймером и при переходе за 9 увеличивать более старший разряд. Но может получиться так, что Он не успеет понять, что это 10 и число проскочит за 10. И будет равно, например, 16. Тогда он все равно его обнулит, а старший инкрементирует, но 6 импульсов будут потеряны. И точность вашего частотомера будет никакой. А так, мы даже не пытаемся следить за таймером, а уже после его работы смотрим сколько он насчитал. То есть прокручиваем то же самое, но в темпе, который удобен для микроконтроллера. Как ускоренная съемка и замедленный просмотр. Никто и не пытается что то увидеть, пока это событие снимает камера, а потом, во время просмотра люди прокручивают по кадрам, как им удобно. |
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Описанный способ:
1) задействует таймер, а этого, мягко скажем, лучше не делать. 2) какой-то сложный... гораздо проще вычитать 10, 100, 1000 и т.д. в зав-ти от разрядности. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |