Програмування цифрового автомату

Автор: Пользователь скрыл имя, 17 Марта 2013 в 22:08, курсовая работа

Описание работы

Дана курсова робота виконується з метою більш поглибленого вивчення дисципліни «Мікроконтролери у вимірювальній техніці», набуття навичок самостійного вирішення поставлених задач, більш детального вивчення принципу роботи MCS-51 стенду EV8031, та вдосконалення знань, набутих під час виконання лабораторних робіт.
В курсовій роботі використовуються такі теоретичні відомості, як відомості про вбудований у стенд ЦАП, а також принцип роботи цифрового автомату, необхідні для кращого розуміння поставленої задачі та розроблення шляхів її реалізації на базі MCS-51 стенду EV8031; відомості про апаратні та програмні можливості використовуваного стенду EV8031 та мікроконтролера MCS-51.
В курсовій роботі використовується програмне середовище Keil uVision3.

Содержание

Вступ………………………………………………………………………….4
1. Теоретична частина:
1.1. Загальні відомості про цифро-аналоговий перетворювач……...…5
1.2. Мікроконтролер 8051…………………………………………….…..8
1.2.1. Програмна архітектура МК 8051……………………………..…..8
1.2.2. Структура внутрішньої пам’яті…………………………….....…10
1.2.3. Система переривань…………………………………….…….….15
1.3. Цифровий автомат…………………………………………….……..21
1.3.1. Що являє собою цифровий автомат……………………….....….21
1.3.2. Структурна схема цифрового автомату…………………..…......23
1.3.3. Синтез цифрового автомату……………………………..…..…..25
2. Практична частина:
2.1. Алгоритм програми для реалізації цифрового автомата………….26
2.2. Алгоритм для підпрограми обробки переривань…………………..28
2.3. Текст програми з коментарями…………………………………......29
Висновки………………………………………………………………...….33

Работа содержит 1 файл

КУРСОВА.doc

— 626.50 Кб (Скачать)

Розглянемо більш докладно резидентну (on-chip) пам'ять мікроконтролера 8051.Резидентні пам'ять складається з двох частин: внутрішнього ОЗУ розміром 128 байт і пам'яті, що виділяється для регістрів спеціальних функцій (Special Function Registers, SFR). Внутрішнє ОЗУ має структуру,показану на рис. 5.


Рис. 5. Структура внутрішньої ОЗУ

Для доступу до даних, розміщених у внутрішньому ОЗП, використовується однобайтова адреса. Архітектура внутрішньої пам'яті даних 8051 дозволяє звертатися до окремих бітам даних у спеціально виділеної області внутрішнього ОЗУ,починаючи з адреси 0x20 і закінчуючи 0x2F. Таким чином, у зазначеному діапазоні адрес можна звертатися до 128-бітовим змінним за допомогою команд бітових операцій SETB і CLR. Бітові змінні нумеруються, починаючи з 0x0 і закінчуючи0x7F. Це не означає, що не можна звертатися до цих осередків пам'яті, як до байтів при звичайних операціях з пам'яттю.

У другому випадку  звернення виконується до байту  за адресою 0x20, а встановлення відповідних  бітів виконується операцією  «логічне АБО».

У внутрішньому ОЗП мікроконтролера 8051 виділено 4 банки регістрів загального призначення. При включенні мікроконтролера  банком за замовчуванням стає банк 0 (див. рис. 5).

При цьому регістру R0 відповідає адреса 0x00, регістру R1 - адреса 0x01, нарешті,регістру R7 при використанні банку 0 відповідає адреса 0x07. Якщо банком за замовчуванням стає, наприклад, банк 1, то регістру R0 буде відповідати адресу0x08, регістру R1 - адреса 0x09 і регістру R7 - адреса 0x0F.

До адресного простору внутрішнього ОЗУ починаючи з адреси 0x80 приєднуються і адреси регістрів спеціальних функцій (рис. 6).

Регістри спеціальних функцій (Special Function Registers, SFR) призначені для управління ходом обчислювальних операцій, а також відповідають за ініціалізацію, настройку і управління портами вводу / виводу, таймерами, послідовним портом. Крім того, регістри спеціальних функцій містять інформацію про пріоритети переривань, а також біти управління дозволом переривань. Регістри спеціальних функцій із зазначенням їх призначення перераховані в табл. 1

Рис. 6. регістри спеціальних функцій

 

 

Таблиця 1. Регістри спеціальних  функцій

Позначення

Опис

Адреса

А

Акумулятор

0Е0Н

В

Регістр-розширювач акумулятора

0F0H

PSW

Слово стану програми

0D0H

SP

Регістр-покажчик стека

81H

DPTR

Регістр-покажчик даних (DPH)

83H

(DPL)

82H

P0

Порт 0

80H

P1

Порт 1

90H

P2

Порт 2

0A0H

P3

Порт 3

0B0H

IP

Регістр пріоритетів  переривань

0B8H

IE

Регістр маски переривань

0A8H

TMOD

Регістр режиму таймера/лічильника

89H

TCON

Регістр управління/статусу  таймера

88H

TH0

Таймер 0 (старший байт)

8CH

TL0

Таймер 0 (молодший байт)

8AH

TH1

Таймер 1 (старший байт)

8DH

TL1

Таймер 1 (молодший байт)

8BH

SCON

Регістр управління прийомопередатчиком

98H

SBUF

Буфер прийомопередатчика

99H

PCON

Регістр управління потужністю

87H


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

1.2.3 Система переривань

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

Класичний мікроконтролер 8051 має 5 джерел переривань: два зовнішніх переривання, ініційованих сигналами на входах, - INT0 (висновок P3.2) і INT1(висновок P3.3); два  переривання таймерів - 0 і 1; переривання  послідовного порту(див. рис. 7). Послідовність виконання двох і більше переривань у випадку їх одночасного надходження визначається їх пріоритетами.

 

Рис. 7. Структура переривань 8051

Якщо припустити, що всі  переривання мають однакові установки  пріоритету, то за одночасного виникнення декількох переривань вони обробляються так, як показано на рис. 2. Наприклад, переривання INT0 має найвищий пріоритет (йому відповідає умовне позначення 1 на рис. 2), переривання таймера 0 має нижчий пріоритет у порівнянні з INT0 (позначено цифрою 2) і т.д. Найнижчий пріоритет у пристрої 8051 має переривання послідовного порту (позначено цифрою 5 на малюнку). Для мікроконтролера 8052 найнижчим пріоритетом має переривання таймера 2 (позначено цифрою 6). Для зміни пріоритетів виконання переривань слід встановлювати спеціальні флаги в регістрі пріоритетів IP.

Мікроконтролер реагує на переривання, тільки якщо буде встановлено флаг відповідного переривання в регістрі TCON.

Будь-яке з переривань буде викликано  тільки в тому випадку, якщо його виклик вирішено шляхом установки відповідних бітів у регістрі IE.

Розглянемо, як викликаються і обробляються зовнішні переривання INT0 і INT1 в мікроконтролері 8051. Зовнішні переривання INT0 і INT1 можуть бути викликані рівнем або переходом  сигналу з 1 в 0 на входах мікроконтролера в залежності від значень керуючих бітів IT0 і IT1 в регістрі TCON. Якщо відповідний біт ITx (x = 0,1)встановлено, то переривання викликається по перепаду 1-0 на відповідному вході INTx мікроконтролера. Якщо ці біти скинуті, то переривання INTx викликається при наявності низького рівня на відповідному вході.

При виникненні зовнішнього переривання INTx встановлюється відповідний флаг IEx в регістрі TCON, який ініціює виклик відповідної підпрограми обслуговування або,по-іншому, програми обробника переривання. Скидання флага IEx виконується апаратно у випадку, якщо переривання було викликано перепадом сигналу на вході INTx. Якщо ж вхід переривання INTx налаштований на спрацювання за низьким рівнем, то про стан флага IEx повинна піклуватися програма $ обробник даного переривання.

Зовнішні переривання INT0 і INT1 можуть (якщо дозволені) викликатися одним  з трьох способів:

  • установкою низького рівня сигналу на відповідному виводі мікроконтролера;
  • програмною установкою бітів P3.2 та / або P3.3;
  • установкою флагу переривання IE0 або IE1.

Переривання від таймерів викликаються при переповненні регістрів  таймера (TH0 - TL0 для таймера 0, TH1 - TL1 для  таймера 1 і TH2 - TL2 для таймера 2). Для  всіх трьох таймерів при досягненні значень 0xFF в THx - TLx (x = 1, 2, 3) наступний  інкремент таймера викличе установку флага TFx, що ініціює переривання. Флаги переривання таймерів 0 і 1 розміщені в регістрі TCON, при цьому TF0 відповідає біту TCON.5, а TF1 - биту TCON.7.

Флаги запитів переривання  від таймерів TF0 і TF1 скидаються автоматично  при передачі управління підпрограмі обслуговування.

Переривання послідовного порту викликається установкою одного з флагів - TI або RI (див. рис. 2). Флаги запитів переривання RI і TI встановлюються логікою послідовного порту апаратно, але скидатися повинні програмою. Переривання можуть бути викликані або скасовані програмою, тому що всі перераховані флаги програмно доступні. Обмін даними через послідовний порт буде розглянуто далі в цій книзі, тому зупинятися більш докладно на особливостях обробки переривань послідовного порту ми поки не будемо.

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

• в даний момент обслуговується запит переривання з пріоритетом рівним або більш високим, ніж поточний;

• поточний машинний цикл не є останнім у циклі виконуваної команди;

• в даний момент виконується команда RETI або будь-яка команда, яка звертається до одного з регістрів - IE або IP.

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

Паралельні порти вводу / виводу даних мікроконтролера 8051 має  чотири 8-бітових порту введення / виводу, позначених P0- P3 і призначених для введення або виведення інформації як у формі байта, так і побитово.

Кожен порт містить керований регістр-клямку, вхідний буфер і вихідний драйвер. Узагальнена функціональна схема  порту введення / виводу показана на рис. 8.

 

Рис. 8. Узагальнена функціональна схема порту введення / виводу

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

Однак порти P0 і P2 не можуть бути використані для цієї мети у випадку, якщо система має зовнішню пам'ять, зв'язок з якою організовується через загальну поділювану шину адреси / даних, що працює в режимі тимчасового мультиплексування. Схема функціонування однієї лінії введення / виводу порту P0 показана на рис. 4.


Рис. 9. Схема функціонування однієї лінії введення / виводу порту P0

Вихідні драйвери порту P0 реалізовані з відкритим стоком, як це видно з рис. 4, тому напряму використовувати цей порт для введення / виведення даних не можна. Для роботи порту P0 в режимі введення / виведення даних потрібно до виводів порту приєднати резистори номіналом 10 К (рис. 10).

Рис. 10. Використання ліній Р0 для вводу/виводу

Для читання порту P0 потрібно спочатку записати в нього одиниці, а потім прочитати вхідне значення. Апаратна архітектура портів P1 - P3 дещо відрізняється від тієї, що реалізована для P0. Функціональна схема однієї лінії введення / виводу портів P1 - P3 показана на рис.11.

Рис. 11. Функціональна схема однієї лінії введення / виводу портів P1 - P3

Вихідні каскади портів P1 - P3 використовують внутрішні підтягують резистори, з'єднані зі стоком вихідних транзисторів, тому необхідність у  зовнішніх резисторах, як у випадку  порту P0, відпадає. Вихідні драйвери портів 0 і 2, а також вхідний буфер  порту 0 використовуються при зверненні до зовнішньої пам'яті. При цьому через порт 0 в режимі тимчасового мультиплексування спочатку виводиться молодший байт адреси, а потім видається або приймається байт даних. Через порт 2 виводиться старший байт адреси в тих випадках, коли розрядність адреси дорівнює 16 біт.

Порти P1, P2 і P3 можуть використовуватися, так само як і порт P0, для введення/виведення  даних, при цьому не потрібно встановлювати  підтягують резистори, як це робиться для порту P0. Як і для порту P0, при читанні даних слід записати у відповідні розряди портів P1, P2 і P3 одиниці.

Усі висновки порту P3 можуть бути використані для реалізації альтернативних функцій. Ці функції  можуть бути задіяні шляхом запису одиниці у відповідні біти регістра-засувки (P3.0 - P3.7) порту P3.

Звернення до портів введення / виведення можливо з використанням  команд, що оперують з байтом, окремим  бітом або з довільною комбінацією  бітів. При цьому в тих випадках, коли порт є одночасно і операндом  і місцем призначення результату, пристрій управління автоматично реалізує спеціальний режим, який називається «читання-модифікація-запис». Цей режим обігу передбачає введення сигналів не з зовнішніх висновків порту, а з його регістра $ засувки, що дозволяє виключити неправильне зчитування раніше виведеної інформації. Цей механізм звернення до портів реалізований в командах:

• ANL - «логічне І», наприклад: ANL P1, А;

• ORL - «логічне АБО», наприклад: ORL P2, А;

• XRL - «виключає АБО», наприклад: XRL Р3, А;

• JBC - перехід з подальшим очищенням біта, наприклад: JBC P1.1, LABEL;

• CPL - інверсія бита, наприклад: CPL Р3.3;

• INC - інкремент порту, наприклад: INC P2;

• DEC - декремент порту, наприклад: DEC P2;

• DJNZ - декремент порту і перехід, наприклад: DJNZ P1, LABEL;

• MOV PX.Y, C - передача біта перенесення C в біт Y порту X;

• SET PX.Y - установка біта Y порту X;

• CLR PX.Y - скидання біта Y порту X.

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

1.3 ЦИФРОВИЙ АВТОМАТ

1.3.1 ЩО ЯВЛЯЄ  СОБОЮ ЦИФРОВИЙ АВТОМАТ

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

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

Информация о работе Програмування цифрового автомату