Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Команди пересилки




Структурна схема МК 8051

має наступний вигляд і є базовою для родини MCS-51:

До складу структурної схеми входять функціональні елементи:

– Р0-Р3 – паралельні порти:

Р0.7-Р0.0 – маркеровка ліній;

– ПП – послідовний порт

– T/C – таймери-лічильники (2)

– СП – система переривань

– ПЗП / РПП – резидентна пам’ять програм;

– PC – лічильник команд

– DPTR – регістр покажчик даних

– РА – регістр адрес

– SP – покажчик стеку

– РК – регістр команд

– СКС – схема керування синхронізацією

– БК – блок керування

– ГТІ – генератор тактових імпульсів

– АЛП – арифметико-логічний пристрій

– PSW – регістр слова стану програми

– ТР/ТА – тимчасовий регістр/акумулятор

– А – акумулятор

– БЦП – блок центрального процесора

– ОЗП/РПД – резидентна пам’ять даних

БЦП містить 8-ми розрядний АЛП, акумулятор А, регістр В, регістр слова стану програми PSW та програмно недоступні буферні регістри ТА/ТР, які використовуються для формування вхідних даних для АЛП.

ЦП виконує операції додавання, віднімання, множення, ділення, логічні операції «І», «АБО», «Виключне АБО», інверсія, операції зсуву та скидання, оперуючи такими типами даних:

– булевими – 1 біт

– цифровими – 4 біти

– байтові – 8 біт

– адресними – 16 біт

Характерною особливість МК є набір операцій з бітами: окремі біти змінних можуть бути встановленні, скинуті, інвертовані, передані, що дозволяє реалізувати операції типу «FALSE/TRUE». Акумулятор А – 8-ми розрядний, використовується як джерело одного з операндів при логічних командах, а також місцем розміщення результату виконання команд. Ряд команд вводу/виводу інформації від ЗП, команд типу TEST, INC, DEC можуть виконуватись без участі акумулятору. Регістр B використовується як акумулятор лише в множенні/діленні, де розміщений інший операнд, а також як місце розміщення результату(залишок ділення); в інших випадках – РЗП.

Регістр PSW зберігає інформацію про стан АЛП в процесі виконання програми.

 

Таблиця 1

Номер біта Позначення Призначення Доступ до біта
  CY Флаг переносу(Carry) Апаратно/програмно
  AC Флаг додаткового переносу(Auxiliary Carry) Апаратно/програмно
  F0 Флаг користувача Програмно
  RS 1 RS 0 Покажчик банку робочих регістрів: 00 – банк 0; 10 – банк 2; 01 – банк 1; 11 – банк 3 Програмно
  OV Флаг переповнення(Overflow) Програмно
  Резервний Програмно
  P Флаг парності(Parity) Апаратно/програмно

Призначення флагів CY, AC аналогічне призначенню таких же самих флагів у МП i8080, а флаг OV встановлюється при операціях додавання і віднімання, множення і ділення. При додаванні і відніманні OV=1, якщо результат перевищує ємність 7 біт і старший біт не може бути інтерпретований як знаковий; у командах ділення зазвичай флаг OV скидається, а при діленні на нуль встановлюється. У командах множення флаг OV приймає значення логічної одиниці, якщо результат перевищує 0FFH.

Флаг Р є так званим доповненням вмісту акумулятора А до парності, тобто 9-розрядне слово, що складається з 8 бітів акумулятора А і самого біта Р, завжди повинно мати парну кількість одиниць.

Регістр команд призначений для прийому вводу команд КОП з наступним декодуванням:

СКС призначено для формування керуючих сигналів згідно з кодом команд і синхронізації роботи усіх блоків МК;

Постійний запам’ятовуючий пристрій (ПЗП) або резидентна пам'ять програм (РПП) має ємність 4 кб і 16-розрядну адресну шину, що дозволяє розширити пам'ять до 64 кб за рахунок приєднання зовнішніх ВІС ПЗП. Адреса доступу до пам’яті визначається вмістом лічильника команд PC(Program Counter) або вмістом регістра-покажчика DPTR(Data Pointer Register);

DPTR використовується при непрямих переходах у програмі або при адресації таблиць, або як один 16-розрядний регістр, який може бути поділений на старшу і молодшу половини – DPH і DPL.

Розподіл адресного простору РПП має наступний вигляд, коли молодші адреси ПЗП відводяться під обробку переривань і початку роботи МК після скидання(RESET).

С – скидання

ВП – вектори переривання

ВПП – внутрішня пам’ять програми

ЗПП – зовнішня пам'ять програми

ОЗП/РПД складається з двох областей, коли:

· перша область – ОЗП даних ємністю 128 біт з адресами 00-7FH

· друга – регістри спеціальних функцій(SFR) з адресами 80- FFH.

Резидентна пам'ять даних має структуру:

 

ПАБ – пряма адресація бітів

Таблиця 2. Регістри спеціальних функцій

Позначення Найменування, адреси бітів Адреса Значення після скидання
ACC* Акумулятор А 0E0H  
B* Акумулятор В 0F0H  
PSW* Слово стану програми 0D0H  
SP Регістр-вказівник стека 81H  
DPTR Регістр-вказівник даних: DPH – старший байт DPL – молодший байт 83H 82H  
P0* 80H 0FFH
P1* Порт 1 90H 0FFH
P2* Порт 2 0A0H 0FFH
P3* Порт 3 0B0H 0FFH
IP* Регістр пріоритетів 0B8H xx000000B
IE* Регістр маски переривань 0A8H 0x000000B
TMOD Регістр режиму таймера/лічильника 89H  
TCON* Регістр керування/статусу таймерів 88H  
TH0 Таймер 0(старший байт) 8CH  
TL0 Таймер 0(молодший байт) 8AH  
TH1 Таймер 1(старший байт) 8DH  
TL1 Таймер 1(молодший байт) 8BH  
SCON* Регістр керування приймачем-передавачем 98H  
SBUF Буфер приймачів-передавачів 99H xx
PCON Регістр керування потужністю 87H 0xxxxxxx

*Позначені регістри припускають адресацію окремих бітів.

 

РПД адресується 8-розрядним регістром адрес РА або SP. РА – програмно недоступний регістр, куди завантажується адреса, звернення до чарунки ОЗП під час виконання команд. Регістр SP призначений для адресації стека, що є частиною РПД, а вміст SP інкрементується при запису даних до стеку командами типу PUSH і CALL, і декрементується за командами типу POP і RET. Такий спосіб адресації елементів стеку зветься передінкрементним і постдекрементним.

У процесі ініціалізації МК після надходження сигналу RESET до SP автоматично завантажується адреса(код) 07H і це означає, що у випадку, якщо стек не буде переініціалізованим, перший байт даних у стеку буде розташований у чарунці РПД за адресою 08H.

Резидентна пам'ять даних, так само як і РПП, може бути розширена до 64 кб підключенням зовнішніх ВІС типу RAM.

 

 

Машинний цикл (МЦ), що поданий на рис. 4, має фіксовану тривалість і містить шість станів – S1-S6, кожний з яких за тривалістю відповідає одному такту (Т) і складається з двох фаз – Р1 і Р2.

Рис. 4. Часова діаграма машинного циклу (МЦ)

Порти вводу/виводу P0-P3(див. Рис.1) призначені для здійснення байтового обміну даними між МК та зовнішніми пристроями (ЗП) по 32 лініях вводу/виводу. Будь-які лінії портів можна використовувати для вводу або виводу інформації незалежно від інших ліній.

Як фізичні адреси портів в МК використовуються:

P0 – 80H, при бітовій адресації – 80H-87H;

P1 – 90H, при бітовій адресації – 90H-97H;

P2 – А0H, при бітовій адресації – А0H-А7H;

P3 – В0H, при бітовій адресації – В0H-В7H.

Порт Р0 є двонаправленим, реалізуючи функції вводу/виводу, а його вивід має три стани, а через порт Р0:

– виводиться молодший байт адреси A7-A0 при роботі із зовнішнім ПЗП і зовнішнім ОЗП;

– видається з МК та приймається в МК байт даних при роботі з зовнішньою пам’яттю;

– задаються дані при програмуванні внутрішнього ПЗП типу EPROM.

Порти Р1-Р3 є квазідвонаправленими (тобто майже двонаправленими), бо оскільки у будь-який момент часу через порти можна тільки виводити інформацію, а для введення через них інформації необхідно записати до усіх розрядів їх регістрів-фіксаторів логічні одиниці.

Через порт Р1 задається молодший байт адреси при програмуванні внутрішнього ПЗП типу EPROM та при читанні внутрішнього ПЗП.

Через порт Р2:

– виводиться старший байт адреси А15-А8 при роботі із зовнішнім ПЗП і зовнішнім ОЗП у тих випадках, коли адреса є 16-розрядною;

– задається старший байт А15-А8 адреси при програмуванні внутрішнього ПЗП типу EPROM та при читанні внутрішнього ПЗП.

Порт Р3 може використовуватися як для вводу/виводу інформації, так і для реалізації альтернативних функцій обміну інформацією згідно з табл. 3.

Кожну з восьми ліній порту Р3 користувач може запрограмувати на виконання альтернативних функцій записом одиниці у відповідні біти регістра-замка (Р3.0-Р3.7) порту Р3.

Таблиця 3. Альтернативні функції порту Р3

Біт Позиція Альтернативна функція обміну інформацією
RxD P3.0 Вхід приймача послідовного порту в режимах 1-3. Введення/виведення послідовних даних у режимі регістра зсуву.
TxD P3.1 Вихід передавача послідовного порту в режимах 1-3. Вихід синхронізації при роботі послідовного порту в режимі 0.
INT0 P3.2 Вхід запиту переривання 0. Сприймання сигналів низького рівня або зріз сигналу.
INT1 P3.3 Вхід запиту переривання 1. Сприймання сигналів низького рівня або зріз сигналу.
T0 P3.4 Вхід таймера/лічильника 0 або тестовий вхід 0.
T1 P3.5 Вхід таймера/лічильника 1 або тестовий вхід 1.
WR P3.6 Запис. Апаратне формування активного сигналу низького рівня у разі звернення до зовнішньої пам’яті даних.
RD P3.7 Читання. Активний сигнал низького рівня формується апаратно у разі звернення до зовнішньої пам’яті даних.

 

Послідовний порт (див. Рис. 1) призначений для забезпечення послідовного обміну даними між МК і зовнішнім пристроєм (ЗП), для реалізації циклічного зсуву даних, а також для використання як універсального асинхронно-синхронного прийомо-передавача із фіксованою або змінною швидкістю обміну і з можливістю двостороннього обміну даними (так званий дуплексний режим). Послідовний порт може працювати в одному з чотирьох режимів (0-3), програмуючись на один з них записом керуючого слова (КС) до регістру керування SCON(Serial Port Control).

Блок таймерів/лічильників призначений для підрахунку зовнішніх подій (функція лічильника), реалізації програмно-керованих затримок та виконання функцій завдання часу (функція таймера).

До складу блока таймерів/лічильників входять:

1) два 16-розрядні регістри T/C0 та T/C1;

2) 8-розрядний регістр режимів TMOD;

3) 8-розрядний регістр керування TCON;

4) схема інкременту;

5) схема фіксації сигналів INT0, INT1, T0 і T1;

6) схема керування флагами;

7) логіка керування Т/С.

Система переривань призначена для реагування на зовнішні та внутрішні події. При цьому до:

зовнішніх подій належать появи нульових активних рівнів сигналів на входах INT0 та INT1;

внутрішніх подій належать переповнення таймерів та завершення послідовного обміну. Зовнішні або внутрішні події викликають встановлення відповідних флагів: IE0, IE1, TF0, TF1, RI та TI, що й спричиняють переривання.

Усі ці флаги можуть бути програмно встановлені або скинуті, при цьому їх програмне встановлення викликає переривання так само, як і реагування на подію.

Отже, переривання можуть програмно викликатися або програмно усуватися. Крім того переривання на входах INT0, INT1 можуть викликатися програмним скиданням бітів Р3.2 і Р3.3 порту Р3. Керування системою переривання здійснюється записом керуючих слів (КС) до регістрів TCON блоку таймерів/лічильників, а також до регістрів ІЕ та ІР.

Регістр дозволу переривань ІЕ призначений для дозволу або заборони переривань від відповідних джерел.

Регістр пріоритетів переривань ІР призначений для встановлення рівня пріоритету переривання для кожного з п’яти джерел переривань.

 

Микроконтроллер типа i8051 работает с данными битового и байтового формата. При обработке данных можно обращаться не только к байтам во всех ЗУ, но и к отдельным битам функциональных регистров или части адресного пространства внутреннего ОЗУ. Есть несколько команд, работающих с данными двухбайтового формата. Часть команд обрабатывает каждый из битов байтовых операндов независимо от информации, содержащейся в других битах. Другая часть команд работает с байтами как с положительными целыми числами. Всего в МК 111 команд, разделённых на 5 групп: 1)команды передачи 2)команды арифметических операций 3)команды логических операций 4)команды передачи управления 5)команды операции с битами. При наличии отдельно адресуемых битов в пространстве ОЗУ, говорят, что в МК серии i8051 имеется встроенный булевский процессор.

В командах обработки информации могут указываться один или два операнда. При явном использовании двух операндов один из них называется источником (source), а второй приемником (destination). Следует обратить внимание на то, что в поле операндов первым записывается обозначение приемника, а вторым - источника. При работе с одним операндом производится чтение операнда, его проверка или изменение и (при необходимости) запись. При работе с двумя операндами производится чтение источника и (при необходимости) приемника, вычисление и (при необходимости) запись результата по адресу приемника. Слова "при необходимости" означают, что необходимость действия определяется типом команды. После выполнения команды обработки информации содержимое слова состояния процессора может измениться в зависимости от результата вычислений. В описаниях команд, которые не осуществляют непосредственную запись в этот регистр, приводятся сведения о влиянии результата выполнения на содержимое отдельных битов PSW.

Время выполнения каждой команды различное: в большинстве от 1 до 2 командных циклов, команды расширенной арифметики – за 4 командных цикла.

Режимы адресации:

1) Непосредственная. Данные содержатся непосредственно в команде: mov A,#12;

Для символического обозначения непосредственной адресации в источнике используются символ # и числовое выражение, по которому транслятор вычисляет и записывает в машинный код команды нужную константу. Допустимое десятичное значение константы от 0 до 255 для байтового формата и от 0 до 65535 для двухбайтового. В качестве непосредственного операнда можно записывать числа в десятичной, шестнадцатеричной, восьмеричной или двоичной системах счисления с суффиксами d, h, о(q) или b соответственно. По умолчанию транслятор считает число десятичным. Непосредственная адресация удобна тем, что не нужно тратить дополнительное время на чтение операнда, так как он хранится в команде. Увеличение размера машинной команды не столь важно, так как константу все равно нужно где-то хранить.

2) Регистровая. Данные содержаться в одном из регистре общего назначения: mov R0, A;

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

3) Прямая: mov DPTR, #1234h;

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

4) Косвенная: mov A,@R0;

Для обозначения косвенной адресации используется символ @, за которым следует выражение с именем регистра. При косвенной адресации содержимое регистра используется не в качестве данных, а в качестве адреса данных, то есть указателя на данные. Для косвенной адресации могут использоваться только R0 и R1 или регистр указателя данных DPTR.

5) Индексная: mov A, @R0+DPTR

Используется сумма содержимого накопителя с содержимым программного счетчика или регистра указателя. Индексная адресация используется только для чтения из ПЗУ. Записывается как @А+ с последующим именем используемого регистра PC или DPTR.

6) Стековая: push Acc;

Аналогична косвенной в том смысле, что адрес для обращения к ОЗУ берется из регистра SP. Отличие состоит в том, что перед записью в ОЗУ содержимое указателя стека увеличивается на 1, а после, а после чтения из ОЗУ – уменьшается на 1.

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

Начнем с байтового формата. Команда MOV копирует содержимое источника (src) в приемник (dst) (при выполнении этой команды первоначальное содержимое приемника теряется).

MOV A,#src; MOV A,Rn; MOV A,@Ri; MOV A,src; MOV Rn,A; MOV Rn,#src; MOV Rn,src; MOV @Ri,A;

MOV @Ri,#src; MOV Ri,src; MOV dst,A; MOV dst,#src; MOV dst,Rn; MOV dst,@Ri; MOV dst,dst.

Для засылки нуля в накопитель проще использовать команду очистки: CLR А.

Чтение и запись данных байтового формата при обращении к внешнему ОЗУ осуществляется при помощи команд MOVX, где буква X, по-видимому, означает external (внешняя память):

MOVX A,@Ri; MOVX A,@DPTR; MOVX @Ri,А; MOVX @DPTR, А.

Перед выполнением этой команды в соответствующий регистр нужно записать адрес. Чтение данных из ПЗУ осуществляется при помощи команды MOVC;.

MOVC A,@A+DPTR; MOVC A,@A+PC.

Эти команды очень удобны для чтения из таблиц, записываемых в ПЗУ. Запись в ОЗУ и чтение из него при помощи стекового способа адресации производятся командами: push src; POP dst.

Мнемокоды стековых команд соответствуют английским глаголам «затолкнуть» и «вытолкнуть».

Существует еще одна команда копирования ХСН (eXCHange означает «обменять»), которая осуществляет обмен содержимого источника и приемника. В принципе обмен можно произвести при помощи трех команд пересылки. Следующие команды делают это за то же время, но занимают меньше места в ПЗУ и не требуют использования дополнительной ячейки ОЗУ: ХСН А,Rn; ХСН A,@Ri; ХСН A,src.

Есть также команда, обменивающая младшие половины байтов: XCHD A, Ri.

Здесь D означает Digit (четыре бита используются для двоичного представления десятичной цифры).

Одна из команд пересылки данных записывает два байта в регистр указателя данных: MOV DPTR,#src.

Других команд для явной пересылки двухбайтовых данных нет. Несколько команд пересылки информации работают в битовом формате. В команде MOV источником или приемником должен быть бит переноса С: MOV С,flag; MOV flag,С.

Все команды пересылки не влияют на содержимое слова состояния программы PSW, за исключением случаев пересылки информации в этот регистр или один из его битов.




Поделиться с друзьями:


Дата добавления: 2015-05-08; Просмотров: 726; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.049 сек.