Фрагменти програм з використанням логічних команд.
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.