Провести ініціалізацію портів на наступні режими роботи:
· Р0 – всі лінії порту є приймачами;
· Р1 – всі лінії порту є передавачами, початковий стан ліній 00001111b;
· Р2 - всі лінії порту є приймачами;
· Р3 – старша тетрада порту працює в режимі альтернативних функцій, молодша тетрада знаходиться в режимі передавачів, на виходах яких логічний «0».
;------------------------------------------------------------------------------------------------
ini_P0 equ 11111111b;константа ініціалізації порту Р0
ini_P1 equ 00001111b;константа ініціалізації порту Р1
ini_P2 equ 11111111b;константа ініціалізації порту Р2
ini_P3 equ 11110000b;константа ініціалізації порту Р3
;------------------------------------------------------------------------------------------------
org 0H; адреса вектора рестарту після пуску
INIT:; мітка, що відповідає адресі блоку ініціалізації
mov P0,#ini_P0;передача в порт Р0 константи ініціалізації
mov P1,#ini_P1;передача в порт Р1 константи ініціалізації
mov P2,#ini_P2;передача в порт Р2 константи ініціалізації
mov P3,#ini_P3;передача в порт Р3 константи ініціалізації
end; директива асемблеру про закінчення програми
;------------------------------------------------------------------------------------------------
4.2. Робота з портами
Деякі команди читання порту використовують сигнал "читання засувки", інші "читання виводу".
Читання інформації з виводів мікросхеми здійснюється командами:
· MOV A, P3;передати дані з ліній порту P3 в акумулятор;
· JB P3.4,М1;якщо на лінії P3.4 логічна 1,то перейти на мітку М1.
Читання регістра - засувки здійснюється командами читання - модифікація – запис:
· CPL P3.1; проінвертувати сигнал на виводі порту P3.1;
· ORL P2, #10000001b;Встановити логічну “1”на лініях 7,0 порту P2;
· ANL P3,#11111100b;Встановити логічний “0”на лініях 0,1 порту P3.
Для запису числа в порт можна скористатися командами для роботи з байтовими даними, що встановлюють логічні рівні одразу на всіх виводах портів:
1. Пересилання (команда MOV).
MOV P2, # 11110000b;встановити “1” на виводах Р2.4 – Р2.7 та “0”на решті;ліній порту P2
MOV P1, # 01110011b;передати на порт P1 число 01110011b
MOV P3, A;передати на порт Р3 вміст акумулятора;
2. Логічне «І» (команда ANL).
ANL P1, # 11110011b;встановити “0” на ніжках P1.2 і P1.3
3. «Виключаюче АБО» (команда XRL).
XRL P3, # 01000100b;інвертувати логічні рівні на виводах P3.2 і P3.6
4. Логічне «АБО» (команда ORL).
ORL P1, # 00001100b; встановити “1” на ніжках P1.2 і P1.3
Для зміни логічних рівней на окремих виводах портів можна скористатися командами з бітовою адресацією:
1. Пересилання (команда MOV).
MOV P1.2, C;передача вмісту біту «С» на лінію порту P1.2
2. Інверсія (команда CPL).
CPL P1.2;інверсія другого біту порту P1
3. Встановлення біту (команда SETB).
SETB P2.3;встановити “1” на лінію порту порту P2.3
3. Скидання біту (команда CLR).
CLR P2.3;встановити “0” на лінію порту порту P2.3