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
   218   219   220   221   222   223   224   225   226   227   228