Смекни!
smekni.com

Мікропроцесорні пристрої (стр. 4 из 21)

Таблиця 2.1 – Адресація банків даних

RP1:RPO

Банк

00

0

01

1

10

2

11

3

Об'єм банків пам'яті даних до 128 байтів (7Fh). На початку банку розміщуються регістри спеціального призначення, потім регістри загального призначення виконані як статичний ОЗП. Всі реалізовані банки містять регістри спеціального призначення. Деякі, часто використовувані регістри спеціального призначення можуть відображатися і в інших банках пам'яті.

Регістри можуть бути адресовані прямо або побічно, з використанням регістра непрямої адресації FSR. Безпосередня адресація підтримується спеціальними командами, що завантажують дані з пам'яті програми в робочий регістр W.

Регістри спеціального призначення використовуються для керування функціями мікроконтролера і можуть бути розділені на два набори: регістри базових функцій і регістри периферійних пристроїв. Регістри базових функцій містять у собі регістр-перемикач непряму адресації (INDF), програмний лічильник (РС), представлений двома регістрами PCL і PCLATH, регістр слова стану (STATUS), регістр-покажчик непряму адресації (FSR), робочий регістр (W), регістр переривань (INTCON), а також регістр режимів роботи чи конфігурації попереднього дільника і таймера (OPTION). Регістри периферійних пристроїв містять у собі регістри (RA,RB,RC,RD,RE-порти А,B,C,D,E), регістри даних (EEDATA) і адреси (EEADR) пам'яті даних-констант, регістри таймерів-лічильників (TMR0,1,2) і регістри керування конфігурацією портів вводу/виводу (TRISA, TRISB, TRISC, TRISD, TRISE).

Регістри загального призначення використовуються для зберігання даних по розсуду користувача.

Таблиця спеціальних регістрів приведена в додатку А.

Для виконання непрямої адресації необхідно звернутися до фізично не реалізованого регістра INDF. Звернення до регістра INDF фактично викличе дію з регістром, адреса якого вказана в FSR. Непряме читання регістра INDF (FSR=0) дасть результат 00h. Непрямий запис в регістр INDF не викличе ніяких дій (викликає дії на прапори АЛП в регістрі STATUS). 9-й біт непрямої адреси IRP зберігається в регістрі STATUS<7>. Приклад 9-розрядної непрямої адресації показаний на рисунку 2.4.

Адреса Адреса Адреса Адреса


Регістр * Регістр * Регістр * Регістр * непрямої 00h непрямої 80h непрямої 100h непрямої адресації адресації адресації адресації 180h

TMR0 01h OPTION 81h TMR0 101h OPTION REG 181h PCL 02 h REGPCL 82 h PCL 102 h PCL 182h

STATUS 03 h STATUS 83 h STATUS 103 h STATUS 183h

FSR 04h FSR 84h FSR 104h FSR 184h

PORTA 05h TRISA 85h 105h х 185h

PORTB 06h TRISB 86h PORTB 106h TRISB 186h

PORTC 07h TRISC 87h х 107h х 187h

PORTD(1) 08 h TRISD(1) 88 h х 108 h х 188h PORTEP) 09h TRISEP) 89h х 109h х 189h PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah

INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON

PIR1 0Ch PIE1 8Ch EEDATA 10Ch EECON1 18Bh PIR2 0Dh PIE2 8Dh EEADR 10Dh EECON2 18Ch TMR1L 0Eh PCON 8Eh EEDATH 10Eh Резерв^' 18Dh TMR1H 0Fh x 8Fh EEADRH 10Fh Резерв^' 18Eh

T1CON 10h x 90h 110h 18Fh

TMR2 11h SSPCON2 91h Регістри Регістри

T2CON 12 h PR2 92 h

SSPBUF 13h SSPADD 93h

SSPCON 14h SSPSTAT 94h загального загального

CCPR1L 15h x 95h

CCPR1 H 16 h x 96 h призна - призна-

CCP1CON 17 h x 97 h ченнях чення

RCSTA 18h TXSTA 98h

TXREG 19h SPBRG 99h

RCREG 1Ah x 9Ah

CCPR2L 1Bh x 9Bh 16 байтів 16 байтів

CCPR2H 1Ch x 9Ch

CCP2CON 1Dh x 9Dh

ADRESH 1Eh ADRESL 9Eh

ADCONO 1Fh ADCON1 9Fh 11Fh 19Fh 20h Регістри A0h Регістри 120h Регістри

Регістри загаль- загаль- загаль- 1A0h загаль- ного ного ного ного призна- призна- призна -

призна- чення чення чення

чення 80 байтів EFh 80 байт ів 16170Fhh 80 байт ів 1EFh

96 байтів Доступ до F0h Доступ до Доступ до 1F0h

7Fh 70h- 7Fh FFh 70h- 7Fh 17Fh 70h- 7Fh

1FFh


Банк 0 Банк 1 Банк 2 БанкЗ

*- не фізичний регистр х - не реалізовані, значення при читанні 00h


Рисунок 2.3 - Карта пам'яті даних мікроконтролерів PIC16F876/877

Рисунок 2.4 - Приклад 9-розрядної непрямої адресації

2.4 Регістр стану STATUS

Регістр стану (адреса 03h, 83h, 103h або 183h) містить арифметичні прапори АЛП, біти стану контролера при скиданні і біти вибору сторінок пам‘яті. Регістр STATUS доступний для будь-якої команди так само, як будь-який інший регістр. Проте, биті TO і PD встановлюються апаратно і не можуть бути записані в регістр статусу програмно. Це слід мати на увазі при виконанні команди з використанням регістра статусу. Наприклад, команда CLRF обнулить всі біти, окрім бітів TO і PD, а потім встановить біт Z=1. Після виконання цієї команди регістр статусу може і не мати нульового значення (із-за бітів TO і PD) 000??100. Тому рекомендується для зміни регістра статусу використовувати тільки команди бітової установки BCF, BSF, MOVWF, які не змінюють решту біт статусу. Розміщення прапорів в регістрі STATUS наступне:

b7 b6 b5 b4 b3 b2 b1 b0

IRP

RP1

RP0

-TO

- PD

Z

DC

C

Біт 7: IRP: Біт вибору банку при непрямій адресації

1- банк 2, 3(100h-1FFh)

0 - банк 0, 1 (000h - 0FFh)

Біти 6-5: RP1:RPO: Біти вибору банку при безпосередній адресації

11 – банк 3 (180h-1FFh)

10 – банк 2 (100h-17Fh)

01 - банк 1 (080h - 0FFh)

00 - банк 0 (000h - 07Fh)

Біт 4: -ТО: Прапор переповнювання сторожового таймера

1 - після POR або виконань команд CLRWDT, SLEEP

0 - після переповнювання WDT

Біт 3: -PD: Прапор включення живлення

1 - після POR або виконань команди CLRWDT

0 - після виконання команди SLEEP

Біт 2: Z: Прапор нульового результату

1 - нульовий результат виконання арифметичної або логічної операції

0 - не нульовий результат виконання арифметичної або логічної операції

Біт 1: DC: Прапор десяткового перенесення/позики (для команд ADDWF, ADDWL, SUBWF, SUBWL), позика має інверсне значення

1 - було перенесення з молодшого півбайта

0 - не було перенесення з молодшого півбайта

Біт 0: С: Прапор перенесення/позики (для команд ADDWF,

ADDWL, SUBWF, SUBWL), позика має інверсне значення

1 - було перенесення із старшого біта

0 - не було перенесення із старшого біта

Примітка. Прапор позики має інверсне значення. Віднімання виконується шляхом збільшення додаткового коду другого операнда. При виконанні команд зрушення (RRF, RLF) біт С завантажується старшим або молодшим бітом зрушуваного регістра.

2.5 Регістр OPTION

Регістр OPTION доступний для читання і запису, містить біти управління:

• Попереднім дільником TMR0/WDT;

• Активним фронтом зовнішнього переривання RB0/INT; • Підтягаючими резисторами на входах PORTB.

Примітка. Якщо попередній дільник включений перед WDT, то коефіцієнт ділення тактового сигналу для TMR0 рівний 1:1.

Розміщення бітів керування в регістрі OPTION наступне:

b7 b6 b5 b4 b3 b2 b1 b0

-RBPU

|INTEDG

TOCS

| TOSE

PSA

PS2

PS1

PS0

біт 7: -RBPU: Включення підтягаючих резисторів на входах PORTB:

1 = підтягаючі резистори відключені, 0 = підтягаючі резистори включені;

біт 6: INTEDG: Вибір активного фронту сигналу на вході зовнішнього переривання: INT 1 = переривання по передньому фронту сигналу,

0 = переривання по задньому фронту сигналу;

біт 5:TOCS: Вибір тактового сигналу для TMR0: 1 = зовнішній тактовий сигнал з виведення RA4/TOCKI, 0 = внутрішній тактовий сигнал CLKOUT;

біт 4: TOSE: Вибір фронту приросту TMR0 при зовнішньому тактовому сигналі: 1 = приріст по задньому фронту сигналу (з високого до низького рівня) на виведенні RA4/TOCKI, 0 = приріст по передньому фронту сигналу (з низького до високого рівня) на виведенні RA4/TOCKI;

біт 3: PSA: Вибір включення переддільника: 1 = переддільник включений перед WDT, 0 = переддільник включений перед TMR0; біти 2-0: PS2 – PS0: Установка коефіцієнта ділення переддільника, коефіцієнти ділення приведені в таблиці 2.2.

Таблиця 2.2 - Коефіцієнти ділення переддільника

Значення PS2 – PS0

Для TMR0

Для WDT

000

1 :2

1:1

001

1 :4

1:2

010

1:8

1:4

011

1:16

1:8

100

1:32

1:16

101

1:64

1:32

110

1:128

1:64

111

1 :256

1:128

Примітка. При використанні режиму низьковольтного програмування і включених підтягаючих резисторах на PORTB необхідно скинути в '0' 3-й біт регістра TRISB для виключення підтягаючого резистора на виведенні RB3.

2.6 Регістр INTCON

Регістр INTCON доступний для читання і запису, містить біти дозволів і прапори переривань: переповнювання TMR0; зміни рівня сигналу на виводах PORTB; зовнішнє джерело переривань RBO/INT. Розміщення бітів в регістрі INTCON наступне: