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.
(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. Содержимое ячеек этой памяти сохраняется при выключении питания. Кристалл 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
Название | Функция | Адрес | Значение после включения |
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: Разрешена запись.