1.3 Описание базового микроконтроллера
1.3.1 Регистры
Память данных разбита на два банка, которые содержат регистры общего назначения РОН и регистры специального назначения РСН. Выбор банка определяется состоянием бита RРО в регистре STATUS. Когда RPO установлен в "1", выбран банк 1, иначе — 0. Первые 12 байт каждого банка отведены под РСН. Некоторые РСН отображаются одновременно на оба банка. РОН доступны из любого банка.
Регистры общего назначения могут быть адресованы прямо или косвенно с использованием регистра косвенной адресации FSR. Регистры специального назначения используются для управления ЦПУ и функциями ввода-вывода и представленны в таблице 1.1.
Регистр STATUS содержит флаги АЛУ, параметры сброса (RESET) и биты выбора банка памяти данных. Регистр STATUS так же, как и любой другой регистр, может быть операндом для любой команды. Если регистр STATUS используется в качестве операнда для команды, которая воздействует на биты Z, DC или С, то непосредственная запись в эти биты запрещена. Более того, запись в биты -ТО и -PD запрещена. Поэтому результат команды, использующей STATUS в качестве регистра назначения, может отличаться от ожидаемого.
Регистр OPTION доступен для чтения и записи и содержит различные управляющие биты для конфигурации предделителя TMRO/WDT, самого TMR0 и подтягивающих резисторов GPIO.
Регистр INTCON доступен для чтения и записи и содержит биты разрешения прерываний: общего, периферийных устройств и TMR0, а также флаг переполнения TMR0.
Таблица 1.1 — Регистры специального назначения
Обозначение
Бит7
Бит6
Бит5
Бит4
Бит3
Бит2
Бит1
Бит0
Банк 0
INDF
При обращении производится доступ к ОЗУ по адресу в FSR
TMR0
Регистр TMR0
PCL
Младший байт счетчика команд PC
STATUS
IRP
RP1
RP0
-TO
-PD
Z
DC
C
FSR
Индексный регистр косвенной адресации
PORTA
—
RA4/T0CKI
RA3
RA2
RA1
RA0
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0/INT
EEDATA
Регистр данных Flash–ПЗУ
EEADR
Регистр адреса Flash–ПЗУ
PCLATH
Буфер для записи старших 5 бит РС
INTCON
EEIE
T0IE
INTE
RBIE
T0IF
INTF
Банк 1
OPTION
GPPU
T0CS
PSA
PS2
PS1
PS0
TRISA
Регистр направления данных PORTA
TRISB
Регистр направления данных PORTB
EECON1
EEIF
WRERR
WREN
WR
RD
EECON2
Регистр 2 управления Flash–ПЗУ (физически не реализован)
RBIF
Таблица 1.2 — Состояние регистров после сброса POR
Состояние
W
xxxx xxxx
---- ----
0000 0000
0001 1xxx
---x xxxx
---0 0000
0000 000x
1111 1111
---1 1111
---0 x000
Регистр INDF не является физическим регистром. При обращении к регистру INDF на самом деле происходит косвенная адресация памяти данных.
Косвенная адресация реализована через регистр INDF. Любая команда, использующая регистр INDF, фактически обращается к данным, на которые указывает регистр адреса в файле (FSR). Чтение самого INDF с помощью косвенной адресации дает в результате 00h. Результатом косвенной записи в регистр INDF будет NOP.
1.3.2 Стек
PIC16F84 имеет аппаратный стек глубиной 8 13-битных слов. Стек не является частью памяти программ или данных, а указатель стека не может быть явно прочитан или модифицирован. При выполнении команды CALL или возникновении прерывания PC сохраняется в стеке. При выполнении команд RETURN, RETLW или RETFIE значение PC восстанавливается из стека. Содержимое PCLATH при этом не изменяется.
Стек работает как циклический буфер. Это означает, что после того, как в стек было помещено восемь записей, девятая помещается на место первой, десятая - на место второй, и т.д.
1.3.3 Порты ввода/вывода
PIC16F84 имеет два порта, а именно PORTA, PORTB. Некоторые каналы портов совмещают функции выводов других периферийных устройств.
PORTA — это 5-разрядный порт. RA4 имеет триггер Шмитта на входе и открытый сток на выходе. Остальные каналы порта имеют входные уровни ТТЛ и выходные буферы КМОП. Порт имеет регистр направления TRISA, с помощью которого каналы порта могут быть индивидуально настроены на ввод или на вывод.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9