ого 0Ah. Залежно від того, чи завантажується в програмний лічильник нове значення під час виконання команд CALL, GOTO, або в молодший байт програмного лічильника (PCL) проводиться запис, - старші біти програмного лічильника завантажуються з PCLATH різними способами
f3 ... РЕГІСТР СЛОВА СОСТОЯHІЯ STATUS: Регістр слова стану схожий на регістр PSW, існуючий в більшості мікропроцесорів. У ньому знаходяться біт перенесення, десяткового перенесення і нуля, а також біти режиму включення й біти сторінкової адресації.
f4 ... РЕГІСТР ВИБОРУ FSR: Як було вже сказано, регістр вибору FSR використовується разом з регістром непрямої адресації f0 для непрямої вибірки одного з 64 можливих регістрів. Фізично задіяно 36 регістрів ОЗП користувача, розташованих за адресами 0Ch-2Fh і 15 службових регістрів, розташованих за різними адресами.
f5, f6 ... регістри введення/виводу PORTA, PORTB Регістри f5 і f6 відповідають двом портам введення/виведення, наявними у PIC16C84.
Порт A має 5 розрядів PA4-PA0, які можуть бути індивідуально запрограмовані як входи або виходи за допомогою регістра TRISA, що має адресу 85h. Лінії PA <3:0> двонаправлені, а лінія PA4-вихід з відкритим стоком. Адреса регістра порту А - 05h. Що відноситься до порту А керуючий регістр TRISA розташований на першій сторінці регістрів за адресою 85h. TRISA <4:0> - це регістр шириною 5 біт. Якщо біт керуючого TRISA регістра має значення одиниця, то відповідна лінія буде встановлюватися на введення. Нуль перемикає лінію на вивід і одночасно виводить на неї вміст відповідного регістру засувки.
Порт В - це двонаправлений порт, шириною у вісім біт (Адреса регістра 06h). Що відноситься до порту У керуючий регістр TRISB розташований на першій сторінці регістрів за адресою 86h. Якщо біт керуючого TRISB регістра має значення одиниця, то відповідна лінія буде встановлюватися на введення. Нуль перемикає лінію на вивід і одночасно виводить на неї вміст відповідного регістру засувки. У кожної ніжки порту В є невелика активне навантаження (близько 100мкА) на лінію живлення. Вона автоматично відключається, якщо ця ніжка запрограмована як висновок. Більш того, керуючий біт RBPU OPTION <7> може відключити (RBPU = 1) всі навантаження. Скидання при включенні живлення також відключає всі навантаження. p> Порт B має 8 розрядів PB7-PB0 і програмується за допомогою регістра TRISB, що має адресу 86h.
Чотири лінії порту В (PB <7:4>) мають здатність викликати переривання при зміні значення сигналу на будь-який з них. Якщо ці лінії налаштовані на введення, то вони опитуються і заклацуються в циклі читання Q1. Нова величина вхідного сигналу порівнюється зі старою в кожному командному циклі. При розбіжності значення сигналу на ніжці і в клямці, генерується високий рівень. Виходи детекторів "розбіжностей" PB4, PB5, PB6, PB7 об'єднуються за АБО і генерують переривання RBIF (запоминаемое в INTCON <0>). Будь-яка лінія, налаштована як висновок, не бере участі в цьому порівнянні. Переривання може вивести кристал з режиму SLEEP. У підпрограмі обробки переривання слід скинути запит переривання одним з наступних способів:
1) Заборонити переривання за допомогою обнулення біта RBIE INTCON <3>. p> 2) Читати порт В. Це завершить стан порівняння.
3) Обнулити біт RBIF INTCON <0>.
Переривання по неспівпадіння і програмно встановлювані внутрішні активні навантаження на цих чотирьох лініях можуть забезпечити простий інтерфейс наприклад з клавіатурою, з виходом з режиму SLEEP по натисненню клавіш. Ніжка RB0 суміщена з входом зовнішнього переривання INT
Завдання 1 в розряді регістра TRIS програмує відповідний розряд порту як вхід. При читанні порту зчитується безпосереднє стан виведення, при записі в порт запис відбувається в буферний регістр.
Проблеми при організації двонапрямлених портів:
-Деякі команди внутрішньо виконуються як читання + запис. Наприклад, команди BCF і BSF зчитують порт цілком, модифікують один біт і виводять результат назад. Тут необхідна обережність. Наприклад, команда BSF для біта 5 регістра f6 (порт В) спочатку вважає всі вісім біт. Потім виконуються дії над бітом 5 і нове значення байта цілком записується у вихідні засувки. Якщо інший біт регістра f6 використовує я в Як двунаправленного введення/виводу (скажімо біт 0) і в даний момент він визначений як вхідний, вхідний сигнал на цій ніжці буде лічений і записаний назад у вихідну засувку цієї-ж ніжки, затираючи її попередній стан.
До тих пір поки ця ніжка залишається в режимі введення, ніяких проблем не виникає. Однак, якщо пізніше лінія 0 переключиться в режим виводу, її стан буде невизначеним.
На ніжку, що працює в режимі виводу, не повинні "Навалюватися" зовнішні джерела струмів ("монтажне І", "Монтажне АБО"). Результуючі великі то ки можуть пошкодити кристал.
Послідовне звернення до портів введення/виводу:
Запис у порт виводу відбувається наприкінці командного цик...