"РЛ" - НАЧИНАЮЩИМ
|}
Команда MOVC A, ©A+DPTR осу-
ществляет косвенное обращение по
смещению в аккумуляторе относитель-
но базы в DPTR. При выполнении этой
команды в аккумулятор будет помеще-
но значение байта из ячейки памяти
программ, адрес которой будет вычис-
лен как сумма DPTR и значения акку-
мулятора. Тут мы впервые сталкиваем-
ся с ситуацией, когда в ходе исполне-
ния команды сначала используется ста-
рое значение аккумулятора, а затем оно
заменяется новым. Команда MOVC А,
@А+РС выполнит аналогичное обра-
щение к ячейке памяти программ, толь-
ко в качестве базы будет взят адрес те-
кущей команды. Как видим, нет команд,
при помощи которых можно было бы
осуществить запись в ячейку памяти
программ - это и понятно!
Для обозначения команды пересыл-
ки, работающей с внешним ОЗУ, ис-
пользуется добавочный символ “X”
(external-внешний), и команда приоб-
ретает вйд MOVX. Как видим, и в этом
случае возможна только косвенная ад-
ресация, однако уже только по базе (без
смещения). Надеюсь, команды Na 2 и 4
из таблицы 5 вам понятны, а вот на
1 -й и 3-й стоит остановиться дополни-
тельно. Эти команды используют в ка-
честве значения младшего байта адре-
са содержимое одного из регистров R0
или R1, а в качестве старшего байта ад-
реса используется содержимое, выве-
денное (заранее) в порт Р2. Когда мы
станем изучать интерфейс расширения
памяти микроконтроллера, вы пойме-
те, почему используется такое хитрое
вычисление адреса, а пока что просто
запомните это.
Небольшое примечание. В боль-
шинстве радиолюбительских конструк-
ций необходимость прибегать к расши-
рению адресного пространства памяти
(О ЗУ или программ) возникает крайне
редко, так как встроенных возможнос-
тей вполне достаточно. По этому, во-
первых, рассмотрение интерфейса рас-
ширения памяти будет отложено до зак-
лючительных глав, а во-вторых, синтак-
сис команд M OVX может вас не сильно
тревожить - возникнет необходимость,
тогда и вспомните
©.
В заключение следует отметить, что
флаг четности Р регистра PSW всегда
может изменить свое значение, если осу-
ществляется работа с аккумулятором
Таблица в. Команды, модифицирующие ОЗУ и биты
М немоника
Число машинных
Длина команды,
Изменяемые
п/п
команды
циклов
байт
флаги PSW
1
MOV С, Bit
1
2
CY=Bit
2
MOV Bit, с
2
2
3
CLR Bit
1
2
4
CLR С
1
1
CY=0
5
CLR A
1
1
Р
6
SETB Bit
1
2
7
SETBC
1
1
CY=1
8
CPL Bit
1
2
9
CPL A
1
1
10
XCH A, Rn
1
1
Р
11
ХСН A, M
1
2
Р
12
XCH A, ®R*
1
1
Р
13.
XCHD A, ®R*
1
1
Р
14
PUSH M
'
2
2
15
POPM
2
2
Все, если M=PSW
(забегая вперед - не только при пере-
сылках).
Глава 10.
Другие команды работы с ОЗУ
В этой главе мы изучим команды
(см. таблицу ё), которые нельзя при-
числить к командам пересылки, но ко-
торые, тем не менее, модифицируют
ОЗУ, в том числе познакомимся с ко-
мандами пересылок битов
и
манипули-
рования ими. Как обычно, попутно мы
познакомимся с некоторыми регистра-
ми специальных функций и особенно-
стями микроконтроллера.
Как вы помните, флаг С находится
в регистре PSW. Кроме своей основ-
ной функции он используется как
од-
нобитовый аккумулятор
в некоторых ко-
мандах. Вы, очевидно, догадались, что
такие команды должны быть похожи по
синтаксису на команды, работающие с
настоящим аккумулятором - и это дей-
ствительно так: глядя на таблицу в, вы
можете в этом убедиться.
Команды 1 и 2 - это команды
бито-
вых пересылок,
аналогично простой пе-
ресылке, они выполняют копирование
знамения указанного бита в бит-акку-
мулятор С и из него. Команд пересыл-
ки битовой константы нет, но есть ко-
манды
сброса бита
(3 и 4) и
установки
бита
(6 и 7). Как виДИте, для установки
и сброса флага С предусмотрены и от-
дельные команды. Команда 5 соответ-
ственно осуществляет сброс всех 8-и
битов в аккумуляторе. Конечно, можно
воспользоваться и командой MOV А, #0,
но она требует 2 байта памяти, а коман-
да CLR А - всего один. Пусть вам та-
кая забота о единственном байте не
кажется странной - это у микроконтрол-
лера AT89S8252 памяти программ 8 ки-
лобайт, а ведь есть модели контролле-
ров, где ее гораздо меньше, и там по-
рой экономия пары байт решает все.
Уже знакомая вам команда CPL ме-
няет значение указанного бита на про-
тивоположное. А команда CPL А, как
легко предположить, делает то же са-
мое со всеми битами аккумулятора.
Команды ХСН осуществляют обмен
значений между указанными операнда-
ми - первым операндом всегда явля-
ется аккумулятор, а вторым может бьпъ
любой регистр и прямо или косвенно
адресуемая ячейка памяти. Команда
XCHD осуществляет обмен значений
только младших тетрад
операндов (вто-
рой операнд - только косвенно адресу-
емая ячейка).
Наконец, две последние команды
PUSH и POP (можно перевести как
за-
толкнуть
и
вытащить).
Это команды ра-
боты со
стеком.
Стек-это выделенный
программистом участок ОЗУ, доступ к
которому осуществляется при ПОМОЩИ
косвенной адресации через специаль-
ный регистр - указатель вершины сте-
ка SP. Особенность регистра SP в том,
что его значение
автоматически увели-
чивается перед обращения к памяти на
58
У
Радиолюбитель - 0 4 /2 0 0 7
предыдущая страница 58 Радиолюбитель 2007-04 читать онлайн следующая страница 60 Радиолюбитель 2007-04 читать онлайн Домой Выключить/включить текст