Справочник по среднему семейству микроконтроллеров PICmicro
.pdfООО "Микро-Чип" - поставка комплектующих Microchip тел.: (095) 737-7545
На рисунке 6-6 показана карта памяти данных некоторых 18-выводных микроконтроллеров. Чтение не реализованных регистров будет давать результат '0'.
Рис. 6-6 Карта памяти данных некоторых 18 - выводных микроконтроллеров
|
Адрес |
|
Адрес |
|
INDF |
00h |
INDF |
80h |
|
TMR0 |
01h |
OPTION_REG |
81h |
|
PCL |
02h |
PCL |
82h |
|
STATUS |
03h |
STATUS |
83h |
|
FSR |
04h |
FSR |
84h |
|
PORTA |
05h |
TRISA |
85h |
|
PORTB |
06h |
TRISB |
86h |
6 |
|
07h |
PCON |
87h |
|
ADCON0/ |
08h |
ADCON1/ |
88h |
|
EEDATA(2) |
09h |
EECON1(2) |
89h |
|
ADRES/ |
ADRES/ |
|
||
EEADR(2) |
0Ah |
EECON2(2) |
8Ah |
|
PCLATH |
PCLATH |
|
||
INTCON |
0Bh |
INTCON |
8Bh |
|
|
0Ch |
|
8Ch |
|
Регистры |
|
Регистры |
|
|
|
|
|
||
общего |
|
общего |
|
|
назначения |
|
назначения |
EFh |
|
|
|
|||
(3) |
|
(4) |
|
|
|
|
|
F0h |
|
|
7Fh |
|
FFh |
|
|
|
|
||
Банк 0 |
|
Банк 1 |
|
|
Примечания:
1. Регистры, названия которых выделены жирным текстом, будут присутствовать в каждом микроконтроллере.
2.Эти регистры могут быть не реализованы или иметь другое назначение.
3.Не вся часть банка ОЗУ может быть реализована. Чтение по адресу несуществующего ОЗУ будет давать результат '0'.
4.Регистры памяти данных в банке 1 могут быть не реализованы. Обращение к не реализованным регистрам банка 1 вызовет действие с регистром банка 0.
WWW.MICROCHIP.RU – поставки и техподдержка на русском языке |
6-11 |
Раздел 6. Организация памяти |
DS33023A |
|
|
6.3.4 Косвенная адресация, регистры INDF и FSR
Косвенная адресация – такой режим адресации регистров, при котором в команде не указывается адрес памяти данных. Регистр специального назначения FSR, доступный для записи/чтения, используется в качестве указателя адреса в памяти данных. Этот режим адресации может быть полезен при обращении к таблицам данных.
На рисунке 6-7 показана операция косвенной адресации (запись значения в регистр памяти данных с адресом, указанном в регистре FSR).
Для выполнения косвенной адресации необходимо обратиться к регистру INDF. Обращение к регистру INDF фактически вызовет действие с регистром, адрес которого указан в FSR. Косвенное чтение регистра INDF (FSR=0) даст результат 00h. Косвенная запись в регистр INDF не вызовет никаких действий (вызывает воздействия на флаги АЛУ в регистре STATUS). 9-й бит косвенного адреса IRP сохраняется в регистре STATUS<7>. Пример 9-разрядной косвенной адресации показан на рисунке 6-8.
Рис. 6-7 Косвенная адресация
Рис. 6-8 Механизм косвенной адресации
6-12 |
WWW.MICROCHIP.RU – поставки и техподдержка на русском языке |
ООО"Микро-Чип" - поставка комплектующих Microchip тел.: (095) 737-7545
Впримере 6-2 показано использование косвенной адресации для очистки памяти данных (адреса 20h – 2Fh) минимальным числом команд микроконтроллера. Подобный метод может использоваться для передачи блока данных в регистр TXREG передатчика USART. Начальный адрес блока данных, подготовленного для передачи, может быть легко изменен в соответствии с требованиями программы.
Пример 6-2 Очистка регистров памяти данных с адреса 20h по 2Fh
BCF |
STATUS, IRP |
; Установить банк 0,1 |
|
|
MOVLW |
0x20 |
; Указать первый регистр в ОЗУ |
|
|
MOVWF |
FSR |
|
|
|
NEXT: |
|
; Очистить регистр |
|
|
CLRF |
INDF |
|
||
INCF |
FSR,F |
; Увеличить адрес |
|
|
6 |
||||
BTFSS |
FSR,4 |
; Завершить? |
||
GOTO |
NEXT |
; Нет, продолжить очистку |
|
|
|
CONTINUE:
; Да
WWW.MICROCHIP.RU – поставки и техподдержка на русском языке |
6-13 |
Раздел 6. Организация памяти |
DS33023A |
|
|
6.4Инициализация
Впримере 6-3 показано переключение между банками памяти данных для прямой адресации, а в примере 6-4 представлен код программы, выполняющей инициализацию (очистку) регистров общего назначения.
Пример 6-3 Переключение банков памяти данных |
; Очистка регистра STATUS (Банк 0) |
|
CLRF |
STATUS |
|
: |
|
; Банк 1 |
BSF |
STATUS, RP0 |
|
: |
|
; Банк 0 |
BCF |
STATUS, RP0 |
|
: |
|
; Установить RP0 и RP1 в STATUS регистре |
MOVLW 0x60 |
||
XORWF STATUS, F |
; (Банк 3) |
|
: |
|
; Банк 2 |
BCF |
STATUS, RP0 |
|
: |
|
; Банк 0 |
BCF |
STATUS, RP1 |
|
Пример 6-4 Инициализация регистров общего назначения |
||
CLRF |
STATUS |
; Очистить регистр STATUS (Банк 0) |
MOVLW |
0x20 |
; 1-й адрес регистра GPR |
MOVWF |
FSR |
; записать в регистр косвенного адреса |
Bank0_LP |
|
; Очистить регистр GPR с адресом в регистре FSR |
CLRF |
INDF0 |
|
INCF |
FSR |
; Следующий регистр GPR |
BTFSS |
FSR, 7 |
; Очистка регистров GPR в этом банке завершена? |
|
|
; (FSR = 80h, C = 0) |
GOTO |
Bank0_LP |
; НЕТ, продолжать очистку |
|
|
; |
|
|
; Следующий банк (Банк 1) |
|
|
; (** Только для микроконтроллеров с банком 1 **) |
|
|
; |
MOVLW |
0xA0 |
; 1-й адрес регистра GPR |
MOVWF |
FSR |
; записать в регистр косвенного адреса |
Bank1_LP |
|
; Очистить регистр GPR с адресом в регистре FSR |
CLRF |
INDF0 |
|
INCF |
FSR |
; Следующий регистр GPR |
BTFSS |
STATUS, C |
; Очистка регистров GPR в этом банке завершена? |
|
|
; (FSR = 00h, C = 1) |
GOTO |
Bank1_LP |
; НЕТ, продолжать очистку |
|
|
; |
|
|
; Следующий банк (Банк 2) |
|
|
; (** Только для микроконтроллеров с банком 2 **) |
|
|
; |
BSF |
STATUS, IRP |
; Выбор банков 2 и 3 для косвенной адресации |
MOVLW |
0x20 |
; 1-й адрес регистра GPR |
MOVWF |
FSR |
; записать в регистр косвенного адреса |
Bank2_LP |
|
; Очистить регистр GPR с адресом в регистре FSR |
CLRF |
INDF0 |
|
INCF |
FSR |
; Следующий регистр GPR |
BTFSS |
FSR, 7 |
; Очистка регистров GPR в этом банке завершена? |
|
|
; (FSR = 80h, C = 0) |
GOTO |
Bank2_LP |
; НЕТ, продолжать очистку |
|
|
; |
|
|
; Следующий банк (Банк 3) |
|
|
; (** Только для микроконтроллеров с банком 3 **) |
|
|
; |
MOVLW |
0xA0 |
; 1-й адрес регистра GPR |
MOVWF |
FSR |
; записать в регистр косвенного адреса |
Bank3_LP |
|
; Очистить регистр GPR с адресом в регистре FSR |
CLRF |
INDF0 |
|
INCF |
FSR |
; Следующий регистр GPR |
BTFSS |
STATUS, C |
; Очистка регистров GPR в этом банке завершена? |
|
|
; (FSR = 00h, C = 1) |
GOTO |
Bank3_LP |
; НЕТ, продолжать очистку |
: |
|
; ДА, все регистры GPR очищены |
6-14 |
WWW.MICROCHIP.RU – поставки и техподдержка на русском языке |
ООО"Микро-Чип" - поставка комплектующих Microchip тел.: (095) 737-7545
6.5Ответы на часто задаваемые вопросы
Если вы не найдете ответа на Ваш вопрос в этой главе раздела, задайте его, написав нам письмо по адресу support@microchip.ru.
Вопрос 1: Выполнение программы прекращается, что может быть причиной?
Ответ 1:
Если микроконтроллер содержит более 2кслов памяти программ, то возможно, что перед переходом на подпрограмму по команде CALL (или безусловному переходу GOTO) необходимо настроить регистр PCLATH для выбора нужной страницы памяти. В примере показана последовательность команд загрузки регистра PCLATH вне зависимости от расположения метки SUB_1 в памяти программ.
|
MOVLW |
HIGH (SUB_1) |
; Выбор страницы памяти программ, |
6 |
|
MOVWF |
PCLATH |
; в которой размещается подпрограмма |
|
|
CALL |
SUB_1 |
; Переход на подпрограмму |
|
|
: |
|
|
|
|
: |
|
; Начало подпрограммы |
|
SUB_1 |
: |
|
|
|
|
: |
|
|
|
Вопрос 2: Мне необходимо записать во все регистры общего назначения 00h. Как наиболее просто это сделать?
Ответ 2:
Смотрите пример 6-4 этого раздела. Если в микроконтроллере не реализованы все 4 банка памяти данных, то часть кода может быть удалена.
WWW.MICROCHIP.RU – поставки и техподдержка на русском языке |
6-15 |
Раздел 6. Организация памяти |
DS33023A |
|
|
6.6 Дополнительная литература
Дополнительная литература и примеры применения, связанные с этим разделом документации. Примеры применения не могут использоваться для всех микроконтроллеров среднего семейства (PIC16CXXX). Как правило примеры применения написаны для конкретной группы микроконтроллеров, но принципы примеров могут использоваться, сделав незначительные изменения (с учетом существующих ограничений).
Документы, связанные с организацией памяти в микроконтроллерах PICmicro MCU: |
|
Документ |
Номер |
Implementing a Table Read |
AN556 |
Выполнение табличного чтения |
|
6-16 |
WWW.MICROCHIP.RU – поставки и техподдержка на русском языке |
|
ООО "Микро-Чип" - поставка комплектующих Microchip тел.: (095) 737-7545 |
|
|
|
|
|
|
|
|
|
Раздел 7.EEPROM память данных |
|
|
|
Содержание |
|
|
|
|
7.1 |
Введение ........................................................................................................................................................ |
7-2 |
|
|
7.2 |
Управляющий регистр................................................................................................................................... |
7-3 |
|
|
7.3 |
Регистр EEADR .............................................................................................................................................. |
7-4 |
|
|
7.4 |
Регистры EECON1, EECON2 ........................................................................................................................ |
7-4 |
|
|
7.5 |
Чтение из EEPROM памяти данных............................................................................................................. |
7-5 |
|
|
7.6 |
Запись в EEPROM память данных............................................................................................................... |
7-5 |
|
|
7.7 |
Проверка записи |
7-6 |
|
|
|
7 |
|||
7.8 |
Защита от случайной записи в EEPROM память данных.......................................................................... |
7-6 |
|
|
7.9 |
Операции с EEPROM памятью при установленном бите защиты............................................................ |
7-6 |
|
|
|
|
|||
7.10 Инициализация ............................................................................................................................................ |
7-6 |
|
|
|
7.11 Ответы на часто задаваемые вопросы ..................................................................................................... |
7-7 |
|
|
|
7.12 Дополнительная литература ...................................................................................................................... |
7-8 |
|
|
WWW.MICROCHIP.RU – поставки и техподдержка на русском языке |
7-1 |
Раздел 7. EEPROM память данных |
DS33023A |
|
|
7.1 Введение
EEPROM память данных доступна для записи/чтения в нормальном режиме работы микроконтроллера во всем диапазоне рабочего напряжения питания (VDD). EEPROM память не отображается на адресное пространство памяти данных, а доступна через регистры специального назначения. Для доступа к EEPROM памяти данных используются
4регистра специального назначения:
•EECON1
•EECON2 (не физический регистр)
•EEDATA
•EEADR
Врегистре EEDATA сохраняются 8-разрядные данные записи/чтения, а регистр EEADR содержит адрес ячейки EEPROM памяти данных. С помощью 8 - разрядного регистра EEADR можно адресовать 256 байт EEPROM памяти данных. EEADR можно рассматривать как регистр косвенной адресации для ячеек EEPROM памяти. Регистр EECON1 содержит биты управления чтением/записью EEPROM памяти данных, а не физический регистр EECON2 предназначен для защиты от случайной записи в EEPROM память данных.
Внекоторых микроконтроллерах реализовано вся возможная EEPORM память данных. Область реализованной EEPROM памяти данных всегда начинается с адреса 00h. В таблице 7-1 показаны возможные объемы EEPROM памяти данных и адреса реализованных ячеек.
Таблица 7-1 Объем EEPROM памяти данных
Объем EEPROM памяти |
Адреса реализованных |
данных (байт)(1) |
ячеек |
|
|
64 |
00h - 3Fh |
128 |
00h - 7Fh |
256 |
00h - FFh |
Примечание 1. В выпускаемых микроконтроллерах среднего семейства минимальный объем EEPROM памяти данных 64 байта.
EEPROM память данных позволяет выполнить чтение и запись байта. При записи байта происходит автоматическое стирание ячейки и запись новых данных (стирание перед записью). EEPROM память данных рассчитана на большое количество циклов стирание/запись. Время записи управляется интегрированным таймером и зависит от напряжения питания, температуры и технологического разброса параметров кристалла (см. раздел "Электрические характеристики").
При установке защиты на доступ к EEPROM памяти данных, программа микроконтроллера имеет возможность выполнить запись/чтение EEPROM памяти данных. Доступ закрыт для записи/чтения программатором.
7-2 |
WWW.MICROCHIP.RU – поставки и техподдержка на русском языке |
ООО "Микро-Чип" - поставка комплектующих Microchip тел.: (095) 737-7545
7.2 Управляющий регистр
Регистр EECON1
U-0 |
U-0 |
|
U-0 |
R/W-0 |
R/W-x |
R/W-0 |
R/S-0 |
R/S-x |
|
|
|
||||
- |
- |
|
- |
EEIF(1) |
WRERR |
WREN |
WR |
RD |
|
|
|
R – чтение бита |
|
||
Бит 7 |
|
|
|
|
|
|
|
Бит 0 |
|
|
|
W – запись бита |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
U – не реализовано, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
читается как 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
–n – значение после POR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
–x – неизвестное |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
значение после POR |
|
|
биты 7-5: Не используются: читаются как ‘0’ |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
7 |
||||||
бит 4: EEIF: Флаг прерывания по окончанию записи в EEPROM данных |
|
|
|||||||||||||
|
|
|
|||||||||||||
|
|
|
|||||||||||||
|
|
1 = запись в EEPROM данных завершена (сбрасывается программно) |
|
|
|
||||||||||
|
|
0 = запись в EEPROM данных не завершена или не была начата |
|
|
|
бит 3: WRERR: Флаг ошибки записи в EEPROM память данных
1 = запись прервана (произошел один из сбросов: по сигналу -MCLR, по переполнению WDT в нормальном режиме, по снижению напряжения питания BOR)
0 = запись завершена
бит 2: WREN: Разрешение записи в EEPROM память данных 1 = запись разрешена 0 = запись запрещена
бит 1: WR: Инициализировать запись в EEPROM память данных (программно может быть только установлен в ‘1’)
1 = инициализировать запись (сбрасывается в ‘0’ аппаратно) 0 = запись завершена
бит 0: RD: Инициализировать чтение из EEPROM памяти данных (программно может быть только установлен в ‘1’)
1 = инициализировать чтение (сбрасывается в ‘0’ аппаратно) 0 = чтение завершено
Примечание 1. В некоторых микроконтроллерах этот бит находится в регистре PIR.
WWW.MICROCHIP.RU – поставки и техподдержка на русском языке |
7-3 |
Раздел 7. EEPROM память данных |
DS33023A |
|
|
7.3Регистр EEADR
Спомощью регистра EEADR можно адресовать 256 байт EEPROM памяти данных. Старший биты регистра EEADR тоже участвует в декодировании адреса, поэтому всегда должен равняться нулю (для гарантированной адресации памяти).
7.4Регистры EECON1, EECON2
Регистр EECON1 содержит 5 (младших) физически реализованных управляющих битов. Три старших бита не реализованы и читаются как ‘0’.
Управляющие биты RD и WR инициализируют соответственно чтение и запись данных. Программно эти биты могут быть только установленны в ‘1’, сброс в ‘0’ происходит аппаратно по завершению операции чтения/записи. Защита от программного сброса этих битов позволяет предотвратить преждевременное завершение операции записи.
Если бит WREN=1, то разрешена запись в EEPROM память данных. После сброса по включению питания (POR) бит WREN равен ‘0’. Бит WRERR устанавливается в ‘1’, если во время выполнения записи в EEPROM память данных произошел сброс по сигналу -MCLR или по переполнению сторожевого таймера WDT в нормальном режиме. Проверив состояние бита WREER, пользователь может повторить запись (регистры EEDATA и EEADR не изменяют своего значения).
После завершения записи в EEPROM память данных устанавливается флаг EEIF в ‘1’ (сбрасывается программно).
Регистр EECON2 не реализован физически, читается как 00h. Он используется в операциях записи в EEPROM память данных для реализации обязательной последовательности команд.
7-4 |
WWW.MICROCHIP.RU – поставки и техподдержка на русском языке |