Лекція 9: Система команд AVR-ОМК Навчальні питання: Зсуви

Скачать презентацию Лекція 9: Система команд AVR-ОМК Навчальні питання: Зсуви Скачать презентацию Лекція 9: Система команд AVR-ОМК Навчальні питання: Зсуви

5132-apmk_l9_sk_avr_l4.ppt

  • Количество слайдов: 22

>Лекція 9:  Система команд AVR-ОМК  Навчальні питання: Зсуви розрядів коду.  Логічні Лекція 9: Система команд AVR-ОМК Навчальні питання: Зсуви розрядів коду. Логічні операції. Тестування і порівняння операндів. Безумовні та умовні переходи між командами. Підпрограми, їх опис та виклики. Організація системи переривань. Засоби налагодження програм для мікроконтролерів Література. За підручником: с. 407-422. За навчальним посібником: c.236-251.

>1. Зсуви розрядів коду Обмін тетрад (четвірок розрядів): 7 6 5 4 3 2 1. Зсуви розрядів коду Обмін тетрад (четвірок розрядів): 7 6 5 4 3 2 1 8 2 1 8 7 6 5 3 >>rm<< 4

>Арифметичний зсув праворуч  - це команда, що пересовує розряди числа і при цьому Арифметичний зсув праворуч - це команда, що пересовує розряди числа і при цьому зберігає знаковий розряд. Тому, незалежно від знаку числа, відбувається його поділ на 2, а розряд втрачається: 7 6 5 4 3 2 1 8 7 6 5 4 3 2 8 8 ±rm>> 7 6 5 4 3 2 1 8 7 6 5 4 3 2 8 rm>> Логічний зсув відбувається у прапорець С і вивільняє біт, що стає “0”: С 1 7 6 5 4 3 2 1 8 7 6 5 4 3 2 8 <rm>> С 1 7 6 5 4 3 2 1 8 7 6 5 4 3 2 8 <

>2. Логічні операції  Логічні операції (“І”, “Або”, “Виключне Або” – нерівнозначність) впливають на 2. Логічні операції Логічні операції (“І”, “Або”, “Виключне Або” – нерівнозначність) впливають на вибрані розряди першого операнда. Вони дозволяють у ньому: виділити розряди, скинувши інші; встановити певні розря-ди у “1” а також проінвертувати їх.

>Приклади застосування команд:    6 –> r20 r20 & 12  Приклади застосування команд: 6 –> r20 r20 & 12 6 –> r20 r20 ! 12 6 –> r20 r20 ^ 12 Результат 4 Результат 14 Результат 10 00000110 00001100 00000100 00000110 00001100 00001110 00000110 00001100 00001010

>3. Порівняння операндів    Порівняння виконується  подібно  до операції віднімання. 3. Порівняння операндів Порівняння виконується подібно до операції віднімання. Наслідком дії таких команд є відповідна зміна прапорців статусу, що в послідуючому використовується для організації умовних переходів. При тестуванні операнду визначається чи є нуль – тоді Z = 1 та його знаковий розряд S. Приклад: Нехай в r17 число 3. Після виконання команди r17 = 5 будуть прапорці: N=1; C=1; H=1; S=1; V=0; Z=0.

>4.Безумовні та умовні переходи між командами.  4.1. Безумовні переходи    4.Безумовні та умовні переходи між командами. 4.1. Безумовні переходи Безумовні переходи в AVR-ОМК є трьох видів: – короткий відносний (у межах –128...+127 кроків); – у повному адресному просторі (містить 32 біти!); – перехід за адресою з 16-розрядного регістра Z. Короткі переходи вказуються ломаною стрілкою, що може закінчуватися: назвою мітки; на позначенні мітки; на іншій ломаній. Щоб вказати місце (команду) для переходу використовуються мітки – в АБ вони позначаються вертикальною рискою, на якій не обов'язково вказується її назва (ідентифікатором). “Дальні” безумовні переходи (більше за 127 кроків) вказуються у текстовому вигляді як jmp мітка , а переходи за непрямою адресою із Z - просто jmp.

>4.2. Умовні переходи    Команди умовних переходів (називаються Conditions) передбачені двох типів: 4.2. Умовні переходи Команди умовних переходів (називаються Conditions) передбачені двох типів: 1) за аналізом прапорців регістра статусу С, N, Z, I, S, V, T, H; 2) з порівнянням операндів або за результатами тестуванням вибраного біта у певному регістрі. або Назва мітки Перша група команд умовних переходів містить позначення умови переходу та його напрям – ломану лінію з стрілкою. Стріка упирається у мітку або у назву мітки, а також в іншу ломану:

>Позначення умов у командах переходів 1-го типу Позначення умов у командах переходів 1-го типу

>Друга група команд умовних переходів не містить напрямку переходу – використовується принцип переходу з Друга група команд умовних переходів не містить напрямку переходу – використовується принцип переходу з неявним адресуванням: якщо умова виконується, то наступна команда пропускається. Опис команд програми Наступна команда Умова пропуску Продовження опису команд

>Позначення умов пропуску наступної команди Позначення умов пропуску наступної команди

>5. Підпрограми    Підпрограми оформляються як нові блоки програми (починаючи з вершини) 5. Підпрограми Підпрограми оформляються як нові блоки програми (починаючи з вершини) та завершуються командою повернення ret. Вершина, як мітка початку, повинна мати назву, що вказується у команді виклику. Опис команд програми Продовження опису команд Виклики підпрограм бувають трьох типів: короткі – описуються назвою вершини підпрограми; довгі – описуються аналогічно, але з додатковою позначкою / ; за непрямою адресою із Z – описуються словом CALL. dodatok dodatok Опис команд підпрограми ret Примітка: До використання підпрограм необхідно встановити покажчик стеку SP ! (через налагоджувач Setter).

>Для створення підпрограми необхідно:   маркером вибрати тупікову команду, що завершує головну програму Для створення підпрограми необхідно: маркером вибрати тупікову команду, що завершує головну програму (зазвичай, стрілку безумовного переходу) або вибрати команду ret попередньої підпрограми; натиснути V – з”явиться вершина підпрограми; позначити вершину назвою підпрограми; після опису тіла підпрограми завершити її командою ret . По команді виклику підпрограми адреса наступної команди автома-тично засилається з лічильника РС у стек, щоб, коли прийде час, знову повернутися до основної програми. У лічильник команд РС вноситься адреса команди з команди виклику – адреса початку підпрограми. Потім зазначена і наступні команди зчитуються і виконуються. Коли ж зустрінеться команда “повернутися з підпрограми” ret, то знову зі стеку у лічильник РС пересилається раніше записана адреса команди для повернення.

>6. Організація системи переривань     Переривання – це вимушені виклики підпрограм 6. Організація системи переривань Переривання – це вимушені виклики підпрограм внаслідок виникнення певних подій у мікроконтролері. Переривання можуть викликатися: всіма внутрішніми пристроями (пороговими вузлами таймерів, АЦП, компаратором, послідовними інтерфейсами); зовнішніми сигналами на спеціальних виводах INT№; сигналами на деяких лініях портів (позначаються PCINT№ ). Щоб переривання могли відбуватися, їх потрібно дозволити: індивідуально у відповідних регістрах (програмних блоках) керування пристроями і глобально – бітом “І” у регістрі статусу SREG. Якщо якесь переривання відбувається, то викликається коман-да з відповіною адресою, яка називається вектор переривання. Таким чином, скільки джерел запитів переривань, стільки і векторів.

>Адреси векторів різняться за типами мікроконтролерів. Ці адреси розташовані на початку програми та ідуть Адреси векторів різняться за типами мікроконтролерів. Ці адреси розташовані на початку програми та ідуть одна за другою (1, 2, 3 …). Тому за адресами векторів розмістити підпро-грами обслуговування запитів неможливо – тільки по одній ко-манді. Тому на цих місцях розміщують команди безумовного переходу на початок підпрограм обслуговування, а її розташовують будь де. Такі записи називають описами векторів переривань. А коли певне переривання не використовується, то на місці його вектора доречно вказати команду «повернутися з переривання» reti. До речі, і у ПЕОМ механізм однаковий. Щоб спростити використання переривань, в АлБ є засоби ав-томатичного опису векторів переривань – команд безумовного переходу на підпрограми з відповідними стандартними назвами.

>Механізм автоматичного опису вектора переривань задіюється, якщо вершина основної програми позначена Reset.  Тоді Механізм автоматичного опису вектора переривань задіюється, якщо вершина основної програми позначена Reset. Тоді за нульовою адресою розташується команда безумовного переходу на першу команду основної програми і, таким чином обійде всі описи, а на місці всіх векторів переривань розташуються команди “повернутися з переривання” reti. Вершину підпрограми обслуговування переривання потрібно назвати відповідно до джерела його запиту. В обох випадках потрібно діяти через пункти меню “Елементи” –> «Прерывания» –> «Назва». Опис команд основної програми Reset Підпрограма обслуговування переривання External_1 reti Тоді на місці названого вектора замість reti з”явиться коман-да безумовного переходу на початок позначеної підпрограми.

>rjmp Reset    rjmp External_1 reti reti reti reti reti reti Підпрограма rjmp Reset rjmp External_1 reti reti reti reti reti reti Підпрограма обслуговування переривання від входу INT1 Reset: Опис команд основної програми External_1: rеti Місця опису векторів перери-вань – не відобра-жаються Примітка: При копіляції підпрограма обслуговування запиту переривання розташу-ється між описами векторів і початком основної програми.

>1. На початку обслуговування запиту біт глобального дозволу переривань “І” автоматично скидається, а поновлюється 1. На початку обслуговування запиту біт глобального дозволу переривань “І” автоматично скидається, а поновлюється лише командою повернення reti. Тому вкладені переривання автома-тично блокуються – для їх дозволу потрібно встановити біт “І”. 2. Регістр статусу SREG (прапорці) при обслуговуванні перери-вання автоматично не зберігається. Тому на початку підпрограми обслуговування регістр SREG необхідно зберегти в стеку, а перед завершенням підпрограми – його звідти зчитати. Інакше у основній програмі можуть відбуватися невірні умовні переходи. 3. Переривання, як всякий виклик підпрограми, задіює стек для запису адреси наступної команди з метою повернення на неї. Команда “повернення з переривання” reti не тільки зчитує цю адресу зі стеку, але й забезпечує повернення у початковий стан контролера переривань. Особливості обслуговування запитів переривання

>Структурна схема мікроконтролера ряду AVR Структурна схема мікроконтролера ряду AVR

>8. Засоби налагодження прогам для мікроконтролерів   На відміну від ПЕОМ, складену програму 8. Засоби налагодження прогам для мікроконтролерів На відміну від ПЕОМ, складену програму для мікроконтролера не можна продіагностувати безпосередньо у ньому – практично ніякої інформації не отримаємо, за винятком працездатної програми. Тому для кожного типу ОМК розроблені засоби налагодження програм, які поділаються за рівнями: Програмні симулятори – це програмні засоби для ПЕОМ, що здатні сприймати команди певного мікроконтролера і показувати відповідні зміни у внутрішніх його пристроях. Приклади – система АлБ, AVRStudio та інші. Недолік – неможливо враху-вати зовнішні пристрої, що під”єднуються до ОМК. Системи моделювання пристрою з мікроконтролером. Це аналогічний програмний засіб для ПЕОМ, який частково враховує деякі зовнішні пристрої у відповідних моделях (VMLab, MCStudio та інші): індикатори, кнопки, генератори сигналів. Поки найкраща система Proteus.

>3. Програмно-апаратні засоби симуляції. Це ПЕОМ з відповідною програмою та під”єднаними через певні адаптери 3. Програмно-апаратні засоби симуляції. Це ПЕОМ з відповідною програмою та під”єднаними через певні адаптери зовнішніми прис-троями мікроконтролера. Тут ПЕОМ використовуеться замість ОМК і, якщо дозволяє її швидкість, то облуговує цю периферію у реаль-ному часі. Недолік – складно використати – лише на виробництві. 4. Програмно-апаратні засоби налагодження програм для ОМК. Тут використовуються мікроконтролери у штатному вмиканні у пристроях, але між ними та ПЕОМ організовується зв’язок для контролю траси програми. Для цього можуть використовуватися лише певні типи ОМК, наприклад, C8051F, або спеціально розроблені “розкриті” зразки інших. Частково цю задачу вирішує система АлБ у режимі “Налагодження з кристалом”. Вам потрібно вивчити “Методику введення і дослідження програм у системі Algorithm Builder”, викладену у виданні: ЦПМК “Завдання на лабораторні роботи”, частина 3.

>