Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_prakt-Mikroprocesori-2008-ukr.doc
Скачиваний:
15
Добавлен:
13.04.2015
Размер:
1 Мб
Скачать
☆

2.3 Контрольні запитання і завдання

1. Які етапи програмування передують кодуванню алгоритму мовою програмування?

2. Які етапи програмування виконуються після етапу визначення типів вхідних і вихідних змінних?

3. Які вимоги висуваються до алгоритмів?

4. Які можливі типи схем алгоритмів і їхня область застосування?

5. У яких випадках переважне написання програм у машинних двійкових кодах?

6. У яких випадках переважне написання програм у мнемокодах?

7. Що розуміється під вкладенням підпрограм?

2.4 Приклади аудиторних і домашніх завдань

Приклад 2.6. Організувати програмно лічильник циклів.

Розв’язок. Для реалізації завдання складається перелік кроків, тобто схема алгоритму.

Схема алгоритму наведена на рис. 2.5, а фрагмент програми – у табл. 2.4.

Рисунок 2.5 – Схема алгоритму рахунку циклів

Для МП з регістр-акумуляторною архітектурою як лічильник циклів може бути один РЗП, наприклад, регістр В. За командою в нього заноситься число N, що визначає кількість повторюваних циклів. У даному завданні умовно встановлюється N=16. Для визначеності приймаємо, що ділянка програми, яку необхідно повторити 16 разів, починається командою логічної операції що «ВИКЛЮЧАЄ АБО» XRA A, розташованої за адресою 1002, і закінчується командою MOV D, A. Ця команда розташована за адресою 10А1H і пересилає дані з акумулятора в регістр D. Після кожного виконання цієї ділянки програми вміст лічильника (регістра В) зменшується на одиницю за допомогою команди DCR B (адреса 10А2). До тих пір, поки вміст регістра В відмінний від нуля, ознака Z має нульове значення і програма переходить до виконання команди, адреса 1002 якого міститься в другому і третьому байтах команди JNZ (перехід за відсутності нуля). Вказана адреса позначена у програмі міткою М, тобто мітка М1 є мнемонічним позначенням адреси 1002.

Таблиця 2.4 – Програма рахунку циклів

Мітка

Мнемокод

Операнд

Адреса

Н - код

Коментар

Vt

. . . . . . .

. . . . . . .

. . . . . .

. . . . . .

. . . . . . . . . .

. .

MVI

B, 16

1000

06

Встановлення лічильника

7

1001

10

N=16 у (B)

M1:

XRA

A

1002

AF

Обнулення ознаки перенесення

4

Продовження табл. 2.4

. . . . . . .

. . . . . . .

. . . . . .

. . . . . .

. . . . . . . . . .

. .

MOV

D, A

10A1

57

Пересилання вмісту А в регістр D (D:=A)

5

DCR

B

10A2

05

Зменшення вмісту лічильника на 1

5

JNZ

M1

10A3

C2

Перехід за умовою (N)  0 до елемента пам'яті з адресою 1002

10

10A4

02

10A5

10

. . . . . . .

. . . . . . .

. . . . . .

. . . . . .

. . . . . . . . . .

. .

Якщо в результаті чергового віднімання одиниці вміст регістра У виявиться рівним нулю (Z=1), то програма перейде до виконання команди, розташованої за JNZ. Відбувається вихід з циклічної ділянки програми. Якщо регістр В має вісім двійкових розрядів, то розглянута структура програми дозволяє організувати лічильник від 1 до 255 циклів.

Приклад 2.7. Визначити з двох позитивних чисел одне максимальне.

Розв’язок. Під час обробки сигналів часто з’являється необхідність визначення максимального з декількох позитивних чисел. Такі завдання виникають, наприклад, під час виявлення корисних сигналів або під час знаходження максимального значення сигналу при заданому інтервалі часу. Знаходження максимального з декількох чисел зводиться до послідовного визначення максимального з двох чисел.

Вважатимемо, що одне з чисел, які перевіряються, знаходиться в регістрі А, друге – в регістрі В. Потрібно після визначення більше число помістити в регістр В, а менше – в акумулятор. Схема алгоритму реалізації даного завдання наведена на рис. 2.6, а програма в машинних кодах – у табл. 2.5.

Рисунок 2.6 – Схема алгоритму знаходження

максимального з двох позитивних чисел

У системі команд МП є команда порівняння СМР, яка не змінює вмісту акумулятора, проте встановлює трігер ознаки CY (перенесення) в одиничний стан, якщо вміст акумулятора менше вмісту регістра.

Таблиця 2.5 – Програма знаходження більшого з двох позитивних чисел

Мітка

Мнемокод

Операнд

Адреса

Н-код

Коментар

Vt

CMP

B

00A1

B8

Порівняння чисел

7

JC

M1

00А2

DA

Перехід на М1, якщо (А) <(В)

10

00А3

А8

00А4

00

MOV

C, A

00A5

4F

Обмін вмісту між акумулятором і регістром B через регістр З

5

MOV

A, B

00A6

7B

5

MOV

B, C

00A7

41

5

M1:

00A8

3 Програмна модель ядра мікроконтролера з CISC архітектурою

3.1 Мета занять

Вивчення і закріплення теоретичного матеріалу того, що включає програмно доступні ресурси мікроконтролерів з регістр-акумуляторної архітектури, систему команд, алгоритми і програми обробки інформації з використанням різних методів адресації.

3.2 Заняття 1. Програмно доступні регістри, розподіл пам'яті, способи адресації

3.2.1 Мета заняття

Вивчити і дослідити регістри спеціальних функцій, регістри загального призначення, розподіл пам'яті, основні способи адресації, використовувані в системі команд МК MCS 251.

3.2.2 Методичні вказівки з організації самостійної роботи студентів

Під час підготовки до занять необхідно ознайомитися з лекційним матеріалом з даної теми і матеріалом, викладеним [1,2,3 ].

Мікроконтролер (МК) або однокристальна мікро-ЕОМ (ОМЕВМ) – це однокристальна МПС, орієнтована на виконання функцій обробки, логічного аналізу і управління різними пристроями. ОМЕВМ сімейства МК 51 має: 32 РЗП; 28 визначених користувачем програмно-керованих прапорців; 21 восьми-розрядних регістрів спеціальних функцій [3]. До трьох регістрів можна адресуватися як до 16-розрядних.

Основним функціональним компонентом ядра мікроконтролера є арифметико-логічний блок (АЛБ), що забезпечує виконання арифметичних і логічних операцій.

АЛБ| складається з 8-розрядного АЛП| (суматора), регістра акумулятора (А), двох буферних регістрів (БРАЛУ, БРА), додаткового регістра (В), регістра стану програми (PSW), ПЗП-констант. Програмно доступними регістрами є регістр А, PSW, В.

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

Регістр PSW призначений для зберігання інформації про стан АЛБ під час виконання програми.

Регістр В – 8-розрядний регістр, використовуваний під час операцій множення і ділення. Для інших команд він може розглядатися як додатковий регістр загального призначення.

Рисунок 3.1 – Формат регістра PSW

На рис. 3.1 прийняті позначення розрядів регістра стану програми (PSW) визначають: P – ознака паритету парності; VO– ознака прапорця переповнювання; RS0, RS1 – вибір банку РЗП; F0 – прапорець користувача; AC – ознака додаткового перенесення; CY – ознака перенесення; PSW.1 – резервний містить тригер доступний за записом («0» і «1») і читанням, який може використовувати програміст.

У мікроконтролері сімейства МК| 51 є пам'ять програм і пам'ять даних.

Пам'ять програм – призначена для зберігання програм і має окремий від пам'яті даних адресний простір об'ємом 64 Кбайт, причому для деяких ОМЕВМ КР1816ВЕ51, КР1830ВЕ51 і КМ1816ВЕ751 частина пам'яті з адресами 0000 – 0FFF розташована на кристалі ОМЕВМ. Пам'ять програм доступна тільки за читанням і має байтову організацію об'ємом до 64 Кбайт.

Пам'ять даних – призначена для прийняття, зберігання і видачі інформації, використовуваної в процесі виконання програми. Структура пам'яті даних та її розподіл подано [3,7,8].

Важливим регістром, який використовується під час виконання ряду команд, є регістр покажчик стека (SP). Він є 8-розрядним регістром, призначеним для прийняття і зберігання адреси осередку стека, до якого було останнє звертання. Під час виконання, наприклад команд LCALL, ACALL вміст покажчика стека збільшується на 2 (SP=SP+2), а під час виконання команд RET, RETI вміст покажчика стека зменшується на 2 (SP=SP-2).

Основна функція мікроконтролера (МК) – обробка інформації, логічний аналіз і управління. Обробка інформації проводиться МК згідно з програмою, яка є сукупністю (послідовністю) команд, що скерувують роботу пристрою управління.

Під командою розуміють сукупність відомостей, необхідних процесорному елементу для виконання певної дії під час реалізації програми. Безліч інструкцій, що реалізовуються в конкретному мікроконтролері, утворює його систему команд, яка і служить базою для написання програм. Команда, як правило, складається з двох частин: коду операції і адреси. Код операції – повідомляє МП, що робити, а адреса – вказує місце положення даних тих, що беруть участь в операції. Точний формат команди залежить від конкретної операції, яку необхідно виконати (рис. 3.2). Наприклад, команда

MOV A,R2

КОП

Ад

0

1

D

D

D

S

S

S

Рисунок 3.2 – Структура формату команди MOV A,R2

На рис. 3.2 SSS – джерело, DD – приймач інформації.

Синтаксис більшості команд асемблерної мови ОМЕВМ складається з мнемонічного позначення функції, слідом за яким йдуть операнди, вказуючи методи адресації і типи даних. Хоча мнемокоди однакових команд часто різні для різних МП| і МК|, конструкція запису команд асемблера однакова для всіх мов асемблерного рівня.

Мовою Асемблера кожна команда записується на одному рядку і має чотири поля: 1 поле мітки; 2 поле коду операції; 3 поле операнда; 4 поле коментаря. З усіх полів у кожному рядку тільки поле коду має бути непорожнім.

MOV A,Rо ; A:=(Ro)

SJMP DEL

......

DEL: SETB 3FH ; [3FH]:=1

Команди виконуються за один, два або чотири (множення і ділення) машинні цикли. При частоті тактового генератора, рівній 12 Мгц, одноциклові команди виконуються за 1 мкс, двоциклові — за 2 мкс і т.д.

У командах можуть бути різні способи адресації операндів-джерел.

Регістрова адресація використовується для звертання до восьми робочих регістрів вибраного банку робочих регістрів (ці самі регістри можуть бути вибрані за допомогою прямої адресації і побічно-регістрової адресації як звичайні осередки внутрішнього ОЗУ даних).

Приклад: MOV A,Rn ; де n=0-7; (A):=(Rn).

Регістрова адресація використовується також для звертання до регістрів А, В, АВ (здвоєному регістру), DPTR і до прапорця перенесення С. Використання регістрової адресації дозволяє одержувати двобайтовий еквівалент трибайтових команд прямої адресації.

Пряма адресація використовується для звертання до елементів внутрішньої пам'яті (ОЗУ) даних (0—127) і до регістрів спеціального призначення.

Приклад: MOV A,40H; (A):=[40H].

Пряма побітова адресація також використовується для звертання до 128 біт, що окремо адресуються, розташованих в осередках з адресами 20Н—2FH і до біт регістрів спеціального призначення, що окремо адресуються.

Приклад: CLR 7FH ; [7FH]:=0.

Побічно-регістрова адресація використовується для звертання до осередків внутрішнього ОЗУ даних. Як регістри-покажчики використовується регістри R0, R1 вибраного банку регістрів.

Приклад: MOV A,@Ro; (A):=[(Ro)]].

У командах PUSH і POP використовується вміст покажчика стека (SP).

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

Приклад: MOVX A,@Ri ; (A):=((Ri)), де i=0,1

MOVX A,@DPTR, : (A):=[(DPTR)].

Безпосередня адресація дозволяє вибрати з адресного простору пам'яті програм константи, зазначені в команді.

Приклад: MOV A,#data; (A):=<data8>.

Побічно-регістрова адресація за сумою: базовий регістр плюс індексний регістр (вміст акумулятора А) спрощує перегляд таблиць, зашитих у пам'яті програм. Будь-який байт з таблиці може бути вибраний за адресою, визначеною сумою вмісту DPTR або PC і вмісту А.

Приклад: MOVC A,@A+DPTR; : (A):=[(A)+(DPTR)].