Система переривань, таймера-лічильника й послідовного порту мікроконтролера 8051

Таймери-лічильники мікроконтролера 8051, та режими їх роботи. Послідовний порт мікроконтролера 8051. Регістр керування/статусу прийомопередавача SCON. Система переривань мікроконтролера 8051. Приклад програми обробки переривання та програмування таймера.

Рубрика Программирование, компьютеры и кибернетика
Вид практическая работа
Язык украинский
Дата добавления 26.03.2009
Размер файла 524,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

20

Практична робота № 3.

Система переривань. Обробка тимчасових сигналів.

Програмування послідовного порту ОЕВМ

Тема: Система переривань. Обробка тимчасових сигналів. Програмування послідовного порту ОЕВМ

Ціль роботи: Вивчення системи переривань, таймера-лічильника й послідовного порту мікро-контролера 8051.

Таймери / лічильники мікро-контролера сімейства 8051

У базових моделях сімейства є два програмувальних 16-бітних таймери/лічильника (T/C0 й T/C1), які можуть бути використані як таймери, так й як лічильники зовнішніх подій. У першому випадку вміст відповідного таймера/лічильника (далі для стислості Т/З) інкрементується в кожному машинному циклі, тобто через кожні 12 періодів коливань кварцового резонатора, у другому воно інкрементується під впливом переходу з 1 в 0 зовнішнього вхідного сигналу, що подається на відповідний (T0,T1) вивід мікро-евм 8051. Тому що на розпізнавання періоду потрібні два машинних цикли, максимальна частота підрахунку вхідних сигналів дорівнює 1/24 частоти резонатора. На тривалість періоду вхідних сигналів, обмежень зверху немає. Для гарантованого читання вхідний сигнал повинен утримувати значення 1, як мінімум, протягом одного машинного циклу мікро-евм.

Для керування режимами роботи Т/С та для організації їхньої взаємодії із системою переривань використовуються два регістри спеціальних функцій (TMOD й TCON), опис яких наведений нижче.

Таблиця 1.- Регістр режиму роботи таймера/лічильника TMOD.

Символ

Позиція

Ім'я й призначення

GATE

TMOD.7 для Т/З1 й TMOD.3 для Т/З

Керування блокуванням. Якщо біт установлений, то таймер/лічильник "x" дозволений доти, поки на вході "lNTx" високий рівень і біт керування "TRx" встановлений. Якщо біт скинутий, то Т/З дозволяється, як тільки біт керування "TRx" встановлюється

З/Т

TMOD.6 для T/C1 й TMOD.2 для Т/З

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

M1

TMOD.5 для T/C1 й TMOD.1 для Т/З

Режим роботи

M1

M0

 

0

0

Таймер ВЕ48. "TLx" працює як 5-бітний перед дільник

0

1

16 бітний таймер/лічильник. "THx" й "TLx" включений послідовно

1

0

8-бітний авто перезавантажує таймер/лічильник. "THx" зберігає значення, що повинне бути перезавантажений в "TLx" щоразу по переповненню

1

1

Таймер/лічильник 1 зупиняється. Таймер/лічильник 0: TLO працює як 8-бітний таймер/лічильник, і його режим визначається керуючими бітами таймера 0. TH0 працює тільки як 8 бітний таймер, і його режим визначається керуючими бітами таймера 1

M0

TMOD.4 для Т/З1 й TMOD.0 для Т/З

Таблиця 2. - Регістр керування/статусу таймера TCON.

Символ

Позиція

Ім'я й призначення

TF1

TCON.7

Прапор переповнення таймера 1. Встановлюється апаратно при переповненні таймера/лічильника. Скидається при обслуговуванні переривання апаратно

TR1

TCON.6

Біт управління таймера 1. Встановлюється, / скидається програмою для запуску/зупинки

TF0

TCON.5

Прапор переповнення таймера 0. Встановлюється апаратно. Скидається при обслуговуванні переривання

TR0

TCON.4

Біт управління таймера 0. Встановлюється / скидається програмою для запуску/зупинки таймера/лічильника

IE1

TCON.3

Прапор фронту переривання 1. Встановлюється апаратно, коли детектруется зріз зовнішнього сигналу INT1. Скидається при обслуговуванні переривання

IT1

TCON.2

Біт керування типом переривання 1. Встановлюється / скидається програмно для специфікації запиту INT1 (зріз/низький рівень)

IE0

TCON.1

Прапор фронту переривання 0. Встановлюється по зрізі сигналу INT0. Скидається при обслуговуванні переривання

IT1

TCON .0

Біт керування типом переривання 0. Встановлюється / скидається програмно для специфікації запиту INT0 (зріз/низький рівень)

Режими роботи таймерів-лічильників

Як треба з опису керуючих біт TMOD, для обох Т/З режими роботи 0, 1 й 2 однакові. Режими 3 для Т/З і Т/З1 різні. Розглянемо коротко роботу Т/С у кожнім з режимів.

мал.7. Логіка роботи T/C0 і Т/C1у режимах 0, 1, 2 й 3

Режим 0.Переклад будь-якого Т/С у режим 0 робить його схожим на таймер КМ1816ВЕ48 (восьми бітний лічильник), до входу якого підключений п'яти-бітний перед дільник частоти на 32. Роботу Т/С у режимі 0 на прикладі T/C1 ілюструє мал. а. У цьому режимі таймерний регістр має розрядність 13 біт. При переході зі стану "всі одиниці" у стан "всі нулі" установлюється прапорець переривання від таймера TF 1. Вхідний синхросигнал таймера 1 дозволений (надходить на вхід Т/З1), коли керуючий біт TR1 встановлений в 1 або керуючий біт GATE (блокування) дорівнює 0, або на зовнішній вивід запиту переривання INT1 надходить рівень 1. Відзначимо попутно, що установка біта GATE в 1 дозволяє використати таймер для вимір тривалості імпульсного сигналу подаваного на вхід запиту переривання.

Режим 1. Робота будь-якого Т/С у цьому режимі така ж, як й у режимі 0, за винятком того, що таймерний регістр має розрядність 16 біт.

Режим 2. У цьому режимі робота організована таким чином, що переповнення (перехід зі стану "всі одиниці" у стан, "всі нулі") восьми-бітного лічильника TL1 приводить не тільки до установки прапорця TF1 (див. мал. б), але й автоматично перезавантажує в TL1 вміст старшого байта (TH 1) таймерного регістра, що попередньо було задано програмним шляхом. Перевантаження залишає вміст TH1 незмінним. У режимі 2 Т/З0 і Т/З1 також працюють зовсім однаково.

Режим 3. У режимі 3 Т/З0 і Т/З1 працюють по-різному. Т/З1 зберігає незмінним свій поточний уміст. Іншими словами, ефект таке ж як і при скиданні керуючого біта TR1 в 0. Роботу Т/З0 ілюструє мал. в. У режимі 3 TL0 й TH0 функціонують як два незалежних восьми-бітних лічильники. Роботу TL0 визначають керуючі біти Т/З0 (З/Т, GATE TR0), вхідний сигнал INT0 і прапор переповнення TF0. Роботу TH0, що може виконувати тільки функції таймера (підрахунок машинних циклів мікро-евм), визначає керуючий біт TR1. При цьому TH0 використає прапор переповнення TF1. Режим 3 використається в тих випадках, коли потрібне наявність додаткового восьми бітного таймера або лічильника подій. Можна вважати, що в цьому режимі мікро-евм 8051 має у своєму составі три таймери/лічильника. У випадку ж, якщо Т/З0 використається в режимі 3, Т/З1 може бути або виключений, або переведений у режим 0, 1 або 2, або може бути використаний послідовним портом як генератор частоти передачі.

У модернізованих моделях мікро контролерів сімейства MCS-51 може бути третій таймер лічильник T/C2 й (або) блок програмних лічильників PCA, які теж можуть бути використані для відліку тимчасових інтервалів.

Послідовний порт мікроконтролера 8051

Через універсальний асинхронний приемопередавача UART (Universal Asynchronous Receiver-Transmitter) здійснюються прийом і передача інформації, представленої послідовним кодом (молодшими бітами вперед), у повному дуплексному режимі обміну. До складу приемопередавача, називаного часто послідовним портом входять приймаючий і передавальний регістри, що зрушують, а також спеціальний буферний регістр (SBUF) приемопередавача.

Крім того, роботою послідовного порту управляють два службових регістри -

· Регістр керування/статусу приемопередавача SCON

· Біт SMOD регістра керування потужністю PCON

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

Послідовний порт 8051 може працювати в чотирьох різних режимах.

Режим 0. Інформація й передається, і приймається через вивід входу приймача (RXi TXi). Приймаються або передається 8 біт даних. Через вивід виходу передавача (TXD; видаються імпульси зрушення, які супроводжують кожен біт. Частота передачі біта інформації дорівнює 1/12 частоти кварцового резонатора

Режим 1. У цьому режимі передаються через вивід TXD або приймаються через RXD 10 біт інформації: старт-битий (0), 8 біт даних і стоп-біт (1) при прийомі інформації до біта RB8 регістра керування/статусу приемопередавача SCON заносяться стоп-біт Швидкість прийому/передачі - величина змінна й задається таймером.

Режим 2. У цьому режимі через вивід TXD передаються або через RXD приймаються 11 біт інформації: старт-битий, 8 біт даних, програмувальний дев'ятий біт і стоп-біт. При передачі дев'ятий біт даних може приймати значення 0 або 1 або, наприклад, для підвищення вірогідності передачі шляхом контролю по парності в нього може бути поміщене значення ознаки паритету зі слова стану програми (PSW.0). При прийомі дев'ятий біт даних міститься в біт RB8 SCON, а стоп-біт, на відміну від режиму 1, губиться. Частота прийому/передачі вибирається програмою й може бути дорівнює або 1/32, або 1/64 частоти резонатора залежно від керуючого біта SMOD.

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

У всіх випадках передача ініціалізуеться інструкцією, у якій дані переміщаються в SBUF. Прийом ініціалізуеться при виявленні перепаду з 1 в 0 на вході приймача. При цьому в режимі 0 цей перехід повинен супроводжуватися виконанням умов R1 = 0 й REN= 1 (див. табл. 8), а для інших режимів - REN = 1.

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

Керування режимом роботи приемопередавача здійснюється через спеціальний регістр із символічним ім'ям SCON. Цей регістр містить не тільки керуючі біти, що визначають режим роботи послідовного порту, але й дев'ятий біт прийняті або передані даних (RB8 і ТВ8) і біти переривання приемопередавача (R1 і Т1).

Прикладна програма шляхом завантаження в старші біти регістра SCON двох-бітного коду визначає режим роботи приемопередавача. У всіх чотирьох режимах роботи передача ініціалізуеться будь-якою командою, у якій буферний регістр SBUF зазначений як одержувач байта. Як ми вже відзначали, прийом у режимі 0 здійснюється за умови, що R1 = 0 й REN = 1, в інших режимах - за умови, що REN = 1.

У біті ТВ8 програмно встановлюється значення дев'ятого біта даних, що буде переданий 8 режимі 2 або 3. У біті RB8 у цих режимах фіксується дев'ятий прийнятий біт даних. У режимі 1 у біт RB8 заноситься стоп-біт У режимі 0 біт RB8 не використається.

Прапор переривання передавача ТI установлюється апаратно наприкінці періоду передачі стоп-біта у всіх режимах. Відповідна підпрограма обслуговування переривання повинна скидати біт TL.

Прапор переривання приймача RI установлюється апаратно наприкінці періоду прийому восьмого біта даних у режимі 0 й у середині періоду прийому стоп-біта в режимах 1, 2 й 3. Підпрограма обслуговування переривання повинна скидати біт RI.

Таблиця 3. - Функціональне призначення біт регістра керування/статусу приемопередавача SCON.

Символ

Позиція

Ім'я й призначення

SM0

SCON.7

Біти керування режимом роботи приемопередавача. Установлюються/скидаються програмно див. примітка 1

SM0

SM1

Режим роботи приемопередавача

регістр, Що Зрушує, розширення уведення/виводу

0

1

8 бітовий приемопередавача, змінювана швидкість передачі

1

0

9 бітовий приемопередавача. Фіксована швидкість передачі

1

1

9 бітовий приемопередавача, змінювана швидкість передачі

SM1

SCON.6

SM2

SCON.5

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

REN

SCON.4

Біт дозволу прийому. Установлюється/скидається програмно для дозволу/заборони прийому послідовних даних

TB8

SCON. 3

Передача біта 8. Установлюється/скидається програмно для завдання дев'ятого переданого біта в режимі 9-бітового передавача

RB8

SCON.2

Прийом біта 8. Установлюється/скидається апаратно для фіксації дев'ятого прийнятого біта в режимі 9-бітового приймача

TI

SCON. 1

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

RI

SCON.0

Прапор переривання приймача. Установлюється апаратно при прийомі байта. Скидається програмно після обслуговування переривання

Швидкість прийому/передачі інформації через послідовний порт

Швидкість прийому/передачі, тобто частота роботи приемопередавача в різних режимах, визначається різними способами.

У режимі 0 частота передачі залежить тільки від резонансної частоти кварцового резонатора f РЕЗ:

f=fРЕЗ/12

За машинний цикл послідовний порт передає один біт інформації. У режимах 1, 2 й 3 швидкість прийому/передачі залежить від значення керуючого біта SMOD у регістрі спеціальних функцій PCON.

Таблиця 4. - Регістр керування потужністю PCON.

Символ

Позиція

Найменування й функція

SMOD

PCON.7

Подвоєна швидкість передачі. Якщо біт установлений в 1, то швидкість передачі вдвічі більше, ніж при SMOD = 0. По скиданню SMOD = 0.

 

PCON.6

Не використається

 

PCON.5

Не використається

 

PCON.4

Hе використається

GF1 GF0

PCON.3 PCON.2

Прапори, специфікується користувачем (прапори загального призначення)

PD

PCON.1

Біт зниженої потужності. При установці біта в 1 мікро-ЭВМ переходить у режим зниженої споживаної потужності

IDL

PCON.0

Біт холостого ходу. Якщо біт установлений в 1, то мікро-ЭВМ переходить у режим холостого ходу

Примітка. При одночасному записі 1 в PD й IDL біт PD має перевага. Скидання вмісту PCON виконується шляхом завантаження в нього коду 0XXX0000.

У режимі 2 частота передачі визначається вираженням

f =2SMODfРЕЗ/64.

Іншими словами, при SMOD = 0 частота передачі дорівнює 1/64 частоти fРЕЗ, а напувай SMOD = 1 -- 1/32 частоти fРЕЗ.

У режимах 1 й 3 у формуванні частоти передачі, крім керуючого біта SMOD, бере участь таймер 1. При цьому частота передачі f залежить від частоти переповнення f OVLTи визначається в такий спосіб:

f=2SMODfOVTL1/32

Переривання від таймера 1 у цьому випадку повинне бути заблоковане. Сам же таймер може працювати як у режимі таймера, так й у режимі лічильника. Номер режиму (0, 1, 2) ролі не грає. Найбільш типове використання його в режимі таймера з авто перезавантаження (старша тетрада TMOD = 0010У). При цьому частота передачі визначається вираженням:

f = 2SMODfРЕЗ/(32х12х(256 -ТН1)).

Таблиця.5.- Настроювання таймера 1 для керування частотою роботи приемопередавача.

Частота прийому/передачі (BAUD RATE)

Частота резонатора МГц

Таймер/лічильник 1

SMOD

З/Т

Режим (MODE)

Число, що перезавантажує

Режим 0, макс: 1 МГц

12

X

X

X

X

Режим 2, макс: 375 Кгц

12

1

X

X

X

Режим 1, 3:62,2 Кгц

12

1

0

2

0FFH

19,2 Кгц

11,059

1

0

2

0FDH

9,6 Кгц

11,059

0

0

2

0FDH

4,8 Кгц

11,059

0

0

2

0FAH

2,4 Кгц

11,059

0

0

2

0F4H

1,2 Кгц

11,059

0

0

2

0F4H

137,5 Гц

11,059

0

0

2

1DH

110 Гц

6

0

0

2

72H

110 Гц

12

0

0

1

0FЕЕВН

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

Гранично низьких частот приемопередачи можна досягти при використанні таймера в режимі 1 (16-бітний таймер) і дозволі переривань від таймера (старший напів байт TMOD = 0001У). Перезавантаження 16-бітного таймера повинна здійснюватися програмним шляхом.

Система переривань мікроконтролера 8051

Спрощена схема переривань мікро-евм 8051 показана на малюнку.

Рис. 8. Схема переривань.

Зовнішні переривання INT 0 й INT 1 можуть бути викликані або рівнем, або переходом сигналу з 1 в 0 на входах 8051 залежно від значень керуючих біт IT0 й IT1 у регістрі TCON. Від зовнішніх переривань установлюються прапори IE0 й IE1 у регістрі TCON, які ініціюють виклик відповідної програми обслуговування переривання. Скидання цих прапорів виконується апаратно тільки в тому випадку, якщо переривання було викликано по переходу (зрізу) сигналу. Якщо ж переривання викликане рівнем вхідного сигналу, то скиданням прапора I повинна управляти відповідна підпрограма обслуговування переривання шляхом впливу на джерело переривання з метою зняття їм запиту.

Прапори запитів переривання від таймерів TF0 й TF1 скидаються автоматично при передачі керування підпрограмі обслуговування. Прапори запитів переривання RI й TI установлюються блоком керування приемопередавача апаратно, але скидатися повинні програмним шляхом.

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

У блоці регістрів спеціальних функцій є два регістри, призначених для керування режимом переривань IE і рівнями пріоритету IP. Можливість програмної установки/скидання будь-якого керуючого біта в цих двох регістрах робить систему переривань 8051 винятково гнучкої.

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

Таблиця 6. - Регістр масок переривання (IE).

Символ

Позиція

Ім'я й призначення

EA

IE.7

Зняття блокування переривання. Скидається, програмно для заборони всіх переривань незалежно від станів IE.4 - IE.0

 

IE.6

Не використається

 

l.5

Не використається

ES

IE.4

Біт дозволу переривання, від приемопередавача Установка/скидання програмою для дозволу/заборони переривань від прапорів TI або RI .

ET1

IE.3

Біт дозволу переривання від таймера. Установка/скидання програмою для дозволу/заборони переривань від таймера 1

EX1

IE.2

Біт дозволу зовнішнього переривання 1. Установка/скидання програмою для дозволу/заборони переривання 1

ET0

IE.1

Біт дозволу переривання від таймера 0. Установка/скидання програмою для дозволу/заборони переривань від таймера 0 .

EX0

IE.0

Біт дозволу зовнішнього переривання 0. Установка/скидання програмою для дозволу/заборони переривання 0

Таблиця 7. - Регістр пріоритетів переривань (IP).

Символ

Позиція

Ім'я й призначення

-

IP.7 - IP.5

Не використається

PS

IP.4

Біт пріоритету приемопередавача. Установка/скидання програмою для присвоювання перериванню від приемопередавача вищого/нижчого пріоритету

РТ1

IP.3

Біт пріоритету таймера 1. Установка/скидання програмою для присвоювання перериванню від таймера 1 вищого/нижчого пріоритету

РХ1

IP.2

Біт пріоритету зовнішнього переривання 1. Установка/скидання програмою для присвоювання вищого/нижчого пріоритету зовнішньому перериванню INT1

РТ0

IP.1

Біт пріоритету таймера 0. Установка/скидання програмою для присвоювання перериванню від таймера 0 вищого/нижчого пріоритету

РХ0

IP.0

Біт пріоритету зовнішнього переривання 0. Установка/скидання програмою для присвоювання вищого/нижчого пріоритету зовнішньому перериванню INT0

Виконання підпрограми переривання

Система переривань формує апаратний виклик (LCALL) відповідної підпрограми обслуговування, якщо вона не заблокована однією з наступних умов:

· у цей момент обслуговується запит переривання рівного або високого рівня пріоритету;

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

· виконується команда RETI або будь-яка команда, пов'язана зі звертанням до регістрів IЕ або IP

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

По апаратно сформованому коді LCALL система переривання поміщає в стек тільки вміст лічильника команд (PC) і завантажує в нього адреса вектора відповідної підпрограми обслуговування. За адресою вектора повинна бути розташована команда безумовної передачі керування (JMP) до початкової адреси підпрограми обслуговування переривання. Якщо буде потреба вона повинна починатися командами запису в стек (PUSH) слова стану програми (PSW), акумулятора, розширника, покажчика даних і т.д. і повинна закінчуватися командами відновлення зі стека (POP). Підпрограми обслуговування переривання повинні завершуватися командою RETI, по якій у лічильник команд перезавантажується зі стека збережена адреса повернення в основну програму. Команда RET також повертає керування перерваній основній програмі, але при цьому не знімуть блокування переривань, що приводить до необхідності мати програмний механізм аналізу закінчення процедури обслуговування даного переривання

Приклад програми обробки переривання

Виведіть на індикатор цифру «1», при надходженні переривання по входу INT0 виведіть цифру «5».

org 0000h

jmp start

org 0003h ;перехід до підпрограми обробки переривань

jmp s1

org 0100h

start: mov ie,#10000001b ; дозвіл переривань INT0

mov p0,#01h

jmp start

s1: mov p0,#05h ; підпрограма обробки переривання INT0

reti ; повернення до виконання основної програми

end

Приклад програми програмування таймера

Настройте таймер на режим генератора із частотою 1 Гц (тактова частота процесора 120 кгц).

org 0000h

jmp start

org 000Bh ;перехід до підпрограми обробки переривань від таймера

jmp s2

org 0100h

start:

mov tmod,#00000001b ; настроювання режиму роботи таймера

mov ie,#10000010b ; дозвіл переривань від таймера

mov th0,#0d8h ; попередня установка таймера

mov tl0,#0f0h

mov tcon,#00010000b ; запуск таймера

st: nop

jmp st

s2: mov th0,#0d8h ; підпрограма обробки переривання від таймера

mov tl0,#0f0h ; попередня установка таймера

reti

end

Приклад програми передачі інформації через послідовний порт

На молодшому розряді семи сегментного індикатора реалізувати інкрементний рахунок. При натисканні кнопки передати вміст лічильника на другий контролер і відобразити на індикаторі. Рахунок триває при натисканні кнопки. Провести передачу даних через послідовні порти, настроєні на перший режим з тактовій частоті процесора 11,059 Мгц і швидкості передачі 9,6 Кгц.

Програма передавача.

org 0000h

jmp start

org 0003h

lcall switch ; обробка переривання від кнопки

reti

org 0023h

lcall uartper ; обробка переривання від передавача

reti

org 000bh ; обробка переривання від таймера

lcall timer

reti

org 0100h

start:

mov tmod,#00100001b ; настроювання режимів роботи таймерів

mov ie,#10010011b ; дозвіл переривань від приемопередавача,

; кнопки, таймера

mov th0,#0d8h ; попередня установка таймера 0

mov tl0,#0f0h

mov tl1,#0FDh ; попередня установка таймера 1

mov th1,#0FDh

mov tcon,#01010001b ; запуск таймерів

mov pcon,#0h ; настроювання приемопередавача

mov scon,#01000000b

s3: mov a,r2 ; відображення даних на індикаторі

anl a,#00001111b

orl a,#01110000b

mov p2,a

mov p2,#10110000b

mov p2,#11010000b

mov p2,#11100000b

jmp s3

switch: mov SBUF,r2 ; передача даних

ret

uartper: clr ti ; скидання біта, що сигналізує про закінчення передачі

ret

timer: mov th0,#0d8h ; підпрограма обробки переривань від таймера

mov tl0,#0f0h

inc r6

cjne r6,#40,s5

mov r6,#0

inc r2

cjne r2,#10,s5

mov r2,#0

s5: ret

end

Програма приймача

org 0000h

jmp start

org 0023h

lcall uartpr ; обробка переривання від приймача

reti

org 0100h

start:

mov tmod,#00100000b ; настроювання режимів роботи таймера 1

mov ie,#10010000b ; дозвіл переривань від приемопередавача

mov tl1,#0FDh ; попередня установка таймера 1

mov th1,#0FDh

mov tcon,#01000000b ; запуск таймера 1

mov pcon,#0h ; настроювання приемопередавача

mov scon,#01010000b

jmp start

uartpr: clr ri ; скидання біта прийому, що сигналізує про закінчення

mov p2,sbuf ; відображення прийнятих даних

ret

end

Хід Роботи

1. Завантажите проект task2 (малюнок 9).

2. Зберіть схему для зазначеного завдання (таблиця 8) (підключити кнопки до необхідних ліній переривань).

3. У програмі task2.asm реалізуйте зазначений алгоритм.

4. Завантажите програму task3. Для зазначеного завдання (таблиця 9) напишіть програми для першого (task3pr.asm) і другого (task3per.asm) контролера відповідно до зазначеного алгоритму.

Малюнок 9 - Проект task2.

Малюнок 10 - Проект task3.

Таблиця 8.

Текст індивідуального завдання

1

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

2

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

3

Виміряйте час між натисканням кнопки.

4

За допомогою переривання INT0 підрахуйте кількість натискань кнопки. За допомогою таймера підрахуйте кількість циклів з п'яти натискань кнопок. Результати відобразите на індикаторах.

5

Напишіть програму для керування світлофором. Час горіння зеленої й червоної квіток 5з, жовтого - 3с. При натисканні кнопки включите зелені кольори.

6

Напишіть програму для керування світлофором пішохідного переходу по наступному алгоритмі. Червоний (зелений) кольори горить 5з, потім 3 періоди мерехтіння із частотою 1 Гц і перемикання на інші кольори. При натисканні кнопки включити червоні кольори.

7

Підрахуйте кількість натискань кнопки за 5 секунд і відобразити на індикаторі.

8

Відобразити на індикаторі стан лічильника від 0 до 9 у плині 1із із паузою між відображеннями в 1с. При натисканні кнопки скинути лічильник.

9

Напишіть програму для керування годинниками при грі в шахи: при натисканні кнопки «1» запустите перший секундомір і зупините другий, при натисканні кнопки «2» запустите другий секундомір і зупините перший. Стан секундомірів відобразите на першому й другому індикаторі відповідно.

10

Напишіть програму для реалізації таймера що підраховує імпульси із частотою 0,25 Гц. При натисканні кнопки «1» збільште частоту в 2 рази, а при натисканні кнопки «2» зменшите частоту в 2 рази. Максимальне значення частоти 0,25 *22, мінімальне 0,25/22 Гц.

11

Напишіть програму для реалізації таймера що підраховує імпульси. При натисканні кнопки «1» запустите інкрементний рахунок із частотою 1 Гц, а при натисканні кнопки «2» декрементний рахунок із частотою 0,5 Гц.

12

При включенні запускається секундомір. Натисканням кнопки «1» зупините секундомір. А з кожним натисканням кнопки «2» збільште значення числа на індикаторі.

13

Напишіть програму для керування світлофором пішохідного переходу по наступному алгоритмі. Кожні кольори горить 2с. При натисканні кнопки «1» зупините світлофор. Стан секундоміра відобразите на індикаторі.

14

Напишіть програму для керування світлофором пішохідного переходу по наступному алгоритмі. Кожні кольори горять 3с. При натисканні кнопки включите (виключите) появу жовтих кольорів із частотою 2с. Стан секундоміра відобразите на індикаторі.

15

Натисканням кнопок «1» встановите кількість N підраховуваних таймером імпульсів із частотою 1 Гц. Число N відобразите на першому індикаторі, а кількість циклів на другому.

Таблиця 9.

Текст індивідуального завдання

1

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

2

Натисканням кнопки першого контролера запустите секундомір другого контролера. Секундомір зупините натисканням кнопки другого контролера.

3

Реалізуйте секундомір на першому контролері. Зупините секундомір натисканням кнопки будь-якого контролера. Повторне натискання кнопки перезапускає контролер.

4

Відобразите на індикаторі першого контролера число. При натисканні кнопки першого контролера збільшите відображуване число на «1», а другого - зменшите.

5

Проведіть опитування клавіатури підключеної до другого контролера. Число відповідної натиснутої клавіші відобразите на індикаторі першого контролера.

6

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

7

На клавіатурі другого контролера введіть коефіцієнт рахунку секундоміра першого контролера.

8

На клавіатурі першого контролера проведіть сканування ряду клавіш із номером відповідній кількості натискань кнопки другого контролера за 5с.

9

Напишіть програму для керування годинниками при грі в шахи: при натисканні кнопки першого контролера запустите секундомір першого контролера й зупините другого, при натисканні кнопки другого контролера запустите секундомір другого контролера й зупините першого. Стан секундомірів відобразите на індикаторах кожного контролера.

10

Напишіть програму для реалізації секундомірів на двох контролерах. Кнопка першого контролера запускає його секундомір. При досягненні стану рівного 5 зупиняється секундомір першого й запускається секундомір другого контролера. При досягненні стану рівного 5 зупиняється секундомір другого й запускається секундомір першого контролера й т.д.

11

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

12

Із другого контролера введіть послідовність цифр відображуваних на многоразрядном індикаторі першого контролера зі зрушенням.

13

За допомогою кнопки підключеної до другого контролера зробіть керування зрушенням даних на індикаторі першого контролера.

14

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

15

Складіть масив даних з 8 осередків у першому мікро-контролері. На сімох сегментному індикаторі відобразите адресу осередку і її вміст. При натисканні кнопки збільшите адресу. Запишіть в осередок цифру із клавіатури. Запросите із другого контролера вміст кожної з осередків і відобразите на індикаторі.

Контрольні питання:

Структура системи переривання ОЭВМ 8051

Режими роботи таймерів-лічильників

Режими роботи послідовного порту

Виконання підпрограми переривання

Зміст звіту

Звіт про лабораторну роботу повинен містити:

1. Мета й завдання роботи;

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

3. Виводи по роботі.


Подобные документы

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

    курсовая работа [29,9 K], добавлен 07.06.2010

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

    курсовая работа [1,8 M], добавлен 23.04.2014

  • Короткий опис мікроконтролера ATmega6450, його особливості та опис виводів. Розробка принципової схеми стенду. Написання програми на мові СІ при використанні програмного середовища CodeVisionAVR. Перепрограмування мікроконтролера ATmega6450 сімейства AVR.

    курсовая работа [491,2 K], добавлен 15.05.2013

  • Intel 8051 как 8-разрядный однокристальный микроконтроллер гардвардской архитектуры, впервые произведенный компанией Intel в 1980 году и предназначенный для использования во встраиваемых системах, его структура и функционал. Алгоритм работы программы.

    контрольная работа [48,2 K], добавлен 04.03.2014

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

    курсовая работа [393,1 K], добавлен 20.06.2015

  • Мінімізація функції за методом карт Карно; розробка програм на мові асемблеру для Intel 8051: сортування масиву однобайтних даних у зовнішній пам’яті; формування послідовності прямокутних імпульсів; підрахунок кількості натискань на клавішу переривання.

    курсовая работа [196,2 K], добавлен 14.04.2012

  • Формати прийому та передачі даних через послідовний порт, його технічні характеристики, будова і принцип роботи. Характеристика протоколів послідовної передачі. Способи керування портами у WINDOWS95 та WINDOWS XP. Опис алгоритму і функціонування програми.

    дипломная работа [752,6 K], добавлен 09.06.2010

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

    реферат [53,6 K], добавлен 25.03.2011

  • Мікроконтролери сімейства АТ89. Опис електронного замка, його структурна схема. Елементна база пристрою, алгоритм його роботи. Запис нового ключа. Розроблення програми для мікроконтролера, який може бути запрограмований через підключення до LPT-порту.

    курсовая работа [1,6 M], добавлен 17.10.2013

  • Аналіз роботи обчислювальних пристроїв, побудованих за RISC-архітектурою. Центральний процесор і внутрішня пам'ять мікроконтролерів AVR компанії Atmel. Принцип побудови AVR-контролера ATtiny2313: складові частини; програмування пам'ятi мовою Асемблер.

    курсовая работа [1,1 M], добавлен 27.07.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.