- •Шина керування (Control bus)
- •1.Організація однокристальних еом
- •1.3 Організація вводу/виводу інформації
- •1.4. Блок керування
- •1.5. Логічна схема умовних переходів
- •1.6.Режим преривання
- •1.7.Таймер/лічильник
- •2.Повноекраний налагоджувач ассемблерних програм для однокристальних еом кр1816ве48
- •2.2.Команди налагоджувача.
- •2.3.Повноекранне редагування.
- •2.4.Режим Ассемблера.
- •2.5. Робота з точками преривання.
- •3.Система команд оеом кр1816
- •3.1.Група команд пересилки данних
- •Рпзп Програм і
- •Порт р1
- •Порт р2
- •3.2.Група команд арифметичних та логічних операцій
- •3.3.Група команд вводу-виводу інформації.
- •3.4.Група команд передачі керування.
- •3.5.Група команд операцій з таймером
- •3.6.Група команд керування режимом роботи оеом
- •4.Приклади написання програм для оеом кр1816 ве48
- •4.1. Приклади використання команд передачі данних
- •4.2. Приклади використання команд арифметичних операцій.
- •4.3. Приклади використання команд логічних операцій
- •4.4. Приклади використання команд передачі керування і команд керування режимом оеом
1.Організація однокристальних еом
Структурну організацію однокристальних ЕОМ розглнемо на прикладі ВІС (великої інтегральної схеми), що за своїм складом аналогічна невеликій ЕОМ. Незважаючи на те, що система команд цієї ЕОМ направлена на вирішення задач керування в нескладних процесах, її вивчення дає можливість глибоко зрозуміти особливості програмування на мові Асемблера та легко засвоювати «Асемблер» ПЕОМ.
Основу структури ЕОМ складає внутрішня двонаправлена 1 бітна шина, що з’єднує всі пристрої мікросхеми: АЛП, пристрій керування, пам’ять та інш. Розглянемо послідовно особливості роботи кожного з пристроїв.
РПП (1Кх8)
ЛК
ЛК07
ЛК811
РПД 64х8
Таймер/лічильник ТСТ/Л
РА
АЛП
ССП
Порт 2
X1 X2 ЗБР ШАГ Т0 Т1 ЗПР
ЧТ ЗП ВРПП САЗП
D3ПП
ПРОГ
-
Т1
Т2
Синхронізація керуванняСинхр
Старт
Тест
Переривання
Керування обміном з зовнішніми пристроями
А
РК
Порт 1
Порт
BUS
P1.0P1.7 P2.0P2.7 DB.0DB7
Рис.1.
Умовні позначення до рис.1
РПП (EPROM) - резидентна пам’ять програм (erasable programmable read only memory).
РПД (RAM) - резидентна пам’ять даних (random axcess memory).
ЛК (PC) - лічильник команд (program counter).
РА (RAR) - регістр адреси (RAM adress register).
ТП (TCNT) – таймер подій (timer / counten events).
ССП (PSW) - слово стану програми (program status word).
АЛП (ALD) - арифметико-логічний пристрій (ariphmetical and logic device).
А (A) - регістр акумулятор.
ЗБР (RESET) - зброс (reset) - вхід сигналу загального збросу при запуску ОЕОМ: Сигнал 0 при програмуванні та перевірці РПП.
КРО (SS) - (single step) - сигнал що разом з сигналом САЗП дозволяє при налагодженні виконувати програму з зупинкою після виконання чергової команди Х1 - вхід для підключення виводу кварцевого резонатора або вхід для сигналу від зовнішнього джерела синхронізації Х2 - вхід для підключення другого виводу резонатора. Т0 - вхідний сигнал , опитуємий по командах умовного переходу ITO та INTO; крім того, використовується при програмування РПП; може використовуватись для виводу сигналу синхронізації після команди ЕNTO. CLK Т1 - вхідний сигнал, що опитується командами умовного переходу IT1 та INT1; крім того використовується в якості входу внутрішнього лічильника зовнішніх подій після виконання команди STRT CNT;
ЗПР (INT) - сигнал запиту на преривання (interrupt) від зовнішнього пристрою; визиває підпрограму обслуговування преривань, якщо преривання дозволено раніше по команді ENI; наявність сигналу ЗБР забороняє преривання.
ЧТ (RD) - стробуючий сигнал при зчитуванні з зовнішньой пам’яті даних або (ПВВ) пристрою вводу-виводу (read).
ЗП (WR) - смтробуючий сигнал при запису в зовнішню пам’ять даних або в пристрій вводу-виводу ПВВ.
ВРПП (ЕА) - відключення РПП (external adress). Рівень 1 на цьому вході; змушує МК виконувати виборку команд тільки з зовнішньої пам’яті програм. Використовується при тестуванні програми та налагоджуванні ОЕОМ.
САЗП (АЛЕ) – строб адреси зовнішньої пам’яті (аddress latch enable). Сигнал використовується для прийому та фіксації адреси зовнішньої пам’яті на зовнішньому регістрі; сигнал являється ідентифікатором машинного циклу і завжди виводиться з частотою в 5 разів меншою головної частоти синхронізації.
ДЗПП (PSEN) - дозвіл зовнішньої пам’яті програм (program store enable) - сигнал видається тільки при зверненні до зовнішньої пам’яті програм.
ПРОГ (PROG) - програмування (programming) - вхід для подачі програмуючого імпульса t25B, а також вихід стробуючого сигналу для мікросхеми розширювача вводу-виводу.
Порт 1 (Р1) - 8 бітний квазідвонаправлений порт вводу-виводу інформації: кожен розряд порту може бути запрограмований на ввод або вивод інформації.
Порт 2 (Р2) - 8 бітний квазідвонаправлений порт, кожний розряд якого може бути запрограмован на ввод або вивод; біти Р20-3 під час зчитування з ЗПП являються старшими бітами лічильника команд ЛК2-4.
Порт BUS - 8 бітний двонаправлений порт вводу-виводу інформації; може бути відключеним від зовнішніх шин, може приймати та видавати байти інформації синхронно з сигналами ЧТ та ЗАП; при зверненні до ЗПП представляє 8 молодших біт лічильника команд, а потім по сигналу ДВПП приймає вибрану команду, при зверненні до ЗПД.
1.1.АЛП.
До складу АЛП відноситься комбінаційна схема, яка може виконувати наступні операції: знаходження суми двох байтів з переносом, логічні операції "І", "АБО", "Виключаюче АБО"; інкремент, декремент, інверсію, циклічний зсув вліво та вправо, обмін тетрад в байті, десятичну корекцію байта, що знаходиться регістрі-акумуляторі. Для виконання вказаних операцій комбінаційна схема доповнюється регістрами Т (Т1, Т2), двохтактним регістом акумулятором А, десятичним коректором, схемою формування признаків та регістром слова станів програми (ССП). ССП є 8-розрядним регістром, кожний розряд якого має визначене призначення,що дає можливість інфор-мувати програміста про особливості виконання конкретних команд. Розряди ССП для різних мікропроцесорів мають різне призначення. Для ОЕОМ МК48 призначенняі розрядів відображено на рис.2
-
C
AC
FO
BS
1
S2
S1
S0
Показник стека
Не використовується
Селектор банка регістрів
Ознака програміста
Ознака допоміжного переносу
Ознака переносу
Рис.2
В першому розряді записується ознака переносу. Значення цього розряду при появі переносу при виконанні арифметичних операцій над двома восьмирозрядними числами. Ця ознака або враховується при виконанні наступної операції, або служити сигналом, що звертає увагу програміста до подібних ситуацій.
Ознака допоміжного переносу АС=1 в тому випадку коли перенос з’являється при виконанні арифметичних операцій над чотирма молодшими розрядами двох чисел.
Значення інших розрядів будуть пояснятись в ході вивчення системи команд.
Зі сказаного витікає, що результат виконання будь-якої команди завжди складається з двох частин - слова - результату, що зберігається в регістрі аккумуляторі та ССП. Ці два слова, які розглядаються як одне ціле, мають назву слово стану програми.
В МК48 окремі ознаки виконання операцій не фіксуються в регістрі ССП, але формуються комбінаційною схемою. До них відноситься ознака нуля в усіх розрядах аумулятора, а також ознака наявності 1 в контролюємому біті акумулятора. Ці ознаки призначені для того, щоб виконувати команди передачі керування при наявності умовних преходів без їхньої фіксації на тригерах регістра.
Логіка умовних переходів дозволяє програмісту використовувати ознаки, які будуть розглянуті нижче.
1.2.Пам’ять МК48.
Адресне слово лічильника команд (ЛК) ОЕОМ складається з 12 біт, але інкрементуються тільки 11 молодших розрядів. Тому максимальне значення адресного слова - 7FFH. Стан старшого 12-го розряду може змінюватися спеціальними командами, засилаючи в нього 0, аба 1. Такий підхід надає можливість загальну ємність пам’яті програм 4к. розділити на два блоки по 2к. кожен - перший блок використовується при значенні 12-го розряду "0", а другий при "1". Значення 12-го називається ознакою МВ. На рис.3 наведена карта адрес ОЕОМ 48.
-
4095
2048
ЛК11=1
2047
1024
ЛК11=0
Вектор прерив. від таймера
Вектор зовн. преривання
Вектор збросу та запису
7
3
2
1
0
Рис. 3
Резидентна внутрішня пам’ять програм, з 1024 адресами в своєму складі має три спеціальні адреси:
0 - по якій передається керування одразу після закінчення сигналу системного збросу. При цій адресі знаходитись команда безумовного переходу до початку програми;
3 - по цій адресі розміщується вектор преривання від зовнішнього пристрою (перша команда підпрограми що обслуговує запит на преривання);
7 - по цій адресі розміщується вектор преривання від таймера або початкові команди підпрограми обслуговування преривання за ознакою переповнення таймера/лічильника.
При використанні преривань слід пам’ятати, що в ОЕОМ МК48 сигнали преривань примусово встановлюють в нуль 12й розряд лічильника команд. Це забов’язує програміста розміщувати підпрограми преривань в першому блоці пам’яті програм.
Пам’ять програм розділяється не тільки на два блоки. Кожний блок в свій час розділяється на сторінки по 256 байтів кожний. Це також вносить деякі об-меження при програмуванні, тому що в командах умовних переходів задається 8 бітна адреса передачі керування в межах робочої сторінки. Якщо в програмі використовується багато переходів по умовах, то може з’явитися необхідність розміщувати підпрогами на декількох сторінках. Команда виклику підпрограм модифікує 11 біт лічильника команд, забезпечуючи тим самим міжсторіночні переходи в межах вибраного блоку пам’яті програм.
Так як пам’ять використовується не тільки для збереження програм, а й констант, в ОЕОМ використовуються два способи адресації постійної пам’яті для читання даних: безпосередня адресація, при якій другий байт двохбайтової команди представляє собою операнд; логічна адресація, при якій байт акумулятора використовується в якості показника даних в робочій сторінці, або в сторінці 3 пам’яті програм.
Резидентна пам’ять даних має ємність 64 байти,
63 32 |
РПД (32х8) |
31 |
Банк регістрів 1 |
|
R1* |
24 |
R0* |
23
8 |
8-рівневий стек або РПД (16х8) |
7 |
Банк регістрів 0 |
1 |
R1 |
0 |
r0 |
|
|
Рис.4
-
23
111
22
21
110
20
19
101
18
17
100
16
15
011
14
13
010
12
11
001
10
R9
ССП4-7
ЛК8-11
000
R8
ЛК4-7
ЛК0-3
Рис.5
в якій виділені два блоки робочих регістрів 0-7 та 24-31. Вибір одного з двох блоків виконується командою SEL RB. Робочі регістри доступні для команд з прямою адресацією, а всі елементи ОЗП - командам з побічною адресацією. Для побічної адресації використовуються регістри R0, R1 та R0*, R1* (рис.4). Елементи ОЗП з адресами 8-23 адресуються показником стеку з ССП і можуть бути використані в якості 8 рівневого стеку (рис.5). В регістрах стеку зберігаються тільки вміст ЛК та старша тетрада ССП (ознаки).
Практично всі команди з зверненням до ОЗП оперують з одним байтом. Але за допомогою команд визову та повернення виконується доступ до двохбайтних слів. В пам’яті даних слова зберігаються так, що старший байт слова розміщується в елементі пам’яті з більшою адресою. В пам’яті програм порядок розміщення байт по старшинству при зберіганні двохбайтних слів зворотній.
В розширених мікропроцесорних системах, де використовується зовнішній ОЗП, через регістри R0 та R1 можливий доступ до зовнішньої пам’яті об’ємом 256 байт.