Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПТ.doc
Скачиваний:
65
Добавлен:
03.11.2018
Размер:
20.52 Mб
Скачать

Доступ до зовнішньої і резидентної пам’яті

В МПС на базі МК51 можливе використання двох типів зовнішньої пам’яті: постійної пам’яті програм (ЗПП) і оперативної пам’яті даних (ЗПД). Доступ до ЗПП здійснюється за допомогою строб-сигналу читання . Доступ до ЗПД можливий через сигнали i , які формуються на лініях Р3.7 і Р3.6 порту 3 в режимі альтернативних функцій.

При зверненні до ЗПП завжди використовується 16-бітова адреса, а до ЗПД-16-бітова адреса (MOVX, @ DPTR) або 8-бітова адреса (MOVX A, @ R1).

Доступ до ЗПП можливий при наявності двох умов: або на вхід відключення резидентної пам’яті програм () подається сигнал низького рівня, або вміст лічильника перевищує значення 0FFFH (при суміщенні РПП і ЗПП). Наявність сигналу забезпечує доступ до молодших 4К адрес адресного простору ЗПП.

Часова діаграма вибирання коду команди з ЗПП приведена на рисунку 8.6. У фазах S2P1, S2P2 на виводах порту Р0 формується молодший байт комірки зовнішньої пам’яті програм, де знаходиться код наступної команди. В цей же момент старший байт адреси видається через порт Р2. Заднім фронтом сигналу (фаза S2P2) фіксується, а порт РО переходить у Z-стан. За переднім фронтом стробу PSEN (фаза S4P1) код команди зчитується із ЗПП.

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

МК51 має два програмованих 16-бітних таймери/лічильники (Т/Л0 Т/Л1), які можуть використовуватись як таймери або лічильники зовнішніх подій. При роботі його в режимі таймера вміст Т/Л інкрементується в кожному машинному циклі, тобто через кожні 12 періодів резонатора. При роботі його в режимі лічильника вміст Т/Л інкрементується під дією переходів з 1 в 0 зовнішнього вхідного сигналу на відповідних (Т0 і Т1) виводах МК51. Максимальна частота підрахунку вхідних сигналів рівна 1/24 частоти резонатора.

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

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

Символ

Позиція

Ім’я та призначення

GATE

TMOD.7 для Т/Л1 і TMOD.3 для Т/Л0

Керування блокуванням. Якщо біт установлено, то таймер/ лічильник “х” дозволений до тих пір, доки на вході “INTx” високий рівень і біт керування “TRx” установлено. Якщо біт скинуто, тоді Т/Л дозволений, як тільки біт керування “TRx” установлено.

Л/

TMOD.6 для Т/Л1 і TMOD.2 для Т/Л0

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

М1

М0

TMOD.5 для Т/Л1 і TMOD.1 для Т/Л0

TMOD.4 для Т/Л1 і TMOD.0 для Т/Л0

М1

М0

Режими роботи

0

0

Таймер-лічильник ”TLx” працює як 5-бітовий дільник.

0

1

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

1

0

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

1

1

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

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

Символ

Позиція

Ім’я та призначення

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. Скидається при обслуговуванні переривань.

IT0

TCON.0

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

Для розуміння роботи таймерів/лічильників необхідно попередньо проглянути схемотехніку організації режимів роботи таймера/лічильника, показану на рисунку 8.7. Таймери/лічильники можуть працювати в режимах 0,1,2 і 3 (таблиця 8.7). Коротко розглянемо роботу Т/Л в цих режимах.

Рисунок 8.7- Таймер/лічильник подій:

а-Т/Л1 в режимі 0: 13-бітовий лічильник; б-Т/Л1 в режимі 2: 8-бітовий лічильник з перезавантаженням; в-Т/Л0 в режимі 3: два 8- бітових лічильники.

Режим 0. В цьому режимі Т/Л працює як 13-бітовий лічильник/таймер. При переході зі стану “всі одиниці” в стан “всі нулі” установлюється індикатор TF1 (рисунок8.7а). Вхідний сигнал таймера 1 дозволений, якщо TR1=1 і або GATE=0 або INT1=1. Коли GATE=1, таймер можна використовувати для вимірювання тривалості імпульсного сигналу на вході INT1.

Режим1. Робота Т/Л аналогічна режиму 0, але таймерний регістр має розрядність 16 бітів.

Режим 2. В Цьому режимі переповнення 8-бітового лічильника TL1 викликає не тільки установку індикатора TF1, але і автоматично перезавантажує в TL1 вміст старшого байта (ТН1) таймерного регістра, що задається програмно (рисунок 8.7б). Вміст ТН1 не змінюється. Т/Л0 і Т/Л1 працюють однаково.

Режим 3. В даному режимі Т/Л0 і Т/Л1 працюють у такий спосіб. Т/Л1 не змінює свого вмісту, а Т/Л0 (рисунок 8.7в) функціонує, як два незалежний 8-бітових лічильники. Проте ТН0 може працювати тільки як таймер при TR1=1. При цьому ТН0 використовує індикатор переповнення TF1.

Робота ТL0 визначається керуючими бітами Л/T, GATE, TRO, вхідним сигналом INTO та індикатором TF0.

Послідовний інтерфейс

Універсальний асинхронний приймач-передавач (УАПП) забезпечує обмін інформації, поданої у послідовному коді (молодшими бітами вперед), в повному дуплексному режимі обміну. В склад УАПП (послідовний порт) входять приймаючі і передаючі зсуваючі регістри, а також спеціальний буферний регістр (SBUF). Запис байта в буфер приводить до автоматичного перезапису байта в зсуваючий регістр передавача і ініціюється початок передачі байта. Наявність буферного регістра приймача дозволяє суміщати операцію читання раніше прийнятого байта, з прийманням чергового байта.

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

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

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

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

Режим 3. Цей режим співпадає з режимом 2, проте частота обміну задається таймером.

Керування режимом роботи УАПП здійснюється через програмування спеціального регістра SCON. Функціональне призначення бітів цього регістра показане в таблиці 8.9.

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

Таблиця 8.9- Регістр керування/статуса УАПП

Символ

Позиція

Ім’я та призначення

SM0

SM1

SCON.7

SCON.6

Біти керування режимом роботи УАПП:

SM0

SM1

Режими роботи УАПП

0

0

Зсувний регістр розширення вводу-виводу

0

1

УАПП-8 бітів. Змінна швидкість передачі

1

0

УАПП-9 бітів. Фіксована швидкість передачі

1

1

УАПП-9 бітів. Змінна швидкість передачі

SM2

SCON.5

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

REN

SCON.4

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

TB8

SCON.3

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

RB8

SCON.2

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

TI

SCON.1

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

RI

SCON.0

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

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

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

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

Швидкість обміну УАПП в різних режимах роботи визначається різними способами. В режимі 0 частота передачі залежить тільки від резонансної частоти резонатора За один машинний цикл послідовний порт передає один біт інформації.

В режимах 1,2,3 швидкість обміну залежить від керуючого біта SMOD в регістрі спеціальних функцій (регістр PCON). Призначення регістра PCON показане в таблиці 8.10.

В режимі 2 частота передачі визначається виразом . Якщо SMOD=0 частота передачі рівна , а при SMOD=1 - .

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

Символ

Позиція

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

SMOD

PCON.7

Подвоєння швидкості обміну

-

PCON.6

-

PCON.5

Не використовуються

-

PCON.4

GF1

PCON.3

Індикатори, що

визначаються користувачем

GF2

PCON.2

PD

PCON.1

Біт зниження споживаної потужності МК

IDL

PCON.0

Біт неробочого ходу. Якщо IDL=1, то наступає режим неробочого ходу

Зауваження. Обнуління вмісту PCON виконується шляхом завантаження в нього коду ****0000.

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

Переривання від таймера 1 в цьому випадку має бути заблоковане. Сам Т/Л1 може працювати і як таймер, і як лічильник подій в будь-якому з трьох режимів. Однак найвдалішим є використання режиму таймера з автозавантаженням (старша тетрада TMOD=0010 B). При цьому частота передачі визначається виразом:

З особливостями роботи УАПП в різних режимах детально можна ознайомитись у спеціальній літературі [ ].

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

Спрощена схема переривань МК51 подана на рисунку 8.8.

Рисунок 8.8- Схема переривань МК51

Зовнішні переривання і можуть викликатись рівнем 0 або переходом сигналу з 1 в 0 на входах МК в залежності від значень керуючих бітів ІТ0 і ІТ1 в регістрі ТCON. Від зовнішніх переривань установлюється індикатори ІЕ0 і ІЕ1 в регістрі ТCON, які ініціюють виклик відповідної програми обслуговування переривань. Обнуління цих індикаторів виконується апаратно лише тоді, коли переривання викликане за зрізом сигналу. Якщо ж переривання викликане рівнем вхідного сигналу, то скинути індикатор ІЕ можна у підпрограмі обслуговування переривань шляхом впливу на джерело переривань з метою скасування запиту.

Індикатори запиту переривань від таймерів TFO i TF1 обнулюється автоматично при передачі керування підпрограмі обслуговування. Індикатори запиту переривання RI i TI установлюються блоком керування УАПП апаратно, але скидувати треба їх програмно.

Переривання можуть ініціюватись і відмінятись програмно, оскільки всі перераховані індикатори програмно-доступні.

В блоці регістрів спеціальних функцій є два регістри для керування режимами переривань і рівнями пріоритету (відповідно символьні імена ІЕ і ІР). Формати цих регістрів описані в таблицях 8.11 – 8.12. Можливість програмної установки бітів цих регістрів забезпечує гнучку систему переривань МК51.

Таблиця 8.11- Регістр масок переривань ІЕ

Символ

Позиція

Ім’я та призначення

ЕА

IE.7

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

-

IE.6

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

-

IE.5

ES

IE.4

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

ET1

IE.3

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

EX1

IE.2

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

ET0

IE.1

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

EX0

IE.0

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

Таблиця 8.12- Регістр пріоритетних переривань

Символ

Позиція

Ім’я та призначення

-

IP.7-IP.5

Не використовуються

PS

IP.4

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

PT1

IP.3

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

PX1

IP.2

Біт пріоритету зовнішнього переривання 1. Теж для переривання

PT0

IP.1

Біт пріоритету таймера 0.

PX0

IP.0

Біт пріоритету зовнішнього переривання 0. Працює аналогічно ІР.2

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

  1. в даний момент обслуговується запит переривань рівного або вищого рівня пріоритету;

  2. поточний машинний цикл – не останній в циклі виконання команди;

  3. виконується команда RETI або інша команда, пов’язана зі зверненням до регістрів ІЕ або ІР.

За апаратно-сформованим кодом LCALL система переривань розміщує в стеку тільки вміст лічильника команд РС і завантажує в нього адресу вектора підпрограми обслуговування. За адресою вектора має бути розміщена команда безумовного переходу (JMP) до початкової адреси підпрограми обслуговування переривань. Підпрограма обслуговування у випадку необхідності має починатись командами запису в стек (PUSH) регістра PSW, акумулятора, покажчика даних тощо і закінчуватись командами відновлення із стеку (РОР). Підпрограма обслуговування переривань має завершуватись командою RETI, за якою у лічильник команд завантажується зі стеку адреса повернення в основну програму.

Cистема команд МК 51

Система базових команд МК 51 містить 111 базових команд,які за функціональною ознакою поділяють на п’ять груп: команди передачі даних, арифметичні операції, логічних операцій, передачі керування і операцій з бітами. Серед цих команд: 50 однобайтових, 45 двобайтові, 16 трибайтові. Більшість команд (64 однобайтових і двобайтових) виконуються за один машинний цикл, 45 команд за 2 машинні цикли, а комнди множення і ділення виконуються за чотири машинні цикли. При тактовій частоті 2 МГц довжина машинного циклу складає 1 мкс. Перелік базових типів команд МК 51 поданий в таблиці 2.11.

Перший байт команди будь-якого типу і формату операції завжди містить код операції (КОП). Другий і третій байти є або адресою операндів або безпосередні операнди. На рисунку 8.9 показані 13 форматів команд МК 51.