Page 223 - 4503
P. 223
Із лекції 1 відомі такі властивості:
— логічне І певного біта числа з 0 дає в результаті 0;
— логічне І певного біта з 1 в результаті дає значення
цього біта;
Використовуючи ці властивості можна онулити певну
групу бітів у байті даних шляхом логічного множення цього
байту на відповідну бітову маску. Для прикладу, за потреби
погасити 6 молодших бітів регістра h’23’, слід застосувати
відповідну маску 1100 0000. Відобразимо це у наступному
програмному фрагменті:
movlw b’11000000’ ; маска
andwf h’23’, f ;логічне множення вмісту
регістра і маски.
Якщо вміст реґістра h’23’ є таким: 10110011, то у
результаті у нього запишеться слово: 10000000.
Того ж результату можна було досягти шестиразовим
застосуванням команди bcf.
У наступній міні–задачі йдеться про застосування
вказаного програмного фрагменту у керуванні верстатом.
Наприклад верстат має автоматично перейти у режим
швидкого реверсу. Це має відбутися, якщо біти 6, 7 мають
нульове значення.
movlw b’11000000’; МАСКА
andwf h’06’, w ; операція І w iз
;вмістом регістра В
btfss STATUS, Z ; пропуск, коли Z=0,
;тобто у бітах 6,7 одночасно не 0
goto Spead_REVERCE ; інакше включити
;швидкий реверс
. . . . . . . . . . . . . . . . . ; наступна секція програми
223