Смекни!
smekni.com

Види органічних сполук (стр. 4 из 12)

Z - Флаг нулевого результата:

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

PD - Power Down ( режим хранения данных) :

Устанавливается в “1” при включении питания или команде CLRWDT. Сбрасывается в “0” командой SLEEP.

TO - Time Out. Флаг срабатывания Watchdog таймера:

Устанавливается в “1” при включению питания и командами CLRWDT, SLEEP. Сбрасывается в “0” по завершению выдержки времени таймера WDT.

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

RP1,RP0:

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

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

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

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

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

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

IRP0:

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

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

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

Аппаратные флаги статуса

Аппаратные Биты статуса TO (Time Out) и PD (Power Down).

По состоянию битов регистра статуса “TO” и “PD” можно определить, чем был вызван “Сброс”:

· просто включением питания,

· срабатыванием таймера watchdog,

· выходом из режима пониженного энергопотребления(Sleeр) в результате срабатывания watchdog таймера,

· по внешнему сигналу /MCLR.

На состояние этих битов могут повлиять только следующие события:

События TO PD Примечание
Включение 1 1
WDT таймер 0 X Не воздействует на бит PD
Sleeр команда 1 0
CLRWDT команда 1 1

Примечание: Событие WDT timeout происходит независимо от состояния TO бита. Sleeр команда выполняется независимо от состояния PD бита.

Ниже показаны состояния битов TO и PD после “Сброса”

TO PD “Сброс” был вызван следующими событиями
0 0 Выход из Sleeр по завершению задержки Watchdog
0 1 Завершение задержки Watchdog
X 0 Выход из Sleeр по внешнему сигналу MCLR
1 1 Включение питания
X X “0”-импульс на входе MCLR

Примечание: Биты TO и PD сохраняют текущее состояние до тех пор, пока не произойдет одно из событий перечисленных в таблице. “0”-Импульс низкого уровня на входе кристалла /MCLR не не изменяет состояние битов TO и PD.

Организация встроенного ПЗУ

Программный счетчик в PIC16C84 имеет ширину 13 бит и способен адресовать 8Кх14бит объема программной памяти. Однако, физически на кристалле имеется только 1Кх14 памяти (адреса 0000h-03FFh). Обращение к адресам выше 3FFh фактически есть адресация в тот же первый килобайт. Вектор сброса находится по адресу 0000h, вектор прерывания находится по адресу 0004h.

PC <12:0>

Stack Level 1

Stack Level 2

. . . . . . . . . . . .

Stack Level 8

Reset Vector

0000h

Interruрt Vector

0004h

On-Chiр Program Memory

0005h

03FFh

0400h

1FFFh

EEPROM PIC16C84 рассчитан на ограниченное число циклов стирания/записи. Чтобы записать в программную память, кристалл должен быть переведен в специальный режим при котором на ножку /MCLR подается напряжение программирования Vрrg, а питание Vdd должно находиться в пределах 4.5 В ...5.5В. PIC16C84 непригоден для применений, в которых часто модифицируется программа. Запись в программную память осуществляется побитно, последовательно с использованием только двух ножек. Паспортное значение количества записей в программную память PIC16C84 равно 100(min) и 1000 (tiр), практически-же микросхемы выдерживают несколько тысяч перезаписей. Число перезаписей памяти данных (64 байта) достанет 1000000.

PC и адресация ПЗУ

(f2). Программный счетчик

Ширина программного счетчика - 13 бит. Младший байт программного счетчика (PCL) доступен для чтения и записи и находится в регистре 02h. Старший байт программного счетчика (PCH) не может быть прямым образом прочитан или записан. Старший байт программного счетчика может быть записан через PCLATH регистр, адрес которого 0Ah. В зависимости от того, загружается ли в программный счетчик новое значение во время выполнения команд CALL, GOTO, или в младший байт программного счетчика (PCL) производится запись, - старшие биты программного счетчика загружаются из PCLATH разными способами так, как показано на рисунке.

Случай команд GOTO, CALL

Случай команд, у которых результат помещается в f2

Стек и возвраты из подпрограмм

Кристалл PIC16C84 имеет восьмиуровневый аппаратный стек шириной 13 бит.Область стека не принадлежит ни к программной области ни к области данных, а указатель стека пользователю недоступен. Текущее значение программного счетчика посылается в стек, когда выполняется команда CALL или производится обработка прерывания. При выполнении процедуры возврата из подпрограммы (команды RETLW , RETFIE или RETURN), в программный счетчик выгружается содержимое стека. Регистр PCLATH (0Ah) не изменяется при операциях со стеком.

Данные в EEPROM

Долговременная Память данных EEPROM.

Память данных EEPROM позволяет прочитать и записать байт информации. При записи байта автоматически стирается предыдущее значение и записываются новые данные (стирание перед записью). Все эти операции производит встроенный автомат записи EEPROM. Содержимое ячеек этой памяти сохраняется при выключении питания. Кристалл PIC16C84 имеет память данных 64х8 EEPROM бит, которая позволяет запись и чтение во время нормальной работы (во всем диапазоне питающих напряжений). Эта память не принадлежит области регистров ОЗУ. Доступ к ней осуществляется через два регистра: EEDATA <08h>, который содержит в себе восьмибитовые данные для чтения/записи и EEADR <09h>, который содержит в себе адрес ячейки к которой идет обращение. Дополнительно имеется два управляющих регистра: EECON1 <88h> и EECON2 <89h>.

При считывании данных из памяти EEPROM необходимо записать требуемый адрес в EEADR регистр и затем установить бит RD EECON1<0> в единицу. Данные появятся в следующем командном цикле в регистре EEDATA и могут быть прочитаны. Данные в регистре EEDATA защелкиваются.

При записи в память EEPROM, необходимо сначала записать требуемый адрес в EEADR регистр и данные в EEDATA регистр. Затем выполнить специальную последовательность команд, производящую непосредственную запись:

movlv 55h

movwf EECON2

movlv AAh

movwf EECON2

bsf EECON1,WR ;установить WR бит, начать запись

Во время выполнения этого участка программы, все прерывания должны быть запрещены для точного выполнения временной диаграммы. Время записи - примерно 10мс. Фактическое время записи будет изменяться в зависимости от напряжения, температуры и индивидуальных свойств кристалла. В конце записи бит WR автоматически обнуляется, а флаг завершения записи EEIF, он же запрос на прерывание, устанавливается. Для предотвращения случайных записей в память данных предусмотрен специальный бит WREN в регистре EECON1. Рекомендуется держать бит WREN выключенным, кроме тех случаев, когда нужно обновить память данных. Более того, кодовые сегменты, которые устанавливают бит WREN и те, которые выполняют запись должны храниться на различных адресах, чтобы избежать случайного выполнения их обоих при сбое программы.

Управление EEPROM

Управляющие регистры для EEPROM

Название Функция Адрес Значение после включения
EEDATA EEPROM регистр данных 08h XXXX XXXX
EEADR EEPROM регистр адреса 09h XXXX XXXX
EECON1 EEPROM 1 управляющий регистр 88h 0000 X000
EECON2 EEPROM 2 управляющий регистр 89h -

Регистры EECON1 и EECON2.

Регистр EECON1 (адрес 88h) - это управляющий регистр шириной пять бит. Младшие пять бит физически существуют, а старшие три бита читаются всегда как “0”

Регистр EECON1 Адрес 88h Сброс при включении 0000X000

- - - EEIF WRERR WREN WR RD
7 6 5 4 3 2 1 0

Управляющие биты RD и WR запускают соответственно чтение и запись. Они могут быть установлены только программно. Сбрасываются- аппаратно по завершения операций чтения/записи. Запрет программного сброса бита WR предотвращает преждевременное окончание записи.

RD - Бит чтения.

RD =1 : Запускает чтение памяти данных EEPROM. Чтение занимает

один цикл. Устанавливается программно. Обнуляется аппаратно.

WR - Бит записи.

WR =1 : Запускает запись в память данных EEPROM.

Устанавливается программно. Обнуляется аппаратно.

WREN - Бит разрешения записи в память данных EEPROM.

WREN = 1: Разрешена запись.