Из предыдущих глав мы немного узнали про наш любимый контроллер PIC16F84A :). Теперь, на мой взгляд, пришло время познакомиться с ним так сказать изнутри.

Что бы понять как работает контроллер, в обязательном порядке нужно знать регистры специального назначения(есть еще регистры общего назначения, но о них позже, так как здесь все крайне просто), кто за что отвечает, какие биты для чего нужны. Я представлю регистры в виде таблицы так, как они представлены в MPLAB.

Address
Страница 0
Страница 1
Address
00
INDF
INDF
80
01
RTCC или TMR0
OPTION
81
02
PCL
PCL
82
03
STATUS
STATUS
83
04
FSR
FSR
84
05
PORT A
TRIS A
85
06
PORT B
TRIS B
86
07
87
08
EEDATA
EECON1
88
09
EEADR
EECON2
89
0A
PCLATH
PCLATH
8A
0B
INTCON
INTCON
8B
0C-2F
36 регистров общего назначения
36 регистров общего назначения
8C-AF
30-7F
Не существуют для PIC16F84A
B0-FF

Теперь запустите MPLAB и откройте окно File Registers. Видите? тоже самое, только нулевой банк сверху, а 1 снизу. Здесь все регистры, которые дублируются и в первом банке отмечены красным цветом. В данном микроконтроллере все регистры 8 разрядные. Начнем с INDF.

Регистр INDF

На первых порах не будем вдаваться в подробности, скажу лишь что нужен он для косвенной адресации. Разберемся с ним позднее.

RTCC или TMR0

Данный регистр используется для включения таймера, работающего от внутреннего источника частоты. Более подробно разберем в описании битов регистра OPTION

Регистр OPTION

Регистр содержит арифметические флаги, состояние контроллера при сбросе и биты выбора страниц для памяти данных.

7
6
5
4
3
2
1
0
IRP
RP1
RP0
TO
PD
Z
DC
C

C - Флаг переноса/заема: Для команд ADDWF и SUBWF. Этот бит устанавливается, если в результате операции из самого старшего разряда происходит перенос. Вычитание осуществляется путем прибавления дополнительного кода второго операнда. При выполнении команд сдвига этот бит всегда загружается из младшего или старшего бита сдвигаемого источника.

DC - Флаг десятичного переноса/заема: Для команд ADDWF и SUBWF. Этот бит устанавливается, если в результате операции из четвертого разряда происходит перенос. Механизм установки десятичного бита переноса "DC" тот же самый, отличается тем, что отслеживается перенос из четвертого бита.

Z - Флаг нулевого результата: Устанавливается, если результатом арифметической или логической операции является ноль.

PD - Power Down ( режим хранения данных): Устанавливается в "1" при включении питания или команде CLRWDT. Сбрасывается в "0" командой SLEEP.

TO - Time Out. Флаг срабатывания Watchdog таймера(сторожевой таймер): Устанавливается в "1" при включении питания и командами CLRWDT, SLEEP. Сбрасывается в "0" по завершению выдержки времени таймера WDT.

RP1, RP0 - Биты выбора страницы памяти данных при прямой адресации:

00= Страница 0 (00h-7Fh)

01= Страница 1 (80h-FFh)

10= Страница 2 (100h-17Fh)

11= Страница 3 (180h-1FFh)

На каждой странице расположено 128 байт. В кристалле PIC16F84 используется только RP0. В этом кристалле RP1 может использоваться просто как бит общего назначения чтения/записи. Однако надо помнить, что в последующих разработках он будет использоваться.

IRP - Бит выбора страницы памяти данных при косвеной адресации:

0= Страницы 0,1 (00h-FFh)

1= Страница 2,3 (100h-1FFh)

Этот бит в кристалле PIC16F84 использовать не имеет смысла. Поэтому его можно использовать как бит общего назначения чтения/записи. Однако, надо помнить, что в последующих разработках он будет использоваться.

Сайт создан в системе uCoz