Рябов В.Т. - Устройство и программирование однокристальных микроконтроллеров (1041592), страница 9
Текст из файла (страница 9)
Список логических команд приведен в таблице 3.16.Существуют логические операции, которые выполняются только на аккумуляторе:сброс и инвертирование всех восьми разрядов А; циклический сдвиг влево и вправо; циклический сдвиг влево и вправо с учетом флага переноса; обмен местами старшей и младшейтетрад (ниблов) внутри аккумулятора.Логические команды широко используются в программах при управлении отдельнымибитами операндов. Без них просто не обойтись, когда команд битового процессора нет или ихневозможно использовать. Например, ключи на объекте управления подключены к регистру, находящемуся в пространстве внешней памяти данных, рассмотренному нами ранее примеру (см.рис.
3.7, в), по адресу ADR_reg1. Тогда, чтобы установить в единицу, например, третий бит этогорегистра, не изменяя остальных, необходимо выполнить:MOV DPTR, #ADR_reg1;загрузить в регистр указатель данных адрес регистра,MOVX A, @DPTR;переслать содержимое регистра в аккумулятор,ORL A, #00001000В;логическое ИЛИ аккумулятора и константы,MOVX @DPTR,A;переслать содержимое аккумулятора в регистр.Чтобы, наоборот, выключить третий бит, нужно сделать:;загрузить в регистр указатель данных адрес регистра,;переслать содержимое регистра в аккумулятор,ANL A, #11110111В;логическое И аккумулятора и константы,MOVX @DPTR,A;переслать содержимое аккумулятора в регистр.Подобные приемы называют маскированием и используют в управляющих программах, если нет возможности использовать команды битового процессора.Команды пересылки данных.
Команды пересылки данных предназначены для обменаинформацией внутри резидентного ОЗУ, между аккумулятором и внешней памятью данныхи между аккумулятором и памятью программ (резидентной или внешней).Команды обмена внутри резидентного ОЗУ используют мнемонику:MOV DPTR, #ADR_reg1MOVX A, @DPTRMOV приемник, источник.Любая ячейка 256-байтового блока внешнего ОЗУ данных может быть выбрана с использованием непосредственной, косвенно-регистровой адресации через регистры указателиR0 или R1 (выбранного банка рабочих регистров), с помощью прямой, либо непосредственной адресации, например:MOV ad, R5 ; пересылка по прямому адресу содержимого регистра R5,MOV A, @R0 ;пересылка в аккумулятор ячейки резидентного ОЗУ, адрес которой в R0,MOV R4, #47 ;pагрузка в регистр R4 ,байтовой константы 47.Любая ячейка первого 256-байтового блока внешнего ОЗУ данных может быть вы-28брана с использованием косвенно-регистровой адресации через регистры указатели R0 илиR1 (выбранного банка рабочих регистров).
Ячейка внутри адресного пространства 64 Кбайтвнешнего ОЗУ также может быть выбрана с использованием косвенно-регистровой адресации через регистр-указатель данных DPTR., например:MOVX А,@R0;загрузить в А ячейку резидентного ОЗУ, адрес которой в R0,MOVX A,@DPTR;загрузить в А ячейку внешнего ОЗУ, адрес которой в DPTR,MOVX @DPTR,A, ;загрузить в ячейку внешнего ОЗУ, адрес которой в DPTR; содержимое аккумулятора.Таблицы кодов, зашитые в РПЗУ программ, могут быть выбраны с помощью командыпередачи данных с использованием косвенной адресации.
При этом адрес считываемойячейки рассчитывается как сумма содержимого аккумулятора и регистра указателя данныхили, как сумма аккумулятора и счетчика команд:MOVC А, @А+DPTRMOVC A,@A+PC.Это бывает нужно при проверке целостности программного кода, которая обычнопроводится при первоначальном включении объекта. При этом код программы от ее началадо конца считывается в аккумулятор и суммируется там.
В конце цикла результат сравнивается с известной контрольной суммой и, если они совпадают, РПЗУ и память программ неповреждены.Содержимое аккумулятора может быть обменено с содержимым рабочих регистров(выбранного банка) и с содержимым адресуемых с помощью косвенно-регистровой адресации ячеек внутреннего ОЗУ, а также с содержимым прямо адресуемых ячеек внутреннегоОЗУ и с содержимым регистров специального назначения, например:XCH A, Rn ;обмен аккумулятора с регистром (n=0..7).Команды битового процессора. Битовый процессор является частью архитектурыМК семейства МК51 и его можно рассматривать как независимый процессор побитовой обработки. Битовый процессор выполняет свой набор команд, имеет свою зону резидентногоОЗУ с битовой адресацией.
Это128 битов (0—127) в шестнадцати ячейках внутреннего ОЗУ(ячейки с адресами 20Н—2FH) и прямо адресуемые биты регистров специального назначения, адреса которых кратны восьми: Р0(80Н), TC0N(88H), P1(90H), SC0N(98H), P2(A0H),IE(A8H), РЗ(В0Н) IP(B8H), PSW(D0H), A(E0H), B(F0H).Каждый из адресуемых битов может быть установлен в "1" (SETB adr_bit), сброшен в"0" (CLRB adr_bit)) и инвертирован (CPL adr_bit). Могут быть реализованы переходы:JB bit, rel; если бит установлен, идти на метку rel,JNB bit, rel; если бит не установлен, идти на метку rel,JВС bit, rel ; переход, если бит установлен, с последующим сбросом бита.Команды побитовой обработки позволяют оптимизировать программы управления,повысить их быстродействие и сократить длину программного кода.Команды ветвления и передачи управления бывают безусловные и условные, с адресацией внутри 64 разрядного адресного пространства, с 11-разрядной абсолютной адресацией и с 8-и разрядной относительной.
В последнем случае за кодом команды указан байтсмещения относительно содержимого счетчика команд на момент выполнения операции.Примеры команд безусловного перехода или вызова подпрограмм:LJMP ad16 ; длинный переход по всему адресному пространству,LCALL ad16 ; вызов подпрограммы из любой зоны адресного пространства,ACALL ad11 ; вызов подпрограммы из адресного пространства в 2 кБ,SJMP rel; переход к метке rel в пределах 256 байт.Команды 16-разрядных переходов и вызовов подпрограмм LJMP ad16 позволяют осуществлять переход в любую точку адресного пространства памяти программ объемом 64 Кбайт.Команды 11-разрядных переходов и вызовов подпрограмм AJMP ad11 обеспечиваютпереходы внутри программного модуля емкостью 2 Кбайт.
Эти команды, в отличие от 16-иразрядных переходов, короче и занимают не три, а два байта, что позволяет экономнее ис-29пользовать память программ.Команды условных переходов позволяют организовать ветвление в программах, исполнять циклы с пред и пост-условием, например:DJNZ R4, rel;декремент регистра R4 и переход, если его содержимое не стало равно нулю.Рассмотренная система команд семейства MCS-51, состоящая из арифметических илогических команд, команд пересылки данных, команд ветвления программ и передачиуправления и команд битового процессора стала своего рода эталоном для микроконтроллеров.
С ее использованием удается создавать компактные и эффективные программы, управляющие отдельными узлами и элементами технологического оборудования.Наличие в составе МК двух таймеров позволяет организовать работу этих программ вжестком реальном времени.Таблицы с кодами команд и пояснениями их выполнения приведены в ПРИЛОЖЕНИИ 1.Контрольные вопросы.1.Общая характеристика контроллеров семейства MCS-51. Назначение выводов.2. Организация памяти микроконтроллера.
Резидентная оперативная память.3. Организация памяти микроконтроллера. Резидентная и внешняя память программ.4. Организация памяти микроконтроллера. Внешняя память программ и память данных,организация внешней шины.5. Таймер/счетчик. Организация, регистры. Как запрограммировать часы реального времени с годом, месяцем, днем, часом, минутой, секундой, десятью миллисекундами?6. Определение длительности импульса. Предел измерения и как его увеличить?7. Счет внешних импульсов (деталей на конвейере и т.п.).8.
Режим 3 таймера счетчика, его назначение и примеры использования.9. Таймер/счетчик. Организация, регистры. Поддержка приемопередатчика.10. Приемопередатчик, организация, регистры. Синхронная и асинхронная передача.11. Режим 1 приемопередатчика. Как его установить и настроить таймер?12. Организация проверки четности при работе с последовательным каналом .13. Организация многопроцессорной работы в сети.14. Организация прерываний в микроконтроллерах семейства MCS-51.15.