Декодеры. Декодеры Дешифратор двоичного кода в семисегментный

Для отображения десятичных и шестнадцатеричных цифр часто используется семисегментный индикатор. Изображение семисегментного индикатора и название его сегментов приведено на рисунке 3.

Рисунок 3.3 Изображение семисегментного индикатора и название его сегментов.

Для изображения на таком индикаторе цифры 0 достаточно зажечь сегменты a, b, c, d, e, f. Для изображения цифры "1" зажигают сегменты b и c. Точно таким же образом можно получить изображения всех остальных десятичных или шестнадцатеричных цифр. Все комбинации таких изображений получили название семисегментного кода.

Составим таблицу истинности дешифратора, который позволит преобразовывать двоичный код в семисегментный. Пусть сегменты зажигаются нулевым потенциалом. Тогда таблица истинности семисегментного дешифратора примет вид, приведенный в таблице 3.2. Конкретное значение сигналов на выходе дешифратора зависит от схемы подключения сегментов индикатора к выходу микросхемы. Эти схемы мы рассмотрим позднее, в главе, посвящённой отображению различных видов информации.

Таблица 3.2. Таблица истинности семисегментного декодера.

Входы Выходы
a b c d e f g

В соответствии с принципами построения схемы по произвольной таблицы истинности, получим принципиальную схему семисегментного дешифратора (декодера), реализующего таблицу истинности, приведённую в таблице 2. На этот раз не будем подробно расписывать процесс разработки схемы. Полученная принципиальная схема семисегментного дешифратора приведена на рисунке 3.4.


Рисунок 3.4. Принципиальная схема семисегментного дешифратора (декодера).

Для облегчения понимания принципов работы схемы на выходе логических элементов "И" показаны номера строк таблицы истинности, реализуемые ими.

Например, на выходе сегмента a логическая единица появится только при подаче на вход комбинации двоичных сигналов 0001 (1) и 0100 (4). Это осуществляется объединением соответствующий цепей элементом "2ИЛИ". На выходе сегмента b логическая единица появится только при подаче на вход комбинации двоичных сигналов 0101 (5) и 0110 (6), и так далее.

В настоящее время семисегментные дешифраторы выпускаются в виде отдельных микросхем или используются в виде готовых блоков составе других микросхем. Условно-графическое обозначение микросхемы семисегментного дешифратора приведено на рисунке 3.5.

Дешифраторы, как и шифраторы преобразуют один код на своем входе в другой код, который и подают на выход. Одним из частных случаев использование дешифратора является его совместная работа с семисегментным индикатором. Обычно дешифратор преобразует двоичное число в сигнал на одном из своих выходов, но для этого конкретного случая используются специальные дешифраторы, которые преобразуют двоичный код на своем входе в код семисегментного индикатора на выходе. Работу данного типа приборов рассмотрим на примере микросхемы К514ИД2 .

Данная микросхема имеет четыре входа D1-D4, и семь выходов: a, b, c, d, e, f, g, для подключения к соответствующим сегментам семисегментного индикатора. Вывод R - разрешение работы, для того, что бы дешифратор реагировал на сигналы на своих входах, на выводе R должен быть высокий логический уровень.

Следует особо отметить, что питание подается на 14 выход микросхемы К514ИД2, общий провод 6. Питание осуществляется от стабилизированного источника питания напряжением 5В.

Счетные импульсы будем подавать с мультивибратора , счет их будет осуществляться счетчиком с недвоичным коэффициентом пересчета , к выводам которого подключен дешифратор семисегментного индикатора.

Данная электрическая принципиальная схема получается достаточно сложной, поэтому, даже будучи правильно собранной, она иногда отказывается правильно работать из-за обилия штыревых непаянных соединений. Как говориться, электроника это наука о контактах. Очень многие проблемы в электротехнике и электронике сводятся к тому, что контакт есть там, где не надо или контакта нет там, где надо.

Опыт показал, что применение в лабораторных работах выпускаемых промышленностью семисегментных индикаторов неоправданно из-за того, что такие индикаторы обладают недостаточной «студентоустойчивостью», при неправильном подключении они быстро выходят из строя. Поэтому были разработаны модули, имитирующие работу семисегментных индикаторов на базе светодиодов АЛ307Б . По этой причине цифры на индикаторе выглядят несколько непривычно, но общий принцип работы семисегментного индикатора уяснить вполне можно.

Видео

Литература

  1. https://kiloom.ru/spravochnik-radiodetalej/microsxema/k514id2-kr514id2.html
  2. http://ru.pc-history.com/mikrosxema-k514id2.html
  3. https://eandc.ru/pdf/mikroskhema/k514id2.pdf
  4. Ямпольский В.С. Основы автоматики и электронно-вычислительной техники - М. Просвещение, 1991
  5. http://сайт/publ/nachinajushhim/multivibrator_na_ehlementakh_i_ne/5-1-0-1366
  6. http://сайт/publ/nachinajushhim/schetchik_na_mikroskheme/5-1-0-1372
  7. http://сайт/publ/nachinajushhim/samodelnye_moduli_dlja_izuchenija_mikroskhem/5-1-0-1352

Семисегментный код необходим для отображения на цифровых индикаторах значений цифр от 0 до 9. Семисегментный, потому что цифры отображаются так называемыми сегментами, которых семь штук. Ниже приведена табличка соответствия между двоичным и семисегментным кодами.

Цифра Двоичный код Семисегментный код
a b c d e f g

Во, блин. Ну, в общем, на логике показывать не буду. Поскольку счетчик нам уже знаком , посмотрим на работу его совместно с дешифратором. Схема реальная, т. е. можно повторить.

Как видно, ничего сложного, все элементы схемы нам знакомы . На элементах DD1.1, DD1.2 (К561ЛА7) собран генератор тактовых импульсов. Резистор R1 и кондер С1 задают частоту следования импульсов. Формулу определения частоты следования я не помню, вспомню, напишу. Можно, если не в лом, определить эту самую частоту методом "научного тыка". В любом случае, если вместо постоянного резика воткнуть переменный, то частоту можно будет регулировать в некоторых пределах. С выхода генератора импульсы поступают на счетчик, выполненный на DD2. Это реверсивный двоично-десятичный счетчик с предустановкой. Вход ±1 определяет напрвление счета, вход 2/10 - режим (двоичный или десятичный). Вход V предназначен для разрешения записи в счетчик состояния информационных входов D0 - D3. Конкретно этому счетчику (561ИЕ14, 564ИЕ14) надо подать уровень лог. 1. Резик R2 и кондер C2 образуют дифференцирующую цепь. При включении питания короткий импульс на входе V, формируемый дифференцирующей цепью, разрешает запись в счетчик состояния входов D0 - D3. Поскольку эти выводы соединены с общим проводом, в счетчик записывается 0000, т. е. он обнуляется. Тактовый генератор фигачит импульсы, счетчик их считает и с его выходов 1-2-4-8 результат счета поступает на вход дешифратора DD3 (514ИД1). Это дешифратор двоичного кода в семисегментный. С выходов дешифратора сигналы (согласно второй таблице) поступают на входы семисегментного индикатора HL1, который кажет эту инфу, т. е. ряд цифр от 0 до 9. Внутри микрухи DD3 стоит DC. Это от буржуйского Decoder – по-нашински дешифратор. На выходе переноса p (выв. 7) счетчика DD2 при его переполнении формируется сигнал. Если взять следующие узлы: DD2, DD3, HL1 и влепить их снизу счетчика DD2, аналогично соединить соответствующие входы, кроме С, выход переноса (выв. 7) предыдущего счетчика соединить со входом С следующего, то получим многозначный индикатор. После отсчета 10 импульсов первым счетчиком, второй переключится на 1. Через следующие 10 импульсов второй счетчик увеличится еще на 1 и так далее. По такому принципу деления частоты работают, например, часы. Единственное, что там коэффициент пересчета другой (не 10, а 6), все-таки в минуте 60 сек. Этот счетчик тоже можно заставить считать до 6. Берем лог. элемент И, его входы соединяем с выходами 2-4 (выв. 11 и 14), а выход подключаем к дифференцирующей цепочке R2C2. Тогда при достижении числа 6 (0110) уровень лог. 1 на выходе элемента И сформирует не без помощи цепи R2C2 импульс, который запишет в счетчик 0000. И еще, увеличивая частоту генератора цифири будут бежать быстрее, например вот так:

Мультиплексор - это устройство, которое осуществляет выборку одного из нескольких входов и подключает его к своему выходу, в зависимости от состояния двоичного кода. Другими словами, мультиплексор - переключатель сигналов, управляемый двоичным кодом и имеющий несколько входов и один выход. К выходу подключается тот вход, чей номер соответствует двоичному коду. Ну и навороченное определение: мультиплексор - это устройство, преобразующее параллельный код в последовательный.

Структуру мультиплексора можно представить различными схемами, но более понятна, на мой взгляд, вот эта:

Рис. 1 - Структура мультиплексора

Самая большая хренотень есть не что иное, как элемент И-ИЛИ. Конкретно здесь элемент 4-х входовый. Ну а квадратики с единичками внутри, если кто не помнит, инверторы. Разберем выводы. Те, что слева, а именно D0-D3, называются информационными входами. На них чего-нибудь подают. Входы посередке, а именно А0-А1, называются адресными входами. Вот сюда именно и подается двоичный код, от которого зависит, какой из входов D0-D3 будет подключен к выходу, на этой схеме обозначенному как Y. Вход С, черт его знает, нафига он здесь. Вроде бы как разрешение работы, а может просто для понта. Ну его в баню. На схеме еще есть входы адреса с инверсией. Так вот они тоже показаны здесь для понта. На этом рисунке показан четырехвходовой, или как еще его называют, 4Х1 мультиплексор. Потому и адресных входов всего 2. Как нам известно, максимальное число переменных определяется как 2 n , где n - разряд кода. Здесь мы видим, что переменных четыре штуки, а значит разряд будет равен 2 (2 2 = 4). Для пояснения принципа работы этой схемы посмотрим на табличку истинности:

A1 A0 Y
D0
D1
D2
D3

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

Микросхемой мультик обозначается вот так:

Рис. 2 - Мультиплексор

Вообще, мультиплексоров всяких дофига. Есть и сдвоенные четырехвходовые, восьмивходовые, 16-ти входовые, счетверенные двухвходовые и пр. Тот, что на рисунке сделан от фонаря.

Демультиплексор . Демультиплексор - устройство, обратное мультиплексору. Т. е., у демультиплексора один вход и куча выходов. Двоичный код определяет, какой выход будет подключен ко входу. Другими словами, демультиплексор - это устройство, которое осуществляет выборку одного из нескольких выходов и подключает его к своему входу или, это переключатель сигналов, управляемый двоичным кодом и имеющий один вход и несколько выходов. Ко входу подключается тот выход, чей номер соответствует состоянию двоичного кода. И навороченное определение: демультиплексор - это устройство, которое преобразует последовательный код в параллельный.

Обычно в качестве демультиплексора используют дешифраторы двоичного кода в позиционный, в которых вводят дополнительный вход стробирования. Из-за схожести структур мультиплексора и демультиплексора в КМОП сериях есть микросхемы, которые одновременно являются мультиплексорром и демультиплексором, смотря с какой стороны подавать сигналы, например, К561КП1, работающая как переключатель 8х1 и переключатель 1х8 (то бишь, как мультиплексор и демультиплексор с восемью входами или выходами). Кроме того, в КМОП микросхемах помимо переключения цифровых сигналов (лог. 0 или 1) существует возможность переключения аналоговых. Другими словами, это переключатель аналоговых сигналов, управляемый цифровым кодом. Такие микросхемы называются коммутаторами. К примеру, с помощью коммутатора можно переключать сигналы, поступающие на вход усилителя (селектор входов). Вот напоследок простенькую схемку селектора входов УМЗЧ мы и рассмотрим. Построим ее, ну скажем, с использованием триггеров и мультиплексора.

Рис. 3 - Селектор входных сигналов

Вот такая нехитрая схемка. Итак, разберем работу и деталюшки. На триггерах микросхемы DD1 собран кольцевой счетчик нажатий кнопки разрядностью 2 (два триггера - 2 разряда). Двухразрядный двоичный код поступает на адресные входы D0-D1 микросхемы DD2. Микросхема DD2 представляет собой сдвоенный четырехканальный коммутатор. В соответствии с двоичным кодом к выходам микросхемы А и В подключаются входы А0-А3 и В0-В3 соответственно. Элементы R1, R2, C1 устраняют дребезг контактов кнопки. Дифференцирующая цепь R3C2 устанавливает триггеры в нулевое состояние при включении питания, при этом к выходу подключается первый вход. При нажатии на кнопку триггер DD1.1 переключается в состояние лог. 1 и к выходу подключается второй вход и т. д. Перебор входов идет по кольцу, начиная с первого.

С одной стороны просто, с другой немного неудобно. Черт его знает, сколько раз нажали на кнопку после включения и какой вход подключен к выходу. Хорошо бы поставить индикатор подключенного входа. Вот тут-то и пригодится семисегментный дешифратор . Нажимаем ссылочку, вспоминаем семисегментный дешифратор и смотрим на схемку (там, где циферки бегут). Берем дешифратор и индикатор, обрубаем счетчик и другую галиматью, переносим дешифратор с индикатором на схему коммутатора и первые два входа дешифратора (на схеме обозначен как DD3), т. е. 1 и 2 (выв. 7 и 1) подключаем к прямым выходам триггеров DD1.1 DD1.2 (выв. 1 и 13). Входы дешифратора 4 и 8 (выв. 2 и 6) кидаем на корпус (т. е. подаем лог. 0). Все! Индикатор будет показывать состояние кольцевого счетчика, а именно циферки от 0 до 3. Цифиря 0 соответствует первому входу, 1 - 2-му и т. д.

Регистр (от буржуйского to register - регистрировать) - это цифровой узел, предназначенный для записи и хранения числа. Некоторые регистры могут преобразовывать информацию из последовательной формы в параллельную и наоборот. Для начала рассмотрим регистр хранения.

В этой статье мы поговорим о цифровой индикации.
Семисегментные светодиодные индикаторы предназначены для отображения арабских цифр от 0 до 9 (рис.1).

Такие индикаторы бывают одноразрядные, которые отображают только одно число, но семисегментных групп, объединенных в один корпус может быть и больше (многоразрядные). В этом случае цифры разделяются децимальной точкой (рис.2)


Рис.2.

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

Светодиодные индикаторы бывают двух типов.
В первом из них все катоды, т.е. отрицательные выводы всех светодиодов, объединены вместе и для них выделен соответствующий вывод на корпусе.
Остальные выводы индикатора соединены к аноду каждого из светодиодов (рис.3, а). Такая схема называется «схема с общим катодом».
Также существуют индикаторы, у которых светодиоды каждого из сегментов подключены по схеме с общим анодом (рис.3, б).


Рис.3.

Каждый сегмент обозначен соответствующей буквой. На рисунке 4 представлено их расположение.

Рис.4.

В качестве примера рассмотрим двухразрядный семисегментный индикатор GND-5622As-21 красного свечения. Кстати существуют и другие цвета, в зависимости от модели.
С помощью трехвольтовой батарейки можно включать сегменты, а если объединить группу выводов в кучку и подать на них питание, то можно даже отображать цифры. Но такой метод является неудобным, поэтому для управления семисегментными индикаторами используют регистры сдвига и дешифраторы. Также, нередко, выводы индикатора подключаются напрямую к выходам микроконтроллера, но лишь в том случае когда используются индикаторы с низким потреблением тока. На рисунке 5 представлен фрагмент схемы с использованием PIC16F876A.


Рис.5.

Для управления семисегментным индикатором часто используется дешифратор К176ИД2.
Эта микросхема способна преобразовать двоичный код, состоящий из нулей и единиц в десятичные цифры от 0 до 9.

Чтобы понять, как все это работает, нужно собрать простую схему (рис.6). Дешифратор К176ИД2 выполнен в корпусе DIP16. Он имеет 7 выходных вывода (выводы 9 - 15), каждый из которых предназначен для определенного сегмента. Управление точкой здесь не предусмотрено. Также микросхема имеет 4 входа (выводы 2 - 5) для подачи двоичного кода. На 16-й и 8-ой вывод подается плюс и минус питания соответственно. Остальные три вывода являются вспомогательными, о них я расскажу чуть позже.


Рис.6.

DD1 - К176ИД2
R1 - R4 (10 - 100 кОм)
HG1 - GND-5622As-21

В схеме присутствует 4 тумблера (можно любые кнопки), при нажатии на них на входы дешифратора подается логическая единица от плюса питания. Кстати питается сама микросхема напряжением от 3 до 15 Вольт. В данном примере вся схема питается от 9-вольтовой "кроны".

Также в схеме присутствует 4 резистора. Это, так называемые, подтягивающие резисторы. Они нужны, чтобы гарантировать на логическом входе низкий уровень, при отсутствии сигнала. Без них показания на индикаторе могут отображаться некорректно. Рекомендуется использовать одинаковые сопротивления от 10 кОм до 100 кОм.

На схеме выводы 2 и 7 индикатора HG1 не подключены. Если подключить к минусу питания вывод DP, то будет светиться децимальная точка. А если подать минус на вывод Dig.2, то будет светиться и вторая группа сегментов (будет показывать тот же символ).

Входы дешифратора устроены так, что для отображения на индикаторе чисел 1, 2, 4 и 8 требуется нажатие лишь одной кнопки (на макете установлены тумблеры, соответствующие входам D0, D1, D2 и D3). При отсутствии сигнала отображается цифра ноль. При подаче сигнала на вход D0 отображается цифра 1. И так далее. Для отображения других цифр требуется нажатие комбинации тумблеров. А какие именно нужно нажимать нам подскажет таблица 1.


Таблица 1.

Чтобы отобразить цифру "3" необходимо логическую единицу подать на вход D0 и D1. Если подать сигнал на D0 и D2, то отобразится цифра "5" (рис.6).


Рис.6.

Здесь представлена расширенная таблица, в которой мы видим не только ожидаемую цифру, но и те сегменты (a - g), которые составят эту цифру.


Таблица 2.

Вспомогательными являются 1, 6 и 7-ой выводы микросхемы (S, M, К соответственно).

На схеме (рис.6) 6-ой вывод "М" заземлен (на минус питания) и на выходе микросхемы присутствует положительное напряжение для работы с индикатором с общим катодом. Если используется индикатор с общим анодом, то на 6-ой вывод следует подать единицу.

Если на 7-ой вывод "К" подать логическую единицу, то знак индикатора гасится, ноль разрешает индикацию. В схеме данный вывод заземлен (на минус питания).

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

Стоит заметить одну интересную вещь: мы знаем, что тумблер D0 включает цифру "1", а тублер D1 цифру "2". Если нажать оба тумблера, то высветится цифра 3 (1+2=3). И в других случаях на индикатор выводится сумма цифр, составляющих эту комбинацию. Приходим к выводу, что входы дешифратора расположены продуманно и имеют очень логичные комбинации.

Также вы можете посмотреть видео к этой статье.

Семисегментный индикатор: программирование работы

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

Перевод двоичного кода десятичного числа в код семисегментного индикатора

Давайте еще раз посмотрим на схему подключения семисегментного индикатора к микроконтроллеру:

На этой схеме выводы порта PB0…..PB7 подключены к выводам индикатора в определенной последовательности. Выводу PB0 соответствует сегмент «А» и далее соответственно по порядковому номеру вывода порта и по алфавиту выводов индикатора, при этом десятичная точка «dp» подсоединена к выводу порта PB7 . Сейчас и далее мы будем рассматривать схемы подключения для индикаторов с общим катодом, а при необходимости я буду вставлять дополнения для индикатора с общим анодом.

Для того, чтобы высветить определенную цифру на индикаторе, необходимо на соответствующих выводах порта микроконтроллера установить логическую единицу

На рисунке выше, черные цифры от 0 до 7 — выводы порта, зеленные латинские буквы — выводы светодиодного индикатора, красные нули — логические уровни на выходах порта (в данном случае логический уровень «0»). Для того, чтобы, к примеру, высветить на индикаторе цифру «4» и зажечь десятичную точку нам необходимо подать логическую 1 на выводы индикатора B, C, F, G и dp, что соответствует подачи логической единицы на выводы порта 1,2,5,6 и 7:

Поэтому, первое что нам необходимо сделать, это определить соответствие каждой десятичной цифре двоичного числа, которое надо выдавать на выход порта микроконтроллера для зажигания соответствующих сегментов индикатора.
Для «четверки» мы уже определили такую комбинацию = 1110 0110, что соответствует шестнадцатиричному числу 66h, определяем и для остальных цифр:

Операция, которую мы проделали, называется переводом двоичного кода десятичного числа в код семисегментного индикатора .

Данная таблица дана для семисегментных индикаторов с общим катодом (сегмент индикатора зажигается логическим уровнем «1»). Для индикаторов с общим анодом (сегмент индикатора зажигается логическим уровнем «0») двоичные коды необходимо проинвертировать (поменять 0 на 1, и наоборот) и заново вычислить соответствующие значения в шестнадцатиричной системе.

Программирование одноразрядного семисегментного индикатора

Использование в конструкции одноразрядного индикатора может потребоваться в разных случаях. К примеру, собираем кодовый замок и есть необходимость высвечивать цифру соответствующую нажатой кнопки, или в охранной сигнализации высвечивать номер сработавшего датчика. Так что сфера применения одноразрядных индикаторов приличная.
Организацию вывода цифр на одноразрядный индикатор мы оформим в виде подпрограммы: «Вывод информации на одноразрядный семисегментный светодиодный индикатор» , так, чтобы затем эту подпрограмму с минимальными изменениями можно было использовать в любой программе.

Алгоритм подпрограммы:

1. Инициализация индикатора (подпрограмма)
— настройка порта, к которому подключен индикатор на вывод информации
— запись кодов семисегментного индикатора, соответствующих десятичным цифрам в определенные ячейки памяти
Данная подпрограмма должна вызываться отдельно из основной программы
2. Вход в основную подпрограмму
3. Основная часть
— считываем текущую цифру
— определяем какой код семисегментного индикатора соответствует текущей десятичной цифре
— записываем определенный код индикатора в порт микроконтроллера
4. Выход из подпрограммы

Для оформления программы в виде подпрограммы нам необходимо проделать ряд действий:
1. Присваиваем имя подпрограмме инициализации индикатора — Ini_Indiкator_1 (к примеру)
2. Присваиваем имя основной подпрограмме — Indicator_1
3. Присваиваем имена переменным SRAM в которых будут храниться коды семисегментного индикатора, к примеру:
D0 (для цифры 0, и так далее), D1, D2, D3, D4, D5, D6, D7, D8, D9
— присваиваем имя переменной в которой будет хранится адрес ячейки памяти (D0) с кодом первой цифры (0) — D0_9
4. Присваиваем имя переменной, в которой будет хранится текущая цифра, которую необходимо вывести на индикатор. В эту переменную основная программа будет записывать вычисленные данные (цифры), которые мы выводим на индикатор — Data (к примеру).

Вот как, к примеру, в Algorithm Builder (остальные примеры тоже для этой программы), объявляются имена переменных в памяти программ (ОЗУ, SRAM):

В графе «Name» перечислены все имена переменных. В графе «Adress» запись «@D0_9» означает, что в переменной D0_9 хранится адрес первой переменной (D0)

Подпрограмма инициализации индикатора (подпрограмма вызывается из основной программы до обращения к подпрограмме вывода информации на индикатор):

А теперь давайте посмотрим основную часть программы и расшифруем ее:

Основная программа записала в назначенную нами переменную Data текущую цифру (для примера — цифра 6 ) и для вывода ее на индикатор вызвала подпрограмму Indikator_1 .

Работа подпрограммы:
— Содержимое переменной Data записывается в рабочий регистр R20 , теперь в регистре число 6 (рабочий регистр может быть любой)
— Допустим, первая переменная с кодом цифры 0 у нас находится в ячейки памяти по адресу 100 . На самом деле мы не знаем адреса ячеек памяти где хранятся значения D0…D9 , но они точно следуют друг за другом. Поэтому была назначена переменная D0_9 , в которой, как мы назначили, хранится адрес ячейки памяти D0 данный момент адрес =100 ).
— Следующей командой:
@D0_9 —> Y мы загружаем в двойной регистр Y адрес переменной D0 и получаем, что в регистре Y записалось число — 100 .
— Следующей командой:
Y + R20 мы складываем число 100 с числом 6 , результат = 106 при этом сохраняется в двойном регистре Y .
— Следующей командой:
[Y] —> R20 мы записываем содержимое ячейки памяти, расположенной по адресу, который записан в двойном регистре Y (106) , а по этому адресу у нас расположена ячейка памяти переменной D6 . Теперь в рабочем регистре R20 записано число 7Dh код семисегментного индикатора для вывода цифры 6 .
— Следующей командой:
R20 —> PortB мы выводим содержимое R20 в порт PB высвечиваем цифру 6
— Возвращаемся из подпрограммы


Top