Page 180 - 4503
P. 180

1   0    ?    A   A  A  A  A  A  A  A  A  A  A

                У мікроконтролерах РІС є дві команди, котрі дозволяють
           з будь–якого місця програми перейти до виконання  команди,
           що перебуває  у довільному  іншому місці програми.  До цих
           команд відносяться goto і call. У мікроконтролерах із 14–
           ти  бітним  ядром  для  такої  адресації  призначені  11  розрядів.
           Машинний  код  команди  goto  h’400’  буде  ось  таким:
           10110000000000.  Команда  call  h’530’  матиме  такий
           машинний код: 10010100110000.
                Використовуючи  11–бітну  адресу  можна    розмістити
                                       11
           команди  за будь–якою із 2  комірок пам’яті  адрес. Але ж як
           бачимо на рисунку 6.1, у лічильнику команд PC міститься аж
                                                                13
           13  біт  адресації.  Отже,  він  може  адресувати  2   комірок
           пам’яті    команд.    Така     кількість       передбачена     у
           мікроконтролера      PIC16F877       (варто    нагадати,     що
           мікроконтролер  PIC16F84,  як  відомо  із  розділу  4,  містить
                        10
           тільки  1К (2 =  1024) комірок   Flash–пам’яті  команд. Таким
           чином, постає питання, як забезпечити 13–розрядну адресацію
           PC  при  11–розрядній  адресації  у    самій  команді?  Для
           вирішення такої проблеми передбачений спеціальний регістр–
           защіпка  PCLATH  (  англ.  Program  Counter  LAtch  High  byte  —
           защіпка  лічильника  команд,  старший  байт).    Він  по  суті  є
           буфером    для    старшого  байта  регістра  PC.  У  випадку  із
           застосуванням  команд    goto  і  call  абсолютна  11–бітна
           адресація  об’єднується    із  бітами  4:3  реґістра–защіпки
           PCLATH, таким чином формується повна 13–розрядна адреса у
           лічильнику команд РС (рисунок 6.1).
                Іноді  доводиться  змінювати  вміст  лічильника  із  шини
           даних,  яка,  як  відомо,  містить  тільки  8  розрядів.  Для
           завантаження цих 8 бітів адреси служить регістр спеціального
           призначення  —  PCL  (  англ. Program  Counter  Low  —  нижній,
           або молодший байт лічильника команд).

                                         180
   175   176   177   178   179   180   181   182   183   184   185