Фрагменти програм з використанням логічних команд.

1. Логічне „І”

MOV R1, #01010101B ; запис числа в регістр

MOV A, #10101010B ; запис числа в акумулятор

ANL A, R1 ; логічне „і” акумулятора і регістра. Результат 00000000В.

2. Логічне „виключаюче або”

MOV R1, #01010101B ; запис числа в регістр

MOV A, #10101010B ; запис числа в акумулятор

ХRL A, R1 ; логічне „ виключаюче або”. Результат 11111111В.

Фрагменти програм з використанням команд зсуву:

MOV A, #00001111B ; запис числа в акумулятор

SWAP A ; обмін тетрадами в акумуляторі. Результ 11110000В.

RL A ; зсув вліво. Результат 1110001.

 

4. ПРОГРАМУВАННЯ ПАРАЛЕЛЬНИХ ПОРТІВ

 

Мікроконтролер АТ89С51 має чотири 8 - бітні паралельні двунаправлені порти P0 - P3, які дозволяють вводити і виводити цифрові сигнали. На рис.4.1,а – 4.1, д зображено бітові структурні схеми цих портів.

а) Бітова структура порту Р0 б) Бітова структура порту Р1

с) Бітова структура порту Р2 д) Бітова структура порту Р3

Рис.4.1

Кожен з портів містить восьмирозрядний регістр, що має байтову і бітову адресацію для установки (запис '1') або скидання (запис '0') розрядів цього регістра за допомогою програмного забезпечення. Виходи цих регістрів з'єднані з драйверами портів. Кожен розряд регістра порту є D-тригером. Дані з внутрішньої шини мікроконтролера записуються в регістр по сигналу "запис". Вихід "Q" D-тригера передається до внутрішньої шини за сигналом "читання". Значення сигналу безпосередньо з зовнішнього виводу порту зчитується за сигналом "читання виводу".

 

4.1. Ініціалізація портів

При записі в розряд SFR- регістра порту логічного «0» вихідний транзистор драйвера відкривається і на виводі мікросхеми з'являється низький потенціал, змінити який ззовні неможливо. Якщо в цей розряд записати логічну «1», то вихідний транзистор драйвера закривається і на виводі мікросхеми з'являється високий потенціал. Цей потенціал можливо змінити зовнішніми пристроями на нульовий, наприклад, замиканням цієї ніжки мікросхеми на корпус. В цьому випадку, логічний стан, що зчитується мікроконтролером, буде відповідати стану на виході зовнішнього пристрою. Тому, перед тим як здійснити введення інформації по якомусь виводу порту, відповідний розряд SFR-регістра порту необхідно налаштувати на режим введення - записати в нього логічну «1».

При ініціалізації ліній порту на режим передавача необхідно у відповідні розряди SFR-регістру порту записати значення, що відповідають вихідним значенням передавача. Наприклад, якщо необхідно встановити на лінії порту високий рівень напруги, то до відповідного розряду SFR- регістру цього порту необхідно записати логічну «1».

З тієї ж причини при налаштуванні виводів порту на виконання альтернативних функцій у відповідні розряди повинні бути записані логічні '1'.

При скиданні мікроконтролера в усі розряди SFR- регістрів портів записуються логічна «1», тобто всі порти переходять у режим приймача.

Окрім роботи в якості звичайного порту введення - виведення, порт Р3 може виконувати ряд додаткових (альтернативних) функцій.

Кожна лінія порту Р3 має індивідуальну альтернативну функцію перелік яких приведено в табл. 4.1.. Лінії порту Р3 можуть виконувати альтернативні функції тільки в тому випадку, якщо у відповідні цим лініям розряди SFR- регістра P3 записані логічні «1».

Таблиця 4.1.