Характеристики мікроконтролера моделі 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 PS2 rn PS1 rn PS0 rn | rn rn 7 rn 6 rn 5 rn | rn rn Завдання періоду спрацьовування сторожового таймера: при "000" - 16 мс, "001" - 32 мс, "010" - 64 мс, "011" - 128 мс, "100" - 256мс, "101" - 512 мс, "110" - 1024 мс і при "111" - 2048 мс rn | rn rn rn rn EEMWE rn | rn rn 4 rn | rn rn Дозвіл запису в EEPROM. Перед записом потрібно встановити в "1". Після закінчення запису потрібно скинути в "0" rn | rn rn rn rn EEMEN rn | rn rn 3 rn | rn rn Дозвіл доступу до EEPROM. При встановленні в "1" команди MOVX на основі DPTR працюють з областю EEPROM. При скиданні в "0" команди MOVX працюють із зовнішньою пам'яттю даних rn | rn rn rn rn DPS rn | rn rn 2 rn | rn rn Вибір активного регістру DPTR. При DPS = 0 (за замовчуванням) активний основний DPTR (DP0H: DP0L). При DPS = 1 активний (DP1H: DP1L) rn | rn rn rn rn WDTRST RDY /BSY rn | rn rn 1 rn | rn rn Скидання сторожового таймера /ознака зайнятості EEPROM. rn При записі в цей біт "1" сторожовий таймер скидається, а даний біт автоматично переходить в "0" (це не впливає на стан EEPROM). rn При читанні біта аналізується стан EEPROM: якщо біт дорівнює "0", то запис в EEPROM не закінчена, якщо "1" - то EEPROM доступна rn | rn rn rn rn WDTEN rn | rn rn 0 rn | rn rn Біт запуску сторожового таймера. При WDTEN = 1 таймер запускається і буде генерувати скидання МК через інтервал часу, який визначається битами (PS2-PS1-PS0) rn | rn rn 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 TF2 rn | rn rn 7 rn | rn rn Прапор переповнення таймера Т2 (при переході з FFFFh в 0000h). Має очищатися програмно. У режимі генератора для УАПП прапор не встановлюється (при RCLK = 1 або TCLK = 1). rn | rn rn rn rn EXF2 rn | rn rn 6 rn | rn rn Прапор зовнішнього події таймера Т2. Встановлює по перепаду 1 ® 0 на вході T2EX (лінія Р1.1), якщо біт EXEN2 = 1. Обробляється як переривання. Має очищатися програмно. rn | rn rn rn rn RCLK rn | rn rn 5 rn | rn rn Вибір джерела сінхрочастоти для приймача УАПП у режимах 1 і 3. При RCLK = 1 використовується таймер Т2, при RCLK = 0 - таймер Т1 rn | rn rn rn rn TCLK rn | rn rn 4 rn | rn rn Вибір джерела сінхрочастоти для передавача УАПП у режимах 1 і 3. При TCLK = 1 використовується таймер Т2, при TCLK = 0 - таймер Т1 rn | rn rn rn rn EXEN2 rn | rn rn 3 rn | rn rn Дозвіл зовнішнього події таймера Т2. При EXEN2 = 1 дозволено сприйняття перепаду на вході T2EX і установка біта EXF2. rn | rn rn rn rn TR2 rn | rn rn 2 rn | rn rn Біт запуску /зупинки таймера T2. При TR2 = 1 таймер запускається і працює у відповідності з налаштуваннями C/T2 #, CP/RL2 #, RCLK та TCLK. rn | rn rn rn rn C/T2 # rn | rn rn 1 rn | rn rn Вибір джерела лічильних імпульсів: при C/T2 # = 0 - таймер від ГТВ, при C/T2 # = 1 - лічильник імпульсів по входу Т2 (лінія Р1.0) rn | rn rn rn rn CP/RL2 # rn | rn rn 0 rn | 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 rn rn rn Таким чином, захоплення поточного стану таймера Т2 може бути ініційований тільки зовнішнім сигналом T2EX. rn Узагальнена таблиця режимів таймера Т2 наступна: rn rn rn rn rn RCLK + TCLK rn | rn rn CP/RL2 # rn | rn rn Режим роботи (при включенні з TR2 = 1) rn | rn rn rn rn 0 rn | rn rn 0 rn | rn rn 16-розрядний таймер /лічильник (в залежності від C/T2 #) з автоперезагрузкой стартового числа з регістрів (RCAP2H, RCAP2L) rn | rn rn rn rn 0 rn | rn rn 1 rn | rn rn 16-розрядний таймер /лічильник (в залежності від C/T2 #) із захопленням поточного стану таймера в регістри (RCAP2H, RCAP2L) rn | rn rn rn rn 1 rn | rn rn x rn | rn rn задає генератор для послідовного порту rn | rn rn rn rn В регістрі T2MOD немає бітової адресації, використовуються тільки два розряду: rn rn rn rn rn Ім'я біти rn | rn rn Номер rn | rn rn Призначення біти rn | rn rn rn rn T2OE rn | rn rn 1 rn | rn rn Дозвіл видачі сигналу програмованої частоти від таймера Т2 на зовнішній висновок P1.0 rn | rn rn rn rn DCEN rn | rn rn 0 rn | 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 rn rn rn Приймач і передавач послідовного порту в мікроконтролерах AT89S8252 можуть управлятися від різних джерел (таймер Т1 або Т2). rn При використанні таймера Т2 в якості заданого генератора для УАПП (при RCLK = 1 або TCLK = 1) або генератора зовнішньої частоти (при T2OE = 1) значення частоти генерації визначається співвідношенням: rn F УАПП = FOCS /[32
|