Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Способи адресації операндів мікроконтролера





Тип звертання (адресації) до операндів (даних, що беруть участь в операції) називають способом адресації. До способів адресації операндів також відносять те, як в командах передачі керування дається вказівка на адресу переходу.

У МК типу MCS-51 існують наступні способи адресації операндів ‑ даних, що беруть участь в операції:

- неявна;

- регістрова (пряма регістрова);

- пряма (байтова і бітова);

- безпосередня;

- непряма;

- відносна;

- базово-індексна;

- стекова.

При неявній адресації інформацію про адресу операнда, який бере участь в операції, пристрій керування МК-ра одержує з коду операції команди. Таким чином часто адресуються акумулятор і прапорець перенесення, наприклад:

INC A,

CLR C.

При регістровій адресації команда містить трьохрозрядну пряму адресу одного з восьми робочих регістрів поточного банку регістрів загального призначення (РЗП) резидентної пам’яті даних (РПД). Для вибору робочого (поточного) банку використовуються розряди PSW3, PSW4 (RS0, RS1) регістра прапорців. Приклади команд з регістровою адресацією:

MOV A, R5;

XCH A, R3.

Пряма байтова адресація застосовується для звертання до комірок РПД і до регістрів спеціальних функцій. В цьому випадку команда включає в себе пряму 8-розрядну адресу операнда, яка при описанні команд мікроконтролера позначається ad, наприклад:

ADD A, ad;

DEC ad.

Пряма бітова адресація використовується для звертання до 128 бітів РПД, які адресуються окремо, і до бітів регістрів спеціальних функцій, які адресуються окремо, (див. програмістську модель МК-ра). При цьому команда містить пряму 8-розрядну адресу біта, який бере участь в операції. Ця адреса при описанні команд позначається bit, наприклад:

SET bit;

MOV C, bit.

При безпосередній адресації операнд входить до складу самої команди і дістається з пам'яті при виконанні команди одразу ж після її коду операції. Безпосередній операнд позначається #D8, #D16, наприклад:

MOV A, #D8;

MOV DPTR, #D16.

При непрямій адресації в команді міститься посилання на регістр, в якому міститься адреса операнда. Ця адресація може використовуватися для звернення до комірок РПД або зовнішньої пам’яті даних ЗПД. В якості регістрів-вказівників РПД використовуються регістри R0, R1 робочого (поточного) банку РЗП. Це, наприклад, наступні команди:

MOV A, @Ri;

MOV ad, @Ri.

В якості регістрів-вказівників ЗПД застосовуються ті ж R0 і R1, що дозволяє вибрати одну з 256 комірок зовнішньої пам'яті даних, або 16‑розрядний регістр-вказівник даних (DPTR), який забезпечує адресацію однієї з 65536 = 64 К восьмирозрядних комірок ЗПД. Наприклад, наступні команди:

MOVX A, @Ri;

MOVX @DPTR, A.

Відносна адресація застосовується в командах переходів для обчислення адреси команди, на яку передається керуванння. При цьому в команді задається 8-розрядний зсув відносно адреси самої команди, який при описанні команд позначається як rel. Зсув сприймається як число зі знаком, що представлене у додатковому коді. Це дозволяє здійснювати переходи на +127 байт вперед і на –128 байт назад відносно адреси наступної команди. Наприклад, наступні команди:

JNZ rel;

DJNZ ad, rel,

де rel – 8-бітний зсув. Зсув обчислюється компілятором шляхом віднімання від адреси мітки команди, на яку потрібно перейти, адреси наступної команди.

При базово-індексній адресації адреса операнда обчислюється як сума 16-розрядної базової адреси, що міститься в регістрах DPTR або PC, і 8-бітного індексу, що знаходиться в пам’яті програм в акумуляторі. Це дозволяє звертатися до елементів таблиць, масивів і т.ін. Наприклад, наступні команди:

MOVC A, @A+DPTR;

MOVC A,@A+PC.

Стекова адресація виділена в самостійний вид адресації умовно, щоб підкреслити специфіку роботи зі спеціальною областю пам'яті, яка називається стеком.

При записі до стеку (команда PUSH) стек розширюється, а при читанні зі стеку (команда POP) стек стискається. В будь-якому випадку операція виконується відносно крайньої (останньої) заповненої комірки, яка називається “вершиною стеку”. Формально стек ‑ це пам'ять з організацією типу “останній увійшов ‑ перший вийшов”.

У мікроконтролері MCS-51 при виконанні команди PUSH початкове значення SP збільшується на одиницю та байт, отриманий за адресою записується у стек. При виконанні команди POP зі стеку зчитується байт за початковою адресою SP, після чого значення SP зменшується на 1.


ПЕРЕЛІК ЛАБОРАТОРНИХ РОБІТ

Перелік лабораторних робіт на налагоджувачі

1) ЛАБОРАТОРНА РОБОТА №1 Команди пересилання даних

2) ЛАБОРАТОРНА РОБОТА №2 Арифметичні команди

3) ЛАБОРАТОРНА РОБОТА №3 Команди логічних операцій

4) ЛАБОРАТОРНА РОБОТА №4 Команди роботи з бітами

5) ЛАБОРАТОРНА РОБОТА №5 Команди передачі керування

6) ЛАБОРАТОРНА РОБОТА №6 Таймер/лічильник

7) ЛАБОРАТОРНА РОБОТА №7 Універсальний асинхронний приймач/передавач (УАПП)

Перелік лабораторних робіт на стенді

1) ЛАБОРАТОРНА РОБОТА №1 Вивчення стенда, команд однокристальної ЕОМ сімейства MCS-51

2) ЛАБОРАТОРНА РОБОТА №2 Схеми відображення інформації

3) ЛАБОРАТОРНА РОБОТА №3 Система переривань. Опитування дискретних датчиків

4) ЛАБОРАТОРНА РОБОТА №4 Цифро-аналогове перетворення

5) ЛАБОРАТОРНА РОБОТА №5 Аналого-цифрове перетворення

6) ЛАБОРАТОРНА РОБОТА №6 Обробка частотних і часових сигналів


ПРОГРАММА ВИКОНАННЯ ОКРЕМИХ ЛАБОРАТОРНИХ РОБІТ НА НАЛАГОДЖУВАЧІ

Лабораторна робота №1

Тема: Команди пересилання даних

Мета: Користуючись налагоджувачем дослідити виконання команд пересилання даних у покроковому режимі.

Порядок виконання лабораторної роботи:

1) Вивчити теоретичні відомості з теми «команди пересилання даних», зокрема дослідити їх формати команд, представлення операндів і роботу програм, які наведені у лабораторній роботі як приклади. Вміти коментувати команди наведені у таблиці 6.

2) Розробити алгоритм для виконання індивідуального завдання.

3) Розробити програму для виконання індивідуального завдання.

4) Ввести програму індивідуального завдання на персональному комп'ютері.

5) За допомогою програмно налагоджувальних засобів проаналізувати виконання індивідуальної програми. Переконатися в правильному виконанні індивідуального завдання, при негативному результаті здійснити зміну алгоритму або програми, повторити перевірку.

6) Роздрукувати лістинг правильно працюючої програми.

7) Відповісти на контрольні питання викладача.

Стислі теоретичні відомості

Більшу частину команд даної групи (таблиця 6) складають команди передачі та обміну байтами. Команди пересилки входять і в групу команд роботи з окремими бітами. Всі команди даної групи не модифікують прапорці результату, за винятком команд завантаження PSW, тригера (прапорця) C і акумулятора (встановлюється прапорець паритету). На рисунку 37 зображений граф шляхів передачі даних в МК-рі.

Таблиця 6 – Група команд передачі даних
Назва команди Мнемокод КОП Т Б Ц Операція
  Пересилання в акумулятор з регістра (n = 0..7) MOV A, Rn 11101rrr       (A) (Rn)
  Пересилання в акумулятор байта, що адресується прямо MOV A, ad         (A) (ad)
  Пересилання в акумулятор байта з РПД (i = 0,1) MOV A, @Ri 1110011i       (A) РПД(Ri)
  Завантаження в акумулятор константи MOV A, #D8         (A) D8
  Пересилання у регістр (n = 0..7) з акумулятора MOV Rn, A 11111rrr       (Rn) (A)
  Пересилання у регістр байта, що адресується прямо MOV Rn, ad 10101rrr       (Rn) (ad)
  Завантаження в регістр (n = 0..7) константи MOV Rn, #D8 01111rrr       (Rn) D8
  Пересилання за прямою адресою акумулятора MOV ad, A         (ad) (A)
  Пересилання за прямою адресою регістра MOV ad, Rn 10001rrr       (ad) (Rn)
  Пересилання байта, що адресується прямо, за прямою адресою MOV add, ads         (add) (ads)
  Пересилання байта з РПД за прямою адресою MOV ad, @Ri 1000011i       (ad) РПД(Ri)
  Пересилання за прямою адресою константи MOV ad, #D8         (ad) D8
  Пересилання у РПД з акумулятора MOV @Ri, A 1111011i       РПД(Ri) (A)
  Пересилання у РПД байта, що адресується прямо MOV @Ri, ad 0110011i       РПД(Ri) (ad)
  Пересилання у РПД константи MOV @Ri, #D8 0111011i       РПД(Ri) D8
  Завантаження регістра-покажчика даних MOV DPTR, #D16         (DPTR) D16
  Пересилання в акумулятор байта з ПП MOVC A,@A+DPTR         (A) ПП((A) + (DPTR))
  Пересилання в акумулятор байта з ПП MOVC A, @A+PC         (PC) (PC) + 1 (A) ПП((A) + (PC))
  Пересилання в акумулятор байта з ЗПД MOVX A, @Ri 1110001i       (A) ЗПД(Ri)
  Пересилання в акумулятор байта з розширеної ЗПД MOVX A, @DPTR         (A) ЗПД(DPTR)
  Пересилання у ЗПД з акумулятора MOVX @Ri, A 1111001i       ЗПД(Ri) (A)
  Пересилання у розширену ЗПД з акумулятора MOVX @DPTR, A         ЗПД(DPTR) (A)
  Завантаження у стек PUSH ad         (SP) (SP) + 1 РПД(SP) (ad)
  Зчитування зі стека POP ad         (ad) РПД(SP) (SP) (SP) - 1
  Обмін акумулятора з регістром XCH A, Rn 11001rrr       (A) «(Rn)
  Обмін акумулятора з байтом, що адресується прямо XCH A, ad         (A) «(ad)
  Обмін акумулятора з байтом з PПД XCH A, @Ri 1100011i       (A) «РПД(Ri)
  Обмін молодшої тетради акумулятора з молодшою тетрадою байта РПД XCHD A, @Ri 1101011i       (A0-3) «РПД(Ri)0-3

Рисунок 37 ‑ Граф шляхів передачі даних в МК-рі

Окремою вершиною на цьому графі зображений акумулятор А, тому що він бере участь у більшості пересилань і адресується за допомогою неявної або прямої адресації. Проте деякі пересилки виконуються без участі акумулятора.

В число команд пересилань входять операції зі стеком, який організується в РПД. Для адресації комірок стека використовується регістр-показник стека (SP), який дозволяє адресувати будь-яку комірку внутрішнього ОЗП. Запис інформації в стек проводиться командою PUSH ad, а зчитування зі стека POP ad. У початковоому стані SP адресує "вершину" стека останню комірку стекової пам’яті, у якій записана інформація. Довжина операнда при роботі зі стеком дорівнює 8 біт. Перед записом у стек вміст SP інкрементується, а після зчитування декрементується.

Літерою Т у таблиці 6 позначено стовбець, який відповідає за тип (формат) команди. Формати команд, що застосовуються у командах передачі даних наведені на рисунку 38.

Тип D7... D0        
  КОП        
      D7... D0    
  КОП   #D8    
           
  КОП   ad    
           
  КОП ad ad    
          D7... D0
  КОП   add   ads

Рисунок 38 – Формати команд, що застосовуються у командах передачі даних

Позначення:

- КОП – код операції;

- #D8 – 8-розрядний безпосередній операнд;

- ad – пряма адреса комірки резидентної пам’яті даних (РПД) або одного з 21 регістрів спеціальних функцій;

- add – пряма адреса комірки резидентної пам’яті даних, комірка пам’яті, що адресується є приймачем (designation) даних для команди;

- ads – пряма адреса комірки резидентної пам’яті даних, комірка пам’яті, що адресується є джерелом (source) даних для команди.







Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.