Мікропроцесори та мікроконтролери

 
 
 
Константин Кушнер : «Компьютерным играм предпочитаю игру ума в компьютере»
Русский | Українська

На правах реклами:



Rambler's Top100 Рейтинг@Mail.ru
Мікропроцесори та мікроконтролери :: Канали вводу-виводу на основі МК51 :: Характеристики мікроконтролера моделі AT89S8252

Характеристики мікроконтролера моделі AT89S8252

Дана модель використана в якості основного мікроконтролера в двопроцесорних системі УУМС, розробленої на каф. 301 і що вивчається на лабораторних роботах.

rn

У моделі AT89S8252 реалізовані:

rn

Flash-пам'ять програм обсягом 8К, програмувальна через SPI;

rn

EEPROM пам'ять даних об'ємом 2К;

rn

внутрішнє ОЗП обсягом 256 байт;

rn

три 16-бітовий таймера;

rn

9 джерел переривань;

rn

послідовні інтерфейси UART і SPI;

rn

програмуємий WD-таймер;

rn

два регистра DPTR.

rn

Нижні 128 байт внутрішнього ОЗП мають стандартну для MCS-51 структуру. Верхні 128 байт за значеннями адрес (80h-FFh) збігаються з адресами області РСФ. Тому службові регістри в РСФ доступні через пряму адресація (тобто за іменами регістрів), а байти ОЗУ - тільки через непряму адресація.

rn

Flash-пам'ять програм займає адресний простір 0000h-1FFFh. При програмуванні через інтерфейс SPI перезаписувати весь масив пам'яті.

rn

Управління сторожові таймером і доступом до EEPROM здійснюється за допомогою регістра WMCON. Даний регістр не має бітової адресації .

rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
rn

Ім'я біти

rn
rn

Номер

rn
rn

Призначення біти

rn
rn

PS2

rn

PS1

rn

PS0

rn
rn

7

rn

6

rn

5

rn
rn

Завдання періоду спрацьовування сторожового таймера: при "000" - 16 мс,
"001" - 32 мс, "010" - 64 мс, "011" - 128 мс, "100" - 256мс,
"101" - 512 мс, "110" - 1024 мс і при "111" - 2048 мс

rn
rn

EEMWE

rn
rn

4

rn
rn

Дозвіл запису в EEPROM. Перед записом потрібно встановити в "1".
Після закінчення запису потрібно скинути в "0"

rn
rn

EEMEN

rn
rn

3

rn
rn

Дозвіл доступу до EEPROM. При встановленні в "1" команди MOVX на основі DPTR працюють з областю EEPROM. При скиданні в "0" команди
MOVX працюють із зовнішньою пам'яттю даних

rn
rn

DPS

rn
rn

2

rn
rn

Вибір активного регістру DPTR. При DPS = 0 (за замовчуванням) активний основний DPTR (DP0H: DP0L). При DPS = 1 активний (DP1H: DP1L)

rn
rn

WDTRST
RDY /BSY

rn
rn

1

rn
rn

Скидання сторожового таймера /ознака зайнятості EEPROM.

rn

При записі в цей біт "1" сторожовий таймер скидається, а даний біт автоматично переходить в "0" (це не впливає на стан EEPROM).

rn

При читанні біта аналізується стан EEPROM: якщо біт дорівнює "0",
то запис в EEPROM не закінчена, якщо "1" - то EEPROM доступна

rn
rn

WDTEN

rn
rn

0

rn
rn

Біт запуску сторожового таймера. При WDTEN = 1 таймер запускається і буде генерувати скидання МК через інтервал часу, який визначається
битами (PS2-PS1-PS0)

rn
rn

Особливість використання сторожового таймера полягає в тому, що він повинен бути налаштований на період TWD> T0 max, де T0 max - максимальний з періодів дискретності, що реалізується в даній системі.

rn

У кожному такті періоду дискретності T0 max потрібно виконувати скидання сторожового таймера для того, щоб він починав новий період контролю TWD.

rn

Припустимо, що в мікроконтроллерной системі T0 max = 100 мс. Тоді період сторожового таймера повинен складати, як мінімум TWD = 128 мс. Відповідна двійкова комбінація для розрядів [PS2-PS0] = 011.

rn

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

rn

mov WMCON, # 01100000b

rn

Перед початком циклічних дій по алгоритму запускаємо WDT установкою в "1" біти WDTEN:

rn

orl WMCON, # 00000001b

rn

У підпрограм, яка обслуговує завершення основного періоду дискретності T0 max, потрібно виконати скидання сторожового таймера (біт WDTRST = 1):

rn

orl WMCON, # 00000010b

rn

Звернення до блоку пам'яті даних EEPROM виконується, як до зовнішньої пам'яті, командами MOVX A, @ DPTR і MOVX @ DPTR, A за адресами від 0000h до 07FFh (2 кбайт). Вказати, що звернення здійснюється до EEPROM, потрібно у програмі встановити біт EEMEN:

rn

mov WMCON, # 00001000b

rn

Особливість звернення до EEPROM полягає в тому, що цикл запису відбувається набагато довше, ніж в зовнішню пам'ять (близько 2,5 мс). Тому в програмі потрібно чекати завершення поточного циклу запису в EEPROM перед наступним записом або читанням. Для цього служить біт RDY /BSY. Крім того, запис стробіруется встановленням біта EEMWE = 1. Читання з EEPROM займає стільки ж часу, як і читання із зовнішньої пам'яті (2 МЦ). Приклад процедури запису одного байтів в EEPROM наступний:

rn

mov A, # data; Дані для запису

rn

mov DPTR, # Address; Нужний адреса в памяти

rn

orl WMCON, # 00011000b; EEMWE = 1 і EEMEN = 1

rn

movx @ DPTR, A; ініціюємо запис

rn

wt: mov A, WMCON; Цикл очікування кінця запису

rn

jnb ACC.1, wt; Перевіряємо біт RDY /BSY

rn

anl WMCON, # 11100111b; Скидання бітів EEMWE і EEMEN

rn

У циклі очікування можна виконувати будь-які інші дії з обробки даних, не пов'язані зі зверненням до EEPROM і зовнішньої пам'яті.

rn

Особливості структури і використання таймера Т2

rn

Програмна модель таймера Т2 містить наступні регістри:

rn

лічильних регістри TH2 і TL2;

rn

регістри (стартового числа) /(захоплення значення) RCAP2H і RCAP2L;

rn

регістр вибору режимів та управління T2CON;

rn

регістр додаткових режимів T2MOD.

rn

Регістри (TH2, TL2) і (RCAP2H, RCAP2L) завжди працюють в парах, тому таймер Т2 є повністю 16-розрядним.

rn

Для роботи таймера Т2 за зовнішніми сигналами служать лінії порту Р1:
лінія Р1.0 (ім'я Т2) - вхід імпульсів для режиму лічильника або вихід генератора;

rn

лінія Р1.1 (ім'я T2EX) - вхід управління захопленням /перезавантаженням таймера Т2.

rn

Основне управління таймером Т2 проводиться за допомогою регістра Т2CON. Даний регістр має бітів адресація . У середовищі MCStudio біти 1 і 0 мають імена C_T2 і CP_RL2 відповідно, решта біти називаються так, як показано в таблиці.

rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
rn

Ім'я біти

rn
rn

Номер

rn
rn

Призначення біти

rn
rn

TF2

rn
rn

7

rn
rn

Прапор переповнення таймера Т2 (при переході з FFFFh в 0000h). Має очищатися програмно. У режимі генератора для УАПП прапор не встановлюється (при RCLK = 1 або TCLK = 1).

rn
rn

EXF2

rn
rn

6

rn
rn

Прапор зовнішнього події таймера Т2. Встановлює по перепаду 1 ® 0 на вході T2EX (лінія Р1.1), якщо біт EXEN2 = 1. Обробляється як переривання. Має очищатися програмно.

rn
rn

RCLK

rn
rn

5

rn
rn

Вибір джерела сінхрочастоти для приймача УАПП у режимах 1 і 3.
При RCLK = 1 використовується таймер Т2, при RCLK = 0 - таймер Т1

rn
rn

TCLK

rn
rn

4

rn
rn

Вибір джерела сінхрочастоти для передавача УАПП у режимах 1 і 3.
При TCLK = 1 використовується таймер Т2, при TCLK = 0 - таймер Т1

rn
rn

EXEN2

rn
rn

3

rn
rn

Дозвіл зовнішнього події таймера Т2. При EXEN2 = 1 дозволено сприйняття перепаду на вході T2EX і установка біта EXF2.

rn
rn

TR2

rn
rn

2

rn
rn

Біт запуску /зупинки таймера T2. При TR2 = 1 таймер запускається і працює у відповідності з налаштуваннями C/T2 #, CP/RL2 #, RCLK та TCLK.

rn
rn

C/T2 #

rn
rn

1

rn
rn

Вибір джерела лічильних імпульсів: при C/T2 # = 0 - таймер від ГТВ, при C/T2 # = 1 - лічильник імпульсів по входу Т2 (лінія Р1.0)

rn
rn

CP/RL2 #

rn
rn

0

rn
rn

Вибір режиму таймера Т2.

rn

При CP/RL2 # = 0 - режим автоперезагрузкі . Копіювання значень з пари (RCAP2H, RCAP2L) в лічильних регістри (TH2, TL2) відбувається або за переповнення таймера (при EXEN2 = 0), або по перепаду 1 ® 0 зовнішнього сигналу T2EX (при EXEN2 = 1).

rn

При CP/RL2 # = 1 - режим захоплення. По перепаду 1 ® 0 зовнішнього сигналу T2EX (при EXEN2 = 1) відбувається копіювання поточного стану лічильних регістрів (TH2, TL2) в пару регістрів (RCAP2H, RCAP2L).

rn

Якщо RCLK = 1 або TCLK = 1 (робота на УАПП), біт CP/RL2 # ігнорується, а таймер Т2 працює в режимі перезавантаження по переповнення.

rn
rn

Таким чином, захоплення поточного стану таймера Т2 може бути ініційований тільки зовнішнім сигналом T2EX.

rn

Узагальнена таблиця режимів таймера Т2 наступна:

rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
rn

RCLK + TCLK

rn
rn

CP/RL2 #

rn
rn

Режим роботи (при включенні з TR2 = 1)

rn
rn

0

rn
rn

0

rn
rn

16-розрядний таймер /лічильник (в залежності від C/T2 #) з автоперезагрузкой стартового числа з регістрів (RCAP2H, RCAP2L)

rn
rn

0

rn
rn

1

rn
rn

16-розрядний таймер /лічильник (в залежності від C/T2 #) із захопленням поточного стану таймера в регістри (RCAP2H, RCAP2L)

rn
rn

1

rn
rn

x

rn
rn

задає генератор для послідовного порту

rn
rn

В регістрі T2MOD немає бітової адресації, використовуються тільки два розряду:

rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
rn

Ім'я біти

rn
rn

Номер

rn
rn

Призначення біти

rn
rn

T2OE

rn
rn

1

rn
rn

Дозвіл видачі сигналу програмованої частоти від таймера Т2 на зовнішній висновок P1.0

rn
rn

DCEN

rn
rn

0

rn
rn

Дозвіл завдання банку таймера Т2 в режимі автоперезагрузкі стартового числа.

rn

При DCEN = 0 таймер Т2 завжди вважає в прямому напрямку від стартового числа, взятого з регістрів (RCAP2H, RCAP2L), до FFFFh. При досягненні максимуму формуємо прапор переривання TF2 і перезавантаження стартового числа.

rn

При DCEN = 1 напрямок рахунку таймера Т2 залежить від сигналу на зовнішньому вході T2EX.
При T2EX = 1 - прямий рахунок від (RCAP2H, RCAP2L), до FFFFh з формуванням прапора TF2 = 1 і перезавантаженням числа з (RCAP2H, RCAP2L).
При T2EX = 0 - зворотний рахунок від FFFFh, до значення, що міститься в регістрах (RCAP2H, RCAP2L). При цьому формується прапор TF2 = 1 і в лічильних регістри (TH2, TL2) завантажується число FFFFh.

rn

Стан входу T2EX фіксується в розряді EXF2, який в цьому випадку не є прапором переривання. Значення EXF2 можна використовувати для програмного визначення, в якому напрямку вважає таймер.

rn
rn

Приймач і передавач послідовного порту в мікроконтролерах AT89S8252 можуть управлятися від різних джерел (таймер Т1 або Т2).

rn

При використанні таймера Т2 в якості заданого генератора для УАПП (при RCLK = 1 або TCLK = 1) або генератора зовнішньої частоти (при T2OE = 1) значення частоти генерації визначається співвідношенням:

rn

F УАПП = FOCS /[32










При використанні будь-яких матеріалів з сайту зворотнє посилання на сайт Мікропроцесори та мікроконтролери обов'язкова.