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