Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
tze electronika ta mpt mv rgr.doc
Скачиваний:
25
Добавлен:
16.02.2016
Размер:
8.57 Mб
Скачать

6. Рішення технологічних задач з допомогою мікропроцесора

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

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

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

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

Нехай необхідно рахувати цифри від 0 до 10. Напрям рахунку може бути від 0 до 10 і навпаки від 10 до 0 з кроком 1. Блок-схема алгоритму (структурна схема / програми зображена на рис. 8.1, а,б.)

а)

б)

Рахунок від 0 до 10

відповідає рис. 8.1,а.

Рахунок від 10 до 0

відповідає рис.8.1,б.

Рис.6.1. Блок-схема алгоритму рахунку від 0 до 10

Реалізація цієї блок-схеми (рис.6.1,а) в процесорі вимагає опису команд конкретного процесора. Візьмемо опис команд процесора КР580 (КР580 ИК80), який використовує мову Асемблер і запишемо програму рахунку чисел без використання адресного поля комірок пам’яті

Асемблер

Коментар

MVIA, 0

Встановити в регістр А значення 0

INR, A

Збільшити регістр А на 1

CPI 10

Порівняти вміст регістр А з числом 10

JZ,

Перейти на операцію збільшення на 1, якщо А = 10

JMP

Безумовно перейти на сигналізацію “кінець рахунку”

Для реалізації цієї програми необхідно команди процесора перетворити в машинні коди і записати ці коди і дані (операнди) в пам’ять МП, яка визначається конкретним типом мікропроцесорного пристрою. Нехай для запису нам дано адресне поле з номером початкової адреси А000. В кожну адресу можна записати 1 байт інформації. Програма повинна містити чотири колонки згідно з таблицею 6.1.

Таблиця 6.1.

Номер адреси

Команда на мові Асемблер

Машинний код команди

Коментар

А000

MVI, A

3 E

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

А001

00

Число 0

А002

М1, INR, A

3 C

Збільшити А на 1

А003

CPI

FE

0A

Порівняти вміст А з числом

ОА16 = 1010 – число порівняння

А004

А005

JZ

СА

Перейти на збільшення на 1 знову якщо А ≠ 10

А006

02

Адреса А002 переходу

для виконання збільшення на 1, якщо в А ≠ 10

А007

А0

А008

JMP

C 3

Адреса

переходу М1

Безумовний перехід по вказаній в А009, А00А адресах, якщо А=10, кінець рахунку.

А009

А00А

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

Електричні схеми в МП визначають, що повинно йти за КОП – або дані, або адреси і слідкують, щоб названий порядок строго виконувався.

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

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

Таблиця 6.2

Номер адреси

Команда на мові Асемблер

Машинний код команди

Коментар

А000

MVІ

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

ОА16 = 1010 – число 10

А001

А002

DCR, A

3D

Зменшити А на 1

А003

JNZ

С 2

Перейти на зменшення знову, якщо n ≠ 0

А004

02

Адреса А002 переходу

для зменшення знову на 1

А005

А0

А006

JMP

С 3

Безумовний перехід по вказаній А007, А008 адресі, якщо в комірках А = 0, кінець рахунку

А007

А008

Адреса переходу, записана в комірках

Розглянемо приклади практичних задач.

  1. Приклад. Просумувати перші 10 цифр натурального ряду від 1 до 10.

Складемо блок-схему алгоритму і програму сумування чисел (див. рис.6.2. і табл. 6.3.)

Адре-са

Асамб­-лер

Машин­-ний код

Коментар

А000

MVI, A

Переслати в р. А, 0

А001

00

00 – число 0

А002

MVI, D

16

Переслати в р. Д

А003

ОА

Число 10

А004

ADD,D

82

Сумувати А+Д ←А

А005

DCR, D

15

Зменшити вміст Д на 1

А006

JNZ

С2

Перейти на зменшення

знову, якщо 10 - n ≠0

А007

04

А008

АО

04 і А0 адреса А004 переходу

А009

JMP

С3

Безумовний перехід по

вказаній в комірках

А00А і А00В адресі

А00А

А00В

Рис. 6.2. Блок-схема алгоритму і програма для розрахунку суми чисел від 0 до 10

2. Приклад. Виконання логічних операцій.

В основі побудови цифрових схем лежить логічний вентиль, а найбільш часто використовуються логічні функції “НІ”, “І”, “АБО”, “виключне АБО”, які реалізовані програмним способом, (див. тема № 5). Функцію “НІ” виконує команда СМА, функцію “І” – ANA r , “АБО” - ,ORA r, виключне АБО” – XRA r

Задача. Порівняти по “І” вміст інтерфейсного порту 44, що змінюється від 0 до 5 з числом 510 , записаним в регістр В. Якщо операція по “І” виконується, переслати вміст акумулятора в порт 46.

Блок-схема алгоритму задачі на рис.6.3. Нехай результат якоїсь дії, виконуваної МП, змінюється від 0 до 5 з кроком 1 і пересилається у вхідний порт 44. МП пересилає ці дані в акумулятор. В регістр В необхідно записати число 00000101(2) = 5(10).

Команда ANA B порівнює вміст регістра А і В, а результат порівняння по "І" залишається в акумуляторі. Цей результат виводимо в 46 порт.

Рис. 6.3. Блок-схема алгоритму порівняння по “І”

Програма порівняння по “І” приведена в машинних кодах МП КР 580 в таблиці 6.4.

Таблиця 6.4

Адреса

Асемблер

Машинний код

Коментар

…..

А010

А011

А012

А013

А014

А015

А016

А017

А018

А019

….

MVI, A

OUT, 45

IN, 44

MVI, B

ANA, B

3E

81

D 3

45

DB

06

05

CC

D 3

46

……..

Програмування портів інтерфейсу на вивід і ввід

Читання даних з вхідного порту в регістр А

записати в регістр В число

000001012 = 510 →В

А і В → А

Вивід результату порівняння в порт 46.

Алгоритм рішення технічної задачі можна описати, користуючись такими поняттями, як:

  • послідовність операцій;

  • перевірка умов (а) з наступним прийняттям рішення про напрям ходу обчислень;

  • ітераційний процес.

Складні алгоритми завжди можна розкласти на послідовність простих названих операцій.

  1. Приклад. Рішення технічної задачі

Скласти блок-схему алгоритму і програму на мові Асемблер рішення технологічної задачі різання деталі заданої довжини. Якщо довжина деталі, що треба відрізати, менша заданої, то цей кусок відкинути.

Загальна довжина – 10 од.

Задана довжина – 3 од.

Лишній кусок – 1 од.

Нижче приведено словесний алгоритм, блок-схему (рис.6.4) і програму (табл.6.5) цієї задачі.

Таблиця 6.5

Адреса

Код

Команда

Програмне пояснення

Технологічне пояснення

А000

МVI А, 01

Світлодіод 01

Свічення порту 44

Включення верстату

А001

01

А002

D3

OUT 44

А003

44

А004

1E

МVI E, FF

А005

FF

А006

CD

CALL 030A

А007

0A

А008

03

А009

0E

МVI C, 0A

Заганяємо 10 в регістр С

А00А

0A

А00В

3F

МVI А, 00

Гашення порту 45

А00С

00

А00D

OUT 45

A00E

45

A00F

1E

МVI E, FF

A010

FF

A011

CD

CALL 030A

A012

0A

A013

A0

A014

03

МVI, BB3

Заганяємо 3 в регістр В

Задаємо довжину, якою треба нарізати

A015

06

A016

03

МVI А, 01

Світлоогляд 01

Свічення порту 45

Підсуваємо деталь на три позиції

A017

01

A018

D3

OUT 45

A019

45

A01A

1E

МVI E, FF

A01B

FF

A01C

CD

CALL 030A

A010

08

A01E

03

A01F

3E

МVI А, 00

Гашення порту 45

A020

00

A021

D3

OUT 45

A022

45

A023

1E

МVI E, FF

A024

FF

A025

CD

CALL 0300

A026

0A

A027

03

A028

0D

DCR, C

Зменшити вміст рег.С на 1

A029

05

DCR, B

Зменшити вміст рег.В на 1

A02A

B2

CMP, B

Порівняти вміст В з акум.

A02B

C2

JNZA 016

Перехід на А016 якщо не 0

A02C

16

Адреса

A02D

A0

A02E

3E

МVI А, 10

Світлодіод 10

Свічення порту 45

Ріжемо деталь

A02F

10

A030

D3

OUT 45

A031

45

A032

1E

МVI E, FF

A033

FF

A034

CD

CALL 0S0A

A035

0A

A036

03

A037

3F

МVI A, 01

Задаємо довжину залишка

A038

01

A039

91

SUB, C

Відняти від акум. вміст рег. С

A03A

CA

JA040

Перехід до нульового знач.

A03B

40

Адреса

A03C

A0

A03D

C3

JMP A00B

Безумовний перехід на А00В

Відкидання залишка

A03E

0B

Адреса

A03F

A0

A040

3E

MVI A, 01

Світлодіод 01

Свічення порту 46

A041

01

A042

D3

OUT 46

A043

46

A044

1E

MVI E, FF

A045

FF

A046

CD

CALL 0S0A

A047

0A

A048

03

A049

3F

MVI A, 00

Гашення порту 46

A04A

00

A04B

D3

A04C

46

A040

1E

A04E

FF

A04F

CD

CALL 0506

A050

0A

A051

03

A052

C3

JMP A009

Перехід на іншу непорізану деталь

A053

09

A054

A0

Рис.6.4. Блок-схема алгоритму

  1. Словесний алгоритм

1-задаємо загальну довжину; 2-задаємо довжину, якою треба нарізати; 3-зменшуємо загальну довжину на 1; 4-зменшуємо довжину, якою треба нарізати на 1; 5-якщо L<l, то відкидаємо кусок і на кінець; 6-якщо l=0, то ріжемо деталь і перейти на 2, якщо ні то підсовуємо деталь на 1 позицію.

5. Приклад. Маскування

Типове представлення логічних команд – виділення визначених бітів слова (маскування) використовується тоді, якщо потрібно перевірити стан одного з перемикачів, під’єднаних до порту вводу, а стан інших проігнорувати.

На рис.6.5 і в таблиці 6.6. показана блок-схема і програма задачі, яка дозволяє перевіряти стан перемикача, з’єднаного з другим бітом вхідного порту. Якщо ключ замкнено – індикатор засвічується і навпаки.

Таблиця 6.6

ТАК НІ

Рис.6.5

Адреса

Машин. код

Асемб­лер

Коментар

А000

3 Е

MVI A, 81

Програмування інтерфейсу

А001

81

А002

D 3

OUT, 45

А003

45

А004

DB

IN, 44

Читання даних з

перемикачів в акумулятор

А005

44

А006

06

MVI B, 04

Запис в регістр маскуючого слова 04(10)=00000100(2)

А007

04

А008

A0

ANA B

А і В →А

А009

CA

JZ

Перевірка акумулятора на 0

А00A

A0

А00B

13

адреса переходу

А00C

3 E

MVI А, FF

Включення індикатора

А00D

FF

A00E

D 3

OUT 46

A00F

46

A010

C 3

JMP A004

A011

04

A012

A0

A013

3 E

MVI E, 00

Виключення індикатора

A014

00

A015

D 3

OUT 46

A016

46

A017

C 3

JMP A004

A018

04

A019

A0

В контролері КРВМ – 2 порти інтерфейсної схеми А, В, С відповідно мають шифр 44, 45, 46. Кожен з названих портів може бути запрограмований на ввід чи вивід з акумулятора. Кожен з портів 44, 45, 46 може бути зкомутований через ЯЦВВ мікроконтролера до 3х8=24 проміжних реле, спрацювання кожного з 8 реле сигналізується загорянням світлодіода. Кожне реле (світлодіод) кодується за номерами: 01 – перше реле, 02 – друге реле і т.д.

Завдання на самостійну роботу по темі 6.

Користуючись командами мікропроцесора КР580 ВМ-80, скласти програму рішення технологічної задачі згідно з варіантом наведеним в таблиці 6.7. Варіант вибрати згідно з номером студента по списку групи. Програму необхідно записати в машинних кодах процесора КР580 ВМ80 див. додаток 2.

Скласти словесний алгоритм, блок-схему алгоритму, програму на мові асемблер та в машинних кодах центрального процесорного елемента КР580 ВМ80 рішення технологічної задачі, згідно з варіантом.

Таблиця 6.7

В-нт

Умова задачі

1

Штампування дірок в полосі. Якщо ширина полоси більше ≥ діаметра дірки, то іде процес штампування до 8 дірок. Якщо <, то станок стоїть, сигналізуючи.

2

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

3

Рахування ламп до 10. Перевірка робиться, чи є цоколь або колба, якщо немає цоколя або колби, то брак, якщо є, то іде рахунок ламп.

4

Свердління деталей до допустимої довжини 10мм, якщо глибина свердління менша за допустиме, то збільшення зусилля подачі свердла до допустимого значення.

5

Різання деталей заданої довжини з прутка 20см (4 деталі по 1см).

6

Штампування деталі, якщо товщина деталі дорівнює заданому значенню, то збільшення швидкості подачі до допустимого значення.

7

Вибір комірки автоматизованого стелажу: якщо N комірок стелажу співпадає із заданим, то стелаж завантажується, якщо ні – пошук продовжується. (Пошук може відбуватися як вперед, так і назад).

8

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

9

Фрезерування деталі діаметра d=10мм до d=6мм. За один хід фрезерування можна зняти 1 мм металу. Після закінчення операції сигналізувати про холостий хід верстату або відключення верстату.

10

Рахувати деталі по умові довжини, ширини, висоти, якщо умови виконуються, то рахуємо три деталі.

11

Після включення верстату завантажити перший піддон 6-ма деталями; другий піддон – 8-ма деталями; третій –10-ма деталями. Відповідно просигналізувати про включення верстату, завантаження першого, другого і третього піддонів, виключення верстату.

12

Включення обладнання в моменти часу Т1 і Т3; виключення обладнання в момент Т2 і Т4; час задається зміною Т1=4, Т2=12, Т3=13, Т4=17.

13

Різати штабу з металевого листа, якщо товщина металу дорівнює допустимій (5мм), то різати до довжини 10см, якщо довжина нарізки 10см, то перехід на наступну деталь. Кількість деталей рівна 15.

14

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

15

Рівняння полоси, вісім разів вдаряємо, потім вимірюємо, потім ще раз вдаряємо.

16

Процес різання шайб з зовнішнім діаметром 10 мм і внутрішнім діаметром 6 мм і товщиною 2 мм. Поздовжній зсув супорта автоматичний.

17

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

18

Складання деталей в ящик, якщо число деталей дорівнює 8, то заміна ящика і складання ще 8 деталей ще в другий ящик.

19

Штампування деталей, діаметром d1 від 0 до 5 дірок, діаметром d2 від 6 до 10 дірок.

20

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

21

Штампування деталі по висоті і ширині. Штампуємо 5 разів по ширині і 6 разів по висоті

22

Контроль якості деталей. Якщо d (ширина), m (висота) і s (гл убина) деталі дорівнює заданій, то деталь придатна, якщо хоча б один з параметрів не відповідає заданому - брак.

23

Якщо в набраному слові з 10 букв є помилка, наприклад, на третій букві – сигналізація про брак.

24

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

25

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

26

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

27

Штампування деталей діаметром d1 від 0 до 5 дірок, діаметром d2 від 6 до 10 дірок.

28

Нарізання різьби на круток, якщо довжина нарізки дорівнює 12 мм, реверсувати двигун і вимкнути двигун.

29

Розробити програму керування приводом кувального молота і приводом подачі заготовки. Число заготовок довільне.

30

Штамповка деталей з полоси, якщо ширина, товщина полоси задані і допустимі, то штампується 10 деталей. Якщо ні – сигналізація про те, що умова не виконується

Розроблену програму відлагодити і запустити на мікропроцесорному контролері КРВМ-2 (ауд.307).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]