"РЛ" - НАЧИНАЮ Щ ИМ
Например, если выбран банк №2, то
при обращении к регистру ИО факти-
чески доступ будет осуществляться по
адресу
10Ь,
а не
ООЬ.
О том, как вы-
бирается текущий банк регистров мы
поговорим чуть позже.
По адресам, старше
7?Ь,
т.е. с
80И
по
ОРРИ,
располагается область
адресов регистров специальных
функций, т.е. регистров, которые ис-
пользуются для управления имеющи-
мися функциональными узлами мик-
роконтроллера. В родоначальнике
семейства
МСЭ51
по
адресам
80И.
. .ОБРИ ячейки памяти отсутство-
вали, т.е. объем ОЗУ ограничивался
адресами 00.
. .7РИ (
младшая полови-
на адресного пространства,
128
байт), но в нашем микроконтролле-
ре в этой области (
старшей полови-
не адресного пространства)
имеют-
ся ячейки, т.е. общий объем ОЗУ со-
ставляет 256 байт. Получается, по не-
которым адресам (см. рис. 3) воз-
можно обращение сразу к
двум
раз-
личным местам: ячейке памяти или
регистру специальной функции! Что-
бы не возникало путаницы использу-
ются различные способы адресации:
при
прямой
адресации мы попадаем
в регистр специальной функции, а
при
косвенной
- в ячейку ОЗУ. Са-
мое главное, что такое разделение
способов адресации используется
только для
адресов старшей полови-
ны,
а для адресов
0011
...7Р11 при лю-
бом способе адресации происходит
обращение к ячейкам ОЗУ.
Битоадресуемое пространство
представляет собой часть ячеек ОЗУ,
к каждому биту которых возможно не-
зависимое обращение - всего таким
образом доступно 256 битов. Как вид-
но из
рис.
3, часть этого пространства
совпадает с простыми ячейками (ад-
реса
2011
...гБИ), а другая часть - с ре-
гистрами специальных функций (ад-
реса в старшей половине, оканчива-
ющиеся на 0 или 8). При обращении к
битам используется только
н еп о с-
редственная
адресация.
Н ебольш ое отступление. При
разработке Программ значения от-
дельны х битов принято называть
флагами. Видимо, это связано по
аналогии с флагом
-
поднят-опущен,
что интерпретируется ка к значение
бита 1 или 0 соответственно. Мы часто
будем использовать термин флаг в ка-
честве синонима термина бит, при
этом не удивляйтесь сочетаниям “ус-
тановить флаг1' или “сбросить флаг* -
это обозначает “установить бит в 1” и
“установить бит в
0”
соответственно.
Наличие различных способов об-
ращения к отдельным ячейкам (как
к целому байту или к 8-и отдельным
битам) предоставляет разработчику
уникальную гибкость при написании
программ. Однако очень важно по-
мнить, что не сМ'отря на то, что мы
получаем возможность оперировать
отдельными битами, при этом на са-
мом деле АЛУ микроконтроллера
всегда выполняет работу с
целым
байтом,
т.е. извлекает содержимое
целого байта, изменяет значение од-
ного выбранного нами бита, а затем
заносит в ячейку новое значение бай-
та. Такой метод работы получил на-
звание чтение-м одиф икация-за-
пись (RMW - read-modify-write). Воз-
можно, кому-то показалось, что в
столь внимательном рассмотрении
деталей битовых операций нет ника-
кого смысла, однако именно в этой
особенности (которая, кстати, прису-
ща большинству микроконтролле-
ров) кроется источник трудновыявля-
емых ошибок, о чем мы еще обяза-
тельно поговорим.
Давайте теперь рассмотрим реги-
стры специальных функций. Вы ви-
дите по рис. 3, что их всего 33, в то
время как адресное пространство по-
зволяет адресовать 128.
Н ебольш ое отступление. М но-
гие фирмы выпускают микроконтрол-
леры семейства M CS51, у которых
число регистров специальных функ-
ций равно и даже превышает 128 (на-
пример, у микроконтроллеров фир-
мы Silicon Laboratories). При этом при-
меняется метод деления всех регис-
тров на несколько банков, как для
R 0 .
. .R7: сначала выбирается нужный
банк регистров специальных функ-
ций, а затем уже происходит обраще-
ние к ним. Иногда вместо термина
“банк" используют термин “странице!',
что сути не меняет.
Если вы попытаетесь осущ е-
ствить обращение с прямой адреса-
цией к адресу в старшей половине
адресного пространства, по которому
нет регистра специальной функции,
то последствия неизвестны: резуль-
тат чтения не определен, а резуль-
тат записи может вызвать непредс-
казуемы е последствия, поэтому
крайне не рекомендуется это делать!
По адресам 80h, 90h, OAOh и OBOh
расположены порты ввода-вывода
РО.
. .РЗ соответственно. При обраще-
нии по этим адресам мы фактически
работаем с сигналами на выводах
микроконтроллера: при чтении, мы
получаем значение поступающих
(или имеющихся) уровней на выво-
дах, а при записи - устанавливаем
требуемые уровни. Необходимо по-
мнить, что для верного считывания
поступающего на линию порта уров-
ня, мы должны предварительно уста-
новить на ней высокий логический
уровень. И в самом деле, если мы вы-
вели 1, а внешняя цепь удерживает
0 на этой линии, то мы считаем вер-
ное значение - 0. Если же перед счи-
тыванием мы не установим высоко-
го уровня на линии, а оставим низ-
кий, то даже если внешняя схема бу-
дет пытаться установить уровень 1,
-считаем мы все равно 0. Это проис-
ходит в силу ранее указанной особен-
ности строения портов микроконт-
роллера: низкий логический уровень
обеспечивает на линии достаточно
высокое значение втекающего тока,
а высокий - крайне незначительное,
поэтому “пересилить” выведенный на
линию порта 0 внешняя схема не смо-
жет. Заодно отсюда можно сделать
еще один вывод: закорачиванием
любой линии порта на “землю” мы
никогда не выведем из строя микро-
контроллер, а вот замыкание на шину
питания очень опасно.
По адресу 0E0h располагается ре-
гистр-аккумулятор, обозначаемый
АСС (в некоторых командах просто А).
Этот регистр всегда используется при
математических и логических вычис-
лениях в
качестве операнда-приемни-
ка
результата (т.е. операнда, куда по-
мещается результат работы коман-
ды). Кроме того, только с помощью
аккумулятора осуществляется обра-
щение к памяти программ (да-да,
ваша программа может считывать
сама себя @, но, разумеется, не за-
писывать), а так же к внешней памя-
ти данных, если она используется в
устройстве. Для некоторых команд
Радиолюбитель - 0 4 /2 0 0 7 [|
55
предыдущая страница 55 Радиолюбитель 2007-04 читать онлайн следующая страница 57 Радиолюбитель 2007-04 читать онлайн Домой Выключить/включить текст