Page 58 - 6733
P. 58
<назва регістра>.<номер біта>
Наприклад, позначення Р1.3 буде означати третій біт регістра порта Р1.
Побітову адресацію мають також комірки внутрішнього ОЗП з адресами від
32 до 47 (від 20h до 2Fh). Регістри оперативного призначення не мають побітової
адресації.
9.3.3. Команди роботи з бітами та логічні команди
Мікроконтролер х51 має три команди роботи з бітами: встановлення в 1,
встановлення в 0 та інверсія (див. табл. 2.2). Ці команди мають один операнд –
прямоадресований біт, тобто можна вказати біт за допомогою його адреси або
шляхом вказання імені регістра і номера біта, наприклад:
SETB P1.0 ; встановлення в 1 нульового біта в порті Р1
Таблиця 9.2 – Коротка довідка по командах
Команда Операція Операнди
ANL <оп1>, <оп2> логічне І оп1: акумулятор, регістр,
ORL <оп1>, <оп2> логічне АБО прямоадресована комірка пам’яті,
флаг переносу С
XRL <оп1>, <оп2> виключне АБО оп2: константа, регістр, або
прямоадресований біт
CPL <оп> інверсія оп: акумулятор, флаг переносу С або
CLR <оп> обнулення прямоадресований біт
оп: флаг переносу С або
SETB <оп> встановлення в 1
прямоадресований біт
Логічні команди виконують порозрядні логічні операції між операндами,
тобто, наприклад, при виконанні команди ANL A, #11110000b операція "логічне
І" виконується окремо над кожним із 8 бітів акумулятора AL і числа 11110000.
Отже, якщо в акумуляторі було число 00111111, то результатом виконання
команди буде 00110000.
Логічні команди часто використовуються для встановлення окремих бітів
операнда в 0 або 1 без зміни інших бітів. Для цього необхідно виконати логічну
функцію між операндом та маскою. Маска – це число, що визначає, які саме біти
будуть встановлені, скинуті чи інвертовані.
Для встановлення бітів в 0 використовується операція "логічне І" з маскою з
нулями на місці бітів, що слід скинути, і одиницями в усіх інших бітах.
Наприклад, команда ANL А, #01111110b обнулює біти 0 та 7 регістру А.
Для встановлення бітів в 1 використовується операція "логічне АБО" з
маскою з одиницями на місці бітів, що слід встановити, і нулями в усіх інших
бітах.
Наприклад, команда ORL А, #0010001b встановлює в 1 біти 0 та 4 регістру A.
Для інвертування бітів використовується операція "виключне АБО" з маскою
з одиницями на місці бітів, що слід інвертувати, і нулями в усіх інших бітах.
Наприклад, команда XRL A, #00010001b інвертує біти 0 та 4 регістру A.
Команди CPL та CLR можуть мати своїм операндом як окремий біт, так і
58