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

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

1. Складіть наведені нижче двійкові числа:

0000 0101 1000 1001 0101 0101 101 1001

+ ; + ; + ; + ; + .

0001 0001 0000 1111 1010 1010 011 011

2. Виконайте операцію віднімання двійкових чисел:

1001 1111 0001 1001 0011 1001 1001 1111 1001

- ; - ; - ; - ; - .

111 0000 0011 0101 1101 1111 0000 1001 0001

3. Визначити десяткові еквіваленти результатів складання і віднімання по пунктах 1 і 2 відповідно.

4. Виконати множення наведених нижче пар двійкових чисел:

101 0110 0101 1101 0111 1001

· ; · ; · ; · ; · .

011 0111 0010 1101 1000 1010

5. Складіть з логічних схем комбінаційну схему для однорозрядного напівсуматора і складіть таблицю істинності.

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

Приклад 1.7. Обчислити різницю чисел 5810 - 2310 в двійковій системі числення.

Розв`язок.

Крок 1. Визначити додатковий код числа 2310.

Двійковий еквівалент числа 2310 . = 00010111

Його зворотний код 11101000.

+

Додати одиницю 00000001.

=

Виходить додатковий код 11101001.

Крок 2. Обчислити різницю шляхом складання двійкового еквівалента числа 5810 і додаткового кода числа 23.

5810. 00111010

+

ДК23 11101001

=

1. 00100011 - різниця (58-23) = + 35.

одиниця перенесення, відкидається у разі позитивного результату.

Приклад 1.8. Обчислити різницю чисел 2310 - 5810.

Розв`язок.

Крок 1. Визначення додаткового коду числа 581:

00111010 – прямий код числа 5810;

11000101 – зворотний код числа;

+

00000001 – одиниця;

11000110 – додатковий код.

Крок 2. Обчислення різниці:

00010111 – прямий код числа 2310;

+

11000110 – додатковий код числа 5810;

11011101 – різниця (23-58) = - 35 в додатковому коді, оскільки в старшому розряді є одиниця.

Крок 3. Визначення абсолютного значення різниці:

11011101 – додатковий код різниці;

00100010 – зворотний код;

+

00000001 – одиниця;

00100011 – абсолютне значення різниці (3510).

Під час розв`язання задач у двійковій системі числення рекомендується отримані результати перевіряти за допомогою десяткової арифметики.

2 Алгоритми і програми проектування мікропроцесорних систем

2.1 Мета занять

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

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

Для системи, що містить МП, потрібне проектування як апаратних, так і програмних засобів [1].

Проектування апаратної частини може бути виконано з використанням стандартної методології проектування апаратури.

Проектування програмного забезпечення краще за все може бути виконано з використанням мови проектування, подібного природній мові.

Програмне забезпечення будується шляхом перетворення конструкцій мови проектування на мову програмування мікрокомп'ютера (МК). Програмування – це опис послідовності дій користувача, які мають виконуватися для вирішення поставленого завдання. Для успішного вирішення завдання необхідно пройти через певні етапи програмування:

1. Постановка завдання. В деяких випадках постановка завдання не завжди очевидна. Якщо це так, то втрачається багато сил і засобів. Коректна постановка завдання – гарантія успішного його розв`язання.

2. Вибір найбільш прийнятного методу розв`язання. На цьому етапі здійснюється вибір з безлічі можливих методів розв`язання задачі. При цьому необхідно врахувати конкретні властивості вживаного ОП, тобто швидкодію, об'єм пам'яті, наявність стандартних програм тощо.

3. Визначення типів вхідних і вихідних даних. Необхідно визначити форму опису і відображення використовуваних під час розв`язання задачі даних, які часто можуть мати складну і нерідко неявну структуру. Тут необхідний детальний аналіз даних, визначення точності обробки даних, особливо якщо вони надходять від датчиків з великою погрішністю.

4. Проектування і аналіз розв`язання, зокрема порівняння схем, описів тощо. Тут необхідно визначити окремі кроки розв`язання і організувати їх логічну послідовність дій для виконання. Цю послідовність можна відобразити у вигляді схеми алгоритму.

5. Кодування алгоритму мовою програмування. Часто саме цей етап помилково називають програмуванням, хоча, по суті, кодування – це тільки частина всього процесу створення програми.

6. Перевірка і відлагодження програми. Для виправлення помилок необхідно ретельно проаналізувати текст програми.

Весь процес, як правило, носить ітераційний характер. Якщо одержаний розв`язок не задовольняє користувача з причини невисокої точності, недостатньої швидкодії або з яких-небудь інших причин, йому доводиться маніпулювати початковими даними, шукати інший метод розв`язання, інакше планувати виконання завдання.

Одним з важливих етапів програмування є етап складання послідовності дій для вирішення поставленого завдання, тобто побудови алгоритму. Реалізувати це можна з використанням мови проектування, або шляхом складання схем.

Використання мови проектування можна розглянути за допомогою простого прикладу.

Приклад 2.1. Нехай маємо систему з мікрокомп'ютера з двома виходами (рис. 2.1), яка має реалізовувати функцію перетворення, наведену на рис. 2.2.

Рисунок 2.1 – Структурна схема мікрокомп'ютерної системи

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

Мовою проектування в операціях перевірки та установки використовуються прості конструкції.

Перевірити Вх.1 і запам'ятати його значення.

Встановити значення Вих.1, рівне 6.

Рисунок 2.2 – Функція перетворення

Необхідно також мати можливість перевіряти умови, яким задовольняють значення кожного зі входів, що зберігаються, для встановлення вихідних значень. З цією метою використовується умовна конструкція, яка в загальному вигляді може бути подана як: ЯКЩО (умови перевірки – істина). ТО (виконати що-небудь). ІНАКШЕ (виконати що-небудь інше). Таким чином, для даного прикладу опис мовою проектування спочатку матиме вигляд:

1. Перевірити Вх1 і зберігати його значення.

2. Перевірити Вх2 і зберігати його значення.

3. Якщо 4 8 Вх1 8 8, встановити Вих1 = 6.

4. Інакше Вих1 встановити = 0.

5. Якщо 2 8 Вх2 8 6, встановити Вих2 = 4.

6. Інакше Вич2 встановити = 0.

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

З цією метою використовується конструкція:

«ВИКОНУВАТИ БЕЗПЕРЕРВНО» . . . . . «КІНЕЦЬ»

У цій конструкції набір операцій, розташований ВИКОНУВАТИ БЕЗПЕРЕРВНО і КІНЕЦЬ, має повторитися без кінця.

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

З вищенаведеного прикладу можна зробити такі висновки:

  • мікрокомп'ютер є послідовним пристроєм і в кожен момент часу виконує тільки одну операцію;

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

МКП| маніпулює тільки цифровими даними. Якщо в системі є аналогові сигнали, для перетворення вхідних сигналів в цифрову форму необхідний АЦП|, а для перетворення вихідних сигналів в аналогову форму – ЦАП|.

Найбільш зручна показова форма подання алгоритму Розвязок задачі – графічна, у вигляді схеми [2]. Вона складається з упорядкованої сукупності умовних геометричних фігур, що несуть інформацію про певний характер операцій, умову, що накладається, прийняті позначення. Основні форми, які використовуються для подання схем алгоритмів згідно з діючими стандартами, наведені у додатку А.

Схеми алгоритмів можуть бути трьох типів: системні; укрупнені (основні); детальні (докладні).

Приклад 2.2. Скласти схему алгоритму формування двох наборів цілих чисел, що знаходяться в діапазоні від -5 до +5.

Розвязок. Шляхом сортування організувати два набори, один з яких включає позитивні числа, а інший – негативні. Укрупнена схема алгоритму Розвязок цієї задачі наведений на рис. 2.3.

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

Під час програмування можливе використання підпрограм. Підпрограма – це частина програми, використовувана зазвичай кілька разів у процесі її виконання. Проте текст підпрограми записується програмістом тільки один раз. Коли ж програмісту необхідно скористатися підпрограмою, достатньо вказати в програмі відповідну команду виклику (звертання до підпрограми), що адресується до області пам'яті, в якій розташована підпрограма. З цією метою в мові програмування для більшості МП| існує команда CALL (викликати). У цій команді після коду операції (CALL) зазначається ім'я підпрограми, яке присвоєне фізичній адресі в області пам'яті, де розташована дана підпрограма.

Останньою виконуваною командою підпрограми є команда RET (return – повернення). За цією командою виконується повернення до основної програми, перерваної командою виклику.

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

Приклад 2.3. Реалізувати в машинних кодах програму складання двох чисел, одне з яких 01100100 знаходиться в регістрі загального призначення (РЗП|) В, а друге – 00010111 розташоване в елементі пам'яті з адресою 0000000010001111.

Розв’язок. У даному випадку МП| має шістнадцятирозрядну| шину адреси. Фрагмент програми наведений у табл|. 2.1.

Таблиця 2.1 – Програма складання в машинних кодах

Таблиця 2.2 – Програма складання в шістнадцяткових| кодах

Адреса пам'яті

Мнемокод

Мнемокод

Адреса

Н - код

Vt

0000 0000 0000 0100

01111000

MOV A,B

0004

78

5

0000 0000 0000 0101

00100001

LXI H

0005

21

16

0000 0000 0000 0110

10001111

0006

8F

0000 0000 0000 0111

00000000

0007

00

0000 0000 0000 1000

10000110

ADD M

0008

86

7

0000 0000 0000 1001

01110110

HLT

0009

76

7

. . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . .

. . . . . .

. . . .

0000 0000 0000 0100

00010111

008F

17

Перша команда – пересилання вмісту регістра В в акумулятор – є однобайтовою. Код операції розташований у ПЗП за адресою 0000 0000 0000 0100, яка для даної програми є початковою.

Наступна команда – трибайтова, має код операції 00100001, що являє перший байт команди. Другий і третій байти, розташовані в чергових осередках ПЗП, містять відповідно молодшу і старшу частині адреси 1000 1111 0000 0000, передані за цією командою в регістрову пару H і L.

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

У табл|. 2.2 наведений фрагмент тієї самої програми, записаної в шістнадцяткових| кодах. Поряд з кодом операції показані його мнемонічне зображення і найменування операндів, прийняті в системі команд даного МП|. Наприклад, шістнадцятковий| код команди 78, що має мнемонічне позначення MOV A,B, відповідає операції пересилання вмісту регістра В в акумулятор А. У табл|. 2.2 також вказане число тактів Vt, необхідне для виконання кожної команди. Для виконання всієї програми потрібно 35 машинних тактів.

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

Приклад 2.4. Визначити модуль числа.

Розв’язок. Під час дослідження сигналів часто доводиться оцінювати погрішність вимірювання за модулем. У зв'язку з тим, що від’ємні числа подаються в додаткових кодах, при визначенні модуля не можна обмежитися тільки відкиданням знаку числа, інформація про яке поміщена в старшому біті. Якщо число позитивне, то його слід помножити на -1. Знак можна визначити, використовуючи операцію маскування або засилання старшого біта в тригер перенесення з подальшим його аналізом. У даному випадку ці операції небажані, оскільки супроводжуються зміною вмісту акумулятора. Доцільно застосувати команду логічного складання вмісту акумулятора з самим собою. При цьому вміст акумулятора не змінюється, а прапорці встановлюються у відповідні стани. Умовний перехід виконується за вмістом тригера знаку.

На рис. 2.4 зображена схема алгоритму визначення модуля числа, що знаходиться в регістрі Е.

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

Алгоритм працює так. Число з регістра Е пересилається в акумулятор. У результаті виконання операції логічного складання акумулятора з самим собою в тригер знаку записується старший біт числа. За допомогою команди умовного переходу здійснюється розгалуження програми. Якщо S=0 (позитивне число) умова не виконується, то проводиться зміна знака числа і модуль числа з акумулятора пересилається в регістр Е. Знак числа змінюється застосуванням операції доповнення, що полягає в інвертуванні усіх розрядів числа (команда CMA) з подальшим збільшенням одиниці до молодшого розряду (команда INR A). Якщо умова S=0 виконується (число позитивне), то за умовним переходом JР M2 три останні команди не виконуються, вміст регістра Е не змінюється, а виконання програми продовжується з адреси 01F8, відповідно мітки М2. Програма в машинних кодах з коментарями наведена в табл. 2.3.

Таблиця 2.3 – Програма визначення модуля числа

Мітка

Мнемокод

Операнд

Адреса

Н-код

Коментар

Vт

MOV

A, E

01F0

7B

Пересилання в акумулятор

5

ORA

A

01F1

B7

Визначення знака числа

4

JP

M2

01F2

F2

Умовний перехід за позитивним значенням

10

01F3

F8

01F4

10

CMA

A

01F5

2F

Зміна знака числа

4

INR

A

01F6

3C

5

MOV

E, A

01F7

5F

Пересилка в регістр Е

5

M2:

10F8